Function at 0x418aaf
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Link many functions at runtime
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push ebx
push esi
push edi
mov dword [ebp - 0x54], ecx
call fcn.0041a29f
mov esi, eax
mov dword [ebp - 0x2c], esi
test esi, esi
je 0x419444
mov eax, dword [0x4e5c90]
test eax, eax
jne 0x418b8e
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 4], ecx
cmp ecx, esi
je 0x418b67
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x418b67
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
sub ecx, 4
mov edx, 0x85195ea8
dec edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], ecx
mov ebx, dword [ecx]
add ebx, esi
mov dl, byte [ebx]
inc ebx
test dl, dl
je 0x418b63
mov esi, dword [ebp - 0xc]
movsx ecx, dl
xor ecx, esi
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
mov dl, byte [ebx]
imul esi, ecx, 0x1000193
inc ebx
test dl, dl
jne 0x418b25
mov dword [ebp - 0xc], esi
cmp dword [ebp - 0xc], 0x9c668422
mov esi, dword [eax + 0x18]
je 0x418b6e
mov ecx, dword [ebp - 0x10]
test edi, edi
jne 0x418b08
mov eax, dword [eax]
jmp 0x418ae6
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + esi]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + esi]
add eax, esi
mov esi, dword [ebp - 0x2c]
mov dword [0x4e5c90], eax
push dword [ebp - 0x54]
push esi
call eax
mov edi, dword [0x4e5c7c]
test edi, edi
jne 0x418c57
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x10], ecx
cmp ecx, esi
je 0x418c2f
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x418c2f
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
sub ecx, 4
mov edx, 0x1bb69021
dec edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], ecx
mov ebx, dword [ecx]
add ebx, esi
mov dl, byte [ebx]
inc ebx
test dl, dl
je 0x418c2b
mov esi, dword [ebp - 0xc]
movsx ecx, dl
xor ecx, esi
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
mov dl, byte [ebx]
imul esi, ecx, 0x1000193
inc ebx
test dl, dl
jne 0x418bed
mov dword [ebp - 0xc], esi
cmp dword [ebp - 0xc], 0x8f8d4dda
mov esi, dword [eax + 0x18]
je 0x418c36
mov ecx, dword [ebp - 4]
test edi, edi
jne 0x418bd0
mov eax, dword [eax]
jmp 0x418bae
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + esi]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov edi, dword [eax + esi]
add edi, esi
mov esi, dword [ebp - 0x2c]
mov dword [0x4e5c7c], edi
call fcn.00419456
mov ebx, eax
cmp byte [ebx + 0x1a], 0
je 0x418c80
push 0x4dc13fb3
push 0x8feb1737
push 0
push 0xd
mov ecx, ebx
call fcn.00407f3c
add esp, 0x10
mov byte [ebx + 0x1a], 0
push ebx
push esi
call edi
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x4e5d60], eax
test eax, eax
jne 0x418ca2
mov ecx, esi
call fcn.00416e90
xor edi, edi
jmp 0x419446
mov eax, dword [0x4e5c98]
test eax, eax
jne 0x418d63
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x10], ecx
cmp ecx, esi
je 0x418d3c
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x418d3c
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
sub ecx, 4
mov edx, 0xbc35e973
dec edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], ecx
mov ebx, dword [ecx]
add ebx, esi
mov dl, byte [ebx]
inc ebx
test dl, dl
je 0x418d38
mov esi, dword [ebp - 0xc]
movsx ecx, dl
xor ecx, esi
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
mov dl, byte [ebx]
imul esi, ecx, 0x1000193
inc ebx
test dl, dl
jne 0x418cfa
mov dword [ebp - 0xc], esi
cmp dword [ebp - 0xc], 0xd4ec8a9f
mov esi, dword [eax + 0x18]
je 0x418d43
mov ecx, dword [ebp - 4]
test edi, edi
jne 0x418cdd
mov eax, dword [eax]
jmp 0x418cbb
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + esi]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + esi]
add eax, esi
mov esi, dword [ebp - 0x2c]
mov dword [0x4e5c98], eax
push dword [ebp - 0x54]
push esi
call eax
mov edi, dword [0x4e5c88]
test edi, edi
jne 0x418e2c
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x18]
mov ecx, dword [esi + 0x3c]
mov ecx, dword [ecx + esi + 0x78]
add ecx, esi
mov dword [ebp - 0x10], ecx
cmp ecx, esi
je 0x418e04
mov edi, dword [ecx + 0x18]
test edi, edi
je 0x418e04
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edi*4]
add ecx, esi
sub ecx, 4
mov edx, 0x9ff3820f
dec edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], ecx
mov ebx, dword [ecx]
add ebx, esi
mov dl, byte [ebx]
inc ebx
test dl, dl
je 0x418e00
mov esi, dword [ebp - 0xc]
movsx ecx, dl
xor ecx, esi
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
imul edx, ecx, 0x1000193
mov ecx, edx
shr ecx, 0x10
xor ecx, edx
mov dl, byte [ebx]
imul esi, ecx, 0x1000193
inc ebx
test dl, dl
jne 0x418dc2
mov dword [ebp - 0xc], esi
cmp dword [ebp - 0xc], 0xc4d953eb
mov esi, dword [eax + 0x18]
je 0x418e0b
mov ecx, dword [ebp - 4]
test edi, edi
jne 0x418da5
mov eax, dword [eax]
jmp 0x418d83
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 0x24]
lea eax, [eax + edi*2]
movzx ecx, word [eax + esi]
mov eax, dword [edx + 0x1c]
lea eax, [eax + ecx*4]
mov edi, dword [eax + esi]
add edi, esi
mov esi, dword [ebp - 0x2c]
mov dword [0x4e5c88], edi
call fcn.00419505
mov ebx, eax
cmp byte [ebx + 0x14], 0
je 0x418e55
push 0x918db9e1
push 0x398751e3
push 0
push 0xa
mov ecx, ebx
call fcn.00407f3c
add esp, 0x10
mov byte [ebx + 0x14], 0
push ebx
push esi
call edi
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x4e5d6c], eax
mov ecx, esi
test eax, eax
jne 0x418e83
call fcn.00416e90
push dword [0x4e5d60]
xor edi, edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x419446
call fcn.00416e90
mov esi, dword fs:[0x2c]
xor ebx, ebx
inc ebx
mov dword [ebp - 0x38], 0xd6d27ceb
xor edi, edi
mov dword [ebp - 0x34], 0x3d849376
mov byte [ebp - 0x30], 0xa5
mov esi, dword [esi]
mov eax, dword [esi + 0x894]
test bl, al
jne 0x418ef1
xorps xmm0, xmm0
mov byte [esi + 0x891], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x894], eax
mov al, byte [ebp + ecx - 0x38]
mov byte [ecx + esi + 0x888], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x418ee6
cmp ecx, 9
jb 0x418ece
push 0x4bf370
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x888]
cmp byte [eax + 9], 0
je 0x418f1f
push 0x49edfd3f
push 0x89812fa5
push 0
push 9
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x888]
add esp, 0x10
mov byte [eax + 9], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4e5d78], eax
mov eax, dword [esi + 0x870]
mov dword [ebp - 0x48], 0xee8c9ec9
mov dword [ebp - 0x44], 0xb1ea1562
mov dword [ebp - 0x40], 0xdfa8a2e3
mov byte [ebp - 0x3c], 0x31
test bl, al
jne 0x418f93
xorps xmm0, xmm0
mov byte [esi + 0x881], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x870], eax
mov al, byte [ebp + ecx - 0x48]
mov byte [ecx + esi + 0x874], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x418f88
cmp ecx, 0xd
jb 0x418f70
push 0x4bf35d
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x874]
cmp byte [eax + 0xd], 0
je 0x418fc1
push 0xc59f7d31
push 0xb1dfcd87
push 0
push 0xd
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x874]
add esp, 0x10
mov byte [eax + 0xd], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d86d0]
mov dword [0x4e5d74], eax
mov eax, dword [esi + 0x89c]
mov dword [ebp - 0x40], 0x762e844c
mov dword [ebp - 0x3c], 0x13cbb641
movups xmmword [ebp - 0x50], xmm0
test bl, al
jne 0x419035
xorps xmm0, xmm0
mov byte [esi + 0x868], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x89c], eax
mov al, byte [ebp + ecx - 0x50]
mov byte [ecx + esi + 0x850], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x41902a
cmp ecx, 0x18
jb 0x419012
push 0x4bf34a
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x850]
cmp byte [eax + 0x18], 0
je 0x419063
push 0x13bfd92d
push 0x2557e107
push 0
push 0x18
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x850]
add esp, 0x10
mov byte [eax + 0x18], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4e5d4c], eax
mov eax, dword [esi + 0x908]
mov dword [ebp - 0x20], 0x23266a5
mov dword [ebp - 0x1c], 0x9025c94c
mov dword [ebp - 0x18], 0x5c6f7e90
mov word [ebp - 0x14], 0x8f67
test bl, al
jne 0x4190d9
xorps xmm0, xmm0
mov byte [esi + 0x83e], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x908], eax
mov al, byte [ebp + ecx - 0x20]
mov byte [ecx + esi + 0x830], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x4190ce
cmp ecx, 0xe
jb 0x4190b6
push 0x4bf337
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x830]
cmp byte [eax + 0xe], 0
je 0x419107
push 0xf5578f13
push 0x33032df5
push 0
push 0xe
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x830]
add esp, 0x10
mov byte [eax + 0xe], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d8630]
mov dword [0x4e5d5c], eax
mov eax, dword [esi + 0x848]
mov dword [ebp - 0x18], 0x842ea8a0
mov word [ebp - 0x14], 0x9399
mov byte [ebp - 0x12], 0x69
movups xmmword [ebp - 0x28], xmm0
test bl, al
jne 0x41917e
xorps xmm0, xmm0
mov byte [esi + 0x8d3], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x848], eax
mov al, byte [ebp + ecx - 0x28]
mov byte [ecx + esi + 0x8bc], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x419173
cmp ecx, 0x17
jb 0x41915b
push 0x4bf324
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x8bc]
cmp byte [eax + 0x17], 0
je 0x4191ac
push 0x769f7eb
push 0xeb59dbd3
push 0
push 0x17
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x8bc]
add esp, 0x10
mov byte [eax + 0x17], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d88e0]
mov dword [0x4e5d58], eax
mov eax, dword [esi + 0x840]
mov word [ebp - 0x14], 0x3560
movups xmmword [ebp - 0x24], xmm0
test bl, al
jne 0x419218
xorps xmm0, xmm0
mov byte [esi + 0x8ea], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x840], eax
mov al, byte [ebp + ecx - 0x24]
mov byte [ecx + esi + 0x8d8], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x41920d
cmp ecx, 0x12
jb 0x4191f5
push 0x4bf311
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x8d8]
cmp byte [eax + 0x12], 0
je 0x419246
push 0x8165c1cf
push 0xa9fd3505
push 0
push 0x12
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x8d8]
add esp, 0x10
mov byte [eax + 0x12], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d8660]
mov dword [0x4e5d64], eax
mov eax, dword [esi + 0x934]
movups xmmword [ebp - 0x24], xmm0
test bl, al
jne 0x4192ac
xorps xmm0, xmm0
mov byte [esi + 0x954], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x934], eax
mov al, byte [ebp + ecx - 0x24]
mov byte [ecx + esi + 0x944], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x4192a1
cmp ecx, 0x10
jb 0x419289
push 0x4bf2fe
call fcn.004b0dd6
pop ecx
lea eax, [esi + 0x944]
cmp byte [eax + 0x10], 0
je 0x4192da
push 0x6bdffbd1
push 0xbffb17b5
push 0
push 0x10
mov ecx, eax
call fcn.00407ee8
lea eax, [esi + 0x944]
add esp, 0x10
mov byte [eax + 0x10], 0
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d8870]
mov dword [0x4e5d50], eax
mov eax, dword [esi + 0x8d4]
movups xmmword [ebp - 0x24], xmm0
test bl, al
jne 0x419340
xorps xmm0, xmm0
mov byte [esi + 0x930], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x8d4], eax
mov al, byte [ebp + ecx - 0x24]
mov byte [ecx + esi + 0x920], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x419335
cmp ecx, 0x10
jb 0x41931d
push 0x4bf2eb
call fcn.004b0dd6
pop ecx
lea ecx, [esi + 0x920]
call fcn.0041a15e
push eax
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
movaps xmm0, xmmword [0x4d8730]
mov dword [0x4e5d68], eax
mov eax, dword [esi + 0x818]
mov word [ebp - 0x14], 0x6fb2
movups xmmword [ebp - 0x24], xmm0
test bl, al
jne 0x4193b7
xorps xmm0, xmm0
mov byte [esi + 0x91e], bl
movlpd qword [ebp - 8], xmm0
or eax, ebx
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov dword [esi + 0x818], eax
mov al, byte [ebp + ecx - 0x24]
mov byte [esi + ecx + 0x90c], al
add ecx, ebx
adc edx, edi
test edx, edx
jne 0x4193ac
cmp ecx, 0x12
jb 0x419394
push 0x4bf2d8
call fcn.004b0dd6
pop ecx
mov eax, dword fs:[0x2c]
mov esi, dword [eax]
add esi, 0x90c
cmp byte [esi + 0x12], 0
je 0x4193e7
push 0xebe14179
push 0x85296fdf
push 0
push 0x12
mov ecx, esi
call fcn.00407ee8
add esp, 0x10
mov byte [esi + 0x12], 0
push esi
push dword [0x4e5d6c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4e5d70], eax
cmp dword [0x4e5d78], edi
je 0x41943d
cmp dword [0x4e5d74], edi
je 0x41943d
cmp dword [0x4e5d4c], edi
je 0x41943d
cmp dword [0x4e5d5c], edi
je 0x41943d
cmp dword [0x4e5d58], edi
je 0x41943d
cmp dword [0x4e5d64], edi
je 0x41943d
cmp dword [0x4e5d50], edi
je 0x41943d
cmp dword [0x4e5d68], edi
je 0x41943d
test eax, eax
jne 0x419448
call fcn.004195a3
jmp 0x419446
mov edi, eax
xor bl, bl
mov ecx, edi
call fcn.00416e90
pop edi
pop esi
mov al, bl
pop ebx
leave
ret