Function at 0x43e0e4
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffc6c
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x394], ebx
mov dword [ebp - 0x390], ebx
mov dword [ebp - 0x38c], ebx
mov dword [ebp - 0x388], ebx
mov dword [ebp - 0x384], ebx
mov dword [ebp - 0x380], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], ebx
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
test esi, esi
js 0x43e12d
mov edi, dword [ebx + esi*4]
dec esi
push edi
jns 0x43e126
mov dword [ebp + 0xc], esp
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00404f88
mov eax, dword [ebp - 8]
call fcn.00404f88
mov eax, dword [ebp - 0xc]
call fcn.00404f88
mov ecx, dword [ebp + 8]
inc ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [0x4010cc]
call fcn.00405908
xor eax, eax
push ebp
push 0x43e6d0
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
mov dl, 1
mov eax, dword [0x41c0cc]
call fcn.00403b78
mov dword [ebp - 0x40], eax
xor edx, edx
push ebp
push 0x43e67f
push dword fs:[edx]
mov dword fs:[edx], esp
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 4]
call fcn.0043dfdc
lea eax, [ebp - 0x2c]
call fcn.00404abc
lea eax, [ebp - 0x28]
call fcn.00404abc
lea eax, [ebp - 0x380]
push eax
xor ecx, ecx
mov edx, 0x43e6fc
mov eax, 0x80000002
call fcn.0042a3c4
mov ecx, dword [ebp - 0x380]
lea eax, [ebp - 0x28]
mov edx, 0x43e71c
call fcn.00404de4
lea eax, [ebp - 0x2c]
push eax
mov ecx, 0x43e73c
mov edx, dword [ebp - 0x28]
mov eax, 0x80000002
call fcn.0042a3c4
lea eax, [ebp - 0x2c]
call fcn.0043dfa8
mov eax, dword [ebp - 0x2c]
call fcn.00404f98
push eax
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x43e21a
push 0x43e744
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je 0x43e65f
push 0x43e750
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
push 0x43e75c
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x30], eax
push 0x43e768
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x3c], eax
push 0x43e778
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x34], eax
push 0x43e788
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x38], eax
test ebx, ebx
je 0x43e653
cmp dword [ebp - 0x30], 0
je 0x43e653
cmp dword [ebp - 0x3c], 0
je 0x43e653
cmp dword [ebp - 0x34], 0
je 0x43e653
cmp dword [ebp - 0x38], 0
je 0x43e653
lea eax, [ebp - 0x24]
push eax
push 0
push 1
push 0
push 0
push 0
call ebx
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
je 0x43e647
mov dl, 1
mov eax, dword [0x41c0cc]
call fcn.00403b78
mov dword [ebp - 0x48], eax
mov dl, 1
mov eax, dword [0x41c0cc]
call fcn.00403b78
mov dword [ebp - 0x4c], eax
xor edx, edx
push ebp
push 0x43e640
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov dword [ebp - 0x44], eax
mov esi, dword [ebp + 8]
test esi, esi
jl 0x43e3df
inc esi
mov ebx, dword [ebp + 0xc]
cmp dword [ebx], 0
je 0x43e3d5
mov eax, dword [ebx]
call fcn.00409d98
test al, al
je 0x43e3d5
lea edx, [ebp - 0x384]
mov eax, dword [ebx]
call fcn.0040a0b4
mov edx, dword [ebp - 0x384]
mov eax, dword [ebp - 0x48]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x388]
mov eax, dword [ebx]
call fcn.0040a134
mov edx, dword [ebp - 0x388]
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x44]
lea eax, [eax + eax*2]
lea eax, [ebp + eax*8 - 0x34c]
xor ecx, ecx
mov edx, 0x18
call fcn.00403314
mov eax, dword [ebp - 0x44]
lea eax, [eax + eax*2]
mov dword [ebp + eax*8 - 0x344], 0xffffffff
lea ecx, [ebp - 0x38c]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x48]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x38c]
call fcn.00404f98
mov edx, dword [ebp - 0x44]
lea edx, [edx + edx*2]
mov dword [ebp + edx*8 - 0x33c], eax
lea ecx, [ebp - 0x390]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x4c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x390]
call fcn.00404f98
mov edx, dword [ebp - 0x44]
lea edx, [edx + edx*2]
mov dword [ebp + edx*8 - 0x340], eax
inc dword [ebp - 0x44]
add ebx, 4
dec esi
jne 0x43e308
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
shl eax, 3
lea eax, [eax + eax*2]
call fcn.00402828
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
imul eax, eax, 0x202
call fcn.00402828
mov dword [ebp - 0x1c], eax
xor edx, edx
push ebp
push 0x43e605
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
shl edx, 3
lea edx, [edx + edx*2]
mov eax, dword [ebp - 0x18]
xor ecx, ecx
call fcn.00403314
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x43e52d
inc esi
xor ebx, ebx
lea eax, [ebp - 0x14]
push eax
push 0
push 0
lea ecx, [ebp - 0x394]
mov edx, ebx
mov eax, dword [ebp - 0x40]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x394]
call fcn.00404f98
push eax
push 0
mov eax, dword [ebp - 0x24]
push eax
call dword [ebp - 0x34]
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
je 0x43e52d
lea eax, [ebx + ebx*2]
mov edx, dword [ebp - 0x18]
lea edi, [edx + eax*8]
mov dword [edi + 4], 1
mov eax, dword [ebp - 0x14]
cmp dword [eax + 8], 0
je 0x43e4ba
mov eax, ebx
shl eax, 8
add eax, ebx
mov edx, dword [ebp - 0x1c]
lea eax, [edx + eax*2]
mov edx, dword [ebp - 0x14]
mov edx, dword [edx + 8]
call fcn.0040a2ac
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax + 0xc], 0
je 0x43e4e4
mov eax, ebx
shl eax, 8
add eax, ebx
mov edx, dword [ebp - 0x1c]
lea eax, [edx + eax*2 + 0x101]
mov edx, dword [ebp - 0x14]
mov edx, dword [edx + 0xc]
call fcn.0040a2ac
mov dword [edi + 0xc], eax
jmp 0x43e50c
mov eax, dword [ebp - 0x14]
cmp dword [eax + 8], 0
je 0x43e52d
mov eax, ebx
shl eax, 8
add eax, ebx
mov edx, dword [ebp - 0x1c]
lea eax, [edx + eax*2 + 0x101]
mov edx, dword [ebp - 0x14]
mov edx, dword [edx + 8]
call fcn.0040a2ac
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [ebp - 0x14]
push eax
call dword [ebp - 0x38]
inc ebx
dec esi
jne 0x43e449
cmp byte [ebp - 0xd], 0
je 0x43e5c9
lea eax, [ebp - 0x37c]
xor ecx, ecx
mov edx, 0x30
call fcn.00403314
mov eax, dword [ebp - 8]
call fcn.00404f98
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 0xc]
call fcn.00404f98
mov dword [ebp - 0x374], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x358], eax
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [ebp - 0x35c], eax
cmp dword [ebp - 0x44], 0
jbe 0x43e590
lea eax, [ebp - 0x34c]
mov dword [ebp - 0x350], eax
jmp 0x43e598
xor eax, eax
mov dword [ebp - 0x350], eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x354], eax
push 0
push 1
lea eax, [ebp - 0x37c]
push eax
push 0
push 0
call dword [ebp - 0x3c]
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
jne 0x43e5c9
mov eax, 0x43e7a0
call fcn.0043e0d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x43e60c
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
imul edx, eax, 0x202
mov eax, dword [ebp - 0x1c]
call fcn.00402848
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, eax
shl edx, 3
lea edx, [edx + edx*2]
mov eax, dword [ebp - 0x18]
call fcn.00402848
ret
mov eax, 0x43e7c8
call fcn.0043e0d8
jmp 0x43e669
mov eax, 0x43e7f4
call fcn.0043e0d8
jmp 0x43e669
mov eax, 0x43e820
call fcn.0043e0d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x43e686
mov eax, dword [ebp - 0x40]
call fcn.00403ba8
ret