Function at 0x476744
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
push esi
push edi
test dl, dl
je 0x476753
add esp, 0xfffffff0
call fcn.00404278
mov ebx, edx
mov edi, eax
push 0x476d0c
call sub.kernel32.dll_LoadLibraryA
mov esi, eax
mov dword [edi + 0x20], esi
test esi, esi
jne 0x476780
mov ecx, 0x476d20
mov dl, 1
mov eax, dword [0x4083b8]
call fcn.0040db44
call fcn.004046e0
push 0x476d38
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x28], eax
push 0x476d4c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x2c], eax
push 0x476d60
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x30], eax
push 0x476d70
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x34], eax
push 0x476d80
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x38], eax
push 0x476d90
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x3c], eax
push 0x476db0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x40], eax
push 0x476dc0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x44], eax
push 0x476dcc
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x48], eax
push 0x476de0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x4c], eax
push 0x476dec
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x50], eax
push 0x476df8
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x54], eax
push 0x476e04
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x58], eax
push 0x476e1c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x5c], eax
push 0x476e28
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x60], eax
push 0x476e38
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x64], eax
push 0x476e40
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x68], eax
push 0x476e50
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x6c], eax
push 0x476e58
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x70], eax
push 0x476e64
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x74], eax
push 0x476e7c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x78], eax
push 0x476ea0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x7c], eax
push 0x476eac
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x80], eax
push 0x476eb8
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x84], eax
push 0x476ec4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x88], eax
push 0x476ed0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x8c], eax
push 0x476ee0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x90], eax
push 0x476eec
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x94], eax
push 0x476f00
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x98], eax
push 0x476f10
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0x9c], eax
push 0x476f20
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa0], eax
push 0x476f3c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa4], eax
push 0x476f5c
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xa8], eax
push 0x476f70
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb0], eax
push 0x476f80
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xac], eax
push 0x476f90
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb4], eax
push 0x476fa4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xb8], eax
push 0x476fc0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xbc], eax
push 0x476fc8
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xc0], eax
push 0x476fd4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd0], eax
push 0x476fe0
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xc8], eax
push 0x476ff4
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xcc], eax
push 0x477000
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd4], eax
push 0x477008
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xd8], eax
push 0x477014
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xdc], eax
push 0x477028
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [edi + 0xe0], eax
push 0x477034
mov eax, dword [edi + 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov esi, eax
mov dword [edi + 0xc4], esi
cmp dword [edi + 0xc4], 0
je 0x476afc
push 0x476638
call esi
cmp dword [edi + 0x28], 0
je 0x476cd4
cmp dword [edi + 0x2c], 0
je 0x476cd4
cmp dword [edi + 0x30], 0
je 0x476cd4
cmp dword [edi + 0x34], 0
je 0x476cd4
cmp dword [edi + 0x38], 0
je 0x476cd4
cmp dword [edi + 0x3c], 0
je 0x476cd4
cmp dword [edi + 0x44], 0
je 0x476cd4
cmp dword [edi + 0x48], 0
je 0x476cd4
cmp dword [edi + 0x4c], 0
je 0x476cd4
cmp dword [edi + 0x5c], 0
je 0x476cd4
cmp dword [edi + 0x60], 0
je 0x476cd4
cmp dword [edi + 0x64], 0
je 0x476cd4
cmp dword [edi + 0x68], 0
je 0x476cd4
cmp dword [edi + 0x50], 0
je 0x476cd4
cmp dword [edi + 0x54], 0
je 0x476cd4
cmp dword [edi + 0x58], 0
je 0x476cd4
cmp dword [edi + 0x40], 0
je 0x476cd4
cmp dword [edi + 0x7c], 0
je 0x476cd4
cmp dword [edi + 0x80], 0
je 0x476cd4
cmp dword [edi + 0x84], 0
je 0x476cd4
cmp dword [edi + 0x88], 0
je 0x476cd4
cmp dword [edi + 0x8c], 0
je 0x476cd4
cmp dword [edi + 0x90], 0
je 0x476cd4
cmp dword [edi + 0xbc], 0
je 0x476cd4
cmp dword [edi + 0xc0], 0
je 0x476cd4
cmp dword [edi + 0x6c], 0
je 0x476cd4
cmp dword [edi + 0x70], 0
je 0x476cd4
cmp dword [edi + 0x98], 0
je 0x476cd4
cmp dword [edi + 0x9c], 0
je 0x476cd4
cmp dword [edi + 0xa0], 0
je 0x476cd4
cmp dword [edi + 0xa4], 0
je 0x476cd4
cmp dword [edi + 0xa8], 0
je 0x476cd4
cmp dword [edi + 0xb0], 0
je 0x476cd4
cmp dword [edi + 0xac], 0
je 0x476cd4
cmp dword [edi + 0xb4], 0
je 0x476cd4
cmp dword [edi + 0xb8], 0
je 0x476cd4
cmp dword [edi + 0x74], 0
je 0x476cd4
cmp dword [edi + 0x78], 0
je 0x476cd4
cmp dword [edi + 0xd0], 0
je 0x476cd4
cmp dword [edi + 0xc8], 0
je 0x476cd4
cmp dword [edi + 0xcc], 0
je 0x476cd4
cmp dword [edi + 0xd4], 0
je 0x476cd4
cmp dword [edi + 0xd8], 0
je 0x476cd4
cmp dword [edi + 0x94], 0
je 0x476cd4
cmp dword [edi + 0xdc], 0
je 0x476cd4
cmp dword [edi + 0xe0], 0
jne 0x476cea
mov ecx, 0x477058
mov dl, 1
mov eax, dword [0x4083b8]
call fcn.0040db44
call fcn.004046e0
call dword [edi + 0x28]
mov dword [edi + 0x24], eax
mov eax, edi
test bl, bl
je 0x476d05
call fcn.004042d0
pop dword fs:[0]
add esp, 0xc
mov eax, edi
pop edi
pop esi
pop ebx
ret