Function at 0x53a91c
Capabilities:
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd50
push ebx
xor ebx, ebx
mov dword [ebp - 0x2b0], ebx
mov dword [ebp - 0x2ac], ebx
mov dword [ebp - 0x2a8], ebx
mov dword [ebp - 0x2a4], ebx
mov dword [ebp - 0x2a0], ebx
mov dword [ebp - 0x29c], ebx
mov dword [ebp - 0x298], ebx
mov dword [ebp - 0x294], ebx
mov byte [ebp - 5], cl
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
lea eax, [ebp - 4]
call fcn.00405fd0
lea eax, [ebp - 0xc]
call fcn.00405fd0
xor eax, eax
push ebp
push 0x53ac33
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
xor edx, edx
call fcn.00405d3c
je 0x53abf5
lea edx, [ebp - 0x294]
mov eax, dword [ebp - 4]
call fcn.0049a678
mov edx, dword [ebp - 0x294]
lea eax, [ebp - 4]
call fcn.00405a1c
lea edx, [ebp - 0x298]
mov eax, dword [ebp - 0xc]
call fcn.0049a678
mov edx, dword [ebp - 0x298]
lea eax, [ebp - 0xc]
call fcn.00405a1c
lea eax, [ebp - 0x29c]
push eax
mov ecx, 7
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00405dc0
mov eax, dword [ebp - 0x29c]
mov edx, 0x53ac48
call fcn.00405d3c
je 0x53aa48
lea eax, [ebp - 0x2a0]
push eax
mov ecx, 8
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00405dc0
mov eax, dword [ebp - 0x2a0]
mov edx, 0x53ac5c
call fcn.00405d3c
je 0x53aa48
lea eax, [ebp - 0x2a4]
push eax
mov ecx, 6
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00405dc0
mov eax, dword [ebp - 0x2a4]
mov edx, 0x53ac74
call fcn.00405d3c
jne 0x53aa5e
mov eax, dword [0x5643a8]
cmp dword [eax], 4
jg 0x53aa5e
push ebp
call fcn.0053a85c
pop ecx
jmp 0x53abf5
mov eax, dword [0x5641d8]
cmp byte [eax], 0
je 0x53ab34
lea eax, [ebp - 0x84]
xor ecx, ecx
mov edx, 0x3c
call fcn.00403a38
mov dword [ebp - 0x84], 0x3c
mov dword [ebp - 0x80], 0x40
mov eax, 0x53ac84
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 4]
call fcn.00405c10
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0xc]
call fcn.00405c10
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x28e]
push eax
push 0x104
call sub.kernel32.dll_GetCurrentDirectoryW
lea eax, [ebp - 0x28e]
mov dword [ebp - 0x6c], eax
mov al, byte [ebp - 5]
call fcn.004976f8
mov dword [ebp - 0x68], eax
or eax, 0xffffffff
call fcn.00403a58
mov dword [ebp - 0x7c], eax
mov ebx, dword [ebp - 0x7c]
test ebx, ebx
jbe 0x53aad2
push ebx
call sub.user32.dll_IsWindow
test eax, eax
jne 0x53aad2
cmp dword [0x563e90], 0
je 0x53abf5
lea eax, [ebp - 0x84]
push eax
call dword [0x563e90]
test eax, eax
je 0x53abf5
cmp byte [ebp + 8], 0
je 0x53abf5
cmp dword [ebp - 0x4c], 0
je 0x53abf5
push 0xffffffffffffffff
mov eax, dword [ebp - 0x4c]
push eax
call sub.kernel32.dll_WaitForSingleObject
jmp 0x53abf5
lea eax, [ebp - 0x48]
xor ecx, ecx
mov edx, 0x3c
call fcn.00403a38
mov dword [ebp - 0x48], 0x3c
mov dword [ebp - 0x44], 0x40
mov eax, 0x53ac90
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x2a8]
mov edx, dword [ebp - 4]
call fcn.004054fc
mov eax, dword [ebp - 0x2a8]
call fcn.00405734
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x2ac]
mov edx, dword [ebp - 0xc]
call fcn.004054fc
mov eax, dword [ebp - 0x2ac]
call fcn.00405734
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x2b0]
call fcn.0040d900
mov eax, dword [ebp - 0x2b0]
call fcn.00405734
mov dword [ebp - 0x30], eax
mov al, byte [ebp - 5]
call fcn.004976f8
mov dword [ebp - 0x2c], eax
or eax, 0xffffffff
call fcn.00403a58
mov dword [ebp - 0x40], eax
mov ebx, dword [ebp - 0x40]
test ebx, ebx
jbe 0x53abb5
push ebx
call sub.user32.dll_IsWindow
test eax, eax
jne 0x53abb5
lea eax, [ebp - 0x48]
push eax
call sub.shell32.dll_ShellExecuteExA
test eax, eax
je 0x53abf5
cmp byte [ebp + 8], 0
je 0x53abf5
cmp dword [ebp - 0x10], 0
je 0x53abf5
push 0xffffffffffffffff
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_WaitForSingleObject
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x53ac3a
lea eax, [ebp - 0x2b0]
mov edx, 3
call fcn.00405288
lea eax, [ebp - 0x2a4]
mov edx, 5
call fcn.004059d4
lea eax, [ebp - 0xc]
call fcn.004059bc
lea eax, [ebp - 4]
call fcn.004059bc
ret