Function at 0x588e3c
Capabilities:
Accept command line arguments
Create process on windows
Create thread

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x12
push 0
push 0
dec ecx
jne 0x588e44
push ebx
push esi
lea eax, [ebp - 0x54]
mov edx, dword [0x57a4e8]
call fcn.00573e90
xor eax, eax
push ebp
push 0x589457
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetCurrentProcessId
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5c]
call fcn.00575c80
mov ecx, dword [ebp - 0x5c]
lea eax, [ebp - 0x58]
mov edx, 0x58946c
call fcn.0057386c
mov eax, dword [ebp - 0x58]
call fcn.00573a20
call fcn.0057bee4
test al, al
jne 0x589416
call sub.kernel32.dll_GetCurrentProcessId
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x64]
call fcn.00575c80
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x60]
mov edx, 0x58946c
call fcn.0057386c
mov eax, dword [ebp - 0x60]
call fcn.00573a20
push eax
call fcn.0057b3b4
mov dword [0x59ba94], eax
lea edx, [ebp - 0x68]
xor eax, eax
call fcn.0057a55c
mov eax, dword [ebp - 0x68]
lea edx, [ebp - 8]
call fcn.00579c60
call fcn.0057b378
cmp eax, 1
sbb eax, eax
inc eax
mov byte [0x59baf4], al
cmp byte [0x59baf4], 0
jne 0x589416
lea eax, [ebp - 0x70]
mov ecx, 0x589484
mov edx, dword [0x59bacc]
call fcn.0057386c
mov eax, dword [ebp - 0x70]
lea edx, [ebp - 0x6c]
call fcn.005835d4
mov edx, dword [ebp - 0x6c]
mov eax, 0x59bacc
call fcn.005735c0
lea edx, [ebp - 0x54]
mov eax, dword [ebp - 8]
call fcn.0057b9ac
cmp byte [ebp - 0x28], 0
je 0x588fbe
mov eax, dword [ebp - 0x50]
mov edx, 0x589490
call fcn.0057396c
sete byte [0x59baec]
lea edx, [ebp - 0x74]
mov eax, dword [ebp - 0x38]
call fcn.00579c60
mov edx, dword [ebp - 0x74]
mov eax, 0x5894b0
call fcn.00573b08
test eax, eax
jle 0x588f7f
push 0x5894b8
call sub.kernel32.dll_GetModuleHandleA
test eax, eax
ja 0x588f83
xor eax, eax
jmp 0x588f85
mov al, 1
mov byte [0x59bae0], al
cmp byte [0x59baec], 0
je 0x588fb3
mov eax, dword [ebp - 0x4c]
mov edx, 0x5894d0
call fcn.0057396c
jne 0x588fb3
mov edx, dword [ebp - 8]
mov eax, 0x5894ec
call fcn.00573b08
test eax, eax
jg 0x588fb7
xor eax, eax
jmp 0x588fb9
mov al, 1
mov byte [0x59bae8], al
lea edx, [ebp - 0x78]
mov eax, dword [ebp - 8]
call fcn.00579c60
mov edx, dword [ebp - 0x78]
mov eax, 0x589504
call fcn.00573b08
test eax, eax
setg byte [0x59bafc]
push 0x589514
call sub.kernel32.dll_GetModuleHandleA
test eax, eax
ja 0x588fff
push 0x589524
call sub.kernel32.dll_GetModuleHandleA
test eax, eax
ja 0x588fff
xor eax, eax
jmp 0x589001
mov al, 1
mov byte [0x59bae4], al
cmp byte [0x59bae8], 0
jne 0x5890b7
mov eax, 0x589534
call fcn.0057bee4
test al, al
jne 0x5890b7
call sub.kernel32.dll_GetCommandLineA_1
mov edx, eax
lea eax, [ebp - 0x7c]
call fcn.00573764
mov edx, dword [ebp - 0x7c]
mov eax, 0x58954c
call fcn.00573b08
test eax, eax
setg byte [0x59baf0]
cmp byte [0x59baf0], 0
jne 0x5890ab
lea edx, [ebp - 0x84]
mov eax, dword [0x59c65c]
call fcn.0057a55c
mov eax, dword [ebp - 0x84]
lea edx, [ebp - 0x80]
call fcn.00579c60
mov eax, dword [ebp - 0x80]
push eax
lea edx, [ebp - 0x8c]
mov eax, 2
call fcn.005767f4
mov eax, dword [ebp - 0x8c]
lea edx, [ebp - 0x88]
call fcn.00579c60
mov eax, dword [ebp - 0x88]
pop edx
call fcn.00573b08
test eax, eax
setg byte [0x59baf0]
mov al, byte [0x59baf0]
xor al, 1
mov byte [0x59baf8], al
mov bl, 1
cmp byte [0x59bae8], 0
jne 0x5890e5
cmp byte [0x59baf8], 0
jne 0x5890e5
cmp byte [0x59baf0], 0
jne 0x5890e5
push 0
call sub.kernel32.dll_GetModuleHandleA
call fcn.005783f0
cmp al, 4
sete bl
cmp byte [0x59baf0], 0
je 0x5890f3
call fcn.005886bc
lea eax, [ebp - 0x24]
call fcn.00588b50
mov eax, dword [ebp - 0x24]
call fcn.00573820
test eax, eax
jle 0x5891d3
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x20]
push eax
mov ecx, 0xa
mov edx, 0x66
mov eax, dword [0x59c65c]
call fcn.0057c0d0
test al, al
je 0x5891d3
lea edx, [ebp - 0x14]
mov eax, dword [0x59ba7c]
call fcn.00579cec
lea ecx, [ebp - 0xc]
mov edx, 0x589568
mov eax, dword [ebp - 0x24]
call fcn.00587e5c
lea eax, [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
call fcn.0057386c
mov edx, dword [ebp - 0x24]
mov eax, 0x58957c
call fcn.00573b08
test eax, eax
jle 0x589187
lea edx, [ebp - 0x90]
mov eax, dword [ebp - 8]
call fcn.00579cec
mov eax, dword [ebp - 0x90]
mov edx, dword [ebp - 0x14]
call fcn.00587fd0
push 1
push 0
mov eax, dword [ebp - 0x10]
call fcn.00573a20
mov ebx, eax
mov eax, ebx
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0057ad48
test al, al
je 0x5891c4
push 5
push 0
push 0
push ebx
push 0x589598
push 0
push 0x5895a0
call sub.user32.dll_FindWindowA
push eax
call sub.shell32.dll_ShellExecuteA
xor edx, edx
mov eax, dword [ebp - 0x1c]
call fcn.0057a6c8
jmp 0x589416
cmp byte [0x59baf0], 0
jne 0x589416
cmp byte [0x59bafc], 0
je 0x5891f0
mov byte [0x59ba98], 1
test bl, bl
jne 0x589214
push 1
push 1
push 0
mov eax, dword [0x59bbb0]
push eax
push 0x583c70
push 0x5895b0
push 0x5895d0
call fcn.00581a4c
cmp byte [0x59bae8], 0
je 0x589269
push 0x589534
call fcn.0057b4a4
test eax, eax
jne 0x589269
push 0x589534
call fcn.0057b3b4
mov dword [0x59ba88], eax
push 0x202
push 0x5895e0
call fcn.0057b580
mov dword [0x59ba8c], eax
lea eax, [ebp - 4]
push eax
push 0
push 0
push 0x587708
push 0
push 0
call sub.kernel32.dll_CreateThread
mov dword [0x59ba90], eax
cmp byte [0x59baf8], 0
je 0x5892b4
lea eax, [ebp - 0x18]
push eax
push 0
push 0x5895a0
call sub.user32.dll_FindWindowA
push eax
call sub.user32.dll_GetWindowThreadProcessId
mov eax, dword [ebp - 0x18]
push eax
push 0
push 0x1f0fff
call sub.kernel32.dll_OpenProcess
mov esi, eax
push 1
mov eax, dword [0x59ba7c]
call fcn.00573a20
push eax
push esi
call fcn.00584354
push 1
call sub.kernel32.dll_Sleep
push 1
push 0
push 0
push 0x5ac4d8
push 0x583ed0
push 0x5895f8
push 0x589618
call fcn.00581a4c
cmp byte [0x59bae8], 0
jne 0x589416
push 1
push 1
push 0
mov eax, dword [0x59bbd4]
push eax
push 0x583760
push 0x58962c
push 0x589618
call fcn.00581a4c
push 1
push 0
push 0
push 0x5ac4dc
push 0x5842b0
push 0x58964c
push 0x589618
call fcn.00581a4c
test bl, bl
je 0x589416
lea eax, [ebp - 4]
push eax
push 0
push 0
push 0x587754
push 0
push 0
call sub.kernel32.dll_CreateThread
mov dword [0x59ba84], eax
push 1
push 1
push 0
push 0x5ac4f0
push 0x5866b8
push 0x589668
push 0x589678
call fcn.00581a4c
test al, al
jne 0x589384
push 1
push 1
push 0
push 0x5ac4f0
push 0x5866b8
push 0x589668
push 0x58968c
call fcn.00581a4c
cmp byte [0x59baa4], 0
je 0x589416
cmp byte [0x59bae0], 0
jne 0x5893d8
push 1
push 1
push 0
push 0x5ac4e0
push 0x586438
push 0x5896a0
push 0x5896b8
call fcn.00581a4c
push 1
push 1
push 0
push 0x5ac4e4
push 0x5864c8
push 0x5896cc
push 0x5896b8
call fcn.00581a4c
push 1
push 1
push 0
push 0x5ac4e8
push 0x586558
push 0x5896e4
push 0x5896b8
call fcn.00581a4c
push 1
push 1
push 0
push 0x5ac4ec
push 0x586608
push 0x5896fc
push 0x5896b8
call fcn.00581a4c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58945e
lea eax, [ebp - 0x90]
mov edx, 0xf
call fcn.00573590
lea eax, [ebp - 0x54]
mov edx, dword [0x57a4e8]
call fcn.00573f60
lea eax, [ebp - 0x24]
call fcn.0057356c
lea eax, [ebp - 0x14]
mov edx, 4
call fcn.00573590
ret