Function at 0x40e8b0
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 0x40eb9d
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 0x40e980
movaps xmm2, xmm7
cmp eax, 0x10
jb 0x40e955
sub eax, 0x10
jmp 0x40e910
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 0x40e926
aesenclast xmm2, xmm1
mov ecx, ebx
mov edx, ebp
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
sub eax, 0x10
jae 0x40e910
add eax, 0x10
jne 0x40e955
movaps xmm7, xmm2
jmp 0x40eb91
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 0x40e910
cmp eax, 0x50
jbe 0x40ea2d
movaps xmmword [esp], xmm7
sub eax, 0x50
jmp 0x40e9aa
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.0040d400
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 0x40e9a0
movaps xmm2, xmm7
movaps xmm7, xmm0
add eax, 0x50
jle 0x40eb71
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
movups xmm2, xmmword [esi]
movaps xmm6, xmm2
cmp eax, 0x10
jbe 0x40eac0
movups xmm3, xmmword [esi + 0x10]
movaps xmm5, xmm3
cmp eax, 0x20
jbe 0x40eaf0
movups xmm4, xmmword [esi + 0x20]
cmp eax, 0x30
jbe 0x40eb10
movups xmm5, xmmword [esi + 0x30]
cmp eax, 0x40
jbe 0x40eb40
movups xmm6, xmmword [esi + 0x40]
movaps xmmword [esp], xmm7
movups xmm2, xmmword [esi]
xorps xmm7, xmm7
call fcn.0040d400
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
movups xmmword [edi + 0x20], xmm4
movups xmmword [edi + 0x30], xmm5
lea edi, [edi + 0x40]
movaps xmm2, xmm6
sub eax, 0x50
jmp 0x40eb71
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 0x40eacd
aesdeclast xmm2, xmm1
xorps xmm2, xmm7
movaps xmm7, xmm6
sub eax, 0x10
jmp 0x40eb71
xorps xmm4, xmm4
call fcn.0040d1b0
xorps xmm2, xmm7
xorps xmm3, xmm6
movups xmmword [edi], xmm2
movaps xmm2, xmm3
lea edi, [edi + 0x10]
movaps xmm7, xmm5
sub eax, 0x20
jmp 0x40eb71
call fcn.0040d1b0
xorps xmm2, xmm7
xorps xmm3, xmm6
xorps xmm4, xmm5
movups xmmword [edi], xmm2
movaps xmm2, xmm4
movups xmmword [edi + 0x10], xmm3
lea edi, [edi + 0x20]
movups xmm7, xmmword [esi + 0x20]
sub eax, 0x30
jmp 0x40eb71
call fcn.0040d2a0
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
xorps xmm5, xmm0
movups xmmword [edi + 0x20], xmm4
lea edi, [edi + 0x30]
movaps xmm2, xmm5
sub eax, 0x40
and eax, 0xf
jne 0x40eb80
movups xmmword [edi], xmm2
jmp 0x40eb91
movaps xmmword [esp], xmm2
mov ecx, 0x10
mov esi, esp
sub ecx, eax
mov esi, esi
rep movsb byte es:[edi], byte [esi]
mov esp, dword [esp + 0x10]
mov ebp, dword [esp + 0x24]
movups xmmword [ebp], xmm7
pop edi
pop esi
pop ebx
pop ebp
ret