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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x4a4314]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword fs:[0x30]
push esi
push edi
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x30], eax
mov edx, eax
mov dword [ebp - 0x34], ecx
nop dword [eax]
mov ecx, dword [ecx + 0x18]
mov dword [ebp - 0x38], ecx
mov eax, dword [ecx + 0x3c]
mov eax, dword [eax + ecx + 0x78]
add eax, ecx
mov dword [ebp - 0x3c], eax
cmp eax, ecx
je 0x4090bb
mov esi, dword [eax + 0x18]
test esi, esi
je 0x4090bb
mov eax, dword [eax + 0x20]
lea edi, [eax + esi*4]
add edi, ecx
mov eax, dword [edi - 4]
lea edi, [edi - 4]
add eax, ecx
dec esi
mov edx, 0xf12bf181
mov cl, byte [eax]
inc eax
test cl, cl
je 0x4090b1
nop word [eax + eax]
movsx ecx, cl
lea eax, [eax + 1]
xor ecx, edx
imul edx, ecx, 0x1000193
mov cl, byte [eax - 1]
test cl, cl
jne 0x409090
cmp edx, 0x5265a1eb
je 0x409399
mov ecx, dword [ebp - 0x38]
test esi, esi
jne 0x409075
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x34]
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0x34], ecx
cmp eax, edx
je 0x4090cf
cmp dword [ecx + 0x18], 0
jne 0x409050
xor esi, esi
mov ax, word [0x49e780]
movq xmm0, qword [0x49e778]
movq qword [ebp - 0x10], xmm0
mov word [ebp - 8], ax
test ah, ah
je 0x409121
xor edx, edx
mov dword [ebp - 0x30], edx
mov eax, 0x446f8657
mul edx
mov eax, dword [ebp - 0x30]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x30]
shr eax, 6
mov cl, dl
movsx eax, al
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x10], cl
inc edx
mov dword [ebp - 0x30], edx
cmp edx, 0xa
jl 0x4090f1
lea eax, [ebp - 0x10]
push eax
call esi
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
je 0x4093d9
test eax, eax
je 0x4093d9
mov ecx, dword fs:[0x30]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], ecx
mov edx, dword [ecx + 0x18]
mov dword [ebp - 0x34], edx
mov eax, dword [edx + 0x3c]
mov eax, dword [eax + edx + 0x78]
add eax, edx
mov dword [ebp - 0x30], eax
cmp eax, edx
je 0x4091bb
mov esi, dword [eax + 0x18]
test esi, esi
je 0x4091bb
mov eax, dword [eax + 0x20]
lea edi, [eax + esi*4]
add edi, edx
mov ecx, dword [edi - 4]
lea edi, [edi - 4]
add ecx, edx
dec esi
mov edx, 0xc23b45a6
mov al, byte [ecx]
inc ecx
test al, al
je 0x4091b1
nop dword [eax]
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx - 1]
test al, al
jne 0x409190
cmp edx, 0xed549da6
je 0x4093b9
mov edx, dword [ebp - 0x34]
test esi, esi
jne 0x409177
mov ecx, dword [ebp - 0x38]
mov eax, dword [ecx]
mov ecx, eax
mov dword [ebp - 0x38], eax
cmp eax, dword [ebp - 0x3c]
je 0x4091cd
cmp dword [ecx + 0x18], 0
jne 0x409152
xor esi, esi
movups xmm0, xmmword [0x49edb8]
mov ax, word [0x49edd0]
mov word [ebp - 0x14], ax
movups xmmword [ebp - 0x2c], xmm0
movq xmm0, qword [0x49edc8]
movq qword [ebp - 0x1c], xmm0
test ah, ah
je 0x40936e
xor edx, edx
cmp dword [0x4a5684], 2
mov dword [ebp - 0x30], edx
jl 0x409340
movaps xmm0, xmmword [0x49f340]
mov eax, 4
movaps xmm4, xmmword [0x49f2f0]
movaps xmm3, xmmword [0x49f330]
movaps xmm6, xmmword [0x49f310]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [ebp - 0x50], xmm0
mov ecx, dword [ebp - 0x50]
movd xmm7, eax
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x2c]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x2c], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x49f320]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x28]
pxor xmm1, xmm0
movd dword [ebp + edx - 0x28], xmm1
add edx, 8
cmp edx, 0x18
jl 0x409240
mov dword [ebp - 0x30], edx
cmp edx, 0x1a
jge 0x40936e
nop
mov eax, 0x288df0cb
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x30]
movsx eax, al
mov cl, dl
imul eax, eax, 0x65
sub cl, al
add cl, 0x63
xor byte [ebp + edx - 0x2c], cl
inc edx
mov dword [ebp - 0x30], edx
cmp edx, 0x1a
jl 0x409340
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x40]
call esi
test eax, eax
je 0x4093d9
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
xor ecx, ebp
pop esi
call fcn.0046a386
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov edi, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x38]
mov eax, dword [edi + 0x24]
lea eax, [eax + esi*2]
movzx ecx, word [eax + edx]
mov eax, dword [edi + 0x1c]
lea eax, [eax + ecx*4]
mov esi, dword [eax + edx]
add esi, edx
jmp 0x4090d1
mov edi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x34]
mov eax, dword [edi + 0x24]
lea eax, [eax + esi*2]
movzx ecx, word [eax + edx]
mov eax, dword [edi + 0x1c]
lea eax, [eax + ecx*4]
mov esi, dword [eax + edx]
add esi, edx
jmp 0x4091cf
push 0
call fcn.0046df4e
int3