Function at 0x40f070
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 0x40f3f2
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 0x40f150
movaps xmm2, xmm7
cmp eax, 0x10
jb 0x40f125
sub eax, 0x10
jmp 0x40f0d0
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 0x40f0e6
aesenclast xmm2, xmm1
mov ecx, ebx
mov edx, ebp
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
sub eax, 0x10
jae 0x40f0d0
add eax, 0x10
jne 0x40f125
movaps xmm7, xmm2
pxor xmm2, xmm2
jmp 0x40f3da
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 0x40f0d0
cmp eax, 0x50
jbe 0x40f201
movaps xmmword [esp], xmm7
sub eax, 0x50
jmp 0x40f17a
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.0040da20
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 0x40f170
movaps xmm2, xmm7
movaps xmm7, xmm0
add eax, 0x50
jle 0x40f390
movups xmmword [edi], xmm2
lea edi, [edi + 0x10]
movups xmm2, xmmword [esi]
movaps xmm6, xmm2
cmp eax, 0x10
jbe 0x40f2a0
movups xmm3, xmmword [esi + 0x10]
movaps xmm5, xmm3
cmp eax, 0x20
jbe 0x40f2e0
movups xmm4, xmmword [esi + 0x20]
cmp eax, 0x30
jbe 0x40f310
movups xmm5, xmmword [esi + 0x30]
cmp eax, 0x40
jbe 0x40f340
movups xmm6, xmmword [esi + 0x40]
movaps xmmword [esp], xmm7
movups xmm2, xmmword [esi]
xorps xmm7, xmm7
call fcn.0040da20
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 0x40f3a0
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 0x40f2ad
aesdeclast xmm2, xmm1
xorps xmm2, xmm7
movaps xmm7, xmm6
sub eax, 0x10
jmp 0x40f3a0
call fcn.0040d6c0
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 0x40f3a0
call fcn.0040d7a0
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 0x40f3a0
call fcn.0040d8b0
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 0x40f3a0
pxor xmm3, xmm3
pxor xmm4, xmm4
pxor xmm5, xmm5
pxor xmm6, xmm6
and eax, 0xf
jne 0x40f3c0
movups xmmword [edi], xmm2
pxor xmm0, xmm0
jmp 0x40f3da
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