Function at 0x4015a0
Capabilities:
Check mutex on windows
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2a68
call fcn.00401e90
mov eax, dword [0x416004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push edi
mov edi, dword [ebp + 0x10]
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
mov dword [ebp - 0x29fc], 0
mov dword [ebp - 0x2a0c], 0
call esi
push eax
mov dword [ebp - 0x2a08], eax
call fcn.00405784
add esp, 4
mov dword [ebp - 0x29f8], eax
push 0
push 0
push dword [ebp - 0x2a08]
push eax
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call esi
push 0
push 0
push 0x401160
lea eax, [ebp - 0x29fc]
push eax
call sub.USER32.dll_DdeInitializeA
test eax, eax
je 0x40165d
push 0x10
push str.DDE_error
push str.Failed_to_initialize_DDE
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [ebp - 0x29f8]
push eax
call fcn.00401e6e
add esp, 4
push 0xfffffffffffffffe
call fcn.00405f25
push 0x3ec
push str.ida_ice
push dword [ebp - 0x29fc]
call sub.USER32.dll_DdeCreateStringHandleA
push 0x3ec
push str.COMMAND
push dword [ebp - 0x29fc]
mov esi, eax
call sub.USER32.dll_DdeCreateStringHandleA
test esi, esi
je 0x401de2
test eax, eax
je 0x401de2
push 0
push eax
push esi
push dword [ebp - 0x29fc]
call sub.USER32.dll_DdeConnect
mov esi, eax
mov dword [ebp - 0x2a14], esi
test esi, esi
je 0x401bba
mov ebx, dword [ebp - 0x29f8]
push str.azure_batch_submit_genopt_case
push ebx
call fcn.00402bb0
add esp, 8
mov dword [ebp - 0x2a00], eax
test eax, eax
je 0x401b73
mov edi, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0
push 0
call edi
mov esi, eax
push esi
call fcn.00405784
add esp, 4
mov ebx, eax
mov dword [ebp - 0x2a10], ebx
push ebx
push esi
call edi
push ebx
lea ecx, [ebp - 0x29dc]
call fcn.00401000
mov dword [ebp - 0x29c4], 0
xor edx, edx
mov dword [ebp - 0x29f4], 0
mov dword [ebp - 0x29b0], 0xf
mov dword [ebp - 0x29b4], 1
mov word [ebp - 0x29c4], 0x5e
mov dword [ebp - 0x29e0], 0xf
mov dword [ebp - 0x29e4], 1
mov word [ebp - 0x29f4], 0x5c
nop dword [eax]
cmp dword [ebp - 0x29c8], 0x10
lea ebx, [ebp - 0x29dc]
mov ecx, dword [ebp - 0x29cc]
cmovae ebx, dword [ebp - 0x29dc]
cmp ecx, 1
jb 0x4017d3
lea eax, [ecx - 1]
cmp edx, eax
ja 0x4017d3
lea edi, [ecx + ebx]
lea ecx, [ebx + edx]
mov eax, edi
sub eax, ecx
push eax
push 0x5c
push ecx
call fcn.00402f10
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4017d3
movzx eax, byte [esi]
lea ecx, [ebp - 0x29f4]
cmp al, byte [ecx]
jne 0x4017b3
xor eax, eax
jmp 0x4017b8
sbb eax, eax
or eax, 1
test eax, eax
je 0x401804
inc esi
mov eax, edi
sub eax, esi
push eax
push 0x5c
push esi
call fcn.00402f10
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4017a2
mov edx, dword [ebp - 0x29b0]
cmp edx, 0x10
jb 0x40184b
mov ecx, dword [ebp - 0x29c4]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x401841
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x401841
call fcn.004055a0
sub esi, ebx
cmp esi, 0xffffffff
je 0x4017d3
cmp dword [ebp - 0x29b0], 0x10
lea eax, [ebp - 0x29c4]
push dword [ebp - 0x29b4]
cmovae eax, dword [ebp - 0x29c4]
lea ecx, [ebp - 0x29dc]
push eax
push 1
push esi
call fcn.00401320
mov edx, dword [ebp - 0x29b4]
add edx, esi
jmp 0x401760
push edx
push ecx
call fcn.00401e60
add esp, 8
lea eax, [ebp - 0x29bc]
push eax
call dword [sym.imp.RPCRT4.dll_UuidCreate]
test eax, eax
je 0x401863
cmp eax, 0x720
jne 0x4018ba
lea eax, [ebp - 0x2a04]
push eax
lea eax, [ebp - 0x29bc]
push eax
call dword [sym.imp.RPCRT4.dll_UuidToStringA]
test eax, eax
jne 0x4018ba
mov esi, dword [ebp - 0x2a04]
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401886
sub ecx, edx
lea eax, [ebp - 0x24]
push ecx
push esi
push eax
call fcn.00402fc0
add esp, 0xc
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4018a0
sub esi, ecx
mov byte [ebp + esi - 0x24], al
lea eax, [ebp - 0x2a04]
push eax
call dword [sym.imp.RPCRT4.dll_RpcStringFreeA]
push 0xc8
lea eax, [ebp - 0x1ac]
push 0
push eax
call fcn.00403540
push str.__C__X__register_mutex_name__
lea eax, [ebp - 0x1ac]
push 0xc8
push eax
call fcn.004055f1
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x1ac]
push 0xc8
push eax
call fcn.004055f1
push 0x40f298
lea eax, [ebp - 0x1ac]
push 0xc8
push eax
call fcn.004055f1
mov eax, dword [ebp - 0x2a00]
lea edx, [ebp - 0x24]
mov edi, dword [ebp - 0x29f8]
lea ecx, [edx + 1]
sub eax, edi
add esp, 0x30
add eax, 0x1e
mov dword [ebp - 0x2a00], eax
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x401930
sub edx, ecx
cmp dword [ebp - 0x29c8], 0x10
lea ecx, [ebp - 0x29dc]
cmovae ecx, dword [ebp - 0x29dc]
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401950
sub ecx, esi
lea eax, [edx + ecx]
mov ecx, dword [ebp - 0x2a08]
add ecx, 0xa
add eax, ecx
push eax
mov dword [ebp - 0x2a08], eax
call fcn.00405784
mov esi, dword [ebp - 0x2a00]
mov ebx, eax
push esi
push edi
push ebx
mov dword [ebp - 0x2a04], ebx
call fcn.00405660
add esp, 0x10
mov byte [ebx + esi], 0
lea ecx, [ebx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401993
mov ax, word [0x40f29c]
lea edx, [ebp - 0x24]
mov word [ecx], ax
mov esi, edx
mov al, byte [0x40f29e]
mov byte [ecx + 2], al
mov al, byte [edx]
inc edx
test al, al
jne 0x4019b3
sub edx, esi
lea edi, [ebx - 1]
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4019c0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x4019e0
mov eax, dword [0x40f2a0]
lea edx, [ebp - 0x29dc]
mov dword [edi], eax
cmp dword [ebp - 0x29c8], 0x10
cmovae edx, dword [ebp - 0x29dc]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x401a07
sub edx, esi
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401a13
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx - 1]
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401a30
mov ax, word [0x40f2a4]
mov edx, dword [ebp - 0x2a00]
add edx, dword [ebp - 0x29f8]
mov word [ecx], ax
mov esi, edx
mov al, byte [0x40f2a6]
mov byte [ecx + 2], al
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x401a60
sub edx, esi
lea edi, [ebx - 1]
nop dword [eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401a70
mov ecx, edx
mov eax, dword [ebp - 0x2a08]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
mov byte [ebx + eax - 1], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401a96
mov esi, dword [ebp - 0x2a14]
sub ecx, edx
push 0
push 0xffffffffffffffff
push 0x4050
push 0
push 0
push esi
lea eax, [ecx + 1]
push eax
push ebx
call sub.USER32.dll_DdeClientTransaction
push esi
call sub.USER32.dll_DdeDisconnect
push dword [ebp - 0x29fc]
call sub.USER32.dll_DdeUninitialize
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
nop word [eax + eax]
lea eax, [ebp - 0x24]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
push 0xa
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x401b27
cmp eax, 0x80
je 0x401b0b
cmp eax, 0x102
jne 0x401b3a
cmp dword [ebp - 0x2a0c], 0
jne 0x401b3a
push 0xbb8
mov dword [ebp - 0x2a0c], 1
call edi
jmp 0x401ae0
cmp dword [ebp - 0x2a0c], 0
push esi
jne 0x401b43
call ebx
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xbb8
call edi
jmp 0x401ae0
call fcn.00401300
push dword [ebp - 0x29f8]
call fcn.00401e6e
push dword [ebp - 0x2a04]
call fcn.00401e6e
push dword [ebp - 0x2a10]
call fcn.00401e6e
add esp, 0x10
push 0
call fcn.00405f25
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401b78
push 0
push 0xffffffffffffffff
push 0x4050
push 0
sub ecx, edx
push 0
push esi
lea eax, [ecx + 1]
push eax
push ebx
call sub.USER32.dll_DdeClientTransaction
push esi
call sub.USER32.dll_DdeDisconnect
push dword [ebp - 0x29fc]
call sub.USER32.dll_DdeUninitialize
push ebx
call fcn.00401e6e
add esp, 4
push 0
call fcn.00405f25
push dword [ebp - 0x29fc]
call sub.USER32.dll_DdeUninitialize
push 0x104
lea eax, [ebp - 0x19ac]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0
push 0
lea eax, [ebp - 0x9ac]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x19ac]
push eax
call fcn.00405b90
add esp, 0x14
lea eax, [ebp - 0xe4]
push 0x50
push eax
push 0xffffffffffffffff
push str.ida_ice
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x40f2a8
lea eax, [ebp - 0xe4]
push eax
lea eax, [ebp - 0x9ac]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x21ac]
push eax
call fcn.0040590d
push 0x40f2b0
push 0x40f2b8
lea eax, [ebp - 0x9ac]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x11ac]
push eax
call fcn.0040590d
push 0
push 0
lea eax, [ebp - 0x9ac]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x29ac]
push eax
call fcn.0040590d
lea edx, [ebp - 0xe4]
add esp, 0x3c
lea ecx, [edx + 2]
nop
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x401c80
sub edx, ecx
lea ecx, [ebp - 0x11ac]
sar edx, 1
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x401ca0
sub ecx, esi
mov esi, edi
sar ecx, 1
lea ebx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x401cb4
sub esi, ebx
sar esi, 1
lea eax, [esi + ecx]
add eax, edx
lea eax, [eax*2 + 0x28]
push eax
call fcn.00405784
mov esi, eax
lea eax, [ebp - 0x11ac]
push edi
push eax
lea eax, [ebp - 0xe4]
push eax
push str._s.exe___s___s
push esi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
mov dword [ebp - 0x2a58], 0x44
xor eax, eax
mov dword [ebp - 0x2a2c], 1
mov word [ebp - 0x2a16], ax
xorps xmm0, xmm0
mov eax, 0xa
movlpd qword [ebp - 0x2a54], xmm0
mov word [ebp - 0x2a28], ax
lea eax, [ebp - 0x2a68]
push eax
lea eax, [ebp - 0x2a58]
movlpd qword [ebp - 0x2a4c], xmm0
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push esi
lea eax, [ebp - 0x21ac]
movlpd qword [ebp - 0x2a44], xmm0
push eax
movlpd qword [ebp - 0x2a3c], xmm0
movlpd qword [ebp - 0x2a34], xmm0
movlpd qword [ebp - 0x2a26], xmm0
movlpd qword [ebp - 0x2a1e], xmm0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x401dcd
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x10
push str.Message
push str.Could_not_start_process._Contact_EQUA.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push dword [ebp - 0x29f8]
call fcn.00401e6e
push dword [ebp - 0x2a10]
call fcn.00401e6e
push dword [ebp - 0x2a10]
call fcn.00401e6e
add esp, 0xc
push 0xfffffc18
call fcn.00405f25
push dword [ebp - 0x29f8]
call fcn.00401e6e
add esp, 4
push 0
call fcn.00405f25
push 0x10
push str.DDE_error
push str.Failed_to_create_string_handle
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push dword [ebp - 0x29f8]
call fcn.00401e6e
add esp, 4
push 0xfffffffffffffffe
call fcn.00405f25
int3