Function at 0x4112b5
Capabilities:
Check if file exists
Check mutex and terminate process on windows
Check mutex on windows
Create process on windows
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x63c
push ebx
push esi
mov dword [ebp - 4], ecx
mov ecx, 0x474430
push edi
call fcn.00401e8f
push eax
push 1
xor ebx, ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
je 0x411518
mov esi, 0x474340
mov ecx, esi
call fcn.004022f8
push eax
mov ecx, esi
call fcn.00401e8f
push eax
push 0x208
lea eax, [ebp - 0x228]
mov edi, 0x4742f8
push eax
push str.exepath
mov ecx, edi
call fcn.00401e8f
mov edx, eax
call fcn.0041265d
add esp, 0x14
test al, al
je 0x41151c
lea ecx, [ebp - 0x1c]
call fcn.00401faa
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x228]
call fcn.0041b61a
test al, al
je 0x41151c
push ebx
push 0x80
push 3
push ebx
push 1
push connect
lea eax, [ebp - 0x228]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push dword [ebp - 4]
push ebx
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0x46b734
mov ecx, edi
call fcn.00401e8f
mov edx, eax
call fcn.004127d5
pop ecx
pop ecx
test al, al
je 0x411518
mov edi, dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea eax, [ebp - 0x228]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x411472
push ebx
lea eax, [ebp - 0x228]
push eax
lea ecx, [ebp - 0x1c]
call fcn.004022f8
lea ecx, [ebp - 0x1c]
mov esi, eax
call fcn.00401e8f
mov edx, esi
mov ecx, eax
call fcn.0041b58f
pop ecx
pop ecx
test al, al
jne 0x411472
push 0x208
lea eax, [ebp - 0x638]
push ebx
push eax
call fcn.00436050
add esp, 0xc
lea eax, [ebp - 0x638]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea eax, [ebp - 0x430]
push eax
push ebx
push str.temp_
lea eax, [ebp - 0x638]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push str..exe
lea eax, [ebp - 0x430]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push ebx
lea eax, [ebp - 0x430]
push eax
lea ecx, [ebp - 0x1c]
call fcn.004022f8
lea ecx, [ebp - 0x1c]
mov esi, eax
call fcn.00401e8f
mov edx, esi
mov ecx, eax
call fcn.0041b58f
pop ecx
pop ecx
test al, al
je 0x411485
lea eax, [ebp - 0x430]
jmp 0x411478
lea eax, [ebp - 0x228]
push 1
push ebx
push ebx
push eax
push 0x46559c
push ebx
call edi
mov esi, 0x4742f8
lea eax, [ebp - 4]
mov ecx, esi
push eax
push 0x466634
call fcn.00401e8f
mov edx, eax
call fcn.004124b7
mov bl, al
pop ecx
pop ecx
test bl, bl
je 0x4114bf
push 0x466634
mov ecx, esi
call fcn.00401e8f
mov edx, eax
call fcn.00412902
pop ecx
jmp 0x4114ca
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
test bl, bl
je 0x41148a
push dword [ebp - 4]
xor ebx, ebx
push ebx
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0x46b734
mov ecx, 0x4742f8
call fcn.00401e8f
mov edx, eax
call fcn.004127d5
pop ecx
pop ecx
test al, al
jne 0x4113ac
push 1
jmp 0x41151d
push ebx
call dword [sym.imp.KERNEL32.dll_ExitProcess]