Function at 0x440b10
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x88
mov ebp, dword [esp + 0xa8]
mov edi, dword [esp + 0xa4]
mov eax, 0xffffffff
xor eax, eax
mov ecx, ebp
shl ecx, 5
add ecx, 0x20
xor eax, eax
mov edx, ebp
nop dword [eax + eax]
test edx, edx
jle 0x440b5a
mov esi, dword [edi + edx*4 - 4]
dec edx
add ecx, 0xffffffe0
test esi, esi
je 0x440b40
bsr eax, esi
xor eax, 0x1f
sub ecx, eax
mov eax, ecx
mov esi, dword [esp + 0x9c]
lea ecx, [eax + 7]
mov edx, ecx
and edx, 0xfffffff8
sub edx, eax
mov dword [esp + 0x18], edx
movd xmm0, edx
movd xmm1, ecx
punpckldq xmm0, xmm1
pand xmm0, xmmword [0x44b390]
pshufd xmm1, xmm0, 0x50
pxor xmm6, xmm6
pcmpeqd xmm1, xmm6
movmskpd edx, xmm1
xor edx, 3
mov eax, edx
shr al, 1
movzx eax, al
mov edi, ecx
shr edi, 5
add edi, eax
mov eax, ebp
sub eax, edi
mov dword [esp + 0x20], eax
test ebp, ebp
setne byte [esp + 1]
mov eax, 0xfffffffc
mov dword [esp + 0xc], edi
cmp ebp, edi
jb 0x4410ab
mov eax, ecx
shr eax, 3
movd edi, xmm0
mov ebx, dword [esp + 0xc]
lea ebx, [ebx*4]
mov dword [esp + 0x60], eax
sub ebx, eax
mov dword [esp + 0x1c], ebx
shl dword [esp + 0x20], 2
mov ebx, dword [esp + 0x18]
shr ebx, 5
mov eax, ebp
sub eax, ebx
mov dword [esp + 8], eax
and byte [esp + 1], dl
mov eax, 0x20
mov dword [esp + 0x44], edi
sub eax, edi
mov dword [esp + 0x14], eax
mov edi, ebp
sub edi, ebx
sete ah
setb al
and ah, dl
cmp ecx, 0x28
mov ecx, 0x1e
mov edx, 0xfa
cmovae edx, ecx
mov dword [esp + 0x24], edx
or ah, al
mov byte [esp + 3], ah
lea eax, [ebx*4]
neg eax
mov ecx, ebx
not ecx
add ecx, ebp
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 8]
cmp edx, 8
setb cl
cmp eax, 0x20
setb al
or al, cl
mov byte [esp + 2], al
mov eax, edx
and eax, 0xfffffff8
mov dword [esp + 0x2c], eax
and edi, 3
mov dword [esp + 0x10], edi
mov eax, ebp
and eax, 0xfffffff8
mov ecx, ebp
and ecx, 7
mov dword [esp + 0x28], ecx
movss xmm1, dword [esp + 0x14]
mov dword [esp + 0x40], eax
neg eax
mov dword [esp + 0x3c], eax
xorps xmm7, xmm7
movss xmm7, xmm1
movss xmm6, xmm0
mov eax, dword [esp + 0x1c]
add eax, esi
mov dword [esp + 0x5c], eax
lea eax, [ebp*4]
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0xc]
lea eax, [esi + ecx*4]
mov dword [esp + 0x58], eax
lea eax, [esi + ecx*4 - 8]
mov dword [esp + 0x50], eax
mov dword [esp + 0x48], ebx
lea ebx, [esi + ebx*4 + 0x10]
lea eax, [esi + 0xc]
mov dword [esp + 0x30], eax
lea eax, [esi + ebp*4 - 0x10]
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], ebx
movups xmmword [esp + 0x78], xmm6
movups xmmword [esp + 0x68], xmm7
jmp 0x440d15
mov eax, dword [esp + 0x64]
not eax
mov edx, dword [esp + 4]
or edx, eax
and edx, esi
xor eax, eax
xor ecx, ecx
cmp edx, ecx
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x54]
jne 0x4410ab
push dword [esp + 0x1c]
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
push dword [esp + 0x20]
push 0
push dword [esp + 0x60]
call sub.msvcrt.dll_memset
add esp, 0xc
push dword [esp + 0x60]
push dword [esp + 0x60]
push dword [esp + 0xb8]
call dword [esp + 0xb8]
add esp, 0xc
test eax, eax
jne 0x4410ab
cmp dword [esp + 0xc], 0
je 0x440d8a
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x9c]
nop dword [eax]
mov edx, dword [ecx]
bswap edx
mov esi, dword [eax + 4]
bswap esi
mov dword [ecx], esi
mov dword [eax + 4], edx
add ecx, 4
lea edx, [eax - 4]
cmp ecx, eax
mov eax, edx
jbe 0x440d70
cmp byte [esp + 3], 0
je 0x440db0
push dword [esp + 0x4c]
push 0
mov esi, dword [esp + 0xa4]
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
jmp 0x440fb0
cmp dword [esp + 0x18], 0x20
mov esi, dword [esp + 0x9c]
movdqu xmm6, xmmword [esp + 0x78]
movdqu xmm7, xmmword [esp + 0x68]
jb 0x440ecb
mov dword [esp + 4], 0
mov ebp, dword [esp + 0xa8]
cmp ebp, dword [esp + 0x48]
mov edi, dword [esp + 8]
je 0x440ea0
xor ecx, ecx
cmp byte [esp + 2], 0
jne 0x440e23
xor eax, eax
mov ecx, dword [esp + 0x2c]
nop word [eax + eax]
movups xmm0, xmmword [ebx + eax*4 - 0x10]
movups xmm1, xmmword [ebx + eax*4]
movups xmmword [esi + eax*4], xmm0
movups xmmword [esi + eax*4 + 0x10], xmm1
add eax, 8
cmp ecx, eax
jne 0x440e00
mov eax, ecx
mov dword [esp + 4], edi
cmp edi, ecx
je 0x440ea0
mov eax, ecx
cmp dword [esp + 0x10], 0
mov edi, esi
je 0x440e4b
mov edx, dword [esp + 0x10]
mov eax, ecx
nop word cs:[eax + eax]
mov esi, dword [ebx + eax*4 - 0x10]
mov dword [edi + eax*4], esi
inc eax
dec edx
jne 0x440e40
mov esi, dword [esp + 0x34]
sub esi, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 4], ecx
cmp esi, 3
mov esi, edi
mov edi, ecx
mov edx, dword [esp + 0x30]
jb 0x440ea0
nop word cs:[eax + eax]
mov ecx, dword [ebx + eax*4 - 0x10]
mov dword [edx + eax*4 - 0xc], ecx
mov ecx, dword [ebx + eax*4 - 0xc]
mov dword [edx + eax*4 - 8], ecx
mov ecx, dword [ebx + eax*4 - 8]
mov dword [edx + eax*4 - 4], ecx
mov ecx, dword [ebx + eax*4 - 4]
mov dword [edx + eax*4], ecx
add eax, 4
cmp edi, eax
jne 0x440e70
mov dword [esp + 4], edi
nop word [eax + eax]
mov eax, ebp
mov ecx, dword [esp + 4]
sub eax, ecx
jbe 0x440ecb
lea ecx, [esi + ecx*4]
shl eax, 2
push eax
push 0
push ecx
call sub.msvcrt.dll_memset
movdqu xmm7, xmmword [esp + 0x74]
movdqu xmm6, xmmword [esp + 0x84]
add esp, 0xc
cmp byte [esp + 1], 0
je 0x440fb0
xor edx, edx
mov edi, dword [esp + 0xa8]
mov eax, edi
cmp edi, 8
jb 0x440f6b
xorps xmm0, xmm0
xor eax, eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
nop word [eax + eax]
movaps xmm3, xmm0
movdqu xmm1, xmmword [edx + eax*4 - 0x10]
movdqu xmm4, xmmword [edx + eax*4]
pshufd xmm2, xmm4, 0x1b
pshufd xmm0, xmm1, 0x1b
pslld xmm2, xmm7
pslld xmm0, xmm7
shufps xmm3, xmm2, 3
movaps xmm5, xmm2
psrld xmm4, xmm6
shufps xmm5, xmm3, 0x26
por xmm4, xmm5
movdqu xmmword [edx + eax*4], xmm4
shufps xmm2, xmm0, 3
movaps xmm3, xmm0
shufps xmm3, xmm2, 0x26
psrld xmm1, xmm6
por xmm1, xmm3
movdqu xmmword [edx + eax*4 - 0x10], xmm1
add eax, 0xfffffff8
cmp ecx, eax
jne 0x440f00
cmp dword [esp + 0x40], edi
je 0x440fb0
pshufd xmm0, xmm0, 0xff
movd edx, xmm0
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x44]
nop word cs:[eax + eax]
mov ecx, dword [esp + 0x9c]
mov esi, dword [ecx + eax*4 - 4]
mov edi, esi
mov ecx, ebp
shl edi, cl
mov ecx, ebx
shr esi, cl
or esi, edx
mov ecx, dword [esp + 0x9c]
mov dword [ecx + eax*4 - 4], esi
mov esi, dword [esp + 0x9c]
mov edx, edi
dec eax
jne 0x440f80
nop
mov edx, dword [esp + 0x24]
dec edx
je 0x4410a6
mov eax, dword [esi]
mov ecx, dword [esp + 0xa0]
mov ebx, eax
xor ebx, ecx
sub eax, ecx
and ecx, ebx
not ebx
and eax, ebx
or eax, ecx
sar eax, 0x1f
xor edi, edi
mov ebp, dword [esp + 0xa8]
cmp ebp, 2
mov dword [esp + 0x24], edx
mov dword [esp + 0x64], eax
jb 0x441020
mov edx, 1
mov ebx, dword [esp + 0xa4]
nop word [eax + eax]
mov eax, dword [esi + edx*4]
mov ecx, eax
neg ecx
or eax, ecx
sar eax, 0x1f
or edi, eax
inc edx
cmp ebp, edx
jne 0x441000
jmp 0x441027
mov ebx, dword [esp + 0xa4]
xor esi, esi
xor eax, eax
xor edx, edx
test ebp, ebp
mov dword [esp + 4], edi
je 0x440cf0
nop dword [eax]
mov eax, dword [ebx + ebp*4 - 4]
mov ecx, dword [esp + 0x9c]
mov ecx, dword [ecx + ebp*4 - 4]
mov ebx, eax
xor ebx, ecx
sub eax, ecx
and ecx, ebx
not ebx
and eax, ebx
or eax, ecx
sar eax, 0x1f
mov edi, eax
or edi, edx
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + ebp*4 - 4]
mov ecx, dword [esp + 0xa4]
mov ecx, dword [ecx + ebp*4 - 4]
mov ebx, eax
xor ebx, ecx
sub eax, ecx
and ecx, ebx
not ebx
and eax, ebx
or eax, ecx
sar eax, 0x1f
mov ebx, dword [esp + 0xa4]
mov ecx, edi
not ecx
and ecx, eax
or esi, ecx
or edi, eax
mov edx, edi
dec ebp
jne 0x441040
jmp 0x440cf0
mov eax, 0xfffffff2
add esp, 0x88
pop esi
pop edi
pop ebx
pop ebp
ret