.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