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

Disassembly:
push ebp
push ebx
push esi
push edi
mov esi, dword [esp + 0x14]
mov ebx, esp
mov edi, dword [esp + 0x18]
sub ebx, 0x18
mov eax, dword [esp + 0x1c]
and ebx, 0xfffffff0
mov edx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
test eax, eax
je 0x40ac32
cmp dword [esp + 0x28], 0
xchg esp, ebx
movups xmm7, xmmword [ebp]
mov ecx, dword [edx + 0xf0]
mov ebp, edx
mov dword [esp + 0x10], ebx
mov ebx, ecx
je 0x40a990
movaps xmm2, xmm7
cmp eax, 0x10
jb 0x40a965
sub eax, 0x10
jmp 0x40a910
movups xmm7, xmmword [esi]
lea esi, [esi + 0x10]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [edx + 0x10]
xorps xmm7, xmm0
lea edx, [edx + 0x20]
xorps xmm2, xmm7
aesenc xmm2, xmm1
dec ecx
movups xmm1, xmmword [edx]
lea edx, [edx + 0x10]
jne 0x40a926
aesenclast xmm2, xmm1
mov ecx, ebx
mov edx, ebp
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
sub eax, 0x10
jae 0x40a910
add eax, 0x10
jne 0x40a965
movaps xmm7, xmm2
pxor xmm2, xmm2
jmp 0x40ac1a
mov ecx, eax
mov esi, esi
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x10
sub ecx, eax
xor eax, eax
mov esi, esi
rep stosb byte es:[edi], al
lea edi, [edi - 0x10]
mov ecx, ebx
mov esi, edi
mov edx, ebp
jmp 0x40a910
cmp eax, 0x50
jbe 0x40aa41
movaps xmmword [esp], xmm7
sub eax, 0x50
jmp 0x40a9ba
movaps xmmword [esp], xmm0
movups xmmword [edi], xmm7
lea edi, [edi + 0x10]
movdqu xmm2, xmmword [esi]
movdqu xmm3, xmmword [esi + 0x10]
movdqu xmm4, xmmword [esi + 0x20]
movdqu xmm5, xmmword [esi + 0x30]
movdqu xmm6, xmmword [esi + 0x40]
movdqu xmm7, xmmword [esi + 0x50]
call fcn.00408560
movups xmm1, xmmword [esi]
movups xmm0, xmmword [esi + 0x10]
xorps xmm2, xmmword [esp]
xorps xmm3, xmm1
movups xmm1, xmmword [esi + 0x20]
xorps xmm4, xmm0
movups xmm0, xmmword [esi + 0x30]
xorps xmm5, xmm1
movups xmm1, xmmword [esi + 0x40]
xorps xmm6, xmm0
movups xmm0, xmmword [esi + 0x50]
xorps xmm7, xmm1
movups xmmword [edi], xmm2
movups xmmword [edi + 0x10], xmm3
lea esi, [esi + 0x60]
movups xmmword [edi + 0x20], xmm4
mov ecx, ebx
movups xmmword [edi + 0x30], xmm5
mov edx, ebp
movups xmmword [edi + 0x40], xmm6
lea edi, [edi + 0x50]
sub eax, 0x60
ja 0x40a9b0
movaps xmm2, xmm7
movaps xmm7, xmm0
add eax, 0x50
jle 0x40abd0
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
movups xmm2, xmmword [esi]
movaps xmm6, xmm2
cmp eax, 0x10
jbe 0x40aae0
movups xmm3, xmmword [esi + 0x10]
movaps xmm5, xmm3
cmp eax, 0x20
jbe 0x40ab20
movups xmm4, xmmword [esi + 0x20]
cmp eax, 0x30
jbe 0x40ab50
movups xmm5, xmmword [esi + 0x30]
cmp eax, 0x40
jbe 0x40ab80
movups xmm6, xmmword [esi + 0x40]
movaps xmmword [esp], xmm7
movups xmm2, xmmword [esi]
xorps xmm7, xmm7
call fcn.00408560
movups xmm1, xmmword [esi]
movups xmm0, xmmword [esi + 0x10]
xorps xmm2, xmmword [esp]
xorps xmm3, xmm1
movups xmm1, xmmword [esi + 0x20]
xorps xmm4, xmm0
movups xmm0, xmmword [esi + 0x30]
xorps xmm5, xmm1
movups xmm7, xmmword [esi + 0x40]
xorps xmm6, xmm0
movups xmmword [edi], xmm2
movups xmmword [edi + 0x10], xmm3
pxor xmm3, xmm3
movups xmmword [edi + 0x20], xmm4
pxor xmm4, xmm4
movups xmmword [edi + 0x30], xmm5
pxor xmm5, xmm5
lea edi, [edi + 0x40]
movaps xmm2, xmm6
pxor xmm6, xmm6
sub eax, 0x50
jmp 0x40abe0
movups xmm0, xmmword [edx]
movups xmm1, xmmword [edx + 0x10]
lea edx, [edx + 0x20]
xorps xmm2, xmm0
aesdec xmm2, xmm1
dec ecx
movups xmm1, xmmword [edx]
lea edx, [edx + 0x10]
jne 0x40aaed
aesdeclast xmm2, xmm1
xorps xmm2, xmm7
movaps xmm7, xmm6
sub eax, 0x10
jmp 0x40abe0
call fcn.00408200
xorps xmm2, xmm7
xorps xmm3, xmm6
movups xmmword [edi], xmm2
movaps xmm2, xmm3
pxor xmm3, xmm3
lea edi, [edi + 0x10]
movaps xmm7, xmm5
sub eax, 0x20
jmp 0x40abe0
call fcn.004082e0
xorps xmm2, xmm7
xorps xmm3, xmm6
xorps xmm4, xmm5
movups xmmword [edi], xmm2
movaps xmm2, xmm4
pxor xmm4, xmm4
movups xmmword [edi + 0x10], xmm3
pxor xmm3, xmm3
lea edi, [edi + 0x20]
movups xmm7, xmmword [esi + 0x20]
sub eax, 0x30
jmp 0x40abe0
call fcn.004083f0
movups xmm1, xmmword [esi + 0x10]
movups xmm0, xmmword [esi + 0x20]
xorps xmm2, xmm7
movups xmm7, xmmword [esi + 0x30]
xorps xmm3, xmm6
movups xmmword [edi], xmm2
xorps xmm4, xmm1
movups xmmword [edi + 0x10], xmm3
pxor xmm3, xmm3
xorps xmm5, xmm0
movups xmmword [edi + 0x20], xmm4
pxor xmm4, xmm4
lea edi, [edi + 0x30]
movaps xmm2, xmm5
pxor xmm5, xmm5
sub eax, 0x40
jmp 0x40abe0
pxor xmm3, xmm3
pxor xmm4, xmm4
pxor xmm5, xmm5
pxor xmm6, xmm6
and eax, 0xf
jne 0x40ac00
movups xmmword [edi], xmm2
pxor xmm0, xmm0
jmp 0x40ac1a
movaps xmmword [esp], xmm2
pxor xmm0, xmm0
mov ecx, 0x10
mov esi, esp
sub ecx, eax
mov esi, esi
rep movsb byte es:[edi], byte [esi]
movdqa xmmword [esp], xmm2
mov esp, dword [esp + 0x10]
mov ebp, dword [esp + 0x24]
pxor xmm2, xmm2
pxor xmm1, xmm1
movups xmmword [ebp], xmm7
pxor xmm7, xmm7
pop edi
pop esi
pop ebx
pop ebp
ret