Function at 0x474374
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov ebx, eax
mov eax, dword [ebp - 4]
call fcn.00404de4
xor eax, eax
push ebp
push 0x474ee0
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 8]
mov ecx, 0x474ef8
mov edx, dword [ebp - 4]
call fcn.00404c40
mov eax, dword [ebp - 8]
call fcn.00404df4
push eax
call sub.kernel32.dll_LoadLibraryA
mov esi, eax
mov dword [ebx + 0x2f8], esi
test esi, esi
jne 0x4743d0
mov ebx, 1
jmp 0x474ec5
push 0x474f08
push esi
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d578]
mov dword [edx], eax
push 0x474f10
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d71c]
mov dword [edx], eax
push 0x474f1c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d450]
mov dword [edx], eax
push 0x474f28
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d354]
mov dword [edx], eax
push 0x474f34
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5b0]
mov dword [edx], eax
push 0x474f40
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5cc]
mov dword [edx], eax
push 0x474f48
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d69c]
mov dword [edx], eax
push 0x474f54
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5f0]
mov dword [edx], eax
push 0x474f68
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d7c4]
mov dword [edx], eax
push 0x474f70
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d66c]
mov dword [edx], eax
push 0x474f7c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d810]
mov dword [edx], eax
push 0x474f88
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d67c]
mov dword [edx], eax
push 0x474f94
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d580]
mov dword [edx], eax
push 0x474fa0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d7d8]
mov dword [edx], eax
push 0x474fac
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d768]
mov dword [edx], eax
push 0x474fbc
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d638]
mov dword [edx], eax
push 0x474fd0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6dc]
mov dword [edx], eax
push 0x474fdc
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d318]
mov dword [edx], eax
push 0x474fe8
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5a8]
mov dword [edx], eax
push 0x474ffc
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6f4]
mov dword [edx], eax
push 0x475008
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d2f0]
mov dword [edx], eax
push 0x475014
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5dc]
mov dword [edx], eax
push 0x475020
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5c0]
mov dword [edx], eax
push 0x47502c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d888]
mov dword [edx], eax
push 0x475038
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5a4]
mov dword [edx], eax
push 0x475044
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d434]
mov dword [edx], eax
push 0x47504c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6bc]
mov dword [edx], eax
push 0x47505c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d74c]
mov dword [edx], eax
push 0x475068
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d744]
mov dword [edx], eax
push 0x475074
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d3d4]
mov dword [edx], eax
push 0x475080
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d738]
mov dword [edx], eax
push 0x475090
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d818]
mov dword [edx], eax
push 0x4750a0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d588]
mov dword [edx], eax
push 0x4750bc
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d394]
mov dword [edx], eax
push 0x4750d0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d328]
mov dword [edx], eax
push 0x4750dc
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d51c]
mov dword [edx], eax
push 0x4750f0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d480]
mov dword [edx], eax
push 0x475108
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d814]
mov dword [edx], eax
push 0x475118
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6c4]
mov dword [edx], eax
push 0x47512c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d2b8]
mov dword [edx], eax
push 0x475134
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d298]
mov dword [edx], eax
push 0x475144
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d5ac]
mov dword [edx], eax
push 0x475158
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d2f4]
mov dword [edx], eax
push 0x475160
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d728]
mov dword [edx], eax
push 0x475168
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d30c]
mov dword [edx], eax
push 0x475174
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d7f4]
mov dword [edx], eax
push 0x47517c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d424]
mov dword [edx], eax
push 0x47518c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6ac]
mov dword [edx], eax
push 0x475198
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d518]
mov dword [edx], eax
push 0x4751a0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d368]
mov dword [edx], eax
push 0x4751ac
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d634]
mov dword [edx], eax
push 0x4751b8
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d6c0]
mov dword [edx], eax
mov eax, dword [0x47d578]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d71c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d450]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d354]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5b0]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5cc]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d69c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5f0]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d7c4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d66c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d810]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d67c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d580]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d7d8]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d768]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d638]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6dc]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d318]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5a8]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6f4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d2f0]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5dc]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5c0]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d888]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5a4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d434]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6bc]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d74c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d744]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d3d4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d738]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d818]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d588]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d394]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d328]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d51c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d480]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d814]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6c4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d2b8]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d298]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d5ac]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d2f4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d728]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d30c]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d7f4]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d424]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6ac]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d518]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d6c0]
cmp dword [eax], 0
je 0x474b74
mov eax, dword [0x47d634]
cmp dword [eax], 0
jne 0x474b78
xor eax, eax
jmp 0x474b7a
mov al, 1
test al, al
jne 0x474b88
mov ebx, 2
jmp 0x474ec5
mov eax, dword [0x47d368]
cmp dword [eax], 0
jne 0x474b9c
mov ebx, 3
jmp 0x474ec5
mov eax, dword [0x47d578]
mov eax, dword [eax]
call eax
push 0x4751c0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d330]
mov dword [edx], eax
mov eax, dword [0x47d330]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d350]
mov dword [edx], eax
push 0x4751d4
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d530]
mov dword [edx], eax
mov eax, dword [0x47d530]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d5ec]
mov dword [edx], eax
push 0x4751f0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d834]
mov dword [edx], eax
mov eax, dword [0x47d834]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d84c]
mov dword [edx], eax
push 0x475200
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d61c]
mov dword [edx], eax
mov eax, dword [0x47d61c]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d63c]
mov dword [edx], eax
push 0x47520c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d774]
mov dword [edx], eax
mov eax, dword [0x47d774]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d794]
mov dword [edx], eax
push 0x475220
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d3ac]
mov dword [edx], eax
mov eax, dword [0x47d3ac]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d3d0]
mov dword [edx], eax
push 0x475234
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d3dc]
mov dword [edx], eax
mov eax, dword [0x47d3dc]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d4a4]
mov dword [edx], eax
push 0x47524c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d574]
mov dword [edx], eax
mov eax, dword [0x47d574]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d594]
mov dword [edx], eax
push 0x475260
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d3f4]
mov dword [edx], eax
mov eax, dword [0x47d3f4]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d410]
mov dword [edx], eax
push 0x475274
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d544]
mov dword [edx], eax
mov eax, dword [0x47d544]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d560]
mov dword [edx], eax
push 0x475288
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d628]
mov dword [edx], eax
mov eax, dword [0x47d628]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d650]
mov dword [edx], eax
push 0x47529c
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d404]
mov dword [edx], eax
mov eax, dword [0x47d404]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d41c]
mov dword [edx], eax
push 0x4752b0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d2fc]
mov dword [edx], eax
mov eax, dword [0x47d2fc]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d314]
mov dword [edx], eax
push 0x4752c0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d278]
mov dword [edx], eax
mov eax, dword [0x47d278]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d29c]
mov dword [edx], eax
push 0x4752d0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d7d4]
mov dword [edx], eax
mov eax, dword [0x47d7d4]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d800]
mov dword [edx], eax
push 0x4752e0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d740]
mov dword [edx], eax
mov eax, dword [0x47d740]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d754]
mov dword [edx], eax
push 0x4752f0
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d86c]
mov dword [edx], eax
mov eax, dword [0x47d86c]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d884]
mov dword [edx], eax
push 0x475304
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d52c]
mov dword [edx], eax
mov eax, dword [0x47d52c]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d54c]
mov dword [edx], eax
push 0x475318
mov eax, dword [ebx + 0x2f8]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [0x47d70c]
mov dword [edx], eax
mov eax, dword [0x47d70c]
mov eax, dword [eax]
mov eax, dword [eax]
mov edx, dword [0x47d720]
mov dword [edx], eax
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x474ee7
lea eax, [ebp - 8]
mov edx, 2
call fcn.00404958
ret