Function at 0x401050
Capabilities:
Access peb ldr_data
Encode data using xor
Execute anti-debugging instructions
Get process filename
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x58
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x54], eax
push esi
push edi
mov eax, dword [ebp + 8]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x10], 0xc5820846
mov dword [esp + 0x14], 0xf2a506e3
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], 0x699fc8c6
mov dword [esp + 0x14], 0x4b0b0ca6
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], 0xc5de3205
mov dword [esp + 0x14], 0xf2a506e3
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x40], eax
mov dword [esp + 0x10], 0x699fc8c6
mov dword [esp + 0x14], 0x4b0b0ca6
mov eax, dword [esp + 0x10]
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x14]
movaps xmm1, xmmword [esp + 0x20]
mov eax, dword fs:[0x30]
mov dword [esp + 0x4c], ecx
xorps xmm1, xmmword [esp + 0x40]
movaps xmmword [esp + 0x20], xmm1
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x18]
mov dword [esp + 0x10], edx
mov ecx, dword [edx + 0x3c]
mov ecx, dword [ecx + edx + 0x78]
add ecx, edx
mov dword [esp + 0x1c], ecx
cmp ecx, edx
je 0x401178
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x401178
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, edx
sub ecx, 4
dec edi
mov dword [esp + 0x38], ecx
mov esi, 0x3d958d2a
mov ecx, dword [ecx]
add ecx, edx
mov dl, byte [ecx]
inc ecx
test dl, dl
je 0x40116d
nop
movsx edx, dl
lea ecx, [ecx + 1]
xor edx, esi
imul esi, edx, 0x1000193
mov dl, byte [ecx - 1]
test dl, dl
jne 0x401150
cmp esi, 0xd4f18525
je 0x40117c
mov ecx, dword [esp + 0x38]
mov edx, dword [eax + 0x18]
test edi, edi
jne 0x401137
mov eax, dword [eax]
jmp 0x401110
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
push 0
push 0
mov eax, dword [esi + 0x24]
push 0
push 0
lea eax, [eax + edi*2]
movzx ecx, word [eax + edx]
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + edx]
lea ecx, [esp + 0x4c]
push ecx
push 0
push 0
lea ecx, [esp + 0x3c]
add eax, edx
push ecx
call eax
mov edi, dword [esp + 0x18]
xor eax, eax
xor ecx, ecx
mov byte [edi], 0
mov word [edi + 5], ax
mov word [edi + 8], ax
mov byte [edi + 0xa], al
mov dword [edi + 0xf], eax
mov dword [edi + 0x17], eax
mov byte [edi + 0x1b], al
mov dword [edi + 1], eax
mov dword [edi + 0xb], eax
mov dword [edi + 0x13], eax
mov byte [edi + 7], 4
nop dword [eax]
rdtsc
mov byte [edi + ecx + 0xb], al
inc ecx
cmp ecx, 4
jb 0x4011e0
xor esi, esi
add edi, 0xb
rdtsc
mov edx, dword [esp + 0x18]
lea edi, [edi + 4]
mov cl, al
mov al, byte [edi - 4]
not al
xor cl, al
mov byte [edx + esi + 0x13], cl
inc esi
cmp esi, 4
jb 0x4011f1
movzx edi, byte [edx + 7]
xor ecx, ecx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x38], eax
test edi, edi
je 0x401267
mov esi, dword [esp + 0x18]
add edx, 0xb
add esi, 0x13
lea esi, [esi + edi*4]
nop dword [eax]
test cl, 1
mov eax, edx
cmove eax, esi
add edx, 4
sub esi, 4
mov al, byte [eax]
not al
xor byte [esp + ecx + 0x38], al
inc ecx
cmp ecx, edi
jl 0x401230
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov dword [eax + 1], ecx
pop edi
pop esi
mov ecx, dword [esp + 0x54]
xor ecx, esp
call fcn.00401492
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
mov dword [edx + 1], eax
xor ecx, esp
mov eax, edx
call fcn.00401492
mov esp, ebp
pop ebp
ret