Function at 0x644d1c
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.004053a4
mov esi, dword [ebp + 8]
add esi, 0xfffffff8
mov edi, 0x6a776c
xor eax, eax
push ebp
push 0x644f1d
push dword fs:[eax]
mov dword fs:[eax], esp
mov bl, 1
cmp dword [edi], 0
jne 0x644f02
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
mov eax, dword [ebp - 4]
call fcn.004053b4
push eax
call sub.kernel32.dll_LoadLibraryA
mov dword [edi], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 8]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
cmp dword [edi], 0
je 0x644eeb
push 0x644f30
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a775c], eax
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [eax - 4], edx
cmp dword [0x6a775c], 0
je 0x644dcb
mov eax, dword [ebp + 8]
add eax, 0xfffffffc
push eax
call dword [0x6a775c]
pop ecx
mov eax, dword [ebp + 8]
cmp dword [eax - 4], 5
sete bl
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0xc]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
push 0x644f40
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a7758], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0x10]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
push 0x644f48
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a7754], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0x14]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
push 0x644f58
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a7760], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0x18]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
push 0x644f6c
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a7764], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0x1c]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
push 0x644f7c
mov eax, dword [edi]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x6a7764], eax
call sub.kernel32.dll_GetLastError_1
mov dword [esi], eax
lea edx, [ebp - 0x20]
mov eax, dword [esi]
call fcn.00644cc4
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp + 8]
add eax, 0xfffffff4
call fcn.00404f8c
jmp 0x644eed
xor ebx, ebx
test bl, bl
jne 0x644f02
cmp dword [edi], 0
je 0x644f02
mov eax, dword [edi]
push eax
call sub.kernel32.dll_FreeLibrary_1
xor eax, eax
mov dword [edi], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x644f24
lea eax, [ebp - 0x20]
mov edx, 8
call fcn.00404f18
ret