Function at 0x4184d4
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe88
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x178], edx
mov dword [ebp - 0x170], edx
mov dword [ebp - 0x174], edx
mov dword [ebp - 0x16c], edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x418922
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x420d10]
mov eax, dword [eax]
call fcn.004172e0
lea edx, [ebp - 0x18]
call fcn.00412810
mov dl, 1
mov eax, dword [0x4058a4]
call fcn.00403474
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x4188f5
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x16c]
mov ecx, 0x418938
mov edx, dword [ebp - 0x18]
call fcn.00404178
mov edx, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
call fcn.00417e2c
push 0
push 0
mov eax, dword [ebp - 0xc]
call fcn.0040621c
jmp 0x418791
lea edx, [ebp - 0x158]
mov ecx, 0x140
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 8]
mov byte [ebp - 5], 0
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x4185eb
inc ebx
xor esi, esi
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov edx, esi
call fcn.004080c0
add eax, 0x10c
lea edx, [ebp - 0x170]
call fcn.004171c8
mov eax, dword [ebp - 0x170]
push eax
lea edx, [ebp - 0x174]
lea eax, [ebp - 0x12c]
call fcn.004171c8
mov edx, dword [ebp - 0x174]
pop eax
call fcn.00404278
jne 0x4185e7
mov byte [ebp - 5], 1
jmp 0x4185eb
inc esi
dec ebx
jne 0x41859d
cmp byte [ebp - 5], 0
je 0x418610
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov edx, esi
call fcn.004080c0
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 0x108]
mov dword [ebp - 0x14], eax
jmp 0x418655
lea eax, [ebp - 0x178]
lea edx, [ebp - 0x12c]
mov ecx, 0x104
call fcn.00404100
mov eax, dword [ebp - 0x178]
call fcn.00418358
cmp al, 2
jmp 0x418791
cmp dword [ebp - 0x14], 0
jne 0x418676
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov edx, 0x214
mov eax, dword [ebp - 0x10]
call fcn.004028c4
jmp 0x418791
push 0x418940
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_GetProcAddress
mov edx, dword [0x420d20]
mov dword [edx], eax
push 0x418950
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_GetProcAddress
mov edx, dword [0x420d40]
mov dword [edx], eax
push 0x418960
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_GetProcAddress
mov edx, dword [0x420d6c]
mov dword [edx], eax
push 0x41896c
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_GetProcAddress
mov edx, dword [0x420d74]
mov dword [edx], eax
push 0x418978
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_GetProcAddress
mov edx, dword [0x420db8]
mov dword [edx], eax
mov eax, dword [0x420d20]
cmp dword [eax], 0
je 0x418716
mov eax, dword [0x420d40]
cmp dword [eax], 0
je 0x418716
mov eax, dword [0x420d6c]
cmp dword [eax], 0
je 0x418716
mov eax, dword [0x420d74]
cmp dword [eax], 0
je 0x418716
mov eax, dword [0x420db8]
cmp dword [eax], 0
jne 0x41872e
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov edx, 0x214
mov eax, dword [ebp - 0x10]
call fcn.004028c4
jmp 0x418791
mov eax, dword [0x420d20]
mov eax, dword [eax]
call eax
mov edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, 0x105
call fcn.004054a4
lea edx, [ebp - 0x12c]
mov eax, dword [ebp - 0x10]
add eax, 0x10c
mov ecx, 0x105
call fcn.004054a4
mov eax, dword [0x420d40]
mov eax, dword [eax]
call eax
mov edx, dword [ebp - 0x10]
mov byte [edx + 0x105], al
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov dword [eax + 0x108], edx
cmp byte [ebp - 5], 0
jne 0x418791
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov edx, dword [ebp - 0x10]
call fcn.0040800c
mov eax, dword [ebp - 0xc]
call fcn.004061fc
push edx
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406230
cmp edx, dword [esp + 4]
jne 0x4187b2
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x4187d0
jmp 0x4187b6
pop edx
pop eax
jle 0x4187d0
mov eax, dword [ebp - 0xc]
call fcn.00406230
cmp edx, 0
jne 0x418574
cmp eax, 0
jne 0x418574
cmp dword [ebp - 4], 0
jne 0x4187e0
call fcn.0040390c
jmp 0x4188fc
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x41884c
mov dword [ebp - 0x168], 0
mov dword [ebp - 0x164], 0
mov dword [ebp - 0x160], 1
mov dword [ebp - 0x15c], 0xaaaaaaaa
mov dl, 1
mov eax, dword [0x4058a4]
call fcn.00403474
mov edi, eax
lea edx, [ebp - 0x168]
mov ecx, 0x10
mov eax, edi
call fcn.004063d8
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.004129b8
mov eax, edi
call fcn.004034a4
jmp 0x4188df
mov eax, dword [0x420da0]
imul eax, ecx, 0x214
cdq
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x164], edx
mov dword [ebp - 0x160], 1
mov dword [ebp - 0x15c], 0xaaaaaaaa
mov dl, 1
mov eax, dword [0x4058a4]
call fcn.00403474
mov edi, eax
lea edx, [ebp - 0x168]
mov ecx, 0x10
mov eax, edi
call fcn.004063d8
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov ebx, dword [eax + 8]
dec ebx
test ebx, ebx
jl 0x4188ce
inc ebx
xor esi, esi
mov eax, dword [0x420da0]
mov eax, dword [eax]
mov edx, esi
call fcn.004080c0
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov ecx, 0x214
mov eax, edi
call fcn.004063d8
inc esi
dec ebx
jne 0x4188aa
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.004129b8
mov eax, edi
call fcn.004034a4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4188fc
mov eax, dword [ebp - 0xc]
call fcn.004034a4
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x418929
lea eax, [ebp - 0x178]
mov edx, 4
call fcn.00403f0c
lea eax, [ebp - 0x18]
call fcn.00403ee8
ret