Function at 0x476964
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
push esi
push edi
test dl, dl
je 0x476973
add esp, 0xfffffff0
call fcn.00403de0
mov ebx, edx
mov edi, eax
push 0x476f0c
call sub.kernel32.dll_LoadLibraryA
mov esi, eax
mov dword [edi + 0x20], esi
test esi, esi
jne 0x4769a0
mov ecx, 0x476f20
mov dl, 1
mov eax, dword [0x407ef0]
call fcn.0040cfb4
call fcn.00404248
push 0x476f38
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x28], eax
push 0x476f4c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x2c], eax
push 0x476f60
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x30], eax
push 0x476f70
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x34], eax
push 0x476f80
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x38], eax
push 0x476f90
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x3c], eax
push 0x476fb0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x40], eax
push 0x476fc0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x44], eax
push 0x476fcc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x48], eax
push 0x476fe0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x4c], eax
push 0x476fec
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x50], eax
push 0x476ff8
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x54], eax
push 0x477004
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x58], eax
push 0x47701c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x5c], eax
push 0x477028
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x60], eax
push 0x477038
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x64], eax
push 0x477040
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x68], eax
push 0x477050
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x6c], eax
push 0x477058
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x70], eax
push 0x477064
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x74], eax
push 0x47707c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x78], eax
push 0x477088
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x7c], eax
push 0x477094
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x80], eax
push 0x4770a0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x84], eax
push 0x4770ac
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x88], eax
push 0x4770bc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x8c], eax
push 0x4770c8
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x90], eax
push 0x4770dc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x94], eax
push 0x4770ec
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x98], eax
push 0x4770fc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x9c], eax
push 0x477118
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa0], eax
push 0x477138
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa4], eax
push 0x47714c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xac], eax
push 0x47715c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa8], eax
push 0x47716c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb0], eax
push 0x477180
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb4], eax
push 0x47719c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb8], eax
push 0x4771a4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xbc], eax
push 0x4771b0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xcc], eax
push 0x4771bc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xc4], eax
push 0x4771d0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xc8], eax
push 0x4771dc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd0], eax
push 0x4771e4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd4], eax
push 0x4771f0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd8], eax
push 0x477204
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xdc], eax
push 0x477210
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov esi, eax
mov dword [edi + 0xc0], esi
cmp dword [edi + 0xc0], 0
je 0x476d08
push 0x476858
call esi
cmp dword [edi + 0x28], 0
je 0x476ed3
cmp dword [edi + 0x2c], 0
je 0x476ed3
cmp dword [edi + 0x30], 0
je 0x476ed3
cmp dword [edi + 0x34], 0
je 0x476ed3
cmp dword [edi + 0x38], 0
je 0x476ed3
cmp dword [edi + 0x3c], 0
je 0x476ed3
cmp dword [edi + 0x44], 0
je 0x476ed3
cmp dword [edi + 0x48], 0
je 0x476ed3
cmp dword [edi + 0x4c], 0
je 0x476ed3
cmp dword [edi + 0x5c], 0
je 0x476ed3
cmp dword [edi + 0x60], 0
je 0x476ed3
cmp dword [edi + 0x64], 0
je 0x476ed3
cmp dword [edi + 0x68], 0
je 0x476ed3
cmp dword [edi + 0x50], 0
je 0x476ed3
cmp dword [edi + 0x54], 0
je 0x476ed3
cmp dword [edi + 0x58], 0
je 0x476ed3
cmp dword [edi + 0x40], 0
je 0x476ed3
cmp dword [edi + 0x78], 0
je 0x476ed3
cmp dword [edi + 0x7c], 0
je 0x476ed3
cmp dword [edi + 0x80], 0
je 0x476ed3
cmp dword [edi + 0x84], 0
je 0x476ed3
cmp dword [edi + 0x88], 0
je 0x476ed3
cmp dword [edi + 0x8c], 0
je 0x476ed3
cmp dword [edi + 0xb8], 0
je 0x476ed3
cmp dword [edi + 0xbc], 0
je 0x476ed3
cmp dword [edi + 0x6c], 0
je 0x476ed3
cmp dword [edi + 0x70], 0
je 0x476ed3
cmp dword [edi + 0x94], 0
je 0x476ed3
cmp dword [edi + 0x98], 0
je 0x476ed3
cmp dword [edi + 0x9c], 0
je 0x476ed3
cmp dword [edi + 0xa0], 0
je 0x476ed3
cmp dword [edi + 0xa4], 0
je 0x476ed3
cmp dword [edi + 0xac], 0
je 0x476ed3
cmp dword [edi + 0xa8], 0
je 0x476ed3
cmp dword [edi + 0xb0], 0
je 0x476ed3
cmp dword [edi + 0xb4], 0
je 0x476ed3
cmp dword [edi + 0x74], 0
je 0x476ed3
cmp dword [edi + 0xcc], 0
je 0x476ed3
cmp dword [edi + 0xc4], 0
je 0x476ed3
cmp dword [edi + 0xc8], 0
je 0x476ed3
cmp dword [edi + 0xd0], 0
je 0x476ed3
cmp dword [edi + 0xd4], 0
je 0x476ed3
cmp dword [edi + 0x90], 0
je 0x476ed3
cmp dword [edi + 0xd8], 0
je 0x476ed3
cmp dword [edi + 0xdc], 0
jne 0x476ee9
mov ecx, 0x477234
mov dl, 1
mov eax, dword [0x407ef0]
call fcn.0040cfb4
call fcn.00404248
call dword [edi + 0x28]
mov dword [edi + 0x24], eax
mov eax, edi
test bl, bl
je 0x476f04
call fcn.00403e38
pop dword fs:[0]
add esp, 0xc
mov eax, edi
pop edi
pop esi
pop ebx
ret