Function at 0x4049b0
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 0x404d32
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 0x404a90
movaps xmm2, xmm7
cmp eax, 0x10
jb 0x404a65
sub eax, 0x10
jmp 0x404a10
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 0x404a26
aesenclast xmm2, xmm1
mov ecx, ebx
mov edx, ebp
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
sub eax, 0x10
jae 0x404a10
add eax, 0x10
jne 0x404a65
movaps xmm7, xmm2
pxor xmm2, xmm2
jmp 0x404d1a
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 0x404a10
cmp eax, 0x50
jbe 0x404b41
movaps xmmword [esp], xmm7
sub eax, 0x50
jmp 0x404aba
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.00402660
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 0x404ab0
movaps xmm2, xmm7
movaps xmm7, xmm0
add eax, 0x50
jle 0x404cd0
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
movups xmm2, xmmword [esi]
movaps xmm6, xmm2
cmp eax, 0x10
jbe 0x404be0
movups xmm3, xmmword [esi + 0x10]
movaps xmm5, xmm3
cmp eax, 0x20
jbe 0x404c20
movups xmm4, xmmword [esi + 0x20]
cmp eax, 0x30
jbe 0x404c50
movups xmm5, xmmword [esi + 0x30]
cmp eax, 0x40
jbe 0x404c80
movups xmm6, xmmword [esi + 0x40]
movaps xmmword [esp], xmm7
movups xmm2, xmmword [esi]
xorps xmm7, xmm7
call fcn.00402660
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 0x404ce0
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 0x404bed
aesdeclast xmm2, xmm1
xorps xmm2, xmm7
movaps xmm7, xmm6
sub eax, 0x10
jmp 0x404ce0
call fcn.00402300
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 0x404ce0
call fcn.004023e0
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 0x404ce0
call fcn.004024f0
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 0x404ce0
pxor xmm3, xmm3
pxor xmm4, xmm4
pxor xmm5, xmm5
pxor xmm6, xmm6
and eax, 0xf
jne 0x404d00
movups xmmword [edi], xmm2
pxor xmm0, xmm0
jmp 0x404d1a
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