#include .text .globl aesni_xts_avx512_eligible .type aesni_xts_avx512_eligible,@function .align 32 aesni_xts_avx512_eligible: movl OPENSSL_ia32cap_P+8(%rip),%ecx xorl %eax,%eax andl $0xc0030000,%ecx cmpl $0xc0030000,%ecx jne .L_done movl OPENSSL_ia32cap_P+12(%rip),%ecx andl $0x640,%ecx cmpl $0x640,%ecx cmovel %ecx,%eax .L_done: .byte 0xf3,0xc3 .size aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible .globl aesni_xts_128_encrypt_avx512 .hidden aesni_xts_128_encrypt_avx512 .type aesni_xts_128_encrypt_avx512,@function .align 32 aesni_xts_128_encrypt_avx512: .cfi_startproc .byte 243,15,30,250 pushq %rbp movq %rsp,%rbp subq $136,%rsp andq $0xffffffffffffffc0,%rsp movq %rbx,128(%rsp) movq $0x87,%r10 vmovdqu (%r9),%xmm1 vpxor (%r8),%xmm1,%xmm1 vaesenc 16(%r8),%xmm1,%xmm1 vaesenc 32(%r8),%xmm1,%xmm1 vaesenc 48(%r8),%xmm1,%xmm1 vaesenc 64(%r8),%xmm1,%xmm1 vaesenc 80(%r8),%xmm1,%xmm1 vaesenc 96(%r8),%xmm1,%xmm1 vaesenc 112(%r8),%xmm1,%xmm1 vaesenc 128(%r8),%xmm1,%xmm1 vaesenc 144(%r8),%xmm1,%xmm1 vaesenclast 160(%r8),%xmm1,%xmm1 vmovdqa %xmm1,(%rsp) cmpq $0x80,%rdx jl .L_less_than_128_bytes_hEgxyDlCngwrfFe vpbroadcastq %r10,%zmm25 cmpq $0x100,%rdx jge .L_start_by16_hEgxyDlCngwrfFe cmpq $0x80,%rdx jge .L_start_by8_hEgxyDlCngwrfFe .L_do_n_blocks_hEgxyDlCngwrfFe: cmpq $0x0,%rdx je .L_ret_hEgxyDlCngwrfFe cmpq $0x70,%rdx jge .L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe cmpq $0x60,%rdx jge .L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe cmpq $0x50,%rdx jge .L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe cmpq $0x40,%rdx jge .L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe cmpq $0x30,%rdx jge .L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe cmpq $0x20,%rdx jge .L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe cmpq $0x10,%rdx jge .L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe vmovdqa %xmm0,%xmm8 vmovdqa %xmm9,%xmm0 jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe: movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vextracti32x4 $0x3,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $0x60,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $0x60,%rsi vextracti32x4 $0x1,%zmm2,%xmm8 vextracti32x4 $0x2,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%zmm1 vmovdqu 64(%rdi),%xmm2 addq $0x50,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu %xmm2,64(%rsi) addq $0x50,%rsi vmovdqa %xmm2,%xmm8 vextracti32x4 $0x1,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%zmm1 addq $0x40,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,(%rsi) addq $0x40,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa64 %xmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe: movq $-1,%r8 shrq $0x10,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1{%k1} addq $0x30,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,(%rsi){%k1} addq $0x30,%rsi vextracti32x4 $0x2,%zmm1,%xmm8 vextracti32x4 $0x3,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%ymm1 addq $0x20,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu %ymm1,(%rsi) addq $0x20,%rsi vextracti32x4 $0x1,%zmm1,%xmm8 vextracti32x4 $0x2,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe: vmovdqu (%rdi),%xmm1 addq $0x10,%rdi vpxor %xmm9,%xmm1,%xmm1 vpxor (%rcx),%xmm1,%xmm1 vaesenc 16(%rcx),%xmm1,%xmm1 vaesenc 32(%rcx),%xmm1,%xmm1 vaesenc 48(%rcx),%xmm1,%xmm1 vaesenc 64(%rcx),%xmm1,%xmm1 vaesenc 80(%rcx),%xmm1,%xmm1 vaesenc 96(%rcx),%xmm1,%xmm1 vaesenc 112(%rcx),%xmm1,%xmm1 vaesenc 128(%rcx),%xmm1,%xmm1 vaesenc 144(%rcx),%xmm1,%xmm1 vaesenclast 160(%rcx),%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) addq $0x10,%rsi vmovdqa %xmm1,%xmm8 vextracti32x4 $0x1,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_start_by16_hEgxyDlCngwrfFe: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm11 vpxord %zmm14,%zmm11,%zmm11 vpsrldq $0xf,%zmm10,%zmm15 vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 vpslldq $0x1,%zmm10,%zmm12 vpxord %zmm16,%zmm12,%zmm12 .L_main_loop_run_16_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 128(%rdi),%zmm3 vmovdqu8 192(%rdi),%zmm4 addq $0x100,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpxorq %zmm0,%zmm3,%zmm3 vpxorq %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm11,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm11,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm12,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm12,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm15,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm15,%zmm17 vpxord %zmm14,%zmm17,%zmm17 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm16,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm16,%zmm18 vpxord %zmm14,%zmm18,%zmm18 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vaesenclast %zmm0,%zmm3,%zmm3 vaesenclast %zmm0,%zmm4,%zmm4 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqa32 %zmm17,%zmm11 vmovdqa32 %zmm18,%zmm12 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) vmovdqu8 %zmm3,128(%rsi) vmovdqu8 %zmm4,192(%rsi) addq $0x100,%rsi subq $0x100,%rdx cmpq $0x100,%rdx jae .L_main_loop_run_16_hEgxyDlCngwrfFe cmpq $0x80,%rdx jae .L_main_loop_run_8_hEgxyDlCngwrfFe vextracti32x4 $0x3,%zmm4,%xmm0 jmp .L_do_n_blocks_hEgxyDlCngwrfFe .L_start_by8_hEgxyDlCngwrfFe: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 .L_main_loop_run_8_hEgxyDlCngwrfFe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 addq $0x80,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm10,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm10,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) addq $0x80,%rsi subq $0x80,%rdx cmpq $0x80,%rdx jae .L_main_loop_run_8_hEgxyDlCngwrfFe vextracti32x4 $0x3,%zmm2,%xmm0 jmp .L_do_n_blocks_hEgxyDlCngwrfFe .L_steal_cipher_hEgxyDlCngwrfFe: vmovdqa %xmm8,%xmm2 leaq vpshufb_shf_table(%rip),%rax vmovdqu (%rax,%rdx,1),%xmm10 vpshufb %xmm10,%xmm8,%xmm8 vmovdqu -16(%rdi,%rdx,1),%xmm3 vmovdqu %xmm8,-16(%rsi,%rdx,1) leaq vpshufb_shf_table(%rip),%rax addq $16,%rax subq %rdx,%rax vmovdqu (%rax),%xmm10 vpxor mask1(%rip),%xmm10,%xmm10 vpshufb %xmm10,%xmm3,%xmm3 vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 vpxor %xmm0,%xmm3,%xmm8 vpxor (%rcx),%xmm8,%xmm8 vaesenc 16(%rcx),%xmm8,%xmm8 vaesenc 32(%rcx),%xmm8,%xmm8 vaesenc 48(%rcx),%xmm8,%xmm8 vaesenc 64(%rcx),%xmm8,%xmm8 vaesenc 80(%rcx),%xmm8,%xmm8 vaesenc 96(%rcx),%xmm8,%xmm8 vaesenc 112(%rcx),%xmm8,%xmm8 vaesenc 128(%rcx),%xmm8,%xmm8 vaesenc 144(%rcx),%xmm8,%xmm8 vaesenclast 160(%rcx),%xmm8,%xmm8 vpxor %xmm0,%xmm8,%xmm8 vmovdqu %xmm8,-16(%rsi) .L_ret_hEgxyDlCngwrfFe: movq 128(%rsp),%rbx xorq %r8,%r8 movq %r8,128(%rsp) vpxorq %zmm0,%zmm0,%zmm0 movq %rbp,%rsp popq %rbp vzeroupper .byte 0xf3,0xc3 .L_less_than_128_bytes_hEgxyDlCngwrfFe: vpbroadcastq %r10,%zmm25 cmpq $0x10,%rdx jb .L_ret_hEgxyDlCngwrfFe vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movl $0xaa,%r8d kmovq %r8,%k2 movq %rdx,%r8 andq $0x70,%r8 cmpq $0x60,%r8 je .L_num_blocks_is_6_hEgxyDlCngwrfFe cmpq $0x50,%r8 je .L_num_blocks_is_5_hEgxyDlCngwrfFe cmpq $0x40,%r8 je .L_num_blocks_is_4_hEgxyDlCngwrfFe cmpq $0x30,%r8 je .L_num_blocks_is_3_hEgxyDlCngwrfFe cmpq $0x20,%r8 je .L_num_blocks_is_2_hEgxyDlCngwrfFe cmpq $0x10,%r8 je .L_num_blocks_is_1_hEgxyDlCngwrfFe .L_num_blocks_is_7_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vextracti32x4 $0x3,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_6_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $96,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $96,%rsi vextracti32x4 $0x1,%ymm2,%xmm8 vextracti32x4 $0x2,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_5_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%xmm2 addq $80,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %xmm2,64(%rsi) addq $80,%rsi vmovdqa %xmm2,%xmm8 vextracti32x4 $0x1,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_4_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 addq $64,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,0(%rsi) addq $64,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa %xmm10,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_3_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 0(%rdi),%zmm1{%k1} addq $48,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,0(%rsi){%k1} addq $48,%rsi vextracti32x4 $2,%zmm1,%xmm8 vextracti32x4 $3,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_2_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vmovdqu8 0(%rdi),%ymm1 addq $32,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu8 %ymm1,0(%rsi) addq $32,%rsi vextracti32x4 $1,%ymm1,%xmm8 vextracti32x4 $2,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .L_num_blocks_is_1_hEgxyDlCngwrfFe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vmovdqu8 0(%rdi),%xmm1 addq $16,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu8 %xmm1,0(%rsi) addq $16,%rsi vmovdqa %xmm1,%xmm8 vextracti32x4 $1,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_hEgxyDlCngwrfFe jmp .L_steal_cipher_hEgxyDlCngwrfFe .cfi_endproc .globl aesni_xts_128_decrypt_avx512 .hidden aesni_xts_128_decrypt_avx512 .type aesni_xts_128_decrypt_avx512,@function .align 32 aesni_xts_128_decrypt_avx512: .cfi_startproc .byte 243,15,30,250 pushq %rbp movq %rsp,%rbp subq $136,%rsp andq $0xffffffffffffffc0,%rsp movq %rbx,128(%rsp) movq $0x87,%r10 vmovdqu (%r9),%xmm1 vpxor (%r8),%xmm1,%xmm1 vaesenc 16(%r8),%xmm1,%xmm1 vaesenc 32(%r8),%xmm1,%xmm1 vaesenc 48(%r8),%xmm1,%xmm1 vaesenc 64(%r8),%xmm1,%xmm1 vaesenc 80(%r8),%xmm1,%xmm1 vaesenc 96(%r8),%xmm1,%xmm1 vaesenc 112(%r8),%xmm1,%xmm1 vaesenc 128(%r8),%xmm1,%xmm1 vaesenc 144(%r8),%xmm1,%xmm1 vaesenclast 160(%r8),%xmm1,%xmm1 vmovdqa %xmm1,(%rsp) cmpq $0x80,%rdx jb .L_less_than_128_bytes_amivrujEyduiFoi vpbroadcastq %r10,%zmm25 cmpq $0x100,%rdx jge .L_start_by16_amivrujEyduiFoi jmp .L_start_by8_amivrujEyduiFoi .L_do_n_blocks_amivrujEyduiFoi: cmpq $0x0,%rdx je .L_ret_amivrujEyduiFoi cmpq $0x70,%rdx jge .L_remaining_num_blocks_is_7_amivrujEyduiFoi cmpq $0x60,%rdx jge .L_remaining_num_blocks_is_6_amivrujEyduiFoi cmpq $0x50,%rdx jge .L_remaining_num_blocks_is_5_amivrujEyduiFoi cmpq $0x40,%rdx jge .L_remaining_num_blocks_is_4_amivrujEyduiFoi cmpq $0x30,%rdx jge .L_remaining_num_blocks_is_3_amivrujEyduiFoi cmpq $0x20,%rdx jge .L_remaining_num_blocks_is_2_amivrujEyduiFoi cmpq $0x10,%rdx jge .L_remaining_num_blocks_is_1_amivrujEyduiFoi vmovdqu %xmm5,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,-16(%rsi) vmovdqa %xmm1,%xmm8 movq $0x1,%r8 kmovq %r8,%k1 vpsllq $0x3f,%xmm9,%xmm13 vpsraq $0x3f,%xmm13,%xmm14 vpandq %xmm25,%xmm14,%xmm5 vpxorq %xmm5,%xmm9,%xmm9{%k1} vpsrldq $0x8,%xmm9,%xmm10 .byte 98, 211, 181, 8, 115, 194, 1 vpslldq $0x8,%xmm13,%xmm13 vpxorq %xmm13,%xmm0,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_remaining_num_blocks_is_7_amivrujEyduiFoi: movq $0xffffffffffffffff,%r8 shrq $0x10,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi andq $0xf,%rdx je .L_done_7_remain_amivrujEyduiFoi vextracti32x4 $0x2,%zmm10,%xmm12 vextracti32x4 $0x3,%zmm10,%xmm13 vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_7_remain_amivrujEyduiFoi: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_6_amivrujEyduiFoi: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $0x60,%rdi andq $0xf,%rdx je .L_done_6_remain_amivrujEyduiFoi vextracti32x4 $0x1,%zmm10,%xmm12 vextracti32x4 $0x2,%zmm10,%xmm13 vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $0x60,%rsi vextracti32x4 $0x1,%zmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_6_remain_amivrujEyduiFoi: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_5_amivrujEyduiFoi: vmovdqu8 (%rdi),%zmm1 vmovdqu 64(%rdi),%xmm2 addq $0x50,%rdi andq $0xf,%rdx je .L_done_5_remain_amivrujEyduiFoi vmovdqa %xmm10,%xmm12 vextracti32x4 $0x1,%zmm10,%xmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu %xmm2,64(%rsi) addq $0x50,%rsi vmovdqa %xmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_5_remain_amivrujEyduiFoi: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %xmm2,64(%rsi) jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_4_amivrujEyduiFoi: vmovdqu8 (%rdi),%zmm1 addq $0x40,%rdi andq $0xf,%rdx je .L_done_4_remain_amivrujEyduiFoi vextracti32x4 $0x3,%zmm9,%xmm12 vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) addq $0x40,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_4_remain_amivrujEyduiFoi: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_3_amivrujEyduiFoi: vmovdqu (%rdi),%xmm1 vmovdqu 16(%rdi),%xmm2 vmovdqu 32(%rdi),%xmm3 addq $0x30,%rdi andq $0xf,%rdx je .L_done_3_remain_amivrujEyduiFoi vextracti32x4 $0x2,%zmm9,%xmm13 vextracti32x4 $0x1,%zmm9,%xmm10 vextracti32x4 $0x3,%zmm9,%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x30,%rsi vmovdqa %xmm3,%xmm8 vmovdqa %xmm13,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_3_remain_amivrujEyduiFoi: vextracti32x4 $0x1,%zmm9,%xmm10 vextracti32x4 $0x2,%zmm9,%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_2_amivrujEyduiFoi: vmovdqu (%rdi),%xmm1 vmovdqu 16(%rdi),%xmm2 addq $0x20,%rdi andq $0xf,%rdx je .L_done_2_remain_amivrujEyduiFoi vextracti32x4 $0x2,%zmm9,%xmm10 vextracti32x4 $0x1,%zmm9,%xmm12 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x20,%rsi vmovdqa %xmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_2_remain_amivrujEyduiFoi: vextracti32x4 $0x1,%zmm9,%xmm10 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) jmp .L_ret_amivrujEyduiFoi .L_remaining_num_blocks_is_1_amivrujEyduiFoi: vmovdqu (%rdi),%xmm1 addq $0x10,%rdi andq $0xf,%rdx je .L_done_1_remain_amivrujEyduiFoi vextracti32x4 $0x1,%zmm9,%xmm11 vpxor %xmm11,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm11,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) addq $0x10,%rsi vmovdqa %xmm1,%xmm8 vmovdqa %xmm9,%xmm0 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_1_remain_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) jmp .L_ret_amivrujEyduiFoi .L_start_by16_amivrujEyduiFoi: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm11 vpxord %zmm14,%zmm11,%zmm11 vpsrldq $0xf,%zmm10,%zmm15 vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 vpslldq $0x1,%zmm10,%zmm12 vpxord %zmm16,%zmm12,%zmm12 .L_main_loop_run_16_amivrujEyduiFoi: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 128(%rdi),%zmm3 vmovdqu8 192(%rdi),%zmm4 vmovdqu8 240(%rdi),%xmm5 addq $0x100,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpxorq %zmm0,%zmm3,%zmm3 vpxorq %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm11,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm11,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm12,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm12,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm15,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm15,%zmm17 vpxord %zmm14,%zmm17,%zmm17 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm16,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm16,%zmm18 vpxord %zmm14,%zmm18,%zmm18 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vaesdeclast %zmm0,%zmm3,%zmm3 vaesdeclast %zmm0,%zmm4,%zmm4 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqa32 %zmm17,%zmm11 vmovdqa32 %zmm18,%zmm12 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) vmovdqu8 %zmm3,128(%rsi) vmovdqu8 %zmm4,192(%rsi) addq $0x100,%rsi subq $0x100,%rdx cmpq $0x100,%rdx jge .L_main_loop_run_16_amivrujEyduiFoi cmpq $0x80,%rdx jge .L_main_loop_run_8_amivrujEyduiFoi jmp .L_do_n_blocks_amivrujEyduiFoi .L_start_by8_amivrujEyduiFoi: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 .L_main_loop_run_8_amivrujEyduiFoi: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 112(%rdi),%xmm5 addq $0x80,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm10,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm10,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) addq $0x80,%rsi subq $0x80,%rdx cmpq $0x80,%rdx jge .L_main_loop_run_8_amivrujEyduiFoi jmp .L_do_n_blocks_amivrujEyduiFoi .L_steal_cipher_amivrujEyduiFoi: vmovdqa %xmm8,%xmm2 leaq vpshufb_shf_table(%rip),%rax vmovdqu (%rax,%rdx,1),%xmm10 vpshufb %xmm10,%xmm8,%xmm8 vmovdqu -16(%rdi,%rdx,1),%xmm3 vmovdqu %xmm8,-16(%rsi,%rdx,1) leaq vpshufb_shf_table(%rip),%rax addq $16,%rax subq %rdx,%rax vmovdqu (%rax),%xmm10 vpxor mask1(%rip),%xmm10,%xmm10 vpshufb %xmm10,%xmm3,%xmm3 vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 vpxor %xmm0,%xmm3,%xmm8 vpxor (%rcx),%xmm8,%xmm8 vaesdec 16(%rcx),%xmm8,%xmm8 vaesdec 32(%rcx),%xmm8,%xmm8 vaesdec 48(%rcx),%xmm8,%xmm8 vaesdec 64(%rcx),%xmm8,%xmm8 vaesdec 80(%rcx),%xmm8,%xmm8 vaesdec 96(%rcx),%xmm8,%xmm8 vaesdec 112(%rcx),%xmm8,%xmm8 vaesdec 128(%rcx),%xmm8,%xmm8 vaesdec 144(%rcx),%xmm8,%xmm8 vaesdeclast 160(%rcx),%xmm8,%xmm8 vpxor %xmm0,%xmm8,%xmm8 .L_done_amivrujEyduiFoi: vmovdqu %xmm8,-16(%rsi) .L_ret_amivrujEyduiFoi: movq 128(%rsp),%rbx xorq %r8,%r8 movq %r8,128(%rsp) vpxorq %zmm0,%zmm0,%zmm0 movq %rbp,%rsp popq %rbp vzeroupper .byte 0xf3,0xc3 .L_less_than_128_bytes_amivrujEyduiFoi: cmpq $0x10,%rdx jb .L_ret_amivrujEyduiFoi movq %rdx,%r8 andq $0x70,%r8 cmpq $0x60,%r8 je .L_num_blocks_is_6_amivrujEyduiFoi cmpq $0x50,%r8 je .L_num_blocks_is_5_amivrujEyduiFoi cmpq $0x40,%r8 je .L_num_blocks_is_4_amivrujEyduiFoi cmpq $0x30,%r8 je .L_num_blocks_is_3_amivrujEyduiFoi cmpq $0x20,%r8 je .L_num_blocks_is_2_amivrujEyduiFoi cmpq $0x10,%r8 je .L_num_blocks_is_1_amivrujEyduiFoi .L_num_blocks_is_7_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,80(%rsp) movq %rbx,80 + 8(%rsp) vmovdqa 80(%rsp),%xmm14 vmovdqu 80(%rdi),%xmm6 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,96(%rsp) movq %rbx,96 + 8(%rsp) vmovdqa 96(%rsp),%xmm15 vmovdqu 96(%rdi),%xmm7 addq $0x70,%rdi andq $0xf,%rdx je .L_done_7_amivrujEyduiFoi .L_steal_cipher_7_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm15,%xmm16 vmovdqa 16(%rsp),%xmm15 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vpxor %xmm0,%xmm7,%xmm7 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vaesdeclast %xmm0,%xmm7,%xmm7 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) vmovdqu %xmm6,80(%rsi) addq $0x70,%rsi vmovdqa64 %xmm16,%xmm0 vmovdqa %xmm7,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_7_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vpxor %xmm0,%xmm7,%xmm7 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vaesdeclast %xmm0,%xmm7,%xmm7 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) vmovdqu %xmm6,80(%rsi) addq $0x70,%rsi vmovdqa %xmm7,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_6_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,80(%rsp) movq %rbx,80 + 8(%rsp) vmovdqa 80(%rsp),%xmm14 vmovdqu 80(%rdi),%xmm6 addq $0x60,%rdi andq $0xf,%rdx je .L_done_6_amivrujEyduiFoi .L_steal_cipher_6_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm14,%xmm15 vmovdqa 16(%rsp),%xmm14 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) addq $0x60,%rsi vmovdqa %xmm15,%xmm0 vmovdqa %xmm6,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_6_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) addq $0x60,%rsi vmovdqa %xmm6,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_5_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 addq $0x50,%rdi andq $0xf,%rdx je .L_done_5_amivrujEyduiFoi .L_steal_cipher_5_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm13,%xmm14 vmovdqa 16(%rsp),%xmm13 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) addq $0x50,%rsi vmovdqa %xmm14,%xmm0 vmovdqa %xmm5,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_5_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) addq $0x50,%rsi vmovdqa %xmm5,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_4_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 addq $0x40,%rdi andq $0xf,%rdx je .L_done_4_amivrujEyduiFoi .L_steal_cipher_4_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm12,%xmm13 vmovdqa 16(%rsp),%xmm12 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x40,%rsi vmovdqa %xmm13,%xmm0 vmovdqa %xmm4,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_4_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x40,%rsi vmovdqa %xmm4,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_3_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 addq $0x30,%rdi andq $0xf,%rdx je .L_done_3_amivrujEyduiFoi .L_steal_cipher_3_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm11,%xmm12 vmovdqa 16(%rsp),%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x30,%rsi vmovdqa %xmm12,%xmm0 vmovdqa %xmm3,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_3_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x30,%rsi vmovdqa %xmm3,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_2_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 addq $0x20,%rdi andq $0xf,%rdx je .L_done_2_amivrujEyduiFoi .L_steal_cipher_2_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm10,%xmm11 vmovdqa 16(%rsp),%xmm10 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) addq $0x20,%rsi vmovdqa %xmm11,%xmm0 vmovdqa %xmm2,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_2_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) addq $0x20,%rsi vmovdqa %xmm2,%xmm8 jmp .L_done_amivrujEyduiFoi .L_num_blocks_is_1_amivrujEyduiFoi: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 addq $0x10,%rdi andq $0xf,%rdx je .L_done_1_amivrujEyduiFoi .L_steal_cipher_1_amivrujEyduiFoi: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm9,%xmm10 vmovdqa 16(%rsp),%xmm9 vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 addq $0x10,%rsi vmovdqa %xmm10,%xmm0 vmovdqa %xmm1,%xmm8 jmp .L_steal_cipher_amivrujEyduiFoi .L_done_1_amivrujEyduiFoi: vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 addq $0x10,%rsi vmovdqa %xmm1,%xmm8 jmp .L_done_amivrujEyduiFoi .cfi_endproc .globl aesni_xts_256_encrypt_avx512 .hidden aesni_xts_256_encrypt_avx512 .type aesni_xts_256_encrypt_avx512,@function .align 32 aesni_xts_256_encrypt_avx512: .cfi_startproc .byte 243,15,30,250 pushq %rbp movq %rsp,%rbp subq $136,%rsp andq $0xffffffffffffffc0,%rsp movq %rbx,128(%rsp) movq $0x87,%r10 vmovdqu (%r9),%xmm1 vpxor (%r8),%xmm1,%xmm1 vaesenc 16(%r8),%xmm1,%xmm1 vaesenc 32(%r8),%xmm1,%xmm1 vaesenc 48(%r8),%xmm1,%xmm1 vaesenc 64(%r8),%xmm1,%xmm1 vaesenc 80(%r8),%xmm1,%xmm1 vaesenc 96(%r8),%xmm1,%xmm1 vaesenc 112(%r8),%xmm1,%xmm1 vaesenc 128(%r8),%xmm1,%xmm1 vaesenc 144(%r8),%xmm1,%xmm1 vaesenc 160(%r8),%xmm1,%xmm1 vaesenc 176(%r8),%xmm1,%xmm1 vaesenc 192(%r8),%xmm1,%xmm1 vaesenc 208(%r8),%xmm1,%xmm1 vaesenclast 224(%r8),%xmm1,%xmm1 vmovdqa %xmm1,(%rsp) cmpq $0x80,%rdx jl .L_less_than_128_bytes_wcpqaDvsGlbjGoe vpbroadcastq %r10,%zmm25 cmpq $0x100,%rdx jge .L_start_by16_wcpqaDvsGlbjGoe cmpq $0x80,%rdx jge .L_start_by8_wcpqaDvsGlbjGoe .L_do_n_blocks_wcpqaDvsGlbjGoe: cmpq $0x0,%rdx je .L_ret_wcpqaDvsGlbjGoe cmpq $0x70,%rdx jge .L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe cmpq $0x60,%rdx jge .L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe cmpq $0x50,%rdx jge .L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe cmpq $0x40,%rdx jge .L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe cmpq $0x30,%rdx jge .L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe cmpq $0x20,%rdx jge .L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe cmpq $0x10,%rdx jge .L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe vmovdqa %xmm0,%xmm8 vmovdqa %xmm9,%xmm0 jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe: movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vextracti32x4 $0x3,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $0x60,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $0x60,%rsi vextracti32x4 $0x1,%zmm2,%xmm8 vextracti32x4 $0x2,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%zmm1 vmovdqu 64(%rdi),%xmm2 addq $0x50,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,(%rsi) vmovdqu %xmm2,64(%rsi) addq $0x50,%rsi vmovdqa %xmm2,%xmm8 vextracti32x4 $0x1,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%zmm1 addq $0x40,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,(%rsi) addq $0x40,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa64 %xmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe: movq $-1,%r8 shrq $0x10,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1{%k1} addq $0x30,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,(%rsi){%k1} addq $0x30,%rsi vextracti32x4 $0x2,%zmm1,%xmm8 vextracti32x4 $0x3,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%ymm1 addq $0x20,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 176(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 192(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 208(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 224(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu %ymm1,(%rsi) addq $0x20,%rsi vextracti32x4 $0x1,%zmm1,%xmm8 vextracti32x4 $0x2,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe: vmovdqu (%rdi),%xmm1 addq $0x10,%rdi vpxor %xmm9,%xmm1,%xmm1 vpxor (%rcx),%xmm1,%xmm1 vaesenc 16(%rcx),%xmm1,%xmm1 vaesenc 32(%rcx),%xmm1,%xmm1 vaesenc 48(%rcx),%xmm1,%xmm1 vaesenc 64(%rcx),%xmm1,%xmm1 vaesenc 80(%rcx),%xmm1,%xmm1 vaesenc 96(%rcx),%xmm1,%xmm1 vaesenc 112(%rcx),%xmm1,%xmm1 vaesenc 128(%rcx),%xmm1,%xmm1 vaesenc 144(%rcx),%xmm1,%xmm1 vaesenc 160(%rcx),%xmm1,%xmm1 vaesenc 176(%rcx),%xmm1,%xmm1 vaesenc 192(%rcx),%xmm1,%xmm1 vaesenc 208(%rcx),%xmm1,%xmm1 vaesenclast 224(%rcx),%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) addq $0x10,%rsi vmovdqa %xmm1,%xmm8 vextracti32x4 $0x1,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_start_by16_wcpqaDvsGlbjGoe: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm11 vpxord %zmm14,%zmm11,%zmm11 vpsrldq $0xf,%zmm10,%zmm15 vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 vpslldq $0x1,%zmm10,%zmm12 vpxord %zmm16,%zmm12,%zmm12 .L_main_loop_run_16_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 128(%rdi),%zmm3 vmovdqu8 192(%rdi),%zmm4 addq $0x100,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpxorq %zmm0,%zmm3,%zmm3 vpxorq %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm11,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm11,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm12,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm12,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm15,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm15,%zmm17 vpxord %zmm14,%zmm17,%zmm17 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm16,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm16,%zmm18 vpxord %zmm14,%zmm18,%zmm18 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vaesenc %zmm0,%zmm3,%zmm3 vaesenc %zmm0,%zmm4,%zmm4 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vaesenclast %zmm0,%zmm3,%zmm3 vaesenclast %zmm0,%zmm4,%zmm4 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqa32 %zmm17,%zmm11 vmovdqa32 %zmm18,%zmm12 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) vmovdqu8 %zmm3,128(%rsi) vmovdqu8 %zmm4,192(%rsi) addq $0x100,%rsi subq $0x100,%rdx cmpq $0x100,%rdx jae .L_main_loop_run_16_wcpqaDvsGlbjGoe cmpq $0x80,%rdx jae .L_main_loop_run_8_wcpqaDvsGlbjGoe vextracti32x4 $0x3,%zmm4,%xmm0 jmp .L_do_n_blocks_wcpqaDvsGlbjGoe .L_start_by8_wcpqaDvsGlbjGoe: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 .L_main_loop_run_8_wcpqaDvsGlbjGoe: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 addq $0x80,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm10,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm10,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) addq $0x80,%rsi subq $0x80,%rdx cmpq $0x80,%rdx jae .L_main_loop_run_8_wcpqaDvsGlbjGoe vextracti32x4 $0x3,%zmm2,%xmm0 jmp .L_do_n_blocks_wcpqaDvsGlbjGoe .L_steal_cipher_wcpqaDvsGlbjGoe: vmovdqa %xmm8,%xmm2 leaq vpshufb_shf_table(%rip),%rax vmovdqu (%rax,%rdx,1),%xmm10 vpshufb %xmm10,%xmm8,%xmm8 vmovdqu -16(%rdi,%rdx,1),%xmm3 vmovdqu %xmm8,-16(%rsi,%rdx,1) leaq vpshufb_shf_table(%rip),%rax addq $16,%rax subq %rdx,%rax vmovdqu (%rax),%xmm10 vpxor mask1(%rip),%xmm10,%xmm10 vpshufb %xmm10,%xmm3,%xmm3 vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 vpxor %xmm0,%xmm3,%xmm8 vpxor (%rcx),%xmm8,%xmm8 vaesenc 16(%rcx),%xmm8,%xmm8 vaesenc 32(%rcx),%xmm8,%xmm8 vaesenc 48(%rcx),%xmm8,%xmm8 vaesenc 64(%rcx),%xmm8,%xmm8 vaesenc 80(%rcx),%xmm8,%xmm8 vaesenc 96(%rcx),%xmm8,%xmm8 vaesenc 112(%rcx),%xmm8,%xmm8 vaesenc 128(%rcx),%xmm8,%xmm8 vaesenc 144(%rcx),%xmm8,%xmm8 vaesenc 160(%rcx),%xmm8,%xmm8 vaesenc 176(%rcx),%xmm8,%xmm8 vaesenc 192(%rcx),%xmm8,%xmm8 vaesenc 208(%rcx),%xmm8,%xmm8 vaesenclast 224(%rcx),%xmm8,%xmm8 vpxor %xmm0,%xmm8,%xmm8 vmovdqu %xmm8,-16(%rsi) .L_ret_wcpqaDvsGlbjGoe: movq 128(%rsp),%rbx xorq %r8,%r8 movq %r8,128(%rsp) vpxorq %zmm0,%zmm0,%zmm0 movq %rbp,%rsp popq %rbp vzeroupper .byte 0xf3,0xc3 .L_less_than_128_bytes_wcpqaDvsGlbjGoe: vpbroadcastq %r10,%zmm25 cmpq $0x10,%rdx jb .L_ret_wcpqaDvsGlbjGoe vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movl $0xaa,%r8d kmovq %r8,%k2 movq %rdx,%r8 andq $0x70,%r8 cmpq $0x60,%r8 je .L_num_blocks_is_6_wcpqaDvsGlbjGoe cmpq $0x50,%r8 je .L_num_blocks_is_5_wcpqaDvsGlbjGoe cmpq $0x40,%r8 je .L_num_blocks_is_4_wcpqaDvsGlbjGoe cmpq $0x30,%r8 je .L_num_blocks_is_3_wcpqaDvsGlbjGoe cmpq $0x20,%r8 je .L_num_blocks_is_2_wcpqaDvsGlbjGoe cmpq $0x10,%r8 je .L_num_blocks_is_1_wcpqaDvsGlbjGoe .L_num_blocks_is_7_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vextracti32x4 $0x3,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_6_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $96,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $96,%rsi vextracti32x4 $0x1,%ymm2,%xmm8 vextracti32x4 $0x2,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_5_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 vmovdqu8 64(%rdi),%xmm2 addq $80,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vpternlogq $0x96,%zmm0,%zmm10,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vaesenc %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vaesenclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqu8 %zmm1,0(%rsi) vmovdqu8 %xmm2,64(%rsi) addq $80,%rsi vmovdqa %xmm2,%xmm8 vextracti32x4 $0x1,%zmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_4_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vmovdqu8 0(%rdi),%zmm1 addq $64,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,0(%rsi) addq $64,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa %xmm10,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_3_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 movq $0x0000ffffffffffff,%r8 kmovq %r8,%k1 vmovdqu8 0(%rdi),%zmm1{%k1} addq $48,%rdi vbroadcasti32x4 (%rcx),%zmm0 vpternlogq $0x96,%zmm0,%zmm9,%zmm1 vbroadcasti32x4 16(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 32(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 48(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 64(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 80(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 96(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 112(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 128(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 144(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 160(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 176(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 192(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 208(%rcx),%zmm0 vaesenc %zmm0,%zmm1,%zmm1 vbroadcasti32x4 224(%rcx),%zmm0 vaesenclast %zmm0,%zmm1,%zmm1 vpxorq %zmm9,%zmm1,%zmm1 vmovdqu8 %zmm1,0(%rsi){%k1} addq $48,%rsi vextracti32x4 $2,%zmm1,%xmm8 vextracti32x4 $3,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_2_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vmovdqu8 0(%rdi),%ymm1 addq $32,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 176(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 192(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 208(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 224(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu8 %ymm1,0(%rsi) addq $32,%rsi vextracti32x4 $1,%ymm1,%xmm8 vextracti32x4 $2,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .L_num_blocks_is_1_wcpqaDvsGlbjGoe: vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vmovdqu8 0(%rdi),%xmm1 addq $16,%rdi vbroadcasti32x4 (%rcx),%ymm0 vpternlogq $0x96,%ymm0,%ymm9,%ymm1 vbroadcasti32x4 16(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 32(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 48(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 64(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 80(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 96(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 112(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 128(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 144(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 160(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 176(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 192(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 208(%rcx),%ymm0 vaesenc %ymm0,%ymm1,%ymm1 vbroadcasti32x4 224(%rcx),%ymm0 vaesenclast %ymm0,%ymm1,%ymm1 vpxorq %ymm9,%ymm1,%ymm1 vmovdqu8 %xmm1,0(%rsi) addq $16,%rsi vmovdqa %xmm1,%xmm8 vextracti32x4 $1,%zmm9,%xmm0 andq $0xf,%rdx je .L_ret_wcpqaDvsGlbjGoe jmp .L_steal_cipher_wcpqaDvsGlbjGoe .cfi_endproc .globl aesni_xts_256_decrypt_avx512 .hidden aesni_xts_256_decrypt_avx512 .type aesni_xts_256_decrypt_avx512,@function .align 32 aesni_xts_256_decrypt_avx512: .cfi_startproc .byte 243,15,30,250 pushq %rbp movq %rsp,%rbp subq $136,%rsp andq $0xffffffffffffffc0,%rsp movq %rbx,128(%rsp) movq $0x87,%r10 vmovdqu (%r9),%xmm1 vpxor (%r8),%xmm1,%xmm1 vaesenc 16(%r8),%xmm1,%xmm1 vaesenc 32(%r8),%xmm1,%xmm1 vaesenc 48(%r8),%xmm1,%xmm1 vaesenc 64(%r8),%xmm1,%xmm1 vaesenc 80(%r8),%xmm1,%xmm1 vaesenc 96(%r8),%xmm1,%xmm1 vaesenc 112(%r8),%xmm1,%xmm1 vaesenc 128(%r8),%xmm1,%xmm1 vaesenc 144(%r8),%xmm1,%xmm1 vaesenc 160(%r8),%xmm1,%xmm1 vaesenc 176(%r8),%xmm1,%xmm1 vaesenc 192(%r8),%xmm1,%xmm1 vaesenc 208(%r8),%xmm1,%xmm1 vaesenclast 224(%r8),%xmm1,%xmm1 vmovdqa %xmm1,(%rsp) cmpq $0x80,%rdx jb .L_less_than_128_bytes_EmbgEptodyewbFa vpbroadcastq %r10,%zmm25 cmpq $0x100,%rdx jge .L_start_by16_EmbgEptodyewbFa jmp .L_start_by8_EmbgEptodyewbFa .L_do_n_blocks_EmbgEptodyewbFa: cmpq $0x0,%rdx je .L_ret_EmbgEptodyewbFa cmpq $0x70,%rdx jge .L_remaining_num_blocks_is_7_EmbgEptodyewbFa cmpq $0x60,%rdx jge .L_remaining_num_blocks_is_6_EmbgEptodyewbFa cmpq $0x50,%rdx jge .L_remaining_num_blocks_is_5_EmbgEptodyewbFa cmpq $0x40,%rdx jge .L_remaining_num_blocks_is_4_EmbgEptodyewbFa cmpq $0x30,%rdx jge .L_remaining_num_blocks_is_3_EmbgEptodyewbFa cmpq $0x20,%rdx jge .L_remaining_num_blocks_is_2_EmbgEptodyewbFa cmpq $0x10,%rdx jge .L_remaining_num_blocks_is_1_EmbgEptodyewbFa vmovdqu %xmm5,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,-16(%rsi) vmovdqa %xmm1,%xmm8 movq $0x1,%r8 kmovq %r8,%k1 vpsllq $0x3f,%xmm9,%xmm13 vpsraq $0x3f,%xmm13,%xmm14 vpandq %xmm25,%xmm14,%xmm5 vpxorq %xmm5,%xmm9,%xmm9{%k1} vpsrldq $0x8,%xmm9,%xmm10 .byte 98, 211, 181, 8, 115, 194, 1 vpslldq $0x8,%xmm13,%xmm13 vpxorq %xmm13,%xmm0,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_remaining_num_blocks_is_7_EmbgEptodyewbFa: movq $0xffffffffffffffff,%r8 shrq $0x10,%r8 kmovq %r8,%k1 vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2{%k1} addq $0x70,%rdi andq $0xf,%rdx je .L_done_7_remain_EmbgEptodyewbFa vextracti32x4 $0x2,%zmm10,%xmm12 vextracti32x4 $0x3,%zmm10,%xmm13 vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} addq $0x70,%rsi vextracti32x4 $0x2,%zmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_7_remain_EmbgEptodyewbFa: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi){%k1} jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_6_EmbgEptodyewbFa: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%ymm2 addq $0x60,%rdi andq $0xf,%rdx je .L_done_6_remain_EmbgEptodyewbFa vextracti32x4 $0x1,%zmm10,%xmm12 vextracti32x4 $0x2,%zmm10,%xmm13 vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) addq $0x60,%rsi vextracti32x4 $0x1,%zmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_6_remain_EmbgEptodyewbFa: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %ymm2,64(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_5_EmbgEptodyewbFa: vmovdqu8 (%rdi),%zmm1 vmovdqu 64(%rdi),%xmm2 addq $0x50,%rdi andq $0xf,%rdx je .L_done_5_remain_EmbgEptodyewbFa vmovdqa %xmm10,%xmm12 vextracti32x4 $0x1,%zmm10,%xmm10 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu %xmm2,64(%rsi) addq $0x50,%rsi vmovdqa %xmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_5_remain_EmbgEptodyewbFa: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %xmm2,64(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_4_EmbgEptodyewbFa: vmovdqu8 (%rdi),%zmm1 addq $0x40,%rdi andq $0xf,%rdx je .L_done_4_remain_EmbgEptodyewbFa vextracti32x4 $0x3,%zmm9,%xmm12 vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) addq $0x40,%rsi vextracti32x4 $0x3,%zmm1,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_4_remain_EmbgEptodyewbFa: vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_3_EmbgEptodyewbFa: vmovdqu (%rdi),%xmm1 vmovdqu 16(%rdi),%xmm2 vmovdqu 32(%rdi),%xmm3 addq $0x30,%rdi andq $0xf,%rdx je .L_done_3_remain_EmbgEptodyewbFa vextracti32x4 $0x2,%zmm9,%xmm13 vextracti32x4 $0x1,%zmm9,%xmm10 vextracti32x4 $0x3,%zmm9,%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x30,%rsi vmovdqa %xmm3,%xmm8 vmovdqa %xmm13,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_3_remain_EmbgEptodyewbFa: vextracti32x4 $0x1,%zmm9,%xmm10 vextracti32x4 $0x2,%zmm9,%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_2_EmbgEptodyewbFa: vmovdqu (%rdi),%xmm1 vmovdqu 16(%rdi),%xmm2 addq $0x20,%rdi andq $0xf,%rdx je .L_done_2_remain_EmbgEptodyewbFa vextracti32x4 $0x2,%zmm9,%xmm10 vextracti32x4 $0x1,%zmm9,%xmm12 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x20,%rsi vmovdqa %xmm2,%xmm8 vmovdqa %xmm12,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_2_remain_EmbgEptodyewbFa: vextracti32x4 $0x1,%zmm9,%xmm10 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_remaining_num_blocks_is_1_EmbgEptodyewbFa: vmovdqu (%rdi),%xmm1 addq $0x10,%rdi andq $0xf,%rdx je .L_done_1_remain_EmbgEptodyewbFa vextracti32x4 $0x1,%zmm9,%xmm11 vpxor %xmm11,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm11,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) addq $0x10,%rsi vmovdqa %xmm1,%xmm8 vmovdqa %xmm9,%xmm0 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_1_remain_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 vmovdqu %xmm1,(%rsi) jmp .L_ret_EmbgEptodyewbFa .L_start_by16_EmbgEptodyewbFa: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm11 vpxord %zmm14,%zmm11,%zmm11 vpsrldq $0xf,%zmm10,%zmm15 vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16 vpslldq $0x1,%zmm10,%zmm12 vpxord %zmm16,%zmm12,%zmm12 .L_main_loop_run_16_EmbgEptodyewbFa: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 128(%rdi),%zmm3 vmovdqu8 192(%rdi),%zmm4 vmovdqu8 240(%rdi),%xmm5 addq $0x100,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpxorq %zmm0,%zmm3,%zmm3 vpxorq %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm11,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm11,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm12,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm12,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm15,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm15,%zmm17 vpxord %zmm14,%zmm17,%zmm17 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vpsrldq $0xf,%zmm16,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm16,%zmm18 vpxord %zmm14,%zmm18,%zmm18 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vaesdec %zmm0,%zmm3,%zmm3 vaesdec %zmm0,%zmm4,%zmm4 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vaesdeclast %zmm0,%zmm3,%zmm3 vaesdeclast %zmm0,%zmm4,%zmm4 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vpxorq %zmm11,%zmm3,%zmm3 vpxorq %zmm12,%zmm4,%zmm4 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqa32 %zmm17,%zmm11 vmovdqa32 %zmm18,%zmm12 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) vmovdqu8 %zmm3,128(%rsi) vmovdqu8 %zmm4,192(%rsi) addq $0x100,%rsi subq $0x100,%rdx cmpq $0x100,%rdx jge .L_main_loop_run_16_EmbgEptodyewbFa cmpq $0x80,%rdx jge .L_main_loop_run_8_EmbgEptodyewbFa jmp .L_do_n_blocks_EmbgEptodyewbFa .L_start_by8_EmbgEptodyewbFa: vbroadcasti32x4 (%rsp),%zmm0 vbroadcasti32x4 shufb_15_7(%rip),%zmm8 movq $0xaa,%r8 kmovq %r8,%k2 vpshufb %zmm8,%zmm0,%zmm1 vpsllvq const_dq3210(%rip),%zmm0,%zmm4 vpsrlvq const_dq5678(%rip),%zmm1,%zmm2 vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3 vpxorq %zmm2,%zmm4,%zmm4{%k2} vpxord %zmm4,%zmm3,%zmm9 vpsllvq const_dq7654(%rip),%zmm0,%zmm5 vpsrlvq const_dq1234(%rip),%zmm1,%zmm6 vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7 vpxorq %zmm6,%zmm5,%zmm5{%k2} vpxord %zmm5,%zmm7,%zmm10 .L_main_loop_run_8_EmbgEptodyewbFa: vmovdqu8 (%rdi),%zmm1 vmovdqu8 64(%rdi),%zmm2 vmovdqu8 112(%rdi),%xmm5 addq $0x80,%rdi vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vbroadcasti32x4 (%rcx),%zmm0 vpxorq %zmm0,%zmm1,%zmm1 vpxorq %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm9,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm9,%zmm15 vpxord %zmm14,%zmm15,%zmm15 vbroadcasti32x4 16(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 32(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 48(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vpsrldq $0xf,%zmm10,%zmm13 vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14 vpslldq $0x1,%zmm10,%zmm16 vpxord %zmm14,%zmm16,%zmm16 vbroadcasti32x4 64(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 80(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 96(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 112(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 128(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 144(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 160(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 176(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 192(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 208(%rcx),%zmm0 vaesdec %zmm0,%zmm1,%zmm1 vaesdec %zmm0,%zmm2,%zmm2 vbroadcasti32x4 224(%rcx),%zmm0 vaesdeclast %zmm0,%zmm1,%zmm1 vaesdeclast %zmm0,%zmm2,%zmm2 vpxorq %zmm9,%zmm1,%zmm1 vpxorq %zmm10,%zmm2,%zmm2 vmovdqa32 %zmm15,%zmm9 vmovdqa32 %zmm16,%zmm10 vmovdqu8 %zmm1,(%rsi) vmovdqu8 %zmm2,64(%rsi) addq $0x80,%rsi subq $0x80,%rdx cmpq $0x80,%rdx jge .L_main_loop_run_8_EmbgEptodyewbFa jmp .L_do_n_blocks_EmbgEptodyewbFa .L_steal_cipher_EmbgEptodyewbFa: vmovdqa %xmm8,%xmm2 leaq vpshufb_shf_table(%rip),%rax vmovdqu (%rax,%rdx,1),%xmm10 vpshufb %xmm10,%xmm8,%xmm8 vmovdqu -16(%rdi,%rdx,1),%xmm3 vmovdqu %xmm8,-16(%rsi,%rdx,1) leaq vpshufb_shf_table(%rip),%rax addq $16,%rax subq %rdx,%rax vmovdqu (%rax),%xmm10 vpxor mask1(%rip),%xmm10,%xmm10 vpshufb %xmm10,%xmm3,%xmm3 vpblendvb %xmm10,%xmm2,%xmm3,%xmm3 vpxor %xmm0,%xmm3,%xmm8 vpxor (%rcx),%xmm8,%xmm8 vaesdec 16(%rcx),%xmm8,%xmm8 vaesdec 32(%rcx),%xmm8,%xmm8 vaesdec 48(%rcx),%xmm8,%xmm8 vaesdec 64(%rcx),%xmm8,%xmm8 vaesdec 80(%rcx),%xmm8,%xmm8 vaesdec 96(%rcx),%xmm8,%xmm8 vaesdec 112(%rcx),%xmm8,%xmm8 vaesdec 128(%rcx),%xmm8,%xmm8 vaesdec 144(%rcx),%xmm8,%xmm8 vaesdec 160(%rcx),%xmm8,%xmm8 vaesdec 176(%rcx),%xmm8,%xmm8 vaesdec 192(%rcx),%xmm8,%xmm8 vaesdec 208(%rcx),%xmm8,%xmm8 vaesdeclast 224(%rcx),%xmm8,%xmm8 vpxor %xmm0,%xmm8,%xmm8 .L_done_EmbgEptodyewbFa: vmovdqu %xmm8,-16(%rsi) .L_ret_EmbgEptodyewbFa: movq 128(%rsp),%rbx xorq %r8,%r8 movq %r8,128(%rsp) vpxorq %zmm0,%zmm0,%zmm0 movq %rbp,%rsp popq %rbp vzeroupper .byte 0xf3,0xc3 .L_less_than_128_bytes_EmbgEptodyewbFa: cmpq $0x10,%rdx jb .L_ret_EmbgEptodyewbFa movq %rdx,%r8 andq $0x70,%r8 cmpq $0x60,%r8 je .L_num_blocks_is_6_EmbgEptodyewbFa cmpq $0x50,%r8 je .L_num_blocks_is_5_EmbgEptodyewbFa cmpq $0x40,%r8 je .L_num_blocks_is_4_EmbgEptodyewbFa cmpq $0x30,%r8 je .L_num_blocks_is_3_EmbgEptodyewbFa cmpq $0x20,%r8 je .L_num_blocks_is_2_EmbgEptodyewbFa cmpq $0x10,%r8 je .L_num_blocks_is_1_EmbgEptodyewbFa .L_num_blocks_is_7_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,80(%rsp) movq %rbx,80 + 8(%rsp) vmovdqa 80(%rsp),%xmm14 vmovdqu 80(%rdi),%xmm6 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,96(%rsp) movq %rbx,96 + 8(%rsp) vmovdqa 96(%rsp),%xmm15 vmovdqu 96(%rdi),%xmm7 addq $0x70,%rdi andq $0xf,%rdx je .L_done_7_EmbgEptodyewbFa .L_steal_cipher_7_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm15,%xmm16 vmovdqa 16(%rsp),%xmm15 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vpxor %xmm0,%xmm7,%xmm7 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vaesdeclast %xmm0,%xmm7,%xmm7 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) vmovdqu %xmm6,80(%rsi) addq $0x70,%rsi vmovdqa64 %xmm16,%xmm0 vmovdqa %xmm7,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_7_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vpxor %xmm0,%xmm7,%xmm7 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vaesdec %xmm0,%xmm7,%xmm7 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vaesdeclast %xmm0,%xmm7,%xmm7 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vpxor %xmm15,%xmm7,%xmm7 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) vmovdqu %xmm6,80(%rsi) addq $0x70,%rsi vmovdqa %xmm7,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_6_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,80(%rsp) movq %rbx,80 + 8(%rsp) vmovdqa 80(%rsp),%xmm14 vmovdqu 80(%rdi),%xmm6 addq $0x60,%rdi andq $0xf,%rdx je .L_done_6_EmbgEptodyewbFa .L_steal_cipher_6_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm14,%xmm15 vmovdqa 16(%rsp),%xmm14 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) addq $0x60,%rsi vmovdqa %xmm15,%xmm0 vmovdqa %xmm6,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_6_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vpxor %xmm0,%xmm6,%xmm6 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vaesdec %xmm0,%xmm6,%xmm6 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vaesdeclast %xmm0,%xmm6,%xmm6 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vpxor %xmm14,%xmm6,%xmm6 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) vmovdqu %xmm5,64(%rsi) addq $0x60,%rsi vmovdqa %xmm6,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_5_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,64(%rsp) movq %rbx,64 + 8(%rsp) vmovdqa 64(%rsp),%xmm13 vmovdqu 64(%rdi),%xmm5 addq $0x50,%rdi andq $0xf,%rdx je .L_done_5_EmbgEptodyewbFa .L_steal_cipher_5_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm13,%xmm14 vmovdqa 16(%rsp),%xmm13 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) addq $0x50,%rsi vmovdqa %xmm14,%xmm0 vmovdqa %xmm5,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_5_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vpxor %xmm0,%xmm5,%xmm5 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vaesdec %xmm0,%xmm5,%xmm5 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vaesdeclast %xmm0,%xmm5,%xmm5 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vpxor %xmm13,%xmm5,%xmm5 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) vmovdqu %xmm4,48(%rsi) addq $0x50,%rsi vmovdqa %xmm5,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_4_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,48(%rsp) movq %rbx,48 + 8(%rsp) vmovdqa 48(%rsp),%xmm12 vmovdqu 48(%rdi),%xmm4 addq $0x40,%rdi andq $0xf,%rdx je .L_done_4_EmbgEptodyewbFa .L_steal_cipher_4_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm12,%xmm13 vmovdqa 16(%rsp),%xmm12 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x40,%rsi vmovdqa %xmm13,%xmm0 vmovdqa %xmm4,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_4_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vpxor %xmm0,%xmm4,%xmm4 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vaesdec %xmm0,%xmm4,%xmm4 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vaesdeclast %xmm0,%xmm4,%xmm4 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vpxor %xmm12,%xmm4,%xmm4 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) vmovdqu %xmm3,32(%rsi) addq $0x40,%rsi vmovdqa %xmm4,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_3_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,32(%rsp) movq %rbx,32 + 8(%rsp) vmovdqa 32(%rsp),%xmm11 vmovdqu 32(%rdi),%xmm3 addq $0x30,%rdi andq $0xf,%rdx je .L_done_3_EmbgEptodyewbFa .L_steal_cipher_3_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm11,%xmm12 vmovdqa 16(%rsp),%xmm11 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x30,%rsi vmovdqa %xmm12,%xmm0 vmovdqa %xmm3,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_3_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vpxor %xmm0,%xmm3,%xmm3 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vaesdec %xmm0,%xmm3,%xmm3 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vaesdeclast %xmm0,%xmm3,%xmm3 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vpxor %xmm11,%xmm3,%xmm3 vmovdqu %xmm1,(%rsi) vmovdqu %xmm2,16(%rsi) addq $0x30,%rsi vmovdqa %xmm3,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_2_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,16 + 8(%rsp) vmovdqa 16(%rsp),%xmm10 vmovdqu 16(%rdi),%xmm2 addq $0x20,%rdi andq $0xf,%rdx je .L_done_2_EmbgEptodyewbFa .L_steal_cipher_2_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm10,%xmm11 vmovdqa 16(%rsp),%xmm10 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) addq $0x20,%rsi vmovdqa %xmm11,%xmm0 vmovdqa %xmm2,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_2_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vpxor %xmm0,%xmm2,%xmm2 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vaesdec %xmm0,%xmm2,%xmm2 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vaesdeclast %xmm0,%xmm2,%xmm2 vpxor %xmm9,%xmm1,%xmm1 vpxor %xmm10,%xmm2,%xmm2 vmovdqu %xmm1,(%rsi) addq $0x20,%rsi vmovdqa %xmm2,%xmm8 jmp .L_done_EmbgEptodyewbFa .L_num_blocks_is_1_EmbgEptodyewbFa: vmovdqa 0(%rsp),%xmm9 movq 0(%rsp),%rax movq 8(%rsp),%rbx vmovdqu 0(%rdi),%xmm1 addq $0x10,%rdi andq $0xf,%rdx je .L_done_1_EmbgEptodyewbFa .L_steal_cipher_1_EmbgEptodyewbFa: xorq %r11,%r11 shlq $1,%rax adcq %rbx,%rbx cmovcq %r10,%r11 xorq %r11,%rax movq %rax,16(%rsp) movq %rbx,24(%rsp) vmovdqa64 %xmm9,%xmm10 vmovdqa 16(%rsp),%xmm9 vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 addq $0x10,%rsi vmovdqa %xmm10,%xmm0 vmovdqa %xmm1,%xmm8 jmp .L_steal_cipher_EmbgEptodyewbFa .L_done_1_EmbgEptodyewbFa: vpxor %xmm9,%xmm1,%xmm1 vmovdqu (%rcx),%xmm0 vpxor %xmm0,%xmm1,%xmm1 vmovdqu 16(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 32(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 48(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 64(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 80(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 96(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 112(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 128(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 144(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 160(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 176(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 192(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 208(%rcx),%xmm0 vaesdec %xmm0,%xmm1,%xmm1 vmovdqu 224(%rcx),%xmm0 vaesdeclast %xmm0,%xmm1,%xmm1 vpxor %xmm9,%xmm1,%xmm1 addq $0x10,%rsi vmovdqa %xmm1,%xmm8 jmp .L_done_EmbgEptodyewbFa .cfi_endproc .section .rodata .align 16 vpshufb_shf_table: .quad 0x8786858483828100, 0x8f8e8d8c8b8a8988 .quad 0x0706050403020100, 0x000e0d0c0b0a0908 mask1: .quad 0x8080808080808080, 0x8080808080808080 const_dq3210: .quad 0, 0, 1, 1, 2, 2, 3, 3 const_dq5678: .quad 8, 8, 7, 7, 6, 6, 5, 5 const_dq7654: .quad 4, 4, 5, 5, 6, 6, 7, 7 const_dq1234: .quad 4, 4, 3, 3, 2, 2, 1, 1 shufb_15_7: .byte 15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7, 0xff, 0xff .byte 0xff, 0xff, 0xff, 0xff, 0xff .text .section ".note.gnu.property", "a" .p2align 3 .long 1f - 0f .long 4f - 1f .long 5 0: # "GNU" encoded with .byte, since .asciz isn't supported # on Solaris. .byte 0x47 .byte 0x4e .byte 0x55 .byte 0 1: .p2align 3 .long 0xc0000002 .long 3f - 2f 2: .long 3 3: .p2align 3 4: