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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x48
nop
mov edx, dword [ebp + 8]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x4022a0
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
mov eax, dword [edx + 0x3c]
mov eax, dword [eax + edx + 0x78]
mov ecx, dword [eax + edx + 0x20]
add ecx, edx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x50], eax
mov eax, dword [eax + edx + 0x18]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x2c], 0
xor eax, eax
nop word cs:[eax + eax]
mov ecx, eax
mov dword [ebp - 0x34], eax
cmp eax, dword [ebp - 0x54]
jae 0x4012ac
nop
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
add eax, dword [ebp + 8]
mov dword [ebp - 0x20], eax
xorps xmm0, xmm0
movsd qword [ebp - 0x3c], xmm0
xorps xmm0, xmm0
movups xmmword [ebp - 0x4c], xmm0
nop
push dword [ebp - 0x20]
call fcn.00408500
add esp, 4
test eax, eax
js 0x4012c5
mov edi, eax
cmp eax, 0xf
ja 0x4010d0
nop
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x38], 0xf
push edi
push dword [ebp - 0x20]
lea eax, [ebp - 0x4c]
push eax
call fcn.004047a0
add esp, 0xc
add edi, ebp
add edi, 0xffffffb4
jmp 0x40113d
nop
mov dword [ebp - 0x28], edi
or edi, 0xf
cmp edi, 0x17
mov ecx, 0x16
cmovae ecx, edi
cmp edi, 0xfff
mov dword [ebp - 0x10], 1
nop
mov dword [ebp - 0x24], ecx
jb 0x401110
lea eax, [ecx + 0x24]
push eax
call fcn.0040233a
add esp, 4
mov esi, eax
add esi, 0x23
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x40111e
lea eax, [ecx + 1]
push eax
call fcn.0040233a
add esp, 4
mov esi, eax
nop
mov dword [ebp - 0x4c], esi
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x3c], edi
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x38], eax
push edi
push dword [ebp - 0x20]
push esi
call fcn.004047a0
add esp, 0xc
add edi, esi
nop
mov byte [edi], 0
nop
mov eax, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x3c]
mov edx, ebx
xor edx, 0x235
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x28], ecx
cmp ecx, 0x10
lea esi, [ebp - 0x4c]
mov dword [ebp - 0x24], eax
cmovae esi, eax
cmp ebx, 4
nop
mov dword [ebp - 0x20], ebx
jb 0x4011e4
shr ebx, 2
xor edi, edi
cmp ebx, 1
je 0x4011c1
and ebx, 0xfffffffe
xor edi, edi
nop word [eax + eax]
nop
imul eax, dword [esi + edi*4], 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul eax, ecx, 0x5bd1e995
imul ecx, edx, 0x5bd1e995
xor ecx, eax
imul eax, dword [esi + edi*4 + 4], 0x5bd1e995
mov edx, eax
shr edx, 0x18
xor edx, eax
imul eax, edx, 0x5bd1e995
imul edx, ecx, 0x5bd1e995
xor edx, eax
add edi, 2
cmp ebx, edi
jne 0x401180
test byte [ebp - 0x20], 4
je 0x4011e4
nop
imul edi, dword [esi + edi*4], 0x5bd1e995
mov ebx, edi
shr ebx, 0x18
xor ebx, edi
imul edi, ebx, 0x5bd1e995
imul edx, edx, 0x5bd1e995
xor edx, edi
mov eax, dword [ebp - 0x20]
mov ebx, eax
and ebx, 0xfffffffc
and eax, 3
xor edi, edi
cmp eax, 1
je 0x401214
cmp eax, 2
je 0x401209
cmp eax, 3
jne 0x401223
nop
movsx edi, byte [esi + ebx + 2]
shl edi, 0x10
nop
movsx eax, byte [esi + ebx + 1]
shl eax, 8
xor edi, eax
nop
movsx eax, byte [esi + ebx]
xor eax, edi
imul eax, eax, 0x5bd1e995
xor edx, eax
mov eax, edx
shr eax, 0xd
xor eax, edx
imul eax, eax, 0x5bd1e995
mov esi, eax
shr esi, 0xf
xor esi, eax
cmp esi, dword [ebp + 0xc]
jne 0x401260
nop
mov edx, dword [ebp + 8]
mov edi, dword [ebp - 0x50]
mov eax, dword [edi + edx + 0x24]
mov ecx, dword [ebp - 0x34]
lea ecx, [edx + ecx*2]
movzx eax, word [eax + ecx]
mov ecx, dword [edi + edx + 0x1c]
add ecx, edx
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x2c], eax
jmp 0x401264
add dword [ebp - 0x30], 4
mov eax, dword [ebp - 0x28]
cmp eax, 0x10
jb 0x40129e
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x401290
nop
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x4012d2
mov edx, dword [ebp - 0x28]
add edx, 0x24
jmp 0x401293
mov eax, dword [ebp - 0x24]
nop
push edx
push eax
call fcn.0040236f
add esp, 8
nop
mov eax, dword [ebp - 0x34]
inc eax
cmp esi, dword [ebp + 0xc]
jne 0x401060
nop
mov eax, dword [ebp - 0x2c]
add eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret
nop
mov dword [ebp - 0x10], 1
call fcn.004020b0
call fcn.00408016
nop word [eax + eax]
push ebp
sub esp, 0xc
add ebp, 0xc
add esp, 0xc
pop ebp
ret