Function at 0x4013f9
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov esi, esp
cmp dword [0x40f548], 0xa
jl 0x40156a
mov eax, dword [0x40f54c]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x40156a
push eax
sub esp, 0x3c
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi], eax
mov dword [eax], 0x40
mov eax, dword fs:[0x30]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov edx, dword [edx]
mov ecx, dword [edx + 0x18]
mov eax, dword [ecx + 0x3c]
mov eax, dword [ecx + eax + 0x78]
test eax, eax
je 0x401447
mov edi, dword [ecx + eax + 0x18]
test edi, edi
je 0x401447
mov dword [esi + 8], edx
mov dword [esi + 4], eax
mov eax, dword [ecx + eax + 0x20]
add eax, ecx
mov dword [esi + 0x10], eax
lea eax, [ecx + 1]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x10]
mov ebx, dword [eax + edi*4 - 4]
dec edi
mov dl, byte [ecx + ebx]
test dl, dl
je 0x4014a4
add ebx, dword [esi + 0xc]
mov eax, 0xd087e9e
movsx edx, dl
xor edx, eax
imul eax, edx, 0x1000193
mov dl, byte [ebx]
inc ebx
test dl, dl
jne 0x40148b
cmp eax, 0xa2d60de9
je 0x4014ad
test edi, edi
jne 0x401474
mov edx, dword [esi + 8]
jmp 0x401447
mov edx, dword [esi + 4]
mov eax, dword [ecx + edx + 0x1c]
add eax, ecx
mov edx, dword [ecx + edx + 0x24]
add edx, ecx
movzx edx, word [edx + edi*2]
add ecx, dword [eax + edx*4]
push dword [esi]
call ecx
sub esp, 0x40
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi], eax
mov dword [eax], 0x40
mov eax, dword fs:[0x30]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov edx, dword [edx]
mov ecx, dword [edx + 0x18]
mov eax, dword [ecx + 0x3c]
mov eax, dword [ecx + eax + 0x78]
test eax, eax
je 0x4014e5
mov edi, dword [ecx + eax + 0x18]
test edi, edi
je 0x4014e5
mov dword [esi + 8], edx
mov dword [esi + 4], eax
mov eax, dword [ecx + eax + 0x20]
add eax, ecx
mov dword [esi + 0x10], eax
lea eax, [ecx + 1]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x10]
mov ebx, dword [eax + edi*4 - 4]
dec edi
mov dl, byte [ecx + ebx]
test dl, dl
je 0x401542
add ebx, dword [esi + 0xc]
mov eax, 0xd087e9e
movsx edx, dl
xor edx, eax
imul eax, edx, 0x1000193
mov dl, byte [ebx]
inc ebx
test dl, dl
jne 0x401529
cmp eax, 0xa2d60de9
je 0x40154b
test edi, edi
jne 0x401512
mov edx, dword [esi + 8]
jmp 0x4014e5
mov edx, dword [esi + 4]
mov eax, dword [ecx + edx + 0x1c]
add eax, ecx
mov edx, dword [ecx + edx + 0x24]
add edx, ecx
movzx edx, word [edx + edi*2]
add ecx, dword [eax + edx*4]
push dword [esi]
call ecx
jmp 0x401407
cvtsi2sd xmm0, dword [ebp + 8]
movsd qword [esi + 0x18], xmm0
push eax
mov dword [esi], esp
sub esp, 0x40
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi + 0x14], eax
mov dword [eax], 0x40
mov eax, dword fs:[0x30]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov edx, dword [edx]
mov eax, dword [edx + 0x18]
mov ecx, dword [eax + 0x3c]
mov ecx, dword [eax + ecx + 0x78]
test ecx, ecx
je 0x401596
mov edi, dword [eax + ecx + 0x18]
test edi, edi
je 0x401596
mov dword [esi + 8], edx
mov dword [esi + 4], ecx
mov ecx, dword [eax + ecx + 0x20]
add ecx, eax
mov dword [esi + 0x10], ecx
lea ecx, [eax + 1]
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0x10]
mov edx, dword [ecx + edi*4 - 4]
dec edi
mov cl, byte [eax + edx]
test cl, cl
je 0x4015f4
add edx, dword [esi + 0xc]
mov ebx, 0xd087e9e
movsx ecx, cl
xor ecx, ebx
imul ebx, ecx, 0x1000193
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x4015da
cmp ebx, 0xa2d60de9
je 0x4015fd
test edi, edi
jne 0x4015c3
mov edx, dword [esi + 8]
jmp 0x401596
mov edx, dword [esi + 4]
mov ecx, dword [eax + edx + 0x1c]
add ecx, eax
mov edx, dword [eax + edx + 0x24]
add edx, eax
movzx edx, word [edx + edi*2]
add eax, dword [ecx + edx*4]
mov edi, dword [esi + 0x14]
push edi
call eax
movupd xmm0, xmmword [edi + 8]
unpcklps xmm0, xmmword [0x40c050]
subpd xmm0, xmmword [0x40c060]
movapd xmm1, xmm0
unpckhpd xmm1, xmm0
addsd xmm1, xmm0
mulsd xmm1, qword [0x40c070]
movsd xmm0, qword [esi + 0x18]
ucomisd xmm0, xmm1
mov eax, dword [esi]
seta byte [eax]
cmp dword [0x40f548], 0xa
jl 0x401714
mov eax, dword [0x40f54c]
lea ecx, [eax + 1]
imul ecx, eax
and ecx, 1
je 0x401714
push eax
sub esp, 0x3c
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi], eax
mov dword [eax], 0x40
mov eax, dword fs:[0x30]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov edx, dword [edx]
mov ecx, dword [edx + 0x18]
mov eax, dword [ecx + 0x3c]
mov eax, dword [ecx + eax + 0x78]
test eax, eax
je 0x40168f
mov ebx, dword [ecx + eax + 0x18]
test ebx, ebx
je 0x40168f
mov dword [esi + 8], edx
mov dword [esi + 4], eax
mov eax, dword [ecx + eax + 0x20]
add eax, ecx
mov dword [esi + 0x10], eax
lea eax, [ecx + 1]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x10]
mov edi, dword [eax + ebx*4 - 4]
dec ebx
mov dl, byte [ecx + edi]
test dl, dl
je 0x4016ec
add edi, dword [esi + 0xc]
mov eax, 0xd087e9e
movsx edx, dl
xor edx, eax
imul eax, edx, 0x1000193
mov dl, byte [edi]
inc edi
test dl, dl
jne 0x4016d3
cmp eax, 0xa2d60de9
je 0x4016f5
test ebx, ebx
jne 0x4016bc
mov edx, dword [esi + 8]
jmp 0x40168f
mov edx, dword [esi + 4]
mov eax, dword [ecx + edx + 0x1c]
add eax, ecx
mov edx, dword [ecx + edx + 0x24]
add edx, ecx
movzx edx, word [edx + ebx*2]
add ecx, dword [eax + edx*4]
push dword [esi]
call ecx
jmp 0x401574
mov edi, 0x29
mov ecx, 0x4823
xor edx, edx
inc edx
cmp edi, 0x4822
jg 0x40173f
cmp edi, 0x29
je 0x401751
cmp edi, 0x18be
jne 0x401721
mov edi, 0x6784
xor eax, eax
jmp 0x401721
cmp edi, 0x4823
je 0x401760
cmp edi, 0x6784
jne 0x401721
jmp 0x401769
mov edi, dword [esi]
cmp byte [edi], 0
mov edi, 0x18be
cmovne edi, ecx
jmp 0x401721
mov edi, 0x6784
mov eax, edx
jmp 0x401721
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret