Function at 0x401d10
Capabilities:
Encrypt data using aes via x86 extensions

Disassembly:
push ebp
push ebx
push esi
push edi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov ebp, esp
sub esp, 0x58
and esp, 0xfffffff0
mov dword [esp + 0x50], ebp
cmp eax, 1
je 0x401fb0
movdqu xmm7, xmmword [ebx]
mov dword [esp], 0xc0d0e0f
mov dword [esp + 4], 0x8090a0b
mov dword [esp + 8], 0x4050607
mov dword [esp + 0xc], 0x10203
mov ecx, 6
xor ebp, ebp
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebp
pextrd ebx, xmm7, 3
pinsrd xmm7, ebp, 3
mov ecx, dword [edx + 0xf0]
bswap ebx
pxor xmm0, xmm0
pxor xmm1, xmm1
movdqa xmm2, xmmword [esp]
pinsrd xmm0, ebx, 0
lea ebp, [ebx + 3]
pinsrd xmm1, ebp, 0
inc ebx
pinsrd xmm0, ebx, 1
inc ebp
pinsrd xmm1, ebp, 1
inc ebx
pinsrd xmm0, ebx, 2
inc ebp
pinsrd xmm1, ebp, 2
movdqa xmmword [esp + 0x30], xmm0
pshufb xmm0, xmm2
movdqu xmm6, xmmword [edx]
movdqa xmmword [esp + 0x40], xmm1
pshufb xmm1, xmm2
pshufd xmm2, xmm0, 0xc0
pshufd xmm3, xmm0, 0x80
cmp eax, 6
jb 0x401f25
pxor xmm7, xmm6
shl ecx, 4
mov ebx, 0x10
movdqa xmmword [esp + 0x20], xmm7
mov ebp, edx
sub ebx, ecx
lea edx, [edx + ecx + 0x20]
sub eax, 6
jmp 0x401e20
pshufd xmm4, xmm0, 0x40
movdqa xmm0, xmmword [esp + 0x20]
pshufd xmm5, xmm1, 0xc0
pxor xmm2, xmm0
pshufd xmm6, xmm1, 0x80
pxor xmm3, xmm0
pshufd xmm7, xmm1, 0x40
movups xmm1, xmmword [ebp + 0x10]
pxor xmm4, xmm0
pxor xmm5, xmm0
aesenc xmm2, xmm1
pxor xmm6, xmm0
pxor xmm7, xmm0
aesenc xmm3, xmm1
movups xmm0, xmmword [ebp + 0x20]
mov ecx, ebx
aesenc xmm4, xmm1
aesenc xmm5, xmm1
aesenc xmm6, xmm1
aesenc xmm7, xmm1
call fcn.0040156e
movups xmm1, xmmword [esi]
movups xmm0, xmmword [esi + 0x10]
xorps xmm2, xmm1
movups xmm1, xmmword [esi + 0x20]
xorps xmm3, xmm0
movups xmmword [edi], xmm2
movdqa xmm0, xmmword [esp + 0x10]
xorps xmm4, xmm1
movdqa xmm1, xmmword [esp + 0x40]
movups xmmword [edi + 0x10], xmm3
movups xmmword [edi + 0x20], xmm4
paddd xmm1, xmm0
paddd xmm0, xmmword [esp + 0x30]
movdqa xmm2, xmmword [esp]
movups xmm3, xmmword [esi + 0x30]
movups xmm4, xmmword [esi + 0x40]
xorps xmm5, xmm3
movups xmm3, xmmword [esi + 0x50]
lea esi, [esi + 0x60]
movdqa xmmword [esp + 0x30], xmm0
pshufb xmm0, xmm2
xorps xmm6, xmm4
movups xmmword [edi + 0x30], xmm5
xorps xmm7, xmm3
movdqa xmmword [esp + 0x40], xmm1
pshufb xmm1, xmm2
movups xmmword [edi + 0x40], xmm6
pshufd xmm2, xmm0, 0xc0
movups xmmword [edi + 0x50], xmm7
lea edi, [edi + 0x60]
pshufd xmm3, xmm0, 0x80
sub eax, 6
jae 0x401e20
add eax, 6
je 0x40206f
movdqu xmm7, xmmword [ebp]
mov edx, ebp
pxor xmm7, xmmword [esp + 0x20]
mov ecx, dword [ebp + 0xf0]
por xmm2, xmm7
cmp eax, 2
jb 0x401fb9
pshufd xmm4, xmm0, 0x40
por xmm3, xmm7
je 0x401ff0
pshufd xmm5, xmm1, 0xc0
por xmm4, xmm7
cmp eax, 4
jb 0x402010
pshufd xmm6, xmm1, 0x80
por xmm5, xmm7
je 0x402040
por xmm6, xmm7
call fcn.00401500
movups xmm1, xmmword [esi]
movups xmm0, xmmword [esi + 0x10]
xorps xmm2, xmm1
movups xmm1, xmmword [esi + 0x20]
xorps xmm3, xmm0
movups xmm0, xmmword [esi + 0x30]
xorps xmm4, xmm1
movups xmm1, xmmword [esi + 0x40]
xorps xmm5, xmm0
movups xmmword [edi], xmm2
xorps xmm6, xmm1
movups xmmword [edi + 0x10], xmm3
movups xmmword [edi + 0x20], xmm4
movups xmmword [edi + 0x30], xmm5
movups xmmword [edi + 0x40], xmm6
jmp 0x40206f
movups xmm2, xmmword [ebx]
mov ecx, dword [edx + 0xf0]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [edx + 0x10]
lea edx, [edx + 0x20]
xorps xmm2, xmm0
aesenc xmm2, xmm1
dec ecx
movups xmm1, xmmword [edx]
lea edx, [edx + 0x10]
jne 0x401fc6
aesenclast xmm2, xmm1
movups xmm6, xmmword [esi]
xorps xmm6, xmm2
movups xmmword [edi], xmm6
jmp 0x40206f
call fcn.00401220
movups xmm5, xmmword [esi]
movups xmm6, xmmword [esi + 0x10]
xorps xmm2, xmm5
xorps xmm3, xmm6
movups xmmword [edi], xmm2
movups xmmword [edi + 0x10], xmm3
jmp 0x40206f
call fcn.004012e0
movups xmm5, xmmword [esi]
movups xmm6, xmmword [esi + 0x10]
xorps xmm2, xmm5
movups xmm7, xmmword [esi + 0x20]
xorps xmm3, xmm6
movups xmmword [edi], xmm2
xorps xmm4, xmm7
movups xmmword [edi + 0x10], xmm3
movups xmmword [edi + 0x20], xmm4
jmp 0x40206f
call fcn.004013e0
movups xmm6, xmmword [esi]
movups xmm7, xmmword [esi + 0x10]
movups xmm1, xmmword [esi + 0x20]
xorps xmm2, xmm6
movups xmm0, xmmword [esi + 0x30]
xorps xmm3, xmm7
movups xmmword [edi], xmm2
xorps xmm4, xmm1
movups xmmword [edi + 0x10], xmm3
xorps xmm5, xmm0
movups xmmword [edi + 0x20], xmm4
movups xmmword [edi + 0x30], xmm5
pxor xmm0, xmm0
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm3, xmm3
pxor xmm4, xmm4
movdqa xmmword [esp + 0x20], xmm0
pxor xmm5, xmm5
movdqa xmmword [esp + 0x30], xmm0
pxor xmm6, xmm6
movdqa xmmword [esp + 0x40], xmm0
pxor xmm7, xmm7
mov esp, dword [esp + 0x50]
pop edi
pop esi
pop ebx
pop ebp
ret