.code ALIGN 16 KeyExpansionStdcall 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 KeyExpansionStdcall endp ALIGN 16 KeyExpansionAndInversionStdcall 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 movdqu xmm1, xmmword ptr [rdx + 16] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 16], xmm1 movdqu xmm1, xmmword ptr [rdx + 32] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 32], xmm1 movdqu xmm1, xmmword ptr [rdx + 48] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 48], xmm1 movdqu xmm1, xmmword ptr [rdx + 64] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 64], xmm1 movdqu xmm1, xmmword ptr [rdx + 80] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 80], xmm1 movdqu xmm1, xmmword ptr [rdx + 96] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 96], xmm1 movdqu xmm1, xmmword ptr [rdx + 112] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 112], xmm1 movdqu xmm1, xmmword ptr [rdx + 128] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 128], xmm1 movdqu xmm1, xmmword ptr [rdx + 144] aesimc xmm1, xmm1 movdqu xmmword ptr [rdx + 144], xmm1 pxor xmm1, xmm1 pxor xmm2, xmm2 pxor xmm3, xmm3 ret KeyExpansionAndInversionStdcall endp ALIGN 16 AES128EncryptOneBlockStdcall proc movdqu xmm0, xmmword ptr [rdx + 0] 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 xmmword ptr [rcx + 0], xmm0 ret AES128EncryptOneBlockStdcall endp end