Function at 0x438240
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffc68
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x398], 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 - 0x28], ebx
mov dword [ebp - 0x2c], ebx
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
test esi, esi
js 0x438289
mov edi, dword [ebx + esi*4]
dec esi
push edi
jns 0x438282
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.00404e74
mov eax, dword [ebp - 8]
call fcn.00404e74
mov eax, dword [ebp - 0xc]
call fcn.00404e74
mov ecx, dword [ebp + 8]
inc ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [0x4010fc]
call fcn.004057f4
xor eax, eax
push ebp
push 0x438830
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
mov dl, 1
mov eax, dword [0x418804]
call fcn.00403aa4
mov dword [ebp - 0x44], eax
xor edx, edx
push ebp
push 0x4387df
push dword fs:[edx]
mov dword fs:[edx], esp
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 4]
call fcn.00438138
lea eax, [ebp - 0x2c]
call fcn.004049a8
lea eax, [ebp - 0x28]
call fcn.004049a8
lea eax, [ebp - 0x384]
push eax
xor ecx, ecx
mov edx, 0x43885c
mov eax, 0x80000002
call fcn.00423f8c
mov ecx, dword [ebp - 0x384]
lea eax, [ebp - 0x28]
mov edx, 0x43887c
call fcn.00404cd0
lea eax, [ebp - 0x2c]
push eax
mov ecx, 0x43889c
mov edx, dword [ebp - 0x28]
mov eax, 0x80000002
call fcn.00423f8c
lea eax, [ebp - 0x2c]
call fcn.00438104
mov eax, dword [ebp - 0x2c]
call fcn.00404e84
push eax
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x438376
push 0x4388a4
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je 0x4387bf
push 0x4388b0
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x30], eax
push 0x4388bc
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x34], eax
push 0x4388c8
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x40], eax
push 0x4388d8
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x38], eax
push 0x4388e8
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x30], 0
je 0x4387b3
cmp dword [ebp - 0x34], 0
je 0x4387b3
cmp dword [ebp - 0x40], 0
je 0x4387b3
cmp dword [ebp - 0x38], 0
je 0x4387b3
cmp dword [ebp - 0x3c], 0
je 0x4387b3
lea eax, [ebp - 0x24]
push eax
push 0
push 1
push 0
push 0
push 0
call dword [ebp - 0x30]
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
je 0x4387a7
mov dl, 1
mov eax, dword [0x418804]
call fcn.00403aa4
mov dword [ebp - 0x4c], eax
mov dl, 1
mov eax, dword [0x418804]
call fcn.00403aa4
mov dword [ebp - 0x50], eax
xor edx, edx
push ebp
push 0x4387a0
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov dword [ebp - 0x48], eax
mov esi, dword [ebp + 8]
test esi, esi
jl 0x43853f
inc esi
mov ebx, dword [ebp + 0xc]
cmp dword [ebx], 0
je 0x438535
mov eax, dword [ebx]
call fcn.00409ad0
test al, al
je 0x438535
lea edx, [ebp - 0x388]
mov eax, dword [ebx]
call fcn.0040a00c
mov edx, dword [ebp - 0x388]
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x38c]
mov eax, dword [ebx]
call fcn.0040a08c
mov edx, dword [ebp - 0x38c]
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x48]
lea eax, [eax + eax*2]
lea eax, [ebp + eax*8 - 0x350]
xor ecx, ecx
mov edx, 0x18
call fcn.00403340
mov eax, dword [ebp - 0x48]
lea eax, [eax + eax*2]
mov dword [ebp + eax*8 - 0x348], 0xffffffff
lea ecx, [ebp - 0x390]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x4c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x390]
call fcn.00404e84
mov edx, dword [ebp - 0x48]
lea edx, [edx + edx*2]
mov dword [ebp + edx*8 - 0x340], eax
lea ecx, [ebp - 0x394]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x50]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x394]
call fcn.00404e84
mov edx, dword [ebp - 0x48]
lea edx, [edx + edx*2]
mov dword [ebp + edx*8 - 0x344], eax
inc dword [ebp - 0x48]
add ebx, 4
dec esi
jne 0x438468
mov eax, dword [ebp - 0x44]
mov edx, dword [eax]
call dword [edx + 0x14]
shl eax, 3
lea eax, [eax + eax*2]
call fcn.00402858
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x44]
mov edx, dword [eax]
call dword [edx + 0x14]
imul eax, eax, 0x202
call fcn.00402858
mov dword [ebp - 0x1c], eax
xor edx, edx
push ebp
push 0x438765
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x44]
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.00403340
mov eax, dword [ebp - 0x44]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x43868d
inc esi
xor ebx, ebx
lea eax, [ebp - 0x14]
push eax
push 0
push 0
lea ecx, [ebp - 0x398]
mov edx, ebx
mov eax, dword [ebp - 0x44]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x398]
call fcn.00404e84
push eax
push 0
mov eax, dword [ebp - 0x24]
push eax
call dword [ebp - 0x38]
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
je 0x43868d
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 0x43861a
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.0040a20c
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax + 0xc], 0
je 0x438644
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.0040a20c
mov dword [edi + 0xc], eax
jmp 0x43866c
mov eax, dword [ebp - 0x14]
cmp dword [eax + 8], 0
je 0x43868d
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.0040a20c
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 - 0x3c]
inc ebx
dec esi
jne 0x4385a9
cmp byte [ebp - 0xd], 0
je 0x438729
lea eax, [ebp - 0x380]
xor ecx, ecx
mov edx, 0x30
call fcn.00403340
mov eax, dword [ebp - 8]
call fcn.00404e84
mov dword [ebp - 0x37c], eax
mov eax, dword [ebp - 0xc]
call fcn.00404e84
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x35c], eax
mov eax, dword [ebp - 0x44]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [ebp - 0x360], eax
cmp dword [ebp - 0x48], 0
jbe 0x4386f0
lea eax, [ebp - 0x350]
mov dword [ebp - 0x354], eax
jmp 0x4386f8
xor eax, eax
mov dword [ebp - 0x354], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x358], eax
push 0
push 1
lea eax, [ebp - 0x380]
push eax
push 0
push 0
call dword [ebp - 0x40]
test eax, eax
sete byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
jne 0x438729
mov eax, 0x438900
call fcn.00438234
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x43876c
mov eax, dword [ebp - 0x44]
mov edx, dword [eax]
call dword [edx + 0x14]
imul edx, eax, 0x202
mov eax, dword [ebp - 0x1c]
call fcn.00402878
mov eax, dword [ebp - 0x44]
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.00402878
ret
mov eax, 0x438928
call fcn.00438234
jmp 0x4387c9
mov eax, 0x438954
call fcn.00438234
jmp 0x4387c9
mov eax, 0x438980
call fcn.00438234
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4387e6
mov eax, dword [ebp - 0x44]
call fcn.00403ad4
ret