Function at 0x591d30
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5e1ec4
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x676580]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x34]
cmp dword [eax + 0x28], 0
je 0x591d78
mov ecx, dword [ebp - 0x34]
mov edx, dword [ecx + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x34]
mov dword [eax + 0x28], 0
mov ecx, dword [ebp - 0x34]
add ecx, 0x20
call fcn.0040ee60
movzx ecx, al
test ecx, ecx
je 0x591e8b
cmp dword [0x67e1c8], 0
je 0x591e84
mov dword [ebp - 0x20], 0
push 0x6234b8
lea ecx, [ebp - 0x18]
call fcn.004092b0
mov dword [ebp - 4], 0
mov edx, dword [ebp - 0x34]
cmp dword [edx + 8], 0
jne 0x591dc8
mov dword [ebp - 0x38], 0xffffffff
jmp 0x591ddf
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax + 8]
mov edx, dword [ebp - 0x34]
mov eax, dword [edx + 8]
mov edx, dword [ecx]
mov ecx, eax
mov eax, dword [edx]
call eax
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x14], ecx
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x1c]
push eax
call fcn.005c21b0
add esp, 8
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x40], ecx
mov byte [ebp - 4], 1
lea edx, [ebp - 0x20]
push edx
push str.createmutex_should_have_a_name_attribute
push 0x623500
mov ecx, dword [ebp - 0x40]
call fcn.00493020
push eax
push 0x6234b4
push 0x6234ac
lea eax, [ebp - 0x14]
push eax
push 0x623494
call fcn.00447600
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.004476c0
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447700
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1c]
call fcn.00403270
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call fcn.00403270
xor eax, eax
jmp 0x592000
mov ecx, dword [ebp - 0x34]
add ecx, 0x20
call fcn.00493020
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ecx, dword [ebp - 0x34]
mov dword [ecx + 0x28], eax
mov edx, dword [ebp - 0x34]
cmp dword [edx + 0x28], 0
je 0x591ffe
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor ecx, ecx
cmp eax, 0xb7
sete cl
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 0x34]
mov eax, dword [edx + 0x24]
cmp eax, dword [ebp - 0x10]
jne 0x591ee1
mov eax, 1
jmp 0x592000
cmp dword [0x67e1c8], 0
je 0x591ffa
mov dword [ebp - 0x30], 0
push 0x623580
lea ecx, [ebp - 0x28]
call fcn.004092b0
mov dword [ebp - 4], 2
mov ecx, dword [ebp - 0x34]
cmp dword [ecx + 8], 0
jne 0x591f1b
mov dword [ebp - 0x44], 0xffffffff
jmp 0x591f30
mov edx, dword [ebp - 0x34]
mov eax, dword [edx + 8]
mov ecx, dword [ebp - 0x34]
mov ecx, dword [ecx + 8]
mov edx, dword [eax]
mov eax, dword [edx]
call eax
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x24], ecx
lea edx, [ebp - 0x28]
push edx
lea eax, [ebp - 0x2c]
push eax
call fcn.005c21b0
add esp, 8
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x4c], ecx
mov byte [ebp - 4], 3
lea edx, [ebp - 0x30]
push edx
lea eax, [ebp - 0x10]
push eax
push str._bAleadyExists
mov ecx, dword [ebp - 0x34]
add ecx, 0x24
push ecx
push str.m_bAlreadyExists
push 0x6235c8
mov ecx, dword [ebp - 0x4c]
call fcn.00493020
push eax
push 0x62357c
push 0x623574
lea edx, [ebp - 0x24]
push edx
push 0x62355c
call fcn.00447600
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.004476c0
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.004476c0
mov ecx, eax
call fcn.00447680
mov ecx, eax
call fcn.004476c0
mov ecx, eax
call fcn.00447700
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2c]
call fcn.00403270
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call fcn.00403270
xor eax, eax
jmp 0x592000
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret