Function at 0x40abb0
Capabilities:
Check mutex on windows
Print debug messages

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1050
call fcn.00412e10
mov eax, dword [0x445080]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push esi
push edi
xor edi, edi
mov dword [ebp - 0x1050], edi
mov edi, 0x1e
push str.IsMSISrvFree___In
call ebx
mov dword [ebp - 0x1048], 0
call fcn.00410f20
push eax
lea eax, [ebp - 0x1048]
push str.ui_s
push eax
call fcn.0040e130
add esp, 0xc
push str.Global_MSIExecute
push 0
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov dword [ebp - 0x104c], eax
test eax, eax
je 0x40adc6
push 0
push str.IsMSISrvFree___:_Mutex_is_opened__GetLastError_____d_n
lea eax, [ebp - 0x824]
push 0x104
push eax
call fcn.004092a0
add esp, 0x10
lea eax, [ebp - 0x824]
push eax
call ebx
nop dword [eax]
push 0x7530
push dword [ebp - 0x104c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov esi, eax
cmp esi, 0x102
ja 0x40ad38
je 0x40ace8
test esi, esi
je 0x40acbb
cmp esi, 0x80
jne 0x40ad7e
push dword [ebp - 0x1048]
xor edi, edi
push str.3x.errors.mutex_abandoned
push 0x11de7
push 0xc6
call fcn.00410c10
push str.IsMSISrvFree___:_WAIT_ABANDONED__iCount_set_to_0._n
lea eax, [ebp - 0x824]
push 0x104
push eax
call fcn.004092a0
add esp, 0x1c
jmp 0x40ad7e
push dword [ebp - 0x1048]
mov dword [ebp - 0x1050], 1
xor edi, edi
push str.3x.errors.mutex_closed
push 0x11de7
push 0xc6
call fcn.00410c10
push str.IsMSISrvFree___:_Mutex_is_closed__iCount_set_to_0._n
jmp 0x40aca2
dec edi
lea eax, [ebp - 0x824]
push edi
push str.IsMSISrvFree___:_WAIT_TIMEOUT__iCount___d_n
push 0x104
push eax
call fcn.004092a0
push edi
push str.3x.errors.mutex_waiting._d
lea eax, [ebp - 0x1044]
push 0x104
push eax
call fcn.004092a0
push dword [ebp - 0x1048]
lea eax, [ebp - 0x1044]
push eax
push 0x11de7
push 0xc6
call fcn.00410c10
add esp, 0x30
jmp 0x40ad7e
cmp esi, 0xffffffff
jne 0x40ad7e
push dword [ebp - 0x1048]
xor edi, edi
push str.3x.errors.mutex_failed
push 0x11de7
push 0xc6
call fcn.00410c10
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea eax, [ebp - 0x824]
push esi
push str.IsMSISrvFree___:_WAIT_FAILED__iCount_set_to_0__ret___d_n
push 0x104
push eax
call fcn.004092a0
add esp, 0x10
lea eax, [ebp - 0x824]
push eax
call ebx
test edi, edi
jne 0x40ac50
push esi
push str._nIsMSISrvFree___:_Do_not_wait_any_more._n_n
lea eax, [ebp - 0x824]
push 0x104
push eax
call fcn.004092a0
add esp, 0x10
lea eax, [ebp - 0x824]
push eax
call ebx
push dword [ebp - 0x104c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x1050]
jmp 0x40ae2c
mov edi, 1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea eax, [ebp - 0x824]
push esi
push str.IsMSISrvFree___:_OpenMutex___err_ret___d_n
push 0x104
push eax
call fcn.004092a0
add esp, 0x10
lea eax, [ebp - 0x824]
push eax
call ebx
push esi
push str.3x.errors.openmutex_failed._d
lea eax, [ebp - 0x1044]
push 0x104
push eax
call fcn.004092a0
push dword [ebp - 0x1048]
lea eax, [ebp - 0x1044]
push eax
push 0x11de7
push 0xc6
call fcn.00410c10
add esp, 0x20
push edi
push str.IsMSISrvFree___Out_ret___d_n
lea eax, [ebp - 0x824]
push 0x104
push eax
call fcn.004092a0
add esp, 0x10
lea eax, [ebp - 0x824]
push eax
call ebx
mov ecx, dword [ebp - 0x1048]
test ecx, ecx
je 0x40ae5f
push ecx
call fcn.0040e720
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00412b32
mov esp, ebp
pop ebp
ret