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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x83c
mov eax, dword [0x434150]
xor eax, ebp
mov dword [ebp - 0x14], eax
mov dword [ebp - 8], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0xa
push str.IsMSISrvFree___In
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push str.Global_MSIExecute
push 0
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x42587a
mov eax, dword [ebp - 0xc]
push eax
push str.IsMSISrvFree___:_Mutex_is_opened__GetLastError_____d_n
push 0x104
lea ecx, [ebp - 0x838]
push ecx
call fcn.004142eb
add esp, 0x10
lea edx, [ebp - 0x838]
push edx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp dword [ebp - 0x10], 0
je 0x42583e
push 0x4e20
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x83c], ecx
cmp dword [ebp - 0x83c], 0x102
ja 0x42577e
cmp dword [ebp - 0x83c], 0x102
je 0x42578c
cmp dword [ebp - 0x83c], 0
je 0x425805
cmp dword [ebp - 0x83c], 0x80
je 0x4257e3
jmp 0x42582c
cmp dword [ebp - 0x83c], 0xffffffff
je 0x4257b4
jmp 0x42582c
mov edx, dword [ebp - 0x10]
sub edx, 1
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x10]
push eax
push str.IsMSISrvFree___:_WAIT_TIMEOUT__iCount___d_n
push 0x104
lea ecx, [ebp - 0x838]
push ecx
call fcn.004142eb
add esp, 0x10
jmp 0x42582c
mov dword [ebp - 0x10], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0xc]
push edx
push str.IsMSISrvFree___:_WAIT_FAILED__iCount_set_to_0__ret___d_n
push 0x104
lea eax, [ebp - 0x838]
push eax
call fcn.004142eb
add esp, 0x10
jmp 0x42582c
mov dword [ebp - 0x10], 0
push str.IsMSISrvFree___:_WAIT_ABANDONED__iCount_set_to_0._n
push 0x104
lea ecx, [ebp - 0x838]
push ecx
call fcn.004142eb
add esp, 0xc
jmp 0x42582c
mov dword [ebp - 8], 1
mov dword [ebp - 0x10], 0
push str.IsMSISrvFree___:_Mutex_is_closed__iCount_set_to_0._n
push 0x104
lea edx, [ebp - 0x838]
push edx
call fcn.004142eb
add esp, 0xc
lea eax, [ebp - 0x838]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x425723
mov ecx, dword [ebp - 0xc]
push ecx
push str._nIsMSISrvFree___:_Do_not_wait_any_more._n_n
push 0x104
lea edx, [ebp - 0x838]
push edx
call fcn.004142eb
add esp, 0x10
lea eax, [ebp - 0x838]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp dword [ebp - 4], 0
je 0x425878
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4258b4
mov dword [ebp - 8], 1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0xc]
push edx
push str.IsMSISrvFree___:_OpenMutex___err_ret___d_n
push 0x104
lea eax, [ebp - 0x838]
push eax
call fcn.004142eb
add esp, 0x10
lea ecx, [ebp - 0x838]
push ecx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov edx, dword [ebp - 8]
push edx
push str.IsMSISrvFree___Out_ret___d_n
push 0x104
lea eax, [ebp - 0x838]
push eax
call fcn.004142eb
add esp, 0x10
lea ecx, [ebp - 0x838]
push ecx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00411220
mov esp, ebp
pop ebp
ret