.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