.text .global _old_aes128_key_expansion _old_aes128_key_expansion: movdqu 0(%rdi), %xmm1 mov %rsi, %rdx movdqu %xmm1, 0(%rdx) aeskeygenassist $1, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 16(%rdx) aeskeygenassist $2, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 32(%rdx) aeskeygenassist $4, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 48(%rdx) aeskeygenassist $8, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 64(%rdx) aeskeygenassist $16, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 80(%rdx) aeskeygenassist $32, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 96(%rdx) aeskeygenassist $64, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 112(%rdx) aeskeygenassist $128, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 128(%rdx) aeskeygenassist $27, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 144(%rdx) aeskeygenassist $54, %xmm1, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 vpslldq $4, %xmm1, %xmm3 pxor %xmm3, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 160(%rdx) pxor %xmm1, %xmm1 pxor %xmm2, %xmm2 pxor %xmm3, %xmm3 ret .global _old_aes256_key_expansion _old_aes256_key_expansion: movdqu 0(%rdi), %xmm1 movdqu 16(%rdi), %xmm3 mov %rsi, %rdx movdqu %xmm1, 0(%rdx) movdqu %xmm3, 16(%rdx) aeskeygenassist $1, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 32(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 48(%rdx) aeskeygenassist $2, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 64(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 80(%rdx) aeskeygenassist $4, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 96(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 112(%rdx) aeskeygenassist $8, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 128(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 144(%rdx) aeskeygenassist $16, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 160(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 176(%rdx) aeskeygenassist $32, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 192(%rdx) aeskeygenassist $0, %xmm1, %xmm2 pshufd $170, %xmm2, %xmm2 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 vpslldq $4, %xmm3, %xmm4 pxor %xmm4, %xmm3 pxor %xmm2, %xmm3 movdqu %xmm3, 208(%rdx) aeskeygenassist $64, %xmm3, %xmm2 pshufd $255, %xmm2, %xmm2 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 vpslldq $4, %xmm1, %xmm4 pxor %xmm4, %xmm1 pxor %xmm2, %xmm1 movdqu %xmm1, 224(%rdx) pxor %xmm1, %xmm1 pxor %xmm2, %xmm2 pxor %xmm3, %xmm3 pxor %xmm4, %xmm4 ret .global _old_gcm128_encrypt _old_gcm128_encrypt: mov %rdi, %r9 push %r15 push %r14 push %r13 push %r12 push %rsi push %rdi push %rbp push %rbx movq 0(%r9), %r14 movq 8(%r9), %r13 movq 16(%r9), %rax movq 24(%r9), %r11 movq 32(%r9), %r10 movq 40(%r9), %r8 movq 48(%r9), %rbx movq 56(%r9), %r15 movdqu 0(%r10), %xmm7 pxor %xmm0, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu %xmm0, %xmm11 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm8 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm8 pshufb %xmm8, %xmm7 mov $2, %r12 pinsrd $0, %r12d, %xmm7 pxor %xmm1, %xmm1 cmp $0, %r11 jbe L0 mov %r11, %rcx shr $4, %rcx mov %rax, %r9 cmp $0, %rcx je L2 mov $0, %rdx jmp L5 .align 16 L4: movdqu 0(%r9), %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 .align 16 L5: cmp %rcx, %rdx jne L4 jmp L3 L2: L3: mov %r11, %rax and $15, %rax cmp $0, %rax jne L6 jmp L7 L6: movdqu 0(%r9), %xmm2 cmp $8, %rax jae L8 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L9 L8: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L9: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L7: jmp L1 L0: L1: mov %r14, %rax mov %r13, %rcx cmp $0, %rcx jbe L10 mov %rcx, %rsi and $15, %rsi shr $4, %rcx mov $0, %rdx mov %rax, %r9 mov %rbx, %r10 pxor %xmm10, %xmm10 mov $1, %r12 pinsrd $0, %r12d, %xmm10 jmp L13 .align 16 L12: movdqu %xmm7, %xmm0 pshufb %xmm8, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu 0(%r9), %xmm2 pxor %xmm0, %xmm2 movdqu %xmm2, 0(%r10) pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 add $16, %r10 paddd %xmm10, %xmm7 .align 16 L13: cmp %rcx, %rdx jne L12 cmp $0, %rsi jne L14 jmp L15 L14: movdqu %xmm1, %xmm3 movdqu 0(%r9), %xmm2 movdqu %xmm2, %xmm1 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r10) mov %rsi, %rax mov %r10, %r9 movdqu %xmm3, %xmm1 movdqu 0(%r9), %xmm2 cmp $8, %rax jae L16 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L17 L16: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L17: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L15: jmp L11 L10: L11: pxor %xmm2, %xmm2 mov %r13, %rax imul $8, %rax pinsrd $0, %eax, %xmm2 mov %r11, %rax imul $8, %rax pinsrd $2, %eax, %xmm2 pshufb %xmm8, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 mov $1, %r12 pinsrd $0, %r12d, %xmm7 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r15) pop %rbx pop %rbp pop %rdi pop %rsi pop %r12 pop %r13 pop %r14 pop %r15 ret .global _old_gcm128_decrypt _old_gcm128_decrypt: mov %rdi, %r9 push %r15 push %r14 push %r13 push %r12 push %rsi push %rdi push %rbp push %rbx movq 0(%r9), %r14 movq 8(%r9), %r13 movq 16(%r9), %rax movq 24(%r9), %r11 movq 32(%r9), %r10 movq 40(%r9), %r8 movq 48(%r9), %rbx movq 56(%r9), %r15 movdqu 0(%r10), %xmm7 pxor %xmm0, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu %xmm0, %xmm11 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm8 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm8 pshufb %xmm8, %xmm7 mov $2, %r12 pinsrd $0, %r12d, %xmm7 pxor %xmm1, %xmm1 cmp $0, %r11 jbe L18 mov %r11, %rcx shr $4, %rcx mov %rax, %r9 cmp $0, %rcx je L20 mov $0, %rdx jmp L23 .align 16 L22: movdqu 0(%r9), %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 .align 16 L23: cmp %rcx, %rdx jne L22 jmp L21 L20: L21: mov %r11, %rax and $15, %rax cmp $0, %rax jne L24 jmp L25 L24: movdqu 0(%r9), %xmm2 cmp $8, %rax jae L26 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L27 L26: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L27: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L25: jmp L19 L18: L19: mov %r14, %rax mov %r13, %rcx cmp $0, %rcx jbe L28 mov %rcx, %rsi and $15, %rsi shr $4, %rcx mov $0, %rdx mov %rax, %r9 mov %rbx, %r10 pxor %xmm10, %xmm10 mov $1, %r12 pinsrd $0, %r12d, %xmm10 jmp L31 .align 16 L30: movdqu 0(%r9), %xmm0 movdqu %xmm0, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 movdqu %xmm0, %xmm3 movdqu %xmm7, %xmm0 pshufb %xmm8, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm3 movdqu %xmm3, 0(%r10) add $1, %rdx add $16, %r9 add $16, %r10 paddd %xmm10, %xmm7 .align 16 L31: cmp %rcx, %rdx jne L30 cmp $0, %rsi jne L32 jmp L33 L32: movdqu %xmm1, %xmm3 movdqu 0(%r9), %xmm2 movdqu %xmm2, %xmm1 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r10) mov %rsi, %rax movdqu %xmm3, %xmm1 movdqu 0(%r9), %xmm2 cmp $8, %rax jae L34 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L35 L34: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L35: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L33: jmp L29 L28: L29: pxor %xmm2, %xmm2 mov %r13, %rax imul $8, %rax pinsrd $0, %eax, %xmm2 mov %r11, %rax imul $8, %rax pinsrd $2, %eax, %xmm2 pshufb %xmm8, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 mov $1, %r12 pinsrd $0, %r12d, %xmm7 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu 0(%r15), %xmm0 pcmpeqd %xmm1, %xmm0 pextrq $0, %xmm0, %rdx cmp $18446744073709551615, %rdx jne L36 mov $0, %rax jmp L37 L36: mov $1, %rax L37: pextrq $1, %xmm0, %rdx cmp $18446744073709551615, %rdx jne L38 mov $0, %rdx jmp L39 L38: mov $1, %rdx L39: add %rdx, %rax mov %rax, %rdx pop %rbx pop %rbp pop %rdi pop %rsi pop %r12 pop %r13 pop %r14 pop %r15 mov %rdx, %rax ret .global _old_gcm256_encrypt _old_gcm256_encrypt: mov %rdi, %r9 push %r15 push %r14 push %r13 push %r12 push %rsi push %rdi push %rbp push %rbx movq 0(%r9), %r14 movq 8(%r9), %r13 movq 16(%r9), %rax movq 24(%r9), %r11 movq 32(%r9), %r10 movq 40(%r9), %r8 movq 48(%r9), %rbx movq 56(%r9), %r15 movdqu 0(%r10), %xmm7 pxor %xmm0, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu %xmm0, %xmm11 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm8 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm8 pshufb %xmm8, %xmm7 mov $2, %r12 pinsrd $0, %r12d, %xmm7 pxor %xmm1, %xmm1 cmp $0, %r11 jbe L40 mov %r11, %rcx shr $4, %rcx mov %rax, %r9 cmp $0, %rcx je L42 mov $0, %rdx jmp L45 .align 16 L44: movdqu 0(%r9), %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 .align 16 L45: cmp %rcx, %rdx jne L44 jmp L43 L42: L43: mov %r11, %rax and $15, %rax cmp $0, %rax jne L46 jmp L47 L46: movdqu 0(%r9), %xmm2 cmp $8, %rax jae L48 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L49 L48: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L49: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L47: jmp L41 L40: L41: mov %r14, %rax mov %r13, %rcx cmp $0, %rcx jbe L50 mov %rcx, %rsi and $15, %rsi shr $4, %rcx mov $0, %rdx mov %rax, %r9 mov %rbx, %r10 pxor %xmm10, %xmm10 mov $1, %r12 pinsrd $0, %r12d, %xmm10 jmp L53 .align 16 L52: movdqu %xmm7, %xmm0 pshufb %xmm8, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu 0(%r9), %xmm2 pxor %xmm0, %xmm2 movdqu %xmm2, 0(%r10) pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 add $16, %r10 paddd %xmm10, %xmm7 .align 16 L53: cmp %rcx, %rdx jne L52 cmp $0, %rsi jne L54 jmp L55 L54: movdqu %xmm1, %xmm3 movdqu 0(%r9), %xmm2 movdqu %xmm2, %xmm1 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r10) mov %rsi, %rax mov %r10, %r9 movdqu %xmm3, %xmm1 movdqu 0(%r9), %xmm2 cmp $8, %rax jae L56 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L57 L56: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L57: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L55: jmp L51 L50: L51: pxor %xmm2, %xmm2 mov %r13, %rax imul $8, %rax pinsrd $0, %eax, %xmm2 mov %r11, %rax imul $8, %rax pinsrd $2, %eax, %xmm2 pshufb %xmm8, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 mov $1, %r12 pinsrd $0, %r12d, %xmm7 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r15) pop %rbx pop %rbp pop %rdi pop %rsi pop %r12 pop %r13 pop %r14 pop %r15 ret .global _old_gcm256_decrypt _old_gcm256_decrypt: mov %rdi, %r9 push %r15 push %r14 push %r13 push %r12 push %rsi push %rdi push %rbp push %rbx movq 0(%r9), %r14 movq 8(%r9), %r13 movq 16(%r9), %rax movq 24(%r9), %r11 movq 32(%r9), %r10 movq 40(%r9), %r8 movq 48(%r9), %rbx movq 56(%r9), %r15 movdqu 0(%r10), %xmm7 pxor %xmm0, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 movdqu %xmm0, %xmm11 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm8 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm8 pshufb %xmm8, %xmm7 mov $2, %r12 pinsrd $0, %r12d, %xmm7 pxor %xmm1, %xmm1 cmp $0, %r11 jbe L58 mov %r11, %rcx shr $4, %rcx mov %rax, %r9 cmp $0, %rcx je L60 mov $0, %rdx jmp L63 .align 16 L62: movdqu 0(%r9), %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 add $1, %rdx add $16, %r9 .align 16 L63: cmp %rcx, %rdx jne L62 jmp L61 L60: L61: mov %r11, %rax and $15, %rax cmp $0, %rax jne L64 jmp L65 L64: movdqu 0(%r9), %xmm2 cmp $8, %rax jae L66 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L67 L66: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L67: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L65: jmp L59 L58: L59: mov %r14, %rax mov %r13, %rcx cmp $0, %rcx jbe L68 mov %rcx, %rsi and $15, %rsi shr $4, %rcx mov $0, %rdx mov %rax, %r9 mov %rbx, %r10 pxor %xmm10, %xmm10 mov $1, %r12 pinsrd $0, %r12d, %xmm10 jmp L71 .align 16 L70: movdqu 0(%r9), %xmm0 movdqu %xmm0, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 movdqu %xmm0, %xmm3 movdqu %xmm7, %xmm0 pshufb %xmm8, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm3 movdqu %xmm3, 0(%r10) add $1, %rdx add $16, %r9 add $16, %r10 paddd %xmm10, %xmm7 .align 16 L71: cmp %rcx, %rdx jne L70 cmp $0, %rsi jne L72 jmp L73 L72: movdqu %xmm1, %xmm3 movdqu 0(%r9), %xmm2 movdqu %xmm2, %xmm1 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu %xmm1, 0(%r10) mov %rsi, %rax movdqu %xmm3, %xmm1 movdqu 0(%r9), %xmm2 cmp $8, %rax jae L74 mov $0, %rcx pinsrq $1, %rcx, %xmm2 mov %rax, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $0, %xmm2, %rcx and %rdx, %rcx pinsrq $0, %rcx, %xmm2 jmp L75 L74: mov %rax, %rcx sub $8, %rcx shl $3, %rcx mov $1, %rdx shl %cl, %rdx sub $1, %rdx pextrq $1, %xmm2, %rcx and %rdx, %rcx pinsrq $1, %rcx, %xmm2 L75: pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 L73: jmp L69 L68: L69: pxor %xmm2, %xmm2 mov %r13, %rax imul $8, %rax pinsrd $0, %eax, %xmm2 mov %r11, %rax imul $8, %rax pinsrd $2, %eax, %xmm2 pshufb %xmm8, %xmm2 pxor %xmm2, %xmm1 movdqu %xmm11, %xmm2 pshufb %xmm8, %xmm1 pshufb %xmm8, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm6 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 movdqu %xmm1, %xmm5 pclmulqdq $16, %xmm2, %xmm1 movdqu %xmm1, %xmm3 movdqu %xmm5, %xmm1 pclmulqdq $1, %xmm2, %xmm1 movdqu %xmm1, %xmm4 movdqu %xmm5, %xmm1 pclmulqdq $0, %xmm2, %xmm1 pclmulqdq $17, %xmm2, %xmm5 movdqu %xmm5, %xmm2 movdqu %xmm1, %xmm5 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm4, %xmm1 mov $0, %r12 pinsrd $0, %r12d, %xmm1 pshufd $14, %xmm1, %xmm1 pxor %xmm1, %xmm2 movdqu %xmm3, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm1 pshufd $79, %xmm1, %xmm1 mov $0, %r12 pinsrd $3, %r12d, %xmm4 pshufd $79, %xmm4, %xmm4 pxor %xmm4, %xmm1 pxor %xmm5, %xmm1 movdqu %xmm1, %xmm3 psrld $31, %xmm3 movdqu %xmm2, %xmm4 psrld $31, %xmm4 pslld $1, %xmm1 pslld $1, %xmm2 vpslldq $4, %xmm3, %xmm5 vpslldq $4, %xmm4, %xmm4 mov $0, %r12 pinsrd $0, %r12d, %xmm3 pshufd $3, %xmm3, %xmm3 pxor %xmm4, %xmm3 pxor %xmm5, %xmm1 pxor %xmm3, %xmm2 movdqu %xmm2, %xmm5 pxor %xmm2, %xmm2 mov $3774873600, %r12 pinsrd $3, %r12d, %xmm2 pclmulqdq $17, %xmm2, %xmm1 movdqu %xmm1, %xmm2 psrld $31, %xmm2 pslld $1, %xmm1 vpslldq $4, %xmm2, %xmm2 pxor %xmm2, %xmm1 pxor %xmm5, %xmm1 pxor %xmm6, %xmm1 pshufb %xmm8, %xmm1 mov $1, %r12 pinsrd $0, %r12d, %xmm7 movdqu %xmm7, %xmm0 mov $579005069656919567, %r12 pinsrq $0, %r12, %xmm2 mov $283686952306183, %r12 pinsrq $1, %r12, %xmm2 pshufb %xmm2, %xmm0 movdqu 0(%r8), %xmm2 pxor %xmm2, %xmm0 movdqu 16(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 32(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 48(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 64(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 80(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 96(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 112(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 128(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 144(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 160(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 176(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 192(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 208(%r8), %xmm2 aesenc %xmm2, %xmm0 movdqu 224(%r8), %xmm2 aesenclast %xmm2, %xmm0 pxor %xmm2, %xmm2 pxor %xmm0, %xmm1 movdqu 0(%r15), %xmm0 pcmpeqd %xmm1, %xmm0 pextrq $0, %xmm0, %rdx cmp $18446744073709551615, %rdx jne L76 mov $0, %rax jmp L77 L76: mov $1, %rax L77: pextrq $1, %xmm0, %rdx cmp $18446744073709551615, %rdx jne L78 mov $0, %rdx jmp L79 L78: mov $1, %rdx L79: add %rdx, %rax mov %rax, %rdx pop %rbx pop %rbp pop %rdi pop %rsi pop %r12 pop %r13 pop %r14 pop %r15 mov %rdx, %rax ret