Revision 0d9153dc34ee2dcf0821e3f21e825fc5bb8895b4 authored by Santiago Zanella-Beguelin on 11 December 2019, 17:46:08 UTC, committed by Santiago Zanella-Beguelin on 12 December 2019, 10:33:01 UTC
1 parent 7405f78
aesgcm-x86_64-mingw.S
.text
.global aes128_key_expansion
aes128_key_expansion:
movdqu 0(%rcx), %xmm1
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 aes128_keyhash_init
aes128_keyhash_init:
mov $579005069656919567, %r8
pinsrq $0, %r8, %xmm4
mov $283686952306183, %r8
pinsrq $1, %r8, %xmm4
pxor %xmm0, %xmm0
movdqu %xmm0, 80(%rdx)
mov %rcx, %r8
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
pshufb %xmm4, %xmm0
mov %rdx, %rcx
movdqu %xmm0, 32(%rcx)
movdqu %xmm6, %xmm0
mov %r12, %rax
movdqu 32(%rcx), %xmm1
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 0(%rcx)
movdqu %xmm6, %xmm1
movdqu %xmm6, %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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 16(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 48(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 64(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 96(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 112(%rcx)
movdqu %xmm0, %xmm6
mov %rax, %r12
ret
.global aes256_key_expansion
aes256_key_expansion:
movdqu 0(%rcx), %xmm1
movdqu 16(%rcx), %xmm3
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 aes256_keyhash_init
aes256_keyhash_init:
mov $579005069656919567, %r8
pinsrq $0, %r8, %xmm4
mov $283686952306183, %r8
pinsrq $1, %r8, %xmm4
pxor %xmm0, %xmm0
movdqu %xmm0, 80(%rdx)
mov %rcx, %r8
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
pshufb %xmm4, %xmm0
mov %rdx, %rcx
movdqu %xmm0, 32(%rcx)
movdqu %xmm6, %xmm0
mov %r12, %rax
movdqu 32(%rcx), %xmm1
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 0(%rcx)
movdqu %xmm6, %xmm1
movdqu %xmm6, %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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 16(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 48(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 64(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 96(%rcx)
movdqu %xmm6, %xmm2
movdqu 32(%rcx), %xmm1
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
movdqu %xmm1, %xmm6
movdqu %xmm1, %xmm3
pxor %xmm4, %xmm4
pxor %xmm5, %xmm5
mov $3254779904, %r12
pinsrd $3, %r12d, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
mov $2147483648, %r12
pinsrd $3, %r12d, %xmm5
movdqu %xmm3, %xmm1
movdqu %xmm1, %xmm2
psrld $31, %xmm2
pslld $1, %xmm1
vpslldq $4, %xmm2, %xmm2
pxor %xmm2, %xmm1
pand %xmm5, %xmm3
pcmpeqd %xmm5, %xmm3
pshufd $255, %xmm3, %xmm3
pand %xmm4, %xmm3
vpxor %xmm3, %xmm1, %xmm1
movdqu %xmm1, 112(%rcx)
movdqu %xmm0, %xmm6
mov %rax, %r12
ret
.global gctr128_bytes
gctr128_bytes:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov 272(%rsp), %rax
movdqu 0(%rax), %xmm7
mov %rcx, %rax
mov %r8, %rbx
mov %rdx, %rsi
mov %r9, %r13
mov 264(%rsp), %r8
mov 280(%rsp), %rcx
mov %rcx, %rbp
imul $16, %rbp
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm8
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm8
mov %rcx, %rdx
shr $2, %rdx
and $3, %rcx
cmp $0, %rdx
jbe L0
mov %rax, %r9
mov %rbx, %r10
pshufb %xmm8, %xmm7
movdqu %xmm7, %xmm9
mov $579005069656919567, %rax
pinsrq $0, %rax, %xmm0
mov $579005069656919567, %rax
pinsrq $1, %rax, %xmm0
pshufb %xmm0, %xmm9
movdqu %xmm9, %xmm10
pxor %xmm3, %xmm3
mov $1, %rax
pinsrd $2, %eax, %xmm3
paddd %xmm3, %xmm9
mov $3, %rax
pinsrd $2, %eax, %xmm3
mov $2, %rax
pinsrd $0, %eax, %xmm3
paddd %xmm3, %xmm10
pshufb %xmm8, %xmm9
pshufb %xmm8, %xmm10
pextrq $0, %xmm7, %rdi
mov $283686952306183, %rax
pinsrq $0, %rax, %xmm0
mov $579005069656919567, %rax
pinsrq $1, %rax, %xmm0
pxor %xmm15, %xmm15
mov $4, %rax
pinsrd $0, %eax, %xmm15
mov $4, %rax
pinsrd $2, %eax, %xmm15
jmp L3
.balign 16
L2:
pinsrq $0, %rdi, %xmm2
pinsrq $0, %rdi, %xmm12
pinsrq $0, %rdi, %xmm13
pinsrq $0, %rdi, %xmm14
shufpd $2, %xmm9, %xmm2
shufpd $0, %xmm9, %xmm12
shufpd $2, %xmm10, %xmm13
shufpd $0, %xmm10, %xmm14
pshufb %xmm0, %xmm9
pshufb %xmm0, %xmm10
movdqu 0(%r8), %xmm3
movdqu 16(%r8), %xmm4
movdqu 32(%r8), %xmm5
movdqu 48(%r8), %xmm6
paddd %xmm15, %xmm9
paddd %xmm15, %xmm10
pxor %xmm3, %xmm2
pxor %xmm3, %xmm12
pxor %xmm3, %xmm13
pxor %xmm3, %xmm14
pshufb %xmm0, %xmm9
pshufb %xmm0, %xmm10
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenc %xmm5, %xmm2
aesenc %xmm5, %xmm12
aesenc %xmm5, %xmm13
aesenc %xmm5, %xmm14
aesenc %xmm6, %xmm2
aesenc %xmm6, %xmm12
aesenc %xmm6, %xmm13
aesenc %xmm6, %xmm14
movdqu 64(%r8), %xmm3
movdqu 80(%r8), %xmm4
movdqu 96(%r8), %xmm5
movdqu 112(%r8), %xmm6
aesenc %xmm3, %xmm2
aesenc %xmm3, %xmm12
aesenc %xmm3, %xmm13
aesenc %xmm3, %xmm14
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenc %xmm5, %xmm2
aesenc %xmm5, %xmm12
aesenc %xmm5, %xmm13
aesenc %xmm5, %xmm14
aesenc %xmm6, %xmm2
aesenc %xmm6, %xmm12
aesenc %xmm6, %xmm13
aesenc %xmm6, %xmm14
movdqu 128(%r8), %xmm3
movdqu 144(%r8), %xmm4
movdqu 160(%r8), %xmm5
aesenc %xmm3, %xmm2
aesenc %xmm3, %xmm12
aesenc %xmm3, %xmm13
aesenc %xmm3, %xmm14
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenclast %xmm5, %xmm2
aesenclast %xmm5, %xmm12
aesenclast %xmm5, %xmm13
aesenclast %xmm5, %xmm14
movdqu 0(%r9), %xmm7
pxor %xmm7, %xmm2
movdqu 16(%r9), %xmm7
pxor %xmm7, %xmm12
movdqu 32(%r9), %xmm7
pxor %xmm7, %xmm13
movdqu 48(%r9), %xmm7
pxor %xmm7, %xmm14
movdqu %xmm2, 0(%r10)
movdqu %xmm12, 16(%r10)
movdqu %xmm13, 32(%r10)
movdqu %xmm14, 48(%r10)
sub $1, %rdx
add $64, %r9
add $64, %r10
.balign 16
L3:
cmp $0, %rdx
ja L2
movdqu %xmm9, %xmm7
pinsrq $0, %rdi, %xmm7
pshufb %xmm8, %xmm7
mov %r9, %rax
mov %r10, %rbx
jmp L1
L0:
L1:
mov $0, %rdx
mov %rax, %r9
mov %rbx, %r10
pxor %xmm4, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
jmp L5
.balign 16
L4:
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)
add $1, %rdx
add $16, %r9
add $16, %r10
paddd %xmm4, %xmm7
.balign 16
L5:
cmp %rcx, %rdx
jne L4
cmp %rbp, %rsi
jbe L6
movdqu 0(%r13), %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(%r13)
jmp L7
L6:
L7:
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
ret
.global gctr256_bytes
gctr256_bytes:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov 272(%rsp), %rax
movdqu 0(%rax), %xmm7
mov %rcx, %rax
mov %r8, %rbx
mov %rdx, %rsi
mov %r9, %r13
mov 264(%rsp), %r8
mov 280(%rsp), %rcx
mov %rcx, %rbp
imul $16, %rbp
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm8
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm8
mov %rcx, %rdx
shr $2, %rdx
and $3, %rcx
cmp $0, %rdx
jbe L8
mov %rax, %r9
mov %rbx, %r10
pshufb %xmm8, %xmm7
movdqu %xmm7, %xmm9
mov $579005069656919567, %rax
pinsrq $0, %rax, %xmm0
mov $579005069656919567, %rax
pinsrq $1, %rax, %xmm0
pshufb %xmm0, %xmm9
movdqu %xmm9, %xmm10
pxor %xmm3, %xmm3
mov $1, %rax
pinsrd $2, %eax, %xmm3
paddd %xmm3, %xmm9
mov $3, %rax
pinsrd $2, %eax, %xmm3
mov $2, %rax
pinsrd $0, %eax, %xmm3
paddd %xmm3, %xmm10
pshufb %xmm8, %xmm9
pshufb %xmm8, %xmm10
pextrq $0, %xmm7, %rdi
mov $283686952306183, %rax
pinsrq $0, %rax, %xmm0
mov $579005069656919567, %rax
pinsrq $1, %rax, %xmm0
pxor %xmm15, %xmm15
mov $4, %rax
pinsrd $0, %eax, %xmm15
mov $4, %rax
pinsrd $2, %eax, %xmm15
jmp L11
.balign 16
L10:
pinsrq $0, %rdi, %xmm2
pinsrq $0, %rdi, %xmm12
pinsrq $0, %rdi, %xmm13
pinsrq $0, %rdi, %xmm14
shufpd $2, %xmm9, %xmm2
shufpd $0, %xmm9, %xmm12
shufpd $2, %xmm10, %xmm13
shufpd $0, %xmm10, %xmm14
pshufb %xmm0, %xmm9
pshufb %xmm0, %xmm10
movdqu 0(%r8), %xmm3
movdqu 16(%r8), %xmm4
movdqu 32(%r8), %xmm5
movdqu 48(%r8), %xmm6
paddd %xmm15, %xmm9
paddd %xmm15, %xmm10
pxor %xmm3, %xmm2
pxor %xmm3, %xmm12
pxor %xmm3, %xmm13
pxor %xmm3, %xmm14
pshufb %xmm0, %xmm9
pshufb %xmm0, %xmm10
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenc %xmm5, %xmm2
aesenc %xmm5, %xmm12
aesenc %xmm5, %xmm13
aesenc %xmm5, %xmm14
aesenc %xmm6, %xmm2
aesenc %xmm6, %xmm12
aesenc %xmm6, %xmm13
aesenc %xmm6, %xmm14
movdqu 64(%r8), %xmm3
movdqu 80(%r8), %xmm4
movdqu 96(%r8), %xmm5
movdqu 112(%r8), %xmm6
aesenc %xmm3, %xmm2
aesenc %xmm3, %xmm12
aesenc %xmm3, %xmm13
aesenc %xmm3, %xmm14
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenc %xmm5, %xmm2
aesenc %xmm5, %xmm12
aesenc %xmm5, %xmm13
aesenc %xmm5, %xmm14
aesenc %xmm6, %xmm2
aesenc %xmm6, %xmm12
aesenc %xmm6, %xmm13
aesenc %xmm6, %xmm14
movdqu 128(%r8), %xmm3
movdqu 144(%r8), %xmm4
movdqu 160(%r8), %xmm5
aesenc %xmm3, %xmm2
aesenc %xmm3, %xmm12
aesenc %xmm3, %xmm13
aesenc %xmm3, %xmm14
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
movdqu %xmm5, %xmm3
movdqu 176(%r8), %xmm4
movdqu 192(%r8), %xmm5
movdqu 208(%r8), %xmm6
aesenc %xmm3, %xmm2
aesenc %xmm3, %xmm12
aesenc %xmm3, %xmm13
aesenc %xmm3, %xmm14
aesenc %xmm4, %xmm2
aesenc %xmm4, %xmm12
aesenc %xmm4, %xmm13
aesenc %xmm4, %xmm14
aesenc %xmm5, %xmm2
aesenc %xmm5, %xmm12
aesenc %xmm5, %xmm13
aesenc %xmm5, %xmm14
aesenc %xmm6, %xmm2
aesenc %xmm6, %xmm12
aesenc %xmm6, %xmm13
aesenc %xmm6, %xmm14
movdqu 224(%r8), %xmm5
aesenclast %xmm5, %xmm2
aesenclast %xmm5, %xmm12
aesenclast %xmm5, %xmm13
aesenclast %xmm5, %xmm14
movdqu 0(%r9), %xmm7
pxor %xmm7, %xmm2
movdqu 16(%r9), %xmm7
pxor %xmm7, %xmm12
movdqu 32(%r9), %xmm7
pxor %xmm7, %xmm13
movdqu 48(%r9), %xmm7
pxor %xmm7, %xmm14
movdqu %xmm2, 0(%r10)
movdqu %xmm12, 16(%r10)
movdqu %xmm13, 32(%r10)
movdqu %xmm14, 48(%r10)
sub $1, %rdx
add $64, %r9
add $64, %r10
.balign 16
L11:
cmp $0, %rdx
ja L10
movdqu %xmm9, %xmm7
pinsrq $0, %rdi, %xmm7
pshufb %xmm8, %xmm7
mov %r9, %rax
mov %r10, %rbx
jmp L9
L8:
L9:
mov $0, %rdx
mov %rax, %r9
mov %rbx, %r10
pxor %xmm4, %xmm4
mov $1, %r12
pinsrd $0, %r12d, %xmm4
jmp L13
.balign 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
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)
add $1, %rdx
add $16, %r9
add $16, %r10
paddd %xmm4, %xmm7
.balign 16
L13:
cmp %rcx, %rdx
jne L12
cmp %rbp, %rsi
jbe L14
movdqu 0(%r13), %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(%r13)
jmp L15
L14:
L15:
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
ret
.global compute_iv_stdcall
compute_iv_stdcall:
cmp $12, %rdx
jne L16
push %rdi
push %rsi
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 56(%rsp), %r8
mov 64(%rsp), %r9
cmp $12, %rsi
jne L18
movdqu 0(%r8), %xmm0
mov $579005069656919567, %rax
pinsrq $0, %rax, %xmm1
mov $283686952306183, %rax
pinsrq $1, %rax, %xmm1
pshufb %xmm1, %xmm0
mov $1, %rax
pinsrd $0, %eax, %xmm0
movdqu %xmm0, 0(%rcx)
jmp L19
L18:
mov %rcx, %rax
add $32, %r9
mov %r8, %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L21
.balign 16
L20:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L21:
cmp $6, %rdx
jae L20
cmp $0, %rdx
jbe L22
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L24
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L25
L24:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L26
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L28
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L30
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L31
L30:
L31:
jmp L29
L28:
L29:
jmp L27
L26:
L27:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L25:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L23
L22:
L23:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L32
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L34
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L35
L34:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L35:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L33
L32:
L33:
mov %rax, %rcx
mov $0, %r11
mov %rsi, %r13
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu %xmm8, 0(%rcx)
L19:
pop %rsi
pop %rdi
jmp L17
L16:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 264(%rsp), %r8
mov 272(%rsp), %r9
cmp $12, %rsi
jne L36
movdqu 0(%r8), %xmm0
mov $579005069656919567, %rax
pinsrq $0, %rax, %xmm1
mov $283686952306183, %rax
pinsrq $1, %rax, %xmm1
pshufb %xmm1, %xmm0
mov $1, %rax
pinsrd $0, %eax, %xmm0
movdqu %xmm0, 0(%rcx)
jmp L37
L36:
mov %rcx, %rax
add $32, %r9
mov %r8, %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L39
.balign 16
L38:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L39:
cmp $6, %rdx
jae L38
cmp $0, %rdx
jbe L40
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L42
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L43
L42:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L44
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L46
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L48
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L49
L48:
L49:
jmp L47
L46:
L47:
jmp L45
L44:
L45:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L43:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L41
L40:
L41:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L50
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L52
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L53
L52:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L53:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L51
L50:
L51:
mov %rax, %rcx
mov $0, %r11
mov %rsi, %r13
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu %xmm8, 0(%rcx)
L37:
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
L17:
ret
.global gcm128_encrypt_opt
gcm128_encrypt_opt:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 264(%rsp), %r8
mov 272(%rsp), %r9
mov 352(%rsp), %rbp
mov %rcx, %r13
lea 32(%r9), %r9
mov 280(%rsp), %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L55
.balign 16
L54:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L55:
cmp $6, %rdx
jae L54
cmp $0, %rdx
jbe L56
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L58
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L59
L58:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L60
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L62
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L64
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L65
L64:
L65:
jmp L63
L62:
L63:
jmp L61
L60:
L61:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L59:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L57
L56:
L57:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L66
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L68
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L69
L68:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L69:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L67
L66:
L67:
mov 288(%rsp), %rdi
mov 296(%rsp), %rsi
mov 304(%rsp), %rdx
mov %r13, %rcx
movdqu %xmm9, %xmm0
movdqu 0(%r8), %xmm1
movdqu %xmm1, 0(%rbp)
pxor %xmm10, %xmm10
mov $1, %r11
pinsrq $0, %r11, %xmm10
vpaddd %xmm10, %xmm1, %xmm1
cmp $0, %rdx
jne L70
vpshufb %xmm0, %xmm1, %xmm1
movdqu %xmm1, 32(%rbp)
jmp L71
L70:
movdqu %xmm8, 32(%rbp)
add $128, %rcx
pextrq $0, %xmm1, %rbx
and $255, %rbx
vpshufb %xmm0, %xmm1, %xmm1
lea 96(%rsi), %r14
movdqu -128(%rcx), %xmm4
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
movdqu -112(%rcx), %xmm15
mov %rcx, %r12
sub $96, %r12
vpxor %xmm4, %xmm1, %xmm9
add $6, %rbx
cmp $256, %rbx
jae L72
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm2, %xmm11, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm2, %xmm12, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpaddd %xmm2, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm14
jmp L73
L72:
sub $256, %rbx
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpshufb %xmm0, %xmm14, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpshufb %xmm0, %xmm1, %xmm1
vpxor %xmm4, %xmm14, %xmm14
L73:
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 16(%rcx), %xmm15
movdqu 32(%rcx), %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor 0(%rdi), %xmm3, %xmm4
vaesenc %xmm15, %xmm10, %xmm10
vpxor 16(%rdi), %xmm3, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
vpxor 32(%rdi), %xmm3, %xmm6
vaesenc %xmm15, %xmm12, %xmm12
vpxor 48(%rdi), %xmm3, %xmm8
vaesenc %xmm15, %xmm13, %xmm13
vpxor 64(%rdi), %xmm3, %xmm2
vaesenc %xmm15, %xmm14, %xmm14
vpxor 80(%rdi), %xmm3, %xmm3
lea 96(%rdi), %rdi
vaesenclast %xmm4, %xmm9, %xmm9
vaesenclast %xmm5, %xmm10, %xmm10
vaesenclast %xmm6, %xmm11, %xmm11
vaesenclast %xmm8, %xmm12, %xmm12
vaesenclast %xmm2, %xmm13, %xmm13
vaesenclast %xmm3, %xmm14, %xmm14
movdqu %xmm9, 0(%rsi)
movdqu %xmm10, 16(%rsi)
movdqu %xmm11, 32(%rsi)
movdqu %xmm12, 48(%rsi)
movdqu %xmm13, 64(%rsi)
movdqu %xmm14, 80(%rsi)
lea 96(%rsi), %rsi
vpshufb %xmm0, %xmm9, %xmm8
vpshufb %xmm0, %xmm10, %xmm2
movdqu %xmm8, 112(%rbp)
vpshufb %xmm0, %xmm11, %xmm4
movdqu %xmm2, 96(%rbp)
vpshufb %xmm0, %xmm12, %xmm5
movdqu %xmm4, 80(%rbp)
vpshufb %xmm0, %xmm13, %xmm6
movdqu %xmm5, 64(%rbp)
vpshufb %xmm0, %xmm14, %xmm7
movdqu %xmm6, 48(%rbp)
movdqu -128(%rcx), %xmm4
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
movdqu -112(%rcx), %xmm15
mov %rcx, %r12
sub $96, %r12
vpxor %xmm4, %xmm1, %xmm9
add $6, %rbx
cmp $256, %rbx
jae L74
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm2, %xmm11, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm2, %xmm12, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpaddd %xmm2, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm14
jmp L75
L74:
sub $256, %rbx
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpshufb %xmm0, %xmm14, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpshufb %xmm0, %xmm1, %xmm1
vpxor %xmm4, %xmm14, %xmm14
L75:
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 16(%rcx), %xmm15
movdqu 32(%rcx), %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor 0(%rdi), %xmm3, %xmm4
vaesenc %xmm15, %xmm10, %xmm10
vpxor 16(%rdi), %xmm3, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
vpxor 32(%rdi), %xmm3, %xmm6
vaesenc %xmm15, %xmm12, %xmm12
vpxor 48(%rdi), %xmm3, %xmm8
vaesenc %xmm15, %xmm13, %xmm13
vpxor 64(%rdi), %xmm3, %xmm2
vaesenc %xmm15, %xmm14, %xmm14
vpxor 80(%rdi), %xmm3, %xmm3
lea 96(%rdi), %rdi
vaesenclast %xmm4, %xmm9, %xmm9
vaesenclast %xmm5, %xmm10, %xmm10
vaesenclast %xmm6, %xmm11, %xmm11
vaesenclast %xmm8, %xmm12, %xmm12
vaesenclast %xmm2, %xmm13, %xmm13
vaesenclast %xmm3, %xmm14, %xmm14
movdqu %xmm9, 0(%rsi)
movdqu %xmm10, 16(%rsi)
movdqu %xmm11, 32(%rsi)
movdqu %xmm12, 48(%rsi)
movdqu %xmm13, 64(%rsi)
movdqu %xmm14, 80(%rsi)
lea 96(%rsi), %rsi
sub $12, %rdx
movdqu 32(%rbp), %xmm8
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vpxor %xmm4, %xmm4, %xmm4
movdqu -128(%rcx), %xmm15
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpaddd %xmm2, %xmm11, %xmm12
vpaddd %xmm2, %xmm12, %xmm13
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm4, 16(%rbp)
jmp L77
.balign 16
L76:
add $6, %rbx
cmp $256, %rbx
jb L78
mov $579005069656919567, %r11
pinsrq $0, %r11, %xmm0
mov $283686952306183, %r11
pinsrq $1, %r11, %xmm0
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
movdqu -32(%r9), %xmm3
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm15, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm15, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpshufb %xmm0, %xmm14, %xmm14
vpshufb %xmm0, %xmm1, %xmm1
sub $256, %rbx
jmp L79
L78:
movdqu -32(%r9), %xmm3
vpaddd %xmm14, %xmm2, %xmm1
vpxor %xmm15, %xmm10, %xmm10
vpxor %xmm15, %xmm11, %xmm11
L79:
movdqu %xmm1, 128(%rbp)
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
vpxor %xmm15, %xmm12, %xmm12
movdqu -112(%rcx), %xmm2
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vaesenc %xmm2, %xmm9, %xmm9
movdqu 48(%rbp), %xmm0
vpxor %xmm15, %xmm13, %xmm13
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vaesenc %xmm2, %xmm10, %xmm10
vpxor %xmm15, %xmm14, %xmm14
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
vaesenc %xmm2, %xmm11, %xmm11
movdqu -16(%r9), %xmm3
vaesenc %xmm2, %xmm12, %xmm12
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vaesenc %xmm2, %xmm13, %xmm13
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vaesenc %xmm2, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
vaesenc %xmm15, %xmm10, %xmm10
movbeq 88(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 80(%r14), %r12
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 32(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 40(%rbp)
movdqu 16(%r9), %xmm5
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vaesenc %xmm15, %xmm11, %xmm11
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vaesenc %xmm15, %xmm10, %xmm10
movbeq 72(%r14), %r13
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
movbeq 64(%r14), %r12
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 48(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 56(%rbp)
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
movbeq 56(%r14), %r13
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
movbeq 48(%r14), %r12
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 64(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 72(%rbp)
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
movbeq 40(%r14), %r13
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
movbeq 32(%r14), %r12
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 80(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 88(%rbp)
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor %xmm1, %xmm6, %xmm6
movdqu -16(%rcx), %xmm15
vpslldq $8, %xmm6, %xmm5
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $13979173243358019584, %r11
pinsrq $1, %r11, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm8, %xmm7, %xmm7
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm5, %xmm4, %xmm4
movbeq 24(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 16(%r14), %r12
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
movq %r13, 96(%rbp)
vaesenc %xmm15, %xmm12, %xmm12
movq %r12, 104(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm1
vaesenc %xmm1, %xmm9, %xmm9
movdqu 16(%rcx), %xmm15
vaesenc %xmm1, %xmm10, %xmm10
vpsrldq $8, %xmm6, %xmm6
vaesenc %xmm1, %xmm11, %xmm11
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm1, %xmm12, %xmm12
vpxor %xmm0, %xmm4, %xmm4
movbeq 8(%r14), %r13
vaesenc %xmm1, %xmm13, %xmm13
movbeq 0(%r14), %r12
vaesenc %xmm1, %xmm14, %xmm14
movdqu 32(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
movdqu %xmm7, 16(%rbp)
vpalignr $8, %xmm4, %xmm4, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor 0(%rdi), %xmm1, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
vpxor 16(%rdi), %xmm1, %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vpxor 32(%rdi), %xmm1, %xmm5
vaesenc %xmm15, %xmm13, %xmm13
vpxor 48(%rdi), %xmm1, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor 64(%rdi), %xmm1, %xmm7
vpxor 80(%rdi), %xmm1, %xmm3
movdqu 128(%rbp), %xmm1
vaesenclast %xmm2, %xmm9, %xmm9
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vaesenclast %xmm0, %xmm10, %xmm10
vpaddd %xmm2, %xmm1, %xmm0
movq %r13, 112(%rbp)
lea 96(%rdi), %rdi
vaesenclast %xmm5, %xmm11, %xmm11
vpaddd %xmm2, %xmm0, %xmm5
movq %r12, 120(%rbp)
lea 96(%rsi), %rsi
movdqu -128(%rcx), %xmm15
vaesenclast %xmm6, %xmm12, %xmm12
vpaddd %xmm2, %xmm5, %xmm6
vaesenclast %xmm7, %xmm13, %xmm13
vpaddd %xmm2, %xmm6, %xmm7
vaesenclast %xmm3, %xmm14, %xmm14
vpaddd %xmm2, %xmm7, %xmm3
sub $6, %rdx
add $96, %r14
cmp $0, %rdx
jbe L80
movdqu %xmm9, -96(%rsi)
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm10, -80(%rsi)
movdqu %xmm0, %xmm10
movdqu %xmm11, -64(%rsi)
movdqu %xmm5, %xmm11
movdqu %xmm12, -48(%rsi)
movdqu %xmm6, %xmm12
movdqu %xmm13, -32(%rsi)
movdqu %xmm7, %xmm13
movdqu %xmm14, -16(%rsi)
movdqu %xmm3, %xmm14
movdqu 32(%rbp), %xmm7
jmp L81
L80:
vpxor 16(%rbp), %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
L81:
.balign 16
L77:
cmp $0, %rdx
ja L76
movdqu 32(%rbp), %xmm7
movdqu %xmm1, 32(%rbp)
pxor %xmm4, %xmm4
movdqu %xmm4, 16(%rbp)
movdqu -32(%r9), %xmm3
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
movdqu 48(%rbp), %xmm0
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
movdqu -16(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
movdqu 16(%r9), %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vpxor %xmm5, %xmm6, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $3254779904, %rax
pinsrd $3, %eax, %xmm3
vpxor %xmm8, %xmm7, %xmm7
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm0
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm0
movdqu %xmm9, -96(%rsi)
vpshufb %xmm0, %xmm9, %xmm9
vpxor %xmm7, %xmm1, %xmm1
movdqu %xmm10, -80(%rsi)
vpshufb %xmm0, %xmm10, %xmm10
movdqu %xmm11, -64(%rsi)
vpshufb %xmm0, %xmm11, %xmm11
movdqu %xmm12, -48(%rsi)
vpshufb %xmm0, %xmm12, %xmm12
movdqu %xmm13, -32(%rsi)
vpshufb %xmm0, %xmm13, %xmm13
movdqu %xmm14, -16(%rsi)
vpshufb %xmm0, %xmm14, %xmm14
pxor %xmm4, %xmm4
movdqu %xmm14, %xmm7
movdqu %xmm4, 16(%rbp)
movdqu %xmm13, 48(%rbp)
movdqu %xmm12, 64(%rbp)
movdqu %xmm11, 80(%rbp)
movdqu %xmm10, 96(%rbp)
movdqu %xmm9, 112(%rbp)
movdqu -32(%r9), %xmm3
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
movdqu 48(%rbp), %xmm0
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
movdqu -16(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
movdqu 16(%r9), %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vpxor %xmm5, %xmm6, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $3254779904, %rax
pinsrd $3, %eax, %xmm3
vpxor %xmm8, %xmm7, %xmm7
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
sub $128, %rcx
L71:
movdqu 32(%rbp), %xmm11
mov %rcx, %r8
mov 312(%rsp), %rax
mov 320(%rsp), %rdi
mov 328(%rsp), %rdx
mov %rdx, %r14
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm9
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm9
pshufb %xmm9, %xmm11
pxor %xmm10, %xmm10
mov $1, %rbx
pinsrd $0, %ebx, %xmm10
mov %rax, %r11
mov %rdi, %r10
mov $0, %rbx
jmp L83
.balign 16
L82:
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%r11), %xmm2
pxor %xmm0, %xmm2
movdqu %xmm2, 0(%r10)
add $1, %rbx
add $16, %r11
add $16, %r10
paddd %xmm10, %xmm11
.balign 16
L83:
cmp %rdx, %rbx
jne L82
mov %rdi, %r11
jmp L85
.balign 16
L84:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L85:
cmp $6, %rdx
jae L84
cmp $0, %rdx
jbe L86
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L88
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L89
L88:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L90
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L92
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L94
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L95
L94:
L95:
jmp L93
L92:
L93:
jmp L91
L90:
L91:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L89:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L87
L86:
L87:
add 304(%rsp), %r14
imul $16, %r14
mov 344(%rsp), %r13
cmp %r14, %r13
jbe L96
mov 336(%rsp), %rax
mov %r13, %r10
and $15, %r10
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%rax), %xmm4
pxor %xmm4, %xmm0
movdqu %xmm0, 0(%rax)
cmp $8, %r10
jae L98
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L99
L98:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L99:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L97
L96:
L97:
mov %r15, %r11
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu 0(%rbp), %xmm0
pshufb %xmm9, %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
pshufb %xmm9, %xmm8
pxor %xmm0, %xmm8
mov 360(%rsp), %r15
movdqu %xmm8, 0(%r15)
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
ret
.global gcm256_encrypt_opt
gcm256_encrypt_opt:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 264(%rsp), %r8
mov 272(%rsp), %r9
mov 352(%rsp), %rbp
mov %rcx, %r13
lea 32(%r9), %r9
mov 280(%rsp), %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L101
.balign 16
L100:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L101:
cmp $6, %rdx
jae L100
cmp $0, %rdx
jbe L102
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L104
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L105
L104:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L106
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L108
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L110
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L111
L110:
L111:
jmp L109
L108:
L109:
jmp L107
L106:
L107:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L105:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L103
L102:
L103:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L112
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L114
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L115
L114:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L115:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L113
L112:
L113:
mov 288(%rsp), %rdi
mov 296(%rsp), %rsi
mov 304(%rsp), %rdx
mov %r13, %rcx
movdqu %xmm9, %xmm0
movdqu 0(%r8), %xmm1
movdqu %xmm1, 0(%rbp)
pxor %xmm10, %xmm10
mov $1, %r11
pinsrq $0, %r11, %xmm10
vpaddd %xmm10, %xmm1, %xmm1
cmp $0, %rdx
jne L116
vpshufb %xmm0, %xmm1, %xmm1
movdqu %xmm1, 32(%rbp)
jmp L117
L116:
movdqu %xmm8, 32(%rbp)
add $128, %rcx
pextrq $0, %xmm1, %rbx
and $255, %rbx
vpshufb %xmm0, %xmm1, %xmm1
lea 96(%rsi), %r14
movdqu -128(%rcx), %xmm4
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
movdqu -112(%rcx), %xmm15
mov %rcx, %r12
sub $96, %r12
vpxor %xmm4, %xmm1, %xmm9
add $6, %rbx
cmp $256, %rbx
jae L118
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm2, %xmm11, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm2, %xmm12, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpaddd %xmm2, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm14
jmp L119
L118:
sub $256, %rbx
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpshufb %xmm0, %xmm14, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpshufb %xmm0, %xmm1, %xmm1
vpxor %xmm4, %xmm14, %xmm14
L119:
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 80(%rcx), %xmm15
movdqu 96(%rcx), %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor 0(%rdi), %xmm3, %xmm4
vaesenc %xmm15, %xmm10, %xmm10
vpxor 16(%rdi), %xmm3, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
vpxor 32(%rdi), %xmm3, %xmm6
vaesenc %xmm15, %xmm12, %xmm12
vpxor 48(%rdi), %xmm3, %xmm8
vaesenc %xmm15, %xmm13, %xmm13
vpxor 64(%rdi), %xmm3, %xmm2
vaesenc %xmm15, %xmm14, %xmm14
vpxor 80(%rdi), %xmm3, %xmm3
lea 96(%rdi), %rdi
vaesenclast %xmm4, %xmm9, %xmm9
vaesenclast %xmm5, %xmm10, %xmm10
vaesenclast %xmm6, %xmm11, %xmm11
vaesenclast %xmm8, %xmm12, %xmm12
vaesenclast %xmm2, %xmm13, %xmm13
vaesenclast %xmm3, %xmm14, %xmm14
movdqu %xmm9, 0(%rsi)
movdqu %xmm10, 16(%rsi)
movdqu %xmm11, 32(%rsi)
movdqu %xmm12, 48(%rsi)
movdqu %xmm13, 64(%rsi)
movdqu %xmm14, 80(%rsi)
lea 96(%rsi), %rsi
vpshufb %xmm0, %xmm9, %xmm8
vpshufb %xmm0, %xmm10, %xmm2
movdqu %xmm8, 112(%rbp)
vpshufb %xmm0, %xmm11, %xmm4
movdqu %xmm2, 96(%rbp)
vpshufb %xmm0, %xmm12, %xmm5
movdqu %xmm4, 80(%rbp)
vpshufb %xmm0, %xmm13, %xmm6
movdqu %xmm5, 64(%rbp)
vpshufb %xmm0, %xmm14, %xmm7
movdqu %xmm6, 48(%rbp)
movdqu -128(%rcx), %xmm4
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
movdqu -112(%rcx), %xmm15
mov %rcx, %r12
sub $96, %r12
vpxor %xmm4, %xmm1, %xmm9
add $6, %rbx
cmp $256, %rbx
jae L120
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm2, %xmm11, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm2, %xmm12, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpaddd %xmm2, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm14
jmp L121
L120:
sub $256, %rbx
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm4, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm4, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpxor %xmm4, %xmm12, %xmm12
vpshufb %xmm0, %xmm14, %xmm14
vpxor %xmm4, %xmm13, %xmm13
vpshufb %xmm0, %xmm1, %xmm1
vpxor %xmm4, %xmm14, %xmm14
L121:
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu -16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 16(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 32(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 48(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 64(%rcx), %xmm15
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 80(%rcx), %xmm15
movdqu 96(%rcx), %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor 0(%rdi), %xmm3, %xmm4
vaesenc %xmm15, %xmm10, %xmm10
vpxor 16(%rdi), %xmm3, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
vpxor 32(%rdi), %xmm3, %xmm6
vaesenc %xmm15, %xmm12, %xmm12
vpxor 48(%rdi), %xmm3, %xmm8
vaesenc %xmm15, %xmm13, %xmm13
vpxor 64(%rdi), %xmm3, %xmm2
vaesenc %xmm15, %xmm14, %xmm14
vpxor 80(%rdi), %xmm3, %xmm3
lea 96(%rdi), %rdi
vaesenclast %xmm4, %xmm9, %xmm9
vaesenclast %xmm5, %xmm10, %xmm10
vaesenclast %xmm6, %xmm11, %xmm11
vaesenclast %xmm8, %xmm12, %xmm12
vaesenclast %xmm2, %xmm13, %xmm13
vaesenclast %xmm3, %xmm14, %xmm14
movdqu %xmm9, 0(%rsi)
movdqu %xmm10, 16(%rsi)
movdqu %xmm11, 32(%rsi)
movdqu %xmm12, 48(%rsi)
movdqu %xmm13, 64(%rsi)
movdqu %xmm14, 80(%rsi)
lea 96(%rsi), %rsi
sub $12, %rdx
movdqu 32(%rbp), %xmm8
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vpxor %xmm4, %xmm4, %xmm4
movdqu -128(%rcx), %xmm15
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpaddd %xmm2, %xmm11, %xmm12
vpaddd %xmm2, %xmm12, %xmm13
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm4, 16(%rbp)
jmp L123
.balign 16
L122:
add $6, %rbx
cmp $256, %rbx
jb L124
mov $579005069656919567, %r11
pinsrq $0, %r11, %xmm0
mov $283686952306183, %r11
pinsrq $1, %r11, %xmm0
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
movdqu -32(%r9), %xmm3
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm15, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm15, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpshufb %xmm0, %xmm14, %xmm14
vpshufb %xmm0, %xmm1, %xmm1
sub $256, %rbx
jmp L125
L124:
movdqu -32(%r9), %xmm3
vpaddd %xmm14, %xmm2, %xmm1
vpxor %xmm15, %xmm10, %xmm10
vpxor %xmm15, %xmm11, %xmm11
L125:
movdqu %xmm1, 128(%rbp)
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
vpxor %xmm15, %xmm12, %xmm12
movdqu -112(%rcx), %xmm2
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vaesenc %xmm2, %xmm9, %xmm9
movdqu 48(%rbp), %xmm0
vpxor %xmm15, %xmm13, %xmm13
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vaesenc %xmm2, %xmm10, %xmm10
vpxor %xmm15, %xmm14, %xmm14
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
vaesenc %xmm2, %xmm11, %xmm11
movdqu -16(%r9), %xmm3
vaesenc %xmm2, %xmm12, %xmm12
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vaesenc %xmm2, %xmm13, %xmm13
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vaesenc %xmm2, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
vaesenc %xmm15, %xmm10, %xmm10
movbeq 88(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 80(%r14), %r12
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 32(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 40(%rbp)
movdqu 16(%r9), %xmm5
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vaesenc %xmm15, %xmm11, %xmm11
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vaesenc %xmm15, %xmm10, %xmm10
movbeq 72(%r14), %r13
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
movbeq 64(%r14), %r12
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 48(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 56(%rbp)
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
movbeq 56(%r14), %r13
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
movbeq 48(%r14), %r12
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 64(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 72(%rbp)
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
movbeq 40(%r14), %r13
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
movbeq 32(%r14), %r12
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 80(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 88(%rbp)
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor %xmm1, %xmm6, %xmm6
movdqu -16(%rcx), %xmm15
vpslldq $8, %xmm6, %xmm5
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $13979173243358019584, %r11
pinsrq $1, %r11, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm8, %xmm7, %xmm7
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm5, %xmm4, %xmm4
movbeq 24(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 16(%r14), %r12
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
movq %r13, 96(%rbp)
vaesenc %xmm15, %xmm12, %xmm12
movq %r12, 104(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm1
vaesenc %xmm1, %xmm9, %xmm9
movdqu 16(%rcx), %xmm15
vaesenc %xmm1, %xmm10, %xmm10
vpsrldq $8, %xmm6, %xmm6
vaesenc %xmm1, %xmm11, %xmm11
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm1, %xmm12, %xmm12
vpxor %xmm0, %xmm4, %xmm4
movbeq 8(%r14), %r13
vaesenc %xmm1, %xmm13, %xmm13
movbeq 0(%r14), %r12
vaesenc %xmm1, %xmm14, %xmm14
movdqu 32(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
vaesenc %xmm1, %xmm9, %xmm9
vaesenc %xmm1, %xmm10, %xmm10
vaesenc %xmm1, %xmm11, %xmm11
vaesenc %xmm1, %xmm12, %xmm12
vaesenc %xmm1, %xmm13, %xmm13
movdqu 48(%rcx), %xmm15
vaesenc %xmm1, %xmm14, %xmm14
movdqu 64(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
vaesenc %xmm1, %xmm9, %xmm9
vaesenc %xmm1, %xmm10, %xmm10
vaesenc %xmm1, %xmm11, %xmm11
vaesenc %xmm1, %xmm12, %xmm12
vaesenc %xmm1, %xmm13, %xmm13
movdqu 80(%rcx), %xmm15
vaesenc %xmm1, %xmm14, %xmm14
movdqu 96(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
movdqu %xmm7, 16(%rbp)
vpalignr $8, %xmm4, %xmm4, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor 0(%rdi), %xmm1, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
vpxor 16(%rdi), %xmm1, %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vpxor 32(%rdi), %xmm1, %xmm5
vaesenc %xmm15, %xmm13, %xmm13
vpxor 48(%rdi), %xmm1, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor 64(%rdi), %xmm1, %xmm7
vpxor 80(%rdi), %xmm1, %xmm3
movdqu 128(%rbp), %xmm1
vaesenclast %xmm2, %xmm9, %xmm9
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vaesenclast %xmm0, %xmm10, %xmm10
vpaddd %xmm2, %xmm1, %xmm0
movq %r13, 112(%rbp)
lea 96(%rdi), %rdi
vaesenclast %xmm5, %xmm11, %xmm11
vpaddd %xmm2, %xmm0, %xmm5
movq %r12, 120(%rbp)
lea 96(%rsi), %rsi
movdqu -128(%rcx), %xmm15
vaesenclast %xmm6, %xmm12, %xmm12
vpaddd %xmm2, %xmm5, %xmm6
vaesenclast %xmm7, %xmm13, %xmm13
vpaddd %xmm2, %xmm6, %xmm7
vaesenclast %xmm3, %xmm14, %xmm14
vpaddd %xmm2, %xmm7, %xmm3
sub $6, %rdx
add $96, %r14
cmp $0, %rdx
jbe L126
movdqu %xmm9, -96(%rsi)
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm10, -80(%rsi)
movdqu %xmm0, %xmm10
movdqu %xmm11, -64(%rsi)
movdqu %xmm5, %xmm11
movdqu %xmm12, -48(%rsi)
movdqu %xmm6, %xmm12
movdqu %xmm13, -32(%rsi)
movdqu %xmm7, %xmm13
movdqu %xmm14, -16(%rsi)
movdqu %xmm3, %xmm14
movdqu 32(%rbp), %xmm7
jmp L127
L126:
vpxor 16(%rbp), %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
L127:
.balign 16
L123:
cmp $0, %rdx
ja L122
movdqu 32(%rbp), %xmm7
movdqu %xmm1, 32(%rbp)
pxor %xmm4, %xmm4
movdqu %xmm4, 16(%rbp)
movdqu -32(%r9), %xmm3
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
movdqu 48(%rbp), %xmm0
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
movdqu -16(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
movdqu 16(%r9), %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vpxor %xmm5, %xmm6, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $3254779904, %rax
pinsrd $3, %eax, %xmm3
vpxor %xmm8, %xmm7, %xmm7
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm0
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm0
movdqu %xmm9, -96(%rsi)
vpshufb %xmm0, %xmm9, %xmm9
vpxor %xmm7, %xmm1, %xmm1
movdqu %xmm10, -80(%rsi)
vpshufb %xmm0, %xmm10, %xmm10
movdqu %xmm11, -64(%rsi)
vpshufb %xmm0, %xmm11, %xmm11
movdqu %xmm12, -48(%rsi)
vpshufb %xmm0, %xmm12, %xmm12
movdqu %xmm13, -32(%rsi)
vpshufb %xmm0, %xmm13, %xmm13
movdqu %xmm14, -16(%rsi)
vpshufb %xmm0, %xmm14, %xmm14
pxor %xmm4, %xmm4
movdqu %xmm14, %xmm7
movdqu %xmm4, 16(%rbp)
movdqu %xmm13, 48(%rbp)
movdqu %xmm12, 64(%rbp)
movdqu %xmm11, 80(%rbp)
movdqu %xmm10, 96(%rbp)
movdqu %xmm9, 112(%rbp)
movdqu -32(%r9), %xmm3
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
movdqu 48(%rbp), %xmm0
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
movdqu -16(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
movdqu 16(%r9), %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vpxor %xmm5, %xmm6, %xmm6
vpxor %xmm1, %xmm6, %xmm6
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $3254779904, %rax
pinsrd $3, %eax, %xmm3
vpxor %xmm8, %xmm7, %xmm7
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
sub $128, %rcx
L117:
movdqu 32(%rbp), %xmm11
mov %rcx, %r8
mov 312(%rsp), %rax
mov 320(%rsp), %rdi
mov 328(%rsp), %rdx
mov %rdx, %r14
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm9
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm9
pshufb %xmm9, %xmm11
pxor %xmm10, %xmm10
mov $1, %rbx
pinsrd $0, %ebx, %xmm10
mov %rax, %r11
mov %rdi, %r10
mov $0, %rbx
jmp L129
.balign 16
L128:
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%r11), %xmm2
pxor %xmm0, %xmm2
movdqu %xmm2, 0(%r10)
add $1, %rbx
add $16, %r11
add $16, %r10
paddd %xmm10, %xmm11
.balign 16
L129:
cmp %rdx, %rbx
jne L128
mov %rdi, %r11
jmp L131
.balign 16
L130:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L131:
cmp $6, %rdx
jae L130
cmp $0, %rdx
jbe L132
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L134
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L135
L134:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L136
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L138
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L140
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L141
L140:
L141:
jmp L139
L138:
L139:
jmp L137
L136:
L137:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L135:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L133
L132:
L133:
add 304(%rsp), %r14
imul $16, %r14
mov 344(%rsp), %r13
cmp %r14, %r13
jbe L142
mov 336(%rsp), %rax
mov %r13, %r10
and $15, %r10
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%rax), %xmm4
pxor %xmm4, %xmm0
movdqu %xmm0, 0(%rax)
cmp $8, %r10
jae L144
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L145
L144:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L145:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L143
L142:
L143:
mov %r15, %r11
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu 0(%rbp), %xmm0
pshufb %xmm9, %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
pshufb %xmm9, %xmm8
pxor %xmm0, %xmm8
mov 360(%rsp), %r15
movdqu %xmm8, 0(%r15)
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
ret
.global gcm128_decrypt_opt
gcm128_decrypt_opt:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 264(%rsp), %r8
mov 272(%rsp), %r9
mov 352(%rsp), %rbp
mov %rcx, %r13
lea 32(%r9), %r9
mov 280(%rsp), %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L147
.balign 16
L146:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L147:
cmp $6, %rdx
jae L146
cmp $0, %rdx
jbe L148
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L150
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L151
L150:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L152
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L154
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L156
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L157
L156:
L157:
jmp L155
L154:
L155:
jmp L153
L152:
L153:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L151:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L149
L148:
L149:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L158
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L160
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L161
L160:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L161:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L159
L158:
L159:
mov 288(%rsp), %rdi
mov 296(%rsp), %rsi
mov 304(%rsp), %rdx
mov %r13, %rcx
movdqu %xmm9, %xmm0
movdqu 0(%r8), %xmm1
movdqu %xmm1, 0(%rbp)
pxor %xmm10, %xmm10
mov $1, %r11
pinsrq $0, %r11, %xmm10
vpaddd %xmm10, %xmm1, %xmm1
cmp $0, %rdx
jne L162
vpshufb %xmm0, %xmm1, %xmm1
movdqu %xmm1, 32(%rbp)
jmp L163
L162:
movdqu %xmm8, 32(%rbp)
add $128, %rcx
pextrq $0, %xmm1, %rbx
and $255, %rbx
vpshufb %xmm0, %xmm1, %xmm1
lea 96(%rdi), %r14
movdqu 32(%rbp), %xmm8
movdqu 80(%rdi), %xmm7
movdqu 64(%rdi), %xmm4
movdqu 48(%rdi), %xmm5
movdqu 32(%rdi), %xmm6
vpshufb %xmm0, %xmm7, %xmm7
movdqu 16(%rdi), %xmm2
vpshufb %xmm0, %xmm4, %xmm4
movdqu 0(%rdi), %xmm3
vpshufb %xmm0, %xmm5, %xmm5
movdqu %xmm4, 48(%rbp)
vpshufb %xmm0, %xmm6, %xmm6
movdqu %xmm5, 64(%rbp)
vpshufb %xmm0, %xmm2, %xmm2
movdqu %xmm6, 80(%rbp)
vpshufb %xmm0, %xmm3, %xmm3
movdqu %xmm2, 96(%rbp)
movdqu %xmm3, 112(%rbp)
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vpxor %xmm4, %xmm4, %xmm4
movdqu -128(%rcx), %xmm15
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpaddd %xmm2, %xmm11, %xmm12
vpaddd %xmm2, %xmm12, %xmm13
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm4, 16(%rbp)
cmp $6, %rdx
jne L164
sub $96, %r14
jmp L165
L164:
L165:
jmp L167
.balign 16
L166:
add $6, %rbx
cmp $256, %rbx
jb L168
mov $579005069656919567, %r11
pinsrq $0, %r11, %xmm0
mov $283686952306183, %r11
pinsrq $1, %r11, %xmm0
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
movdqu -32(%r9), %xmm3
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm15, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm15, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpshufb %xmm0, %xmm14, %xmm14
vpshufb %xmm0, %xmm1, %xmm1
sub $256, %rbx
jmp L169
L168:
movdqu -32(%r9), %xmm3
vpaddd %xmm14, %xmm2, %xmm1
vpxor %xmm15, %xmm10, %xmm10
vpxor %xmm15, %xmm11, %xmm11
L169:
movdqu %xmm1, 128(%rbp)
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
vpxor %xmm15, %xmm12, %xmm12
movdqu -112(%rcx), %xmm2
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vaesenc %xmm2, %xmm9, %xmm9
movdqu 48(%rbp), %xmm0
vpxor %xmm15, %xmm13, %xmm13
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vaesenc %xmm2, %xmm10, %xmm10
vpxor %xmm15, %xmm14, %xmm14
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
vaesenc %xmm2, %xmm11, %xmm11
movdqu -16(%r9), %xmm3
vaesenc %xmm2, %xmm12, %xmm12
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vaesenc %xmm2, %xmm13, %xmm13
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vaesenc %xmm2, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
vaesenc %xmm15, %xmm10, %xmm10
movbeq 88(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 80(%r14), %r12
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 32(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 40(%rbp)
movdqu 16(%r9), %xmm5
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vaesenc %xmm15, %xmm11, %xmm11
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vaesenc %xmm15, %xmm10, %xmm10
movbeq 72(%r14), %r13
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
movbeq 64(%r14), %r12
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 48(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 56(%rbp)
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
movbeq 56(%r14), %r13
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
movbeq 48(%r14), %r12
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 64(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 72(%rbp)
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
movbeq 40(%r14), %r13
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
movbeq 32(%r14), %r12
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 80(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 88(%rbp)
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor %xmm1, %xmm6, %xmm6
movdqu -16(%rcx), %xmm15
vpslldq $8, %xmm6, %xmm5
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $13979173243358019584, %r11
pinsrq $1, %r11, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm8, %xmm7, %xmm7
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm5, %xmm4, %xmm4
movbeq 24(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 16(%r14), %r12
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
movq %r13, 96(%rbp)
vaesenc %xmm15, %xmm12, %xmm12
movq %r12, 104(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm1
vaesenc %xmm1, %xmm9, %xmm9
movdqu 16(%rcx), %xmm15
vaesenc %xmm1, %xmm10, %xmm10
vpsrldq $8, %xmm6, %xmm6
vaesenc %xmm1, %xmm11, %xmm11
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm1, %xmm12, %xmm12
vpxor %xmm0, %xmm4, %xmm4
movbeq 8(%r14), %r13
vaesenc %xmm1, %xmm13, %xmm13
movbeq 0(%r14), %r12
vaesenc %xmm1, %xmm14, %xmm14
movdqu 32(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
movdqu %xmm7, 16(%rbp)
vpalignr $8, %xmm4, %xmm4, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor 0(%rdi), %xmm1, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
vpxor 16(%rdi), %xmm1, %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vpxor 32(%rdi), %xmm1, %xmm5
vaesenc %xmm15, %xmm13, %xmm13
vpxor 48(%rdi), %xmm1, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor 64(%rdi), %xmm1, %xmm7
vpxor 80(%rdi), %xmm1, %xmm3
movdqu 128(%rbp), %xmm1
vaesenclast %xmm2, %xmm9, %xmm9
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vaesenclast %xmm0, %xmm10, %xmm10
vpaddd %xmm2, %xmm1, %xmm0
movq %r13, 112(%rbp)
lea 96(%rdi), %rdi
vaesenclast %xmm5, %xmm11, %xmm11
vpaddd %xmm2, %xmm0, %xmm5
movq %r12, 120(%rbp)
lea 96(%rsi), %rsi
movdqu -128(%rcx), %xmm15
vaesenclast %xmm6, %xmm12, %xmm12
vpaddd %xmm2, %xmm5, %xmm6
vaesenclast %xmm7, %xmm13, %xmm13
vpaddd %xmm2, %xmm6, %xmm7
vaesenclast %xmm3, %xmm14, %xmm14
vpaddd %xmm2, %xmm7, %xmm3
sub $6, %rdx
cmp $6, %rdx
jbe L170
add $96, %r14
jmp L171
L170:
L171:
cmp $0, %rdx
jbe L172
movdqu %xmm9, -96(%rsi)
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm10, -80(%rsi)
movdqu %xmm0, %xmm10
movdqu %xmm11, -64(%rsi)
movdqu %xmm5, %xmm11
movdqu %xmm12, -48(%rsi)
movdqu %xmm6, %xmm12
movdqu %xmm13, -32(%rsi)
movdqu %xmm7, %xmm13
movdqu %xmm14, -16(%rsi)
movdqu %xmm3, %xmm14
movdqu 32(%rbp), %xmm7
jmp L173
L172:
vpxor 16(%rbp), %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
L173:
.balign 16
L167:
cmp $0, %rdx
ja L166
movdqu %xmm1, 32(%rbp)
movdqu %xmm9, -96(%rsi)
movdqu %xmm10, -80(%rsi)
movdqu %xmm11, -64(%rsi)
movdqu %xmm12, -48(%rsi)
movdqu %xmm13, -32(%rsi)
movdqu %xmm14, -16(%rsi)
sub $128, %rcx
L163:
movdqu 32(%rbp), %xmm11
mov %rcx, %r8
mov 312(%rsp), %rax
mov 320(%rsp), %rdi
mov 328(%rsp), %rdx
mov %rdx, %r14
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm9
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm9
pshufb %xmm9, %xmm11
mov %rdi, %rbx
mov %rdx, %r12
mov %rax, %rdi
mov %rdi, %r11
jmp L175
.balign 16
L174:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L175:
cmp $6, %rdx
jae L174
cmp $0, %rdx
jbe L176
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L178
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L179
L178:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L180
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L182
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L184
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L185
L184:
L185:
jmp L183
L182:
L183:
jmp L181
L180:
L181:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L179:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L177
L176:
L177:
mov %rbx, %rdi
mov %r12, %rdx
pxor %xmm10, %xmm10
mov $1, %rbx
pinsrd $0, %ebx, %xmm10
mov %rax, %r11
mov %rdi, %r10
mov $0, %rbx
jmp L187
.balign 16
L186:
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%r11), %xmm2
pxor %xmm0, %xmm2
movdqu %xmm2, 0(%r10)
add $1, %rbx
add $16, %r11
add $16, %r10
paddd %xmm10, %xmm11
.balign 16
L187:
cmp %rdx, %rbx
jne L186
add 304(%rsp), %r14
imul $16, %r14
mov 344(%rsp), %r13
cmp %r14, %r13
jbe L188
mov 336(%rsp), %rax
mov %r13, %r10
and $15, %r10
movdqu 0(%rax), %xmm0
movdqu %xmm0, %xmm10
cmp $8, %r10
jae L190
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L191
L190:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L191:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu %xmm11, %xmm0
pshufb %xmm9, %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, %xmm10
movdqu %xmm10, 0(%rax)
jmp L189
L188:
L189:
mov %r15, %r11
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu 0(%rbp), %xmm0
pshufb %xmm9, %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
pshufb %xmm9, %xmm8
pxor %xmm0, %xmm8
mov 360(%rsp), %r15
movdqu 0(%r15), %xmm0
pcmpeqd %xmm8, %xmm0
pextrq $0, %xmm0, %rdx
sub $18446744073709551615, %rdx
mov $0, %rax
adc $0, %rax
pextrq $1, %xmm0, %rdx
sub $18446744073709551615, %rdx
mov $0, %rdx
adc $0, %rdx
add %rdx, %rax
mov %rax, %rcx
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
mov %rcx, %rax
ret
.global gcm256_decrypt_opt
gcm256_decrypt_opt:
push %r15
push %r14
push %r13
push %r12
push %rsi
push %rdi
push %rbp
push %rbx
pextrq $0, %xmm15, %rax
push %rax
pextrq $1, %xmm15, %rax
push %rax
pextrq $0, %xmm14, %rax
push %rax
pextrq $1, %xmm14, %rax
push %rax
pextrq $0, %xmm13, %rax
push %rax
pextrq $1, %xmm13, %rax
push %rax
pextrq $0, %xmm12, %rax
push %rax
pextrq $1, %xmm12, %rax
push %rax
pextrq $0, %xmm11, %rax
push %rax
pextrq $1, %xmm11, %rax
push %rax
pextrq $0, %xmm10, %rax
push %rax
pextrq $1, %xmm10, %rax
push %rax
pextrq $0, %xmm9, %rax
push %rax
pextrq $1, %xmm9, %rax
push %rax
pextrq $0, %xmm8, %rax
push %rax
pextrq $1, %xmm8, %rax
push %rax
pextrq $0, %xmm7, %rax
push %rax
pextrq $1, %xmm7, %rax
push %rax
pextrq $0, %xmm6, %rax
push %rax
pextrq $1, %xmm6, %rax
push %rax
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 264(%rsp), %r8
mov 272(%rsp), %r9
mov 352(%rsp), %rbp
mov %rcx, %r13
lea 32(%r9), %r9
mov 280(%rsp), %rbx
mov %rdx, %rcx
imul $16, %rcx
mov $579005069656919567, %r10
pinsrq $0, %r10, %xmm9
mov $283686952306183, %r10
pinsrq $1, %r10, %xmm9
pxor %xmm8, %xmm8
mov %rdi, %r11
jmp L193
.balign 16
L192:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L193:
cmp $6, %rdx
jae L192
cmp $0, %rdx
jbe L194
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L196
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L197
L196:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L198
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L200
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L202
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L203
L202:
L203:
jmp L201
L200:
L201:
jmp L199
L198:
L199:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L197:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L195
L194:
L195:
mov %rsi, %r15
cmp %rcx, %rsi
jbe L204
movdqu 0(%rbx), %xmm0
mov %rsi, %r10
and $15, %r10
cmp $8, %r10
jae L206
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L207
L206:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L207:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L205
L204:
L205:
mov 288(%rsp), %rdi
mov 296(%rsp), %rsi
mov 304(%rsp), %rdx
mov %r13, %rcx
movdqu %xmm9, %xmm0
movdqu 0(%r8), %xmm1
movdqu %xmm1, 0(%rbp)
pxor %xmm10, %xmm10
mov $1, %r11
pinsrq $0, %r11, %xmm10
vpaddd %xmm10, %xmm1, %xmm1
cmp $0, %rdx
jne L208
vpshufb %xmm0, %xmm1, %xmm1
movdqu %xmm1, 32(%rbp)
jmp L209
L208:
movdqu %xmm8, 32(%rbp)
add $128, %rcx
pextrq $0, %xmm1, %rbx
and $255, %rbx
vpshufb %xmm0, %xmm1, %xmm1
lea 96(%rdi), %r14
movdqu 32(%rbp), %xmm8
movdqu 80(%rdi), %xmm7
movdqu 64(%rdi), %xmm4
movdqu 48(%rdi), %xmm5
movdqu 32(%rdi), %xmm6
vpshufb %xmm0, %xmm7, %xmm7
movdqu 16(%rdi), %xmm2
vpshufb %xmm0, %xmm4, %xmm4
movdqu 0(%rdi), %xmm3
vpshufb %xmm0, %xmm5, %xmm5
movdqu %xmm4, 48(%rbp)
vpshufb %xmm0, %xmm6, %xmm6
movdqu %xmm5, 64(%rbp)
vpshufb %xmm0, %xmm2, %xmm2
movdqu %xmm6, 80(%rbp)
vpshufb %xmm0, %xmm3, %xmm3
movdqu %xmm2, 96(%rbp)
movdqu %xmm3, 112(%rbp)
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vpxor %xmm4, %xmm4, %xmm4
movdqu -128(%rcx), %xmm15
vpaddd %xmm2, %xmm1, %xmm10
vpaddd %xmm2, %xmm10, %xmm11
vpaddd %xmm2, %xmm11, %xmm12
vpaddd %xmm2, %xmm12, %xmm13
vpaddd %xmm2, %xmm13, %xmm14
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm4, 16(%rbp)
cmp $6, %rdx
jne L210
sub $96, %r14
jmp L211
L210:
L211:
jmp L213
.balign 16
L212:
add $6, %rbx
cmp $256, %rbx
jb L214
mov $579005069656919567, %r11
pinsrq $0, %r11, %xmm0
mov $283686952306183, %r11
pinsrq $1, %r11, %xmm0
vpshufb %xmm0, %xmm1, %xmm6
pxor %xmm5, %xmm5
mov $1, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm10
pxor %xmm5, %xmm5
mov $2, %r11
pinsrq $0, %r11, %xmm5
vpaddd %xmm5, %xmm6, %xmm11
movdqu -32(%r9), %xmm3
vpaddd %xmm5, %xmm10, %xmm12
vpshufb %xmm0, %xmm10, %xmm10
vpaddd %xmm5, %xmm11, %xmm13
vpshufb %xmm0, %xmm11, %xmm11
vpxor %xmm15, %xmm10, %xmm10
vpaddd %xmm5, %xmm12, %xmm14
vpshufb %xmm0, %xmm12, %xmm12
vpxor %xmm15, %xmm11, %xmm11
vpaddd %xmm5, %xmm13, %xmm1
vpshufb %xmm0, %xmm13, %xmm13
vpshufb %xmm0, %xmm14, %xmm14
vpshufb %xmm0, %xmm1, %xmm1
sub $256, %rbx
jmp L215
L214:
movdqu -32(%r9), %xmm3
vpaddd %xmm14, %xmm2, %xmm1
vpxor %xmm15, %xmm10, %xmm10
vpxor %xmm15, %xmm11, %xmm11
L215:
movdqu %xmm1, 128(%rbp)
vpclmulqdq $16, %xmm3, %xmm7, %xmm5
vpxor %xmm15, %xmm12, %xmm12
movdqu -112(%rcx), %xmm2
vpclmulqdq $1, %xmm3, %xmm7, %xmm6
vaesenc %xmm2, %xmm9, %xmm9
movdqu 48(%rbp), %xmm0
vpxor %xmm15, %xmm13, %xmm13
vpclmulqdq $0, %xmm3, %xmm7, %xmm1
vaesenc %xmm2, %xmm10, %xmm10
vpxor %xmm15, %xmm14, %xmm14
vpclmulqdq $17, %xmm3, %xmm7, %xmm7
vaesenc %xmm2, %xmm11, %xmm11
movdqu -16(%r9), %xmm3
vaesenc %xmm2, %xmm12, %xmm12
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $0, %xmm3, %xmm0, %xmm5
vpxor %xmm4, %xmm8, %xmm8
vaesenc %xmm2, %xmm13, %xmm13
vpxor %xmm5, %xmm1, %xmm4
vpclmulqdq $16, %xmm3, %xmm0, %xmm1
vaesenc %xmm2, %xmm14, %xmm14
movdqu -96(%rcx), %xmm15
vpclmulqdq $1, %xmm3, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor 16(%rbp), %xmm8, %xmm8
vpclmulqdq $17, %xmm3, %xmm0, %xmm3
movdqu 64(%rbp), %xmm0
vaesenc %xmm15, %xmm10, %xmm10
movbeq 88(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 80(%r14), %r12
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 32(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 40(%rbp)
movdqu 16(%r9), %xmm5
vaesenc %xmm15, %xmm14, %xmm14
movdqu -80(%rcx), %xmm15
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm3, %xmm7, %xmm7
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vaesenc %xmm15, %xmm11, %xmm11
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 80(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vaesenc %xmm15, %xmm14, %xmm14
movdqu -64(%rcx), %xmm15
vpxor %xmm2, %xmm6, %xmm6
vpclmulqdq $0, %xmm1, %xmm0, %xmm2
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $16, %xmm1, %xmm0, %xmm3
vaesenc %xmm15, %xmm10, %xmm10
movbeq 72(%r14), %r13
vpxor %xmm5, %xmm7, %xmm7
vpclmulqdq $1, %xmm1, %xmm0, %xmm5
vaesenc %xmm15, %xmm11, %xmm11
movbeq 64(%r14), %r12
vpclmulqdq $17, %xmm1, %xmm0, %xmm1
movdqu 96(%rbp), %xmm0
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 48(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 56(%rbp)
vpxor %xmm2, %xmm4, %xmm4
movdqu 64(%r9), %xmm2
vaesenc %xmm15, %xmm14, %xmm14
movdqu -48(%rcx), %xmm15
vpxor %xmm3, %xmm6, %xmm6
vpclmulqdq $0, %xmm2, %xmm0, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm2, %xmm0, %xmm5
vaesenc %xmm15, %xmm10, %xmm10
movbeq 56(%r14), %r13
vpxor %xmm1, %xmm7, %xmm7
vpclmulqdq $1, %xmm2, %xmm0, %xmm1
vpxor 112(%rbp), %xmm8, %xmm8
vaesenc %xmm15, %xmm11, %xmm11
movbeq 48(%r14), %r12
vpclmulqdq $17, %xmm2, %xmm0, %xmm2
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 64(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 72(%rbp)
vpxor %xmm3, %xmm4, %xmm4
movdqu 80(%r9), %xmm3
vaesenc %xmm15, %xmm14, %xmm14
movdqu -32(%rcx), %xmm15
vpxor %xmm5, %xmm6, %xmm6
vpclmulqdq $16, %xmm3, %xmm8, %xmm5
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm1, %xmm6, %xmm6
vpclmulqdq $1, %xmm3, %xmm8, %xmm1
vaesenc %xmm15, %xmm10, %xmm10
movbeq 40(%r14), %r13
vpxor %xmm2, %xmm7, %xmm7
vpclmulqdq $0, %xmm3, %xmm8, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
movbeq 32(%r14), %r12
vpclmulqdq $17, %xmm3, %xmm8, %xmm8
vaesenc %xmm15, %xmm12, %xmm12
movq %r13, 80(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
movq %r12, 88(%rbp)
vpxor %xmm5, %xmm6, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor %xmm1, %xmm6, %xmm6
movdqu -16(%rcx), %xmm15
vpslldq $8, %xmm6, %xmm5
vpxor %xmm2, %xmm4, %xmm4
pxor %xmm3, %xmm3
mov $13979173243358019584, %r11
pinsrq $1, %r11, %xmm3
vaesenc %xmm15, %xmm9, %xmm9
vpxor %xmm8, %xmm7, %xmm7
vaesenc %xmm15, %xmm10, %xmm10
vpxor %xmm5, %xmm4, %xmm4
movbeq 24(%r14), %r13
vaesenc %xmm15, %xmm11, %xmm11
movbeq 16(%r14), %r12
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
movq %r13, 96(%rbp)
vaesenc %xmm15, %xmm12, %xmm12
movq %r12, 104(%rbp)
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
movdqu 0(%rcx), %xmm1
vaesenc %xmm1, %xmm9, %xmm9
movdqu 16(%rcx), %xmm15
vaesenc %xmm1, %xmm10, %xmm10
vpsrldq $8, %xmm6, %xmm6
vaesenc %xmm1, %xmm11, %xmm11
vpxor %xmm6, %xmm7, %xmm7
vaesenc %xmm1, %xmm12, %xmm12
vpxor %xmm0, %xmm4, %xmm4
movbeq 8(%r14), %r13
vaesenc %xmm1, %xmm13, %xmm13
movbeq 0(%r14), %r12
vaesenc %xmm1, %xmm14, %xmm14
movdqu 32(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
vaesenc %xmm1, %xmm9, %xmm9
vaesenc %xmm1, %xmm10, %xmm10
vaesenc %xmm1, %xmm11, %xmm11
vaesenc %xmm1, %xmm12, %xmm12
vaesenc %xmm1, %xmm13, %xmm13
movdqu 48(%rcx), %xmm15
vaesenc %xmm1, %xmm14, %xmm14
movdqu 64(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
vaesenc %xmm15, %xmm10, %xmm10
vaesenc %xmm15, %xmm11, %xmm11
vaesenc %xmm15, %xmm12, %xmm12
vaesenc %xmm15, %xmm13, %xmm13
vaesenc %xmm15, %xmm14, %xmm14
vaesenc %xmm1, %xmm9, %xmm9
vaesenc %xmm1, %xmm10, %xmm10
vaesenc %xmm1, %xmm11, %xmm11
vaesenc %xmm1, %xmm12, %xmm12
vaesenc %xmm1, %xmm13, %xmm13
movdqu 80(%rcx), %xmm15
vaesenc %xmm1, %xmm14, %xmm14
movdqu 96(%rcx), %xmm1
vaesenc %xmm15, %xmm9, %xmm9
movdqu %xmm7, 16(%rbp)
vpalignr $8, %xmm4, %xmm4, %xmm8
vaesenc %xmm15, %xmm10, %xmm10
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor 0(%rdi), %xmm1, %xmm2
vaesenc %xmm15, %xmm11, %xmm11
vpxor 16(%rdi), %xmm1, %xmm0
vaesenc %xmm15, %xmm12, %xmm12
vpxor 32(%rdi), %xmm1, %xmm5
vaesenc %xmm15, %xmm13, %xmm13
vpxor 48(%rdi), %xmm1, %xmm6
vaesenc %xmm15, %xmm14, %xmm14
vpxor 64(%rdi), %xmm1, %xmm7
vpxor 80(%rdi), %xmm1, %xmm3
movdqu 128(%rbp), %xmm1
vaesenclast %xmm2, %xmm9, %xmm9
pxor %xmm2, %xmm2
mov $72057594037927936, %r11
pinsrq $1, %r11, %xmm2
vaesenclast %xmm0, %xmm10, %xmm10
vpaddd %xmm2, %xmm1, %xmm0
movq %r13, 112(%rbp)
lea 96(%rdi), %rdi
vaesenclast %xmm5, %xmm11, %xmm11
vpaddd %xmm2, %xmm0, %xmm5
movq %r12, 120(%rbp)
lea 96(%rsi), %rsi
movdqu -128(%rcx), %xmm15
vaesenclast %xmm6, %xmm12, %xmm12
vpaddd %xmm2, %xmm5, %xmm6
vaesenclast %xmm7, %xmm13, %xmm13
vpaddd %xmm2, %xmm6, %xmm7
vaesenclast %xmm3, %xmm14, %xmm14
vpaddd %xmm2, %xmm7, %xmm3
sub $6, %rdx
cmp $6, %rdx
jbe L216
add $96, %r14
jmp L217
L216:
L217:
cmp $0, %rdx
jbe L218
movdqu %xmm9, -96(%rsi)
vpxor %xmm15, %xmm1, %xmm9
movdqu %xmm10, -80(%rsi)
movdqu %xmm0, %xmm10
movdqu %xmm11, -64(%rsi)
movdqu %xmm5, %xmm11
movdqu %xmm12, -48(%rsi)
movdqu %xmm6, %xmm12
movdqu %xmm13, -32(%rsi)
movdqu %xmm7, %xmm13
movdqu %xmm14, -16(%rsi)
movdqu %xmm3, %xmm14
movdqu 32(%rbp), %xmm7
jmp L219
L218:
vpxor 16(%rbp), %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
L219:
.balign 16
L213:
cmp $0, %rdx
ja L212
movdqu %xmm1, 32(%rbp)
movdqu %xmm9, -96(%rsi)
movdqu %xmm10, -80(%rsi)
movdqu %xmm11, -64(%rsi)
movdqu %xmm12, -48(%rsi)
movdqu %xmm13, -32(%rsi)
movdqu %xmm14, -16(%rsi)
sub $128, %rcx
L209:
movdqu 32(%rbp), %xmm11
mov %rcx, %r8
mov 312(%rsp), %rax
mov 320(%rsp), %rdi
mov 328(%rsp), %rdx
mov %rdx, %r14
mov $579005069656919567, %r12
pinsrq $0, %r12, %xmm9
mov $283686952306183, %r12
pinsrq $1, %r12, %xmm9
pshufb %xmm9, %xmm11
mov %rdi, %rbx
mov %rdx, %r12
mov %rax, %rdi
mov %rdi, %r11
jmp L221
.balign 16
L220:
add $80, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 80(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
add $96, %r11
sub $6, %rdx
.balign 16
L221:
cmp $6, %rdx
jae L220
cmp $0, %rdx
jbe L222
mov %rdx, %r10
sub $1, %r10
imul $16, %r10
add %r10, %r11
movdqu -32(%r9), %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
cmp $1, %rdx
jne L224
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
jmp L225
L224:
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
movdqu %xmm1, %xmm4
movdqu -16(%r9), %xmm1
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
movdqu %xmm1, %xmm5
cmp $2, %rdx
je L226
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 16(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $3, %rdx
je L228
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 32(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
cmp $4, %rdx
je L230
sub $16, %r11
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu 0(%r11), %xmm0
pshufb %xmm9, %xmm0
vpxor %xmm1, %xmm4, %xmm4
movdqu 64(%r9), %xmm1
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
movdqu %xmm1, %xmm5
jmp L231
L230:
L231:
jmp L229
L228:
L229:
jmp L227
L226:
L227:
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
vpxor %xmm1, %xmm4, %xmm4
vpxor %xmm2, %xmm6, %xmm6
vpxor %xmm3, %xmm6, %xmm6
vpxor %xmm5, %xmm7, %xmm7
L225:
pxor %xmm3, %xmm3
mov $3254779904, %r10
pinsrd $3, %r10d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
jmp L223
L222:
L223:
mov %rbx, %rdi
mov %r12, %rdx
pxor %xmm10, %xmm10
mov $1, %rbx
pinsrd $0, %ebx, %xmm10
mov %rax, %r11
mov %rdi, %r10
mov $0, %rbx
jmp L233
.balign 16
L232:
movdqu %xmm11, %xmm0
pshufb %xmm9, %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(%r11), %xmm2
pxor %xmm0, %xmm2
movdqu %xmm2, 0(%r10)
add $1, %rbx
add $16, %r11
add $16, %r10
paddd %xmm10, %xmm11
.balign 16
L233:
cmp %rdx, %rbx
jne L232
add 304(%rsp), %r14
imul $16, %r14
mov 344(%rsp), %r13
cmp %r14, %r13
jbe L234
mov 336(%rsp), %rax
mov %r13, %r10
and $15, %r10
movdqu 0(%rax), %xmm0
movdqu %xmm0, %xmm10
cmp $8, %r10
jae L236
mov $0, %rcx
pinsrq $1, %rcx, %xmm0
mov %r10, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $0, %xmm0, %rcx
and %r11, %rcx
pinsrq $0, %rcx, %xmm0
jmp L237
L236:
mov %r10, %rcx
sub $8, %rcx
shl $3, %rcx
mov $1, %r11
shl %cl, %r11
sub $1, %r11
pextrq $1, %xmm0, %rcx
and %r11, %rcx
pinsrq $1, %rcx, %xmm0
L237:
pshufb %xmm9, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu %xmm11, %xmm0
pshufb %xmm9, %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, %xmm10
movdqu %xmm10, 0(%rax)
jmp L235
L234:
L235:
mov %r15, %r11
pxor %xmm0, %xmm0
mov %r11, %rax
imul $8, %rax
pinsrq $1, %rax, %xmm0
mov %r13, %rax
imul $8, %rax
pinsrq $0, %rax, %xmm0
movdqu -32(%r9), %xmm5
vpxor %xmm0, %xmm8, %xmm0
vpclmulqdq $0, %xmm5, %xmm0, %xmm1
vpclmulqdq $16, %xmm5, %xmm0, %xmm2
vpclmulqdq $1, %xmm5, %xmm0, %xmm3
vpclmulqdq $17, %xmm5, %xmm0, %xmm5
movdqu %xmm1, %xmm4
vpxor %xmm3, %xmm2, %xmm6
movdqu %xmm5, %xmm7
pxor %xmm3, %xmm3
mov $3254779904, %r11
pinsrd $3, %r11d, %xmm3
vpslldq $8, %xmm6, %xmm5
vpxor %xmm5, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm0
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpsrldq $8, %xmm6, %xmm6
vpxor %xmm6, %xmm7, %xmm7
vpxor %xmm0, %xmm4, %xmm4
vpalignr $8, %xmm4, %xmm4, %xmm8
vpclmulqdq $16, %xmm3, %xmm4, %xmm4
vpxor %xmm7, %xmm8, %xmm8
vpxor %xmm4, %xmm8, %xmm8
movdqu 0(%rbp), %xmm0
pshufb %xmm9, %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
pshufb %xmm9, %xmm8
pxor %xmm0, %xmm8
mov 360(%rsp), %r15
movdqu 0(%r15), %xmm0
pcmpeqd %xmm8, %xmm0
pextrq $0, %xmm0, %rdx
sub $18446744073709551615, %rdx
mov $0, %rax
adc $0, %rax
pextrq $1, %xmm0, %rdx
sub $18446744073709551615, %rdx
mov $0, %rdx
adc $0, %rdx
add %rdx, %rax
mov %rax, %rcx
pop %rax
pinsrq $1, %rax, %xmm6
pop %rax
pinsrq $0, %rax, %xmm6
pop %rax
pinsrq $1, %rax, %xmm7
pop %rax
pinsrq $0, %rax, %xmm7
pop %rax
pinsrq $1, %rax, %xmm8
pop %rax
pinsrq $0, %rax, %xmm8
pop %rax
pinsrq $1, %rax, %xmm9
pop %rax
pinsrq $0, %rax, %xmm9
pop %rax
pinsrq $1, %rax, %xmm10
pop %rax
pinsrq $0, %rax, %xmm10
pop %rax
pinsrq $1, %rax, %xmm11
pop %rax
pinsrq $0, %rax, %xmm11
pop %rax
pinsrq $1, %rax, %xmm12
pop %rax
pinsrq $0, %rax, %xmm12
pop %rax
pinsrq $1, %rax, %xmm13
pop %rax
pinsrq $0, %rax, %xmm13
pop %rax
pinsrq $1, %rax, %xmm14
pop %rax
pinsrq $0, %rax, %xmm14
pop %rax
pinsrq $1, %rax, %xmm15
pop %rax
pinsrq $0, %rax, %xmm15
pop %rbx
pop %rbp
pop %rdi
pop %rsi
pop %r12
pop %r13
pop %r14
pop %r15
mov %rcx, %rax
ret
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...