Revision 740e005247abf20870203acc9b37935012e2855a authored by Jonathan Protzenko on 08 June 2020, 20:48:05 UTC, committed by GitHub on 08 June 2020, 20:48:05 UTC
OCaml API: Placeholders for unsupported primitives in Hacl
oldaesgcm-x86_64-msvc.asm
.code
ALIGN 16
old_aes128_key_expansion proc
movdqu xmm1, xmmword ptr [rcx + 0]
movdqu xmmword ptr [rdx + 0], xmm1
aeskeygenassist xmm2, xmm1, 1
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 16], xmm1
aeskeygenassist xmm2, xmm1, 2
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 32], xmm1
aeskeygenassist xmm2, xmm1, 4
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 48], xmm1
aeskeygenassist xmm2, xmm1, 8
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 64], xmm1
aeskeygenassist xmm2, xmm1, 16
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 80], xmm1
aeskeygenassist xmm2, xmm1, 32
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 96], xmm1
aeskeygenassist xmm2, xmm1, 64
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 112], xmm1
aeskeygenassist xmm2, xmm1, 128
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 128], xmm1
aeskeygenassist xmm2, xmm1, 27
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 144], xmm1
aeskeygenassist xmm2, xmm1, 54
pshufd xmm2, xmm2, 255
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
vpslldq xmm3, xmm1, 4
pxor xmm1, xmm3
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 160], xmm1
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm3, xmm3
ret
old_aes128_key_expansion endp
ALIGN 16
old_aes256_key_expansion proc
movdqu xmm1, xmmword ptr [rcx + 0]
movdqu xmm3, xmmword ptr [rcx + 16]
movdqu xmmword ptr [rdx + 0], xmm1
movdqu xmmword ptr [rdx + 16], xmm3
aeskeygenassist xmm2, xmm3, 1
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 32], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 48], xmm3
aeskeygenassist xmm2, xmm3, 2
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 64], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 80], xmm3
aeskeygenassist xmm2, xmm3, 4
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 96], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 112], xmm3
aeskeygenassist xmm2, xmm3, 8
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 128], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 144], xmm3
aeskeygenassist xmm2, xmm3, 16
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 160], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 176], xmm3
aeskeygenassist xmm2, xmm3, 32
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 192], xmm1
aeskeygenassist xmm2, xmm1, 0
pshufd xmm2, xmm2, 170
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
vpslldq xmm4, xmm3, 4
pxor xmm3, xmm4
pxor xmm3, xmm2
movdqu xmmword ptr [rdx + 208], xmm3
aeskeygenassist xmm2, xmm3, 64
pshufd xmm2, xmm2, 255
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
vpslldq xmm4, xmm1, 4
pxor xmm1, xmm4
pxor xmm1, xmm2
movdqu xmmword ptr [rdx + 224], xmm1
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm3, xmm3
pxor xmm4, xmm4
ret
old_aes256_key_expansion endp
ALIGN 16
old_gcm128_encrypt proc
mov r9, rcx
pextrq rax, xmm11, 0
push rax
pextrq rax, xmm11, 1
push rax
pextrq rax, xmm10, 0
push rax
pextrq rax, xmm10, 1
push rax
pextrq rax, xmm8, 0
push rax
pextrq rax, xmm8, 1
push rax
pextrq rax, xmm7, 0
push rax
pextrq rax, xmm7, 1
push rax
pextrq rax, xmm6, 0
push rax
pextrq rax, xmm6, 1
push rax
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov r14, qword ptr [r9 + 0]
mov r13, qword ptr [r9 + 8]
mov rax, qword ptr [r9 + 16]
mov r11, qword ptr [r9 + 24]
mov r10, qword ptr [r9 + 32]
mov r8, qword ptr [r9 + 40]
mov rbx, qword ptr [r9 + 48]
mov r15, qword ptr [r9 + 56]
movdqu xmm7, xmmword ptr [r10 + 0]
pxor xmm0, xmm0
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm11, xmm0
mov r12, 579005069656919567
pinsrq xmm8, r12, 0
mov r12, 283686952306183
pinsrq xmm8, r12, 1
pshufb xmm7, xmm8
mov r12, 2
pinsrd xmm7, r12d, 0
pxor xmm1, xmm1
cmp r11, 0
jbe L0
mov rcx, r11
shr rcx, 4
mov r9, rax
cmp rcx, 0
je L2
mov rdx, 0
jmp L5
ALIGN 16
L4:
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
ALIGN 16
L5:
cmp rdx, rcx
jne L4
jmp L3
L2:
L3:
mov rax, r11
and rax, 15
cmp rax, 0
jne L6
jmp L7
L6:
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L8
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L9
L8:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L9:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L7:
jmp L1
L0:
L1:
mov rax, r14
mov rcx, r13
cmp rcx, 0
jbe L10
mov rsi, rcx
and rsi, 15
shr rcx, 4
mov rdx, 0
mov r9, rax
mov r10, rbx
pxor xmm10, xmm10
mov r12, 1
pinsrd xmm10, r12d, 0
jmp L13
ALIGN 16
L12:
movdqu xmm0, xmm7
pshufb xmm0, xmm8
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm2, xmm0
movdqu xmmword ptr [r10 + 0], xmm2
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
add r10, 16
paddd xmm7, xmm10
ALIGN 16
L13:
cmp rdx, rcx
jne L12
cmp rsi, 0
jne L14
jmp L15
L14:
movdqu xmm3, xmm1
movdqu xmm2, xmmword ptr [r9 + 0]
movdqu xmm1, xmm2
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r10 + 0], xmm1
mov rax, rsi
mov r9, r10
movdqu xmm1, xmm3
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L16
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L17
L16:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L17:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L15:
jmp L11
L10:
L11:
pxor xmm2, xmm2
mov rax, r13
imul rax, 8
pinsrd xmm2, eax, 0
mov rax, r11
imul rax, 8
pinsrd xmm2, eax, 2
pshufb xmm2, xmm8
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
mov r12, 1
pinsrd xmm7, r12d, 0
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r15 + 0], xmm1
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rax
pinsrq xmm6, rax, 1
pop rax
pinsrq xmm6, rax, 0
pop rax
pinsrq xmm7, rax, 1
pop rax
pinsrq xmm7, rax, 0
pop rax
pinsrq xmm8, rax, 1
pop rax
pinsrq xmm8, rax, 0
pop rax
pinsrq xmm10, rax, 1
pop rax
pinsrq xmm10, rax, 0
pop rax
pinsrq xmm11, rax, 1
pop rax
pinsrq xmm11, rax, 0
ret
old_gcm128_encrypt endp
ALIGN 16
old_gcm128_decrypt proc
mov r9, rcx
pextrq rax, xmm11, 0
push rax
pextrq rax, xmm11, 1
push rax
pextrq rax, xmm10, 0
push rax
pextrq rax, xmm10, 1
push rax
pextrq rax, xmm8, 0
push rax
pextrq rax, xmm8, 1
push rax
pextrq rax, xmm7, 0
push rax
pextrq rax, xmm7, 1
push rax
pextrq rax, xmm6, 0
push rax
pextrq rax, xmm6, 1
push rax
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov r14, qword ptr [r9 + 0]
mov r13, qword ptr [r9 + 8]
mov rax, qword ptr [r9 + 16]
mov r11, qword ptr [r9 + 24]
mov r10, qword ptr [r9 + 32]
mov r8, qword ptr [r9 + 40]
mov rbx, qword ptr [r9 + 48]
mov r15, qword ptr [r9 + 56]
movdqu xmm7, xmmword ptr [r10 + 0]
pxor xmm0, xmm0
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm11, xmm0
mov r12, 579005069656919567
pinsrq xmm8, r12, 0
mov r12, 283686952306183
pinsrq xmm8, r12, 1
pshufb xmm7, xmm8
mov r12, 2
pinsrd xmm7, r12d, 0
pxor xmm1, xmm1
cmp r11, 0
jbe L18
mov rcx, r11
shr rcx, 4
mov r9, rax
cmp rcx, 0
je L20
mov rdx, 0
jmp L23
ALIGN 16
L22:
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
ALIGN 16
L23:
cmp rdx, rcx
jne L22
jmp L21
L20:
L21:
mov rax, r11
and rax, 15
cmp rax, 0
jne L24
jmp L25
L24:
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L26
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L27
L26:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L27:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L25:
jmp L19
L18:
L19:
mov rax, r14
mov rcx, r13
cmp rcx, 0
jbe L28
mov rsi, rcx
and rsi, 15
shr rcx, 4
mov rdx, 0
mov r9, rax
mov r10, rbx
pxor xmm10, xmm10
mov r12, 1
pinsrd xmm10, r12d, 0
jmp L31
ALIGN 16
L30:
movdqu xmm0, xmmword ptr [r9 + 0]
movdqu xmm2, xmm0
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
movdqu xmm3, xmm0
movdqu xmm0, xmm7
pshufb xmm0, xmm8
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm3, xmm0
movdqu xmmword ptr [r10 + 0], xmm3
add rdx, 1
add r9, 16
add r10, 16
paddd xmm7, xmm10
ALIGN 16
L31:
cmp rdx, rcx
jne L30
cmp rsi, 0
jne L32
jmp L33
L32:
movdqu xmm3, xmm1
movdqu xmm2, xmmword ptr [r9 + 0]
movdqu xmm1, xmm2
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r10 + 0], xmm1
mov rax, rsi
movdqu xmm1, xmm3
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L34
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L35
L34:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L35:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L33:
jmp L29
L28:
L29:
pxor xmm2, xmm2
mov rax, r13
imul rax, 8
pinsrd xmm2, eax, 0
mov rax, r11
imul rax, 8
pinsrd xmm2, eax, 2
pshufb xmm2, xmm8
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
mov r12, 1
pinsrd xmm7, r12d, 0
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmm0, xmmword ptr [r15 + 0]
pcmpeqd xmm0, xmm1
pextrq rdx, xmm0, 0
cmp rdx, 18446744073709551615
jne L36
mov rax, 0
jmp L37
L36:
mov rax, 1
L37:
pextrq rdx, xmm0, 1
cmp rdx, 18446744073709551615
jne L38
mov rdx, 0
jmp L39
L38:
mov rdx, 1
L39:
add rax, rdx
mov rdx, rax
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rax
pinsrq xmm6, rax, 1
pop rax
pinsrq xmm6, rax, 0
pop rax
pinsrq xmm7, rax, 1
pop rax
pinsrq xmm7, rax, 0
pop rax
pinsrq xmm8, rax, 1
pop rax
pinsrq xmm8, rax, 0
pop rax
pinsrq xmm10, rax, 1
pop rax
pinsrq xmm10, rax, 0
pop rax
pinsrq xmm11, rax, 1
pop rax
pinsrq xmm11, rax, 0
mov rax, rdx
ret
old_gcm128_decrypt endp
ALIGN 16
old_gcm256_encrypt proc
mov r9, rcx
pextrq rax, xmm11, 0
push rax
pextrq rax, xmm11, 1
push rax
pextrq rax, xmm10, 0
push rax
pextrq rax, xmm10, 1
push rax
pextrq rax, xmm8, 0
push rax
pextrq rax, xmm8, 1
push rax
pextrq rax, xmm7, 0
push rax
pextrq rax, xmm7, 1
push rax
pextrq rax, xmm6, 0
push rax
pextrq rax, xmm6, 1
push rax
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov r14, qword ptr [r9 + 0]
mov r13, qword ptr [r9 + 8]
mov rax, qword ptr [r9 + 16]
mov r11, qword ptr [r9 + 24]
mov r10, qword ptr [r9 + 32]
mov r8, qword ptr [r9 + 40]
mov rbx, qword ptr [r9 + 48]
mov r15, qword ptr [r9 + 56]
movdqu xmm7, xmmword ptr [r10 + 0]
pxor xmm0, xmm0
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm11, xmm0
mov r12, 579005069656919567
pinsrq xmm8, r12, 0
mov r12, 283686952306183
pinsrq xmm8, r12, 1
pshufb xmm7, xmm8
mov r12, 2
pinsrd xmm7, r12d, 0
pxor xmm1, xmm1
cmp r11, 0
jbe L40
mov rcx, r11
shr rcx, 4
mov r9, rax
cmp rcx, 0
je L42
mov rdx, 0
jmp L45
ALIGN 16
L44:
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
ALIGN 16
L45:
cmp rdx, rcx
jne L44
jmp L43
L42:
L43:
mov rax, r11
and rax, 15
cmp rax, 0
jne L46
jmp L47
L46:
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L48
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L49
L48:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L49:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L47:
jmp L41
L40:
L41:
mov rax, r14
mov rcx, r13
cmp rcx, 0
jbe L50
mov rsi, rcx
and rsi, 15
shr rcx, 4
mov rdx, 0
mov r9, rax
mov r10, rbx
pxor xmm10, xmm10
mov r12, 1
pinsrd xmm10, r12d, 0
jmp L53
ALIGN 16
L52:
movdqu xmm0, xmm7
pshufb xmm0, xmm8
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm2, xmm0
movdqu xmmword ptr [r10 + 0], xmm2
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
add r10, 16
paddd xmm7, xmm10
ALIGN 16
L53:
cmp rdx, rcx
jne L52
cmp rsi, 0
jne L54
jmp L55
L54:
movdqu xmm3, xmm1
movdqu xmm2, xmmword ptr [r9 + 0]
movdqu xmm1, xmm2
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r10 + 0], xmm1
mov rax, rsi
mov r9, r10
movdqu xmm1, xmm3
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L56
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L57
L56:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L57:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L55:
jmp L51
L50:
L51:
pxor xmm2, xmm2
mov rax, r13
imul rax, 8
pinsrd xmm2, eax, 0
mov rax, r11
imul rax, 8
pinsrd xmm2, eax, 2
pshufb xmm2, xmm8
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
mov r12, 1
pinsrd xmm7, r12d, 0
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r15 + 0], xmm1
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rax
pinsrq xmm6, rax, 1
pop rax
pinsrq xmm6, rax, 0
pop rax
pinsrq xmm7, rax, 1
pop rax
pinsrq xmm7, rax, 0
pop rax
pinsrq xmm8, rax, 1
pop rax
pinsrq xmm8, rax, 0
pop rax
pinsrq xmm10, rax, 1
pop rax
pinsrq xmm10, rax, 0
pop rax
pinsrq xmm11, rax, 1
pop rax
pinsrq xmm11, rax, 0
ret
old_gcm256_encrypt endp
ALIGN 16
old_gcm256_decrypt proc
mov r9, rcx
pextrq rax, xmm11, 0
push rax
pextrq rax, xmm11, 1
push rax
pextrq rax, xmm10, 0
push rax
pextrq rax, xmm10, 1
push rax
pextrq rax, xmm8, 0
push rax
pextrq rax, xmm8, 1
push rax
pextrq rax, xmm7, 0
push rax
pextrq rax, xmm7, 1
push rax
pextrq rax, xmm6, 0
push rax
pextrq rax, xmm6, 1
push rax
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov r14, qword ptr [r9 + 0]
mov r13, qword ptr [r9 + 8]
mov rax, qword ptr [r9 + 16]
mov r11, qword ptr [r9 + 24]
mov r10, qword ptr [r9 + 32]
mov r8, qword ptr [r9 + 40]
mov rbx, qword ptr [r9 + 48]
mov r15, qword ptr [r9 + 56]
movdqu xmm7, xmmword ptr [r10 + 0]
pxor xmm0, xmm0
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
movdqu xmm11, xmm0
mov r12, 579005069656919567
pinsrq xmm8, r12, 0
mov r12, 283686952306183
pinsrq xmm8, r12, 1
pshufb xmm7, xmm8
mov r12, 2
pinsrd xmm7, r12d, 0
pxor xmm1, xmm1
cmp r11, 0
jbe L58
mov rcx, r11
shr rcx, 4
mov r9, rax
cmp rcx, 0
je L60
mov rdx, 0
jmp L63
ALIGN 16
L62:
movdqu xmm2, xmmword ptr [r9 + 0]
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
add rdx, 1
add r9, 16
ALIGN 16
L63:
cmp rdx, rcx
jne L62
jmp L61
L60:
L61:
mov rax, r11
and rax, 15
cmp rax, 0
jne L64
jmp L65
L64:
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L66
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L67
L66:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L67:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L65:
jmp L59
L58:
L59:
mov rax, r14
mov rcx, r13
cmp rcx, 0
jbe L68
mov rsi, rcx
and rsi, 15
shr rcx, 4
mov rdx, 0
mov r9, rax
mov r10, rbx
pxor xmm10, xmm10
mov r12, 1
pinsrd xmm10, r12d, 0
jmp L71
ALIGN 16
L70:
movdqu xmm0, xmmword ptr [r9 + 0]
movdqu xmm2, xmm0
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
movdqu xmm3, xmm0
movdqu xmm0, xmm7
pshufb xmm0, xmm8
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm3, xmm0
movdqu xmmword ptr [r10 + 0], xmm3
add rdx, 1
add r9, 16
add r10, 16
paddd xmm7, xmm10
ALIGN 16
L71:
cmp rdx, rcx
jne L70
cmp rsi, 0
jne L72
jmp L73
L72:
movdqu xmm3, xmm1
movdqu xmm2, xmmword ptr [r9 + 0]
movdqu xmm1, xmm2
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmmword ptr [r10 + 0], xmm1
mov rax, rsi
movdqu xmm1, xmm3
movdqu xmm2, xmmword ptr [r9 + 0]
cmp rax, 8
jae L74
mov rcx, 0
pinsrq xmm2, rcx, 1
mov rcx, rax
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 0
and rcx, rdx
pinsrq xmm2, rcx, 0
jmp L75
L74:
mov rcx, rax
sub rcx, 8
shl rcx, 3
mov rdx, 1
shl rdx, cl
sub rdx, 1
pextrq rcx, xmm2, 1
and rcx, rdx
pinsrq xmm2, rcx, 1
L75:
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
L73:
jmp L69
L68:
L69:
pxor xmm2, xmm2
mov rax, r13
imul rax, 8
pinsrd xmm2, eax, 0
mov rax, r11
imul rax, 8
pinsrd xmm2, eax, 2
pshufb xmm2, xmm8
pxor xmm1, xmm2
movdqu xmm2, xmm11
pshufb xmm1, xmm8
pshufb xmm2, xmm8
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm6, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
movdqu xmm5, xmm1
pclmulqdq xmm1, xmm2, 16
movdqu xmm3, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 1
movdqu xmm4, xmm1
movdqu xmm1, xmm5
pclmulqdq xmm1, xmm2, 0
pclmulqdq xmm5, xmm2, 17
movdqu xmm2, xmm5
movdqu xmm5, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm4
mov r12, 0
pinsrd xmm1, r12d, 0
pshufd xmm1, xmm1, 14
pxor xmm2, xmm1
movdqu xmm1, xmm3
mov r12, 0
pinsrd xmm1, r12d, 3
pshufd xmm1, xmm1, 79
mov r12, 0
pinsrd xmm4, r12d, 3
pshufd xmm4, xmm4, 79
pxor xmm1, xmm4
pxor xmm1, xmm5
movdqu xmm3, xmm1
psrld xmm3, 31
movdqu xmm4, xmm2
psrld xmm4, 31
pslld xmm1, 1
pslld xmm2, 1
vpslldq xmm5, xmm3, 4
vpslldq xmm4, xmm4, 4
mov r12, 0
pinsrd xmm3, r12d, 0
pshufd xmm3, xmm3, 3
pxor xmm3, xmm4
pxor xmm1, xmm5
pxor xmm2, xmm3
movdqu xmm5, xmm2
pxor xmm2, xmm2
mov r12, 3774873600
pinsrd xmm2, r12d, 3
pclmulqdq xmm1, xmm2, 17
movdqu xmm2, xmm1
psrld xmm2, 31
pslld xmm1, 1
vpslldq xmm2, xmm2, 4
pxor xmm1, xmm2
pxor xmm1, xmm5
pxor xmm1, xmm6
pshufb xmm1, xmm8
mov r12, 1
pinsrd xmm7, r12d, 0
movdqu xmm0, xmm7
mov r12, 579005069656919567
pinsrq xmm2, r12, 0
mov r12, 283686952306183
pinsrq xmm2, r12, 1
pshufb xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 0]
pxor xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 16]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 32]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 48]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 64]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 80]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 96]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 112]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 128]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 144]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 160]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 176]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 192]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 208]
aesenc xmm0, xmm2
movdqu xmm2, xmmword ptr [r8 + 224]
aesenclast xmm0, xmm2
pxor xmm2, xmm2
pxor xmm1, xmm0
movdqu xmm0, xmmword ptr [r15 + 0]
pcmpeqd xmm0, xmm1
pextrq rdx, xmm0, 0
cmp rdx, 18446744073709551615
jne L76
mov rax, 0
jmp L77
L76:
mov rax, 1
L77:
pextrq rdx, xmm0, 1
cmp rdx, 18446744073709551615
jne L78
mov rdx, 0
jmp L79
L78:
mov rdx, 1
L79:
add rax, rdx
mov rdx, rax
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rax
pinsrq xmm6, rax, 1
pop rax
pinsrq xmm6, rax, 0
pop rax
pinsrq xmm7, rax, 1
pop rax
pinsrq xmm7, rax, 0
pop rax
pinsrq xmm8, rax, 1
pop rax
pinsrq xmm8, rax, 0
pop rax
pinsrq xmm10, rax, 1
pop rax
pinsrq xmm10, rax, 0
pop rax
pinsrq xmm11, rax, 1
pop rax
pinsrq xmm11, rax, 0
mov rax, rdx
ret
old_gcm256_decrypt endp
end
Computing file changes ...