Function at 0x140008df0
Capabilities:
Check mutex on windows

Disassembly:
mov rax, rsp
push rdi
push r14
push r15
sub rsp, 0xc0
mov qword [rax - 0x78], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov rdi, r8
mov r15, rdx
mov r14, rcx
xor ebx, ebx
test rdx, rdx
jne 0x140008e4a
lea ecx, [rdx + 0x57]
call qword [sym.imp.KERNEL32.dll_SetLastError]
nop dword [rax + rax]
xor eax, eax
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r15
pop r14
pop rdi
ret
lea r8, str.GlobalMicrosoft.Windows.Setup.Rollback
mov edx, 1
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
nop dword [rax + rax]
mov rsi, rax
mov qword [rsp + 0xe8], rax
test rax, rax
je 0x140008e30
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
cmp eax, 0xb7
jne 0x140008e99
or edx, 0xffffffff
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
nop dword [rax + rax]
cmp qword [r14], rbx
jne 0x140009029
xor edx, edx
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::constructor_class_UnBCL::String____ptr64____ptr64]
nop dword [rax + rax]
nop
test rdi, rdi
jne 0x140008fdf
lea rcx, [rsp + 0x88]
call fcn.14000946c
nop
lea rcx, [rsp + 0x88]
call fcn.140009620
mov rdx, rax
lea rcx, [rsp + 0x68]
call qword [sym.imp.unbcl.dll_public:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::constructor_class_UnBCL::String____ptr64____ptr64]
nop dword [rax + rax]
nop
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public:_class_UnBCL::SmartPtr_class_UnBCL::String_____ptr64___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::operator_class_UnBCL::SmartPtr_class_UnBCL::String__const____ptr64____ptr64]
nop dword [rax + rax]
nop
lea rcx, [rsp + 0x68]
call qword [sym.imp.unbcl.dll_public_virtual:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::destructor_void____ptr64]
nop dword [rax + rax]
lea rdx, [0x140011408]
lea rcx, [rsp + 0xa0]
call qword [sym.imp.unbcl.dll_public:_void___cdecl_UnBCL::String::constructor_unsigned_short_int_const____ptr64____ptr64]
nop dword [rax + rax]
mov rdi, rax
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public:_class_UnBCL::String____ptr64___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::get_P_void_const___ptr64]
nop dword [rax + rax]
mov rdx, rdi
mov rcx, rax
call qword [sym.imp.unbcl.dll_public:_static_class_UnBCL::String____ptr64___cdecl_UnBCL::Path::Combine_class_UnBCL::String_const____ptr64__class_UnBCL::String_const____ptr64_]
nop dword [rax + rax]
mov rdx, rax
lea rcx, [rsp + 0x68]
call qword [sym.imp.unbcl.dll_public:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::constructor_class_UnBCL::String____ptr64____ptr64]
nop dword [rax + rax]
nop
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public:_class_UnBCL::SmartPtr_class_UnBCL::String_____ptr64___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::operator_class_UnBCL::SmartPtr_class_UnBCL::String__const____ptr64____ptr64]
nop dword [rax + rax]
nop
lea rcx, [rsp + 0x68]
call qword [sym.imp.unbcl.dll_public_virtual:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::destructor_void____ptr64]
nop dword [rax + rax]
nop
lea rcx, [rsp + 0xa0]
call qword [sym.imp.unbcl.dll_public_virtual:_void___cdecl_UnBCL::String::destructor_void____ptr64]
nop dword [rax + rax]
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public:_class_UnBCL::String____ptr64___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::operator___void_const___ptr64]
nop dword [rax + rax]
mov rcx, rax
call qword [sym.imp.unbcl.dll_public:_unsigned_short_int_const____ptr64___cdecl_UnBCL::String::get_CString_void_const___ptr64]
nop dword [rax + rax]
mov rdi, rax
lea rcx, [rsp + 0x88]
call fcn.140009524
test rdi, rdi
je 0x140009016
mov ecx, 0x50
call qword [sym.imp.unbcl.dll_public:_static_void____ptr64___cdecl_UnBCL::Object::operator_new_unsigned_long_long_unsigned___int64__]
nop dword [rax + rax]
mov qword [rsp + 0x68], rax
test rax, rax
je 0x14000900a
mov r8, r15
mov rdx, rdi
mov rcx, rax
call fcn.140009c04
jmp 0x14000900d
mov rax, rbx
mov qword [r14], rax
test rax, rax
setne bl
lea rcx, [rsp + 0x78]
call qword [sym.imp.unbcl.dll_public_virtual:_void___cdecl_UnBCL::SmartPtr_class_UnBCL::String_::destructor_void____ptr64]
nop dword [rax + rax]
jmp 0x1400090a7
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov edi, eax
call qword [sym.imp.WDSCORE.dll_CurrentIP]
nop dword [rax + rax]
mov r14, rax
lea rdx, str.CSetupRollbackService::GetInstance_service_was_already_initialized
mov ecx, 0x20001aa
call fcn.140004c0c
mov dword [rsp + 0x50], ebx
mov qword [rsp + 0x48], rbx
mov dword [rsp + 0x40], edi
mov qword [rsp + 0x38], r14
lea rcx, str.OSRollbackService::CSetupRollbackService::Initialize
mov qword [rsp + 0x30], rcx
lea rcx, str.base_ntsetuplib_rollback_srccheckpoints.cpp
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], 0x7a
xor r9d, r9d
lea r8, [0x14000ed78]
mov edx, 0x64000
mov rcx, rax
call qword [sym.imp.WDSCORE.dll_WdsSetupLogMessageW]
nop dword [rax + rax]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
nop dword [rax + rax]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop dword [rax + rax]
nop
mov eax, ebx
jmp 0x140008e30