Function at 0x58ee14
Capabilities:
Encode data using xor
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x5f8
push 0
push 0
dec ecx
jne 0x58ee1c
push ebx
push esi
push edi
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x58fe80
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x14]
call fcn.00404968
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
mov eax, dword [ebp - 4]
mov byte [eax + 0x18], 0
mov dword [ebp - 0xc], 0x160
mov dword [ebp - 0x10], 0x120
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 8]
xor ecx, ecx
mov dword [eax + edx*4 + 0x21c], ecx
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x19
jne 0x58ee61
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x418], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x41c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x420], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x424], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x428], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x42c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x430], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x434], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x438], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x43c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x440], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x444], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x448], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x44c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x450], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x454], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x458], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x45c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x460], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x464], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x468], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x46c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x470], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x474], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x478], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x47c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x480], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x484], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x488], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x48c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x490], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x494], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x498], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x49c], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4a0], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4a4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4a8], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4ac], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4b0], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4b4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4b8], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4bc], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4c0], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4c4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4c8], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4cc], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4d0], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4d4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4d8], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4dc], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4e0], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x4e4], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 8], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x1c], edx
lea edx, [ebp - 0x50]
mov eax, dword [0x5960cc]
mov eax, dword [eax]
call fcn.00466984
mov eax, dword [ebp - 0x50]
lea edx, [ebp - 0x4c]
call fcn.0040990c
mov edx, dword [ebp - 0x4c]
lea eax, [ebp - 0x14]
mov ecx, 0x58fe98
call fcn.00404c6c
xor eax, eax
push ebp
push 0x58f123
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
call fcn.00404e18
push eax
call sub.kernel32.dll_LoadLibraryA
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58f135
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x14]
test ebx, ebx
jbe 0x58f153
push 0x58feb8
push ebx
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x418], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
jbe 0x58f19f
mov eax, dword [ebp - 4]
cmp dword [eax + 0x418], 0
je 0x58f175
mov eax, dword [ebp - 4]
call dword [eax + 0x418]
test eax, eax
je 0x58f18b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
jmp 0x58f19f
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], 1
mov eax, dword [ebp - 4]
mov dword [eax + 0x1c], 1
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
ja 0x58f27e
lea edx, [ebp - 0x58]
mov eax, dword [0x5960cc]
mov eax, dword [eax]
call fcn.00466984
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
call fcn.0040990c
mov edx, dword [ebp - 0x54]
lea eax, [ebp - 0x14]
mov ecx, 0x58fec8
call fcn.00404c6c
xor eax, eax
push ebp
push 0x58f202
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
call fcn.00404e18
push eax
call sub.kernel32.dll_LoadLibraryA
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58f214
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x14]
test ebx, ebx
jbe 0x58f232
push 0x58feb8
push ebx
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x418], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
jbe 0x58f27e
mov eax, dword [ebp - 4]
cmp dword [eax + 0x418], 0
je 0x58f254
mov eax, dword [ebp - 4]
call dword [eax + 0x418]
test eax, eax
je 0x58f26a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
jmp 0x58f27e
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], 0xb
mov eax, dword [ebp - 4]
mov dword [eax + 0x1c], 1
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
ja 0x58f35d
lea edx, [ebp - 0x60]
mov eax, dword [0x5960cc]
mov eax, dword [eax]
call fcn.00466984
mov eax, dword [ebp - 0x60]
lea edx, [ebp - 0x5c]
call fcn.0040990c
mov edx, dword [ebp - 0x5c]
lea eax, [ebp - 0x14]
mov ecx, 0x58fef0
call fcn.00404c6c
xor eax, eax
push ebp
push 0x58f2e1
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
call fcn.00404e18
push eax
call sub.kernel32.dll_LoadLibraryA
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58f2f3
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x14]
test ebx, ebx
jbe 0x58f311
push 0x58feb8
push ebx
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x418], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
jbe 0x58f35d
mov eax, dword [ebp - 4]
cmp dword [eax + 0x418], 0
je 0x58f333
mov eax, dword [ebp - 4]
call dword [eax + 0x418]
test eax, eax
je 0x58f349
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
jmp 0x58f35d
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], 2
mov eax, dword [ebp - 4]
mov dword [eax + 0x1c], 2
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 0
ja 0x58f444
lea edx, [ebp - 0x68]
mov eax, dword [0x5960cc]
mov eax, dword [eax]
call fcn.00466984
mov eax, dword [ebp - 0x68]
lea edx, [ebp - 0x64]
call fcn.0040990c
mov edx, dword [ebp - 0x64]
lea eax, [ebp - 0x14]
mov ecx, 0x58ff18
call fcn.00404c6c
xor eax, eax
push ebp
push 0x58f3c0
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
call fcn.00404e18
push eax
call sub.kernel32.dll_LoadLibraryA
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58f3dc
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x14]
test ebx, ebx
je 0x58fe48
push 0x58feb8
push ebx
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x418], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x418], 0
je 0x58f417
mov eax, dword [ebp - 4]
call dword [eax + 0x418]
test eax, eax
je 0x58f430
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x14], edx
jmp 0x58fe48
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], 0xc
mov eax, dword [ebp - 4]
mov dword [eax + 0x1c], 0xc
push 0x58ff38
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x41c], eax
push 0x58ff44
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x420], eax
push 0x58ff58
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x424], eax
push 0x58ff6c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x428], eax
push 0x58ff80
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x42c], eax
push 0x58ff94
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x430], eax
push 0x58ffa8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x434], eax
push 0x58ffbc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x438], eax
push 0x58ffd0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x43c], eax
push 0x58ffe4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x440], eax
push 0x58fff8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x444], eax
push 0x59000c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x448], eax
push 0x59001c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x44c], eax
push 0x59002c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x450], eax
push 0x590044
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x454], eax
push 0x590058
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x458], eax
push 0x590068
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x45c], eax
push 0x590078
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x460], eax
push 0x59008c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x464], eax
push 0x5900a0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x468], eax
push 0x5900b0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x46c], eax
push 0x5900c4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x470], eax
push 0x5900d4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x474], eax
push 0x5900e4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x478], eax
push 0x5900f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x47c], eax
push 0x590108
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x480], eax
push 0x590128
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x484], eax
push 0x590148
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x488], eax
push 0x590160
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x48c], eax
push 0x590178
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x490], eax
push 0x590190
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x494], eax
push 0x5901a8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x498], eax
push 0x5901bc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x49c], eax
push 0x5901d0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4a0], eax
push 0x5901e8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4a4], eax
push 0x5901f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4a8], eax
push 0x590204
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4ac], eax
push 0x59021c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4b0], eax
push 0x59022c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4b4], eax
push 0x59023c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4b8], eax
push 0x590250
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4bc], eax
push 0x590264
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4c0], eax
push 0x590278
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4c4], eax
push 0x59028c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4c8], eax
push 0x5902a0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4cc], eax
push 0x5902c0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4d0], eax
push 0x5902e0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4d4], eax
push 0x5902f8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4d8], eax
push 0x59030c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4dc], eax
push 0x590320
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4e0], eax
push 0x590334
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x4e4], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x420], 0
jne 0x58f98b
mov eax, dword [ebp - 4]
call fcn.0058e888
jmp 0x58fe48
mov eax, dword [ebp - 4]
call dword [eax + 0x420]
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 8], ebx
test ebx, ebx
ja 0x58f9ad
mov eax, dword [ebp - 4]
call fcn.0058e888
jmp 0x58fe48
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0x19
jbe 0x58f9c0
mov eax, dword [ebp - 4]
mov dword [eax + 8], 0x19
mov eax, dword [0x595e14]
mov eax, dword [eax]
call fcn.004cfc60
mov eax, dword [ebp - 4]
cmp dword [eax + 0x424], 0
jne 0x58f9e5
mov eax, dword [ebp - 4]
call fcn.0058e888
jmp 0x58fe48
lea edx, [ebp - 0x2fb0]
mov eax, dword [0x595e14]
mov eax, dword [eax]
call fcn.004d0084
mov bl, byte [ebp - 0x2fb0]
mov eax, dword [ebp - 4]
mov byte [eax + 0x19], bl
cmp bl, 4
jne 0x58fa79
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
cmp eax, 5
jge 0x58fa22
sub eax, 1
jb 0x58fa39
sub eax, 4
jb 0x58fa46
jmp 0x58fadc
add eax, 0xfffffffb
sub eax, 4
jb 0x58fa55
sub eax, 8
jb 0x58fa61
sub eax, 0x30
jb 0x58fa6d
jmp 0x58fadc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x10], edx
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0x19
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0x16
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0xd
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 9
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
cmp eax, 5
jge 0x58fa90
sub eax, 1
jb 0x58faa4
sub eax, 4
jb 0x58faae
jmp 0x58fadc
add eax, 0xfffffffb
sub eax, 4
jb 0x58faba
sub eax, 8
jb 0x58fac6
sub eax, 0x30
jb 0x58fad2
jmp 0x58fadc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x10], edx
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0x1e
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0x16
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 0xd
jmp 0x58fadc
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], 9
mov eax, dword [0x595e14]
mov eax, dword [eax]
call fcn.004cfc60
lea edx, [ebp - 0x2fb0]
mov eax, dword [0x595e14]
mov eax, dword [eax]
call fcn.004d0084
mov bl, byte [ebp - 0x2fb0]
mov eax, dword [ebp - 4]
mov byte [eax + 0x19], bl
xor eax, eax
mov al, bl
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x424]
push 4
mov eax, dword [ebp - 4]
call dword [eax + 0x428]
mov eax, dword [0x595fa0]
mov eax, dword [eax]
mov al, byte [eax + 9]
mov edx, dword [ebp - 4]
mov byte [edx + 0x18], al
xor edx, edx
push ebp
push 0x58fb60
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x18]
test al, al
je 0x58fb56
push 0xa0a0a
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x43c]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58fb6a
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jbe 0x58fbd9
mov eax, dword [ebp - 4]
cmp dword [eax + 0x448], 0
jne 0x58fb8c
mov eax, dword [ebp - 4]
call fcn.0058e888
jmp 0x58fe48
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x58fbd9
inc eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], 0
xor eax, eax
push ebp
push 0x58fbc7
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x448]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58fbd1
inc dword [ebp - 8]
dec dword [ebp - 0x1c]
jne 0x58fba2
push 0
push 0
mov eax, dword [ebp - 4]
call dword [eax + 0x42c]
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x434]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x58fc30
inc eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], 0
xor eax, eax
mov al, byte [ebp - 8]
mov edx, dword [ebp - 4]
movzx ecx, word [ebp - 0xc]
mov dword [edx + eax*8 + 0x24], ecx
mov edx, dword [ebp - 4]
movzx ecx, word [ebp - 0x10]
mov dword [edx + eax*8 + 0x28], ecx
inc dword [ebp - 8]
dec dword [ebp - 0x1c]
jne 0x58fc0d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x58fdf5
inc eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], 0
lea eax, [ebp - 0x46]
push eax
lea eax, [ebp - 0x31]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x444]
lea eax, [ebp - 0x2fb8]
lea edx, [ebp - 0x31]
mov ecx, 0x15
call fcn.00404bd0
mov ecx, dword [ebp - 0x2fb8]
lea eax, [ebp - 0x2fb4]
mov edx, 0x59034c
call fcn.00404c6c
mov eax, dword [ebp - 0x2fb4]
lea ecx, [ebp - 0x14]
mov edx, 0x10
call fcn.0043fc2c
lea eax, [ebp - 0x2fc0]
lea edx, [ebp - 0x46]
mov ecx, 0x15
call fcn.00404bd0
mov ecx, dword [ebp - 0x2fc0]
lea eax, [ebp - 0x2fbc]
mov edx, 0x59034c
call fcn.00404c6c
mov eax, dword [ebp - 0x2fbc]
lea ecx, [ebp - 0x18]
mov edx, 0x10
call fcn.0043fc2c
mov eax, dword [0x5962f4]
mov eax, dword [eax]
mov edx, dword [ebp - 0x14]
call fcn.0048de60
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov dword [ecx + ebx*8 + 0x280], eax
mov dword [ecx + ebx*8 + 0x284], edx
mov eax, dword [0x5962f4]
mov eax, dword [eax]
mov edx, dword [ebp - 0x18]
call fcn.0048de60
mov ecx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov dword [ecx + ebx*8 + 0x348], eax
mov dword [ecx + ebx*8 + 0x34c], edx
xor eax, eax
mov edx, dword [ebp - 0x14]
mov dl, byte [edx + eax]
add dl, 0xa
mov ecx, dword [ebp - 0x14]
mov cl, byte [ecx + 0xe]
xor dl, cl
xor ecx, ecx
mov cl, byte [ebp - 8]
mov ebx, dword [ebp - 4]
lea ecx, [ebx + ecx*4]
push ecx
xor ecx, ecx
mov cl, al
pop ebx
mov byte [ebx + ecx + 0x1b8], dl
inc eax
cmp eax, 4
jne 0x58fd1f
xor eax, eax
movzx esi, byte [ebp - 8]
mov ecx, dword [ebp - 4]
lea ecx, [ecx + esi*4]
xor edx, edx
mov dl, al
mov cl, byte [ecx + edx + 0x1b8]
mov ebx, dword [ebp - 0x14]
mov bl, byte [ebx + eax + 4]
add bl, 5
xor cl, bl
mov ebx, dword [ebp - 0x14]
mov bl, byte [ebx + 0xf]
xor cl, bl
mov ebx, dword [ebp - 4]
lea ebx, [ebx + esi*4]
push ebx
pop ebx
mov byte [ebx + edx + 0x1b8], cl
inc eax
cmp eax, 4
jne 0x58fd50
xor eax, eax
mov edx, dword [ebp - 0x14]
mov dl, byte [edx + eax + 8]
add dl, 0xf
xor ecx, ecx
mov cl, byte [ebp - 8]
mov ebx, dword [ebp - 4]
lea ecx, [ebx + ecx*4]
push ecx
xor ecx, ecx
mov cl, al
pop ebx
xor byte [ebx + ecx + 0x1b8], dl
inc eax
cmp eax, 4
jne 0x58fd90
xor eax, eax
mov edx, 0x10
sub edx, eax
mov ecx, dword [ebp - 0x14]
mov dl, byte [ecx + edx - 1]
add dl, 8
xor ecx, ecx
mov cl, byte [ebp - 8]
mov ebx, dword [ebp - 4]
lea ecx, [ebx + ecx*4]
push ecx
xor ecx, ecx
mov cl, al
pop ebx
xor byte [ebx + ecx + 0x1b8], dl
inc eax
cmp eax, 4
jne 0x58fdba
inc dword [ebp - 8]
dec dword [ebp - 0x1c]
jne 0x58fc4a
xor ecx, ecx
mov dl, 1
mov eax, dword [0x43ba40]
call fcn.0043d42c
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0x410], ebx
mov dword [ebx + 0xc], 0xffffffff
mov eax, ebx
mov edx, 0x64
call fcn.0043d5c4
mov eax, dword [ebp - 4]
push eax
push 0x590420
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x410]
call fcn.0043d5d4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x410]
mov dl, 1
call fcn.0043d5b4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58fe87
lea eax, [ebp - 0x2fc0]
mov edx, 4
call fcn.0040498c
lea eax, [ebp - 0x68]
mov edx, 8
call fcn.0040498c
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.0040498c
ret