Function at 0x4beb40
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
mov eax, dword [0x569638]
xor eax, esp
mov dword [esp + 0x80], eax
push ebx
push esi
push edi
push 0x8003
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0xffffffffffffffff
call sub.IMM32.dll_ImmDisableIME
call fcn.004be8c0
push eax
push 1
xor edi, edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, eax
cmp esi, edi
je 0x4beb9e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4beb9e
push esi
call ebx
xor esi, esi
mov dword [0x57309c], esi
cmp esi, edi
jne 0x4bee81
lea esi, [esp + 0x14]
call fcn.004b7730
mov bl, byte [eax]
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4bebd7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x4bed51
mov eax, 7
xor edx, edx
xor ecx, ecx
lea esi, [esp + 0x14]
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edi
mov word [esp + 0x4c], cx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edi
mov word [esp + 0x68], dx
mov dword [esp + 0x80], edi
mov byte [esp + 0x84], dl
call fcn.004b7730
lea esi, [esp + 0x10]
call fcn.004b77d0
mov edx, dword [eax]
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x4bec30
sub eax, esi
sar eax, 1
push eax
push edx
lea esi, [esp + 0x6c]
call fcn.0042b220
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4bec6a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4bec8a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], edi
mov byte [esp + 0x34], 0
call fcn.00451440
cmp dword [esp + 0x44], 0x10
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x30]
jae 0x4becbc
lea edi, [esp + 0x30]
call fcn.00450280
test al, al
mov eax, str.Q360PromoClass
jne 0x4beccf
mov eax, str.Q360PromoClassLow
push 0
push eax
call dword [sym.imp.USER32.dll_FindWindowW]
mov esi, eax
test esi, esi
je 0x4bed1d
push esi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4bed1d
lea edx, [esp + 0x10]
push edx
push 0x2710
push 0
lea eax, [esp + 0x20]
push eax
push 0
push 0x4a
push esi
mov dword [esp + 0x30], 0x115
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x2c], 0
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
cmp dword [esp + 0x44], 0x10
jb 0x4bed31
mov ecx, dword [esp + 0x30]
push ecx
call fcn.004f3984
add esp, 4
lea esi, [esp + 0x48]
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], 0
mov byte [esp + 0x30], 0
call fcn.0041a940
xor edi, edi
lea esi, [esp + 0x14]
call fcn.004b7730
mov bl, byte [eax + 1]
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4bed7d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x4bee68
lea esi, [esp + 0x20]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], 2
call fcn.004b7730
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov dword [esp + 0x1c], ecx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4bedc1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x18]
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], edi
mov byte [esp + 0x34], 0
call fcn.00451c00
cmp dword [esp + 0x44], 0x10
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x30]
jae 0x4bedf3
lea edi, [esp + 0x30]
call fcn.00450280
test al, al
mov eax, str.Q360PromoClass
jne 0x4bee06
mov eax, str.Q360PromoClassLow
push 0
push eax
call dword [sym.imp.USER32.dll_FindWindowW]
mov esi, eax
test esi, esi
je 0x4bee54
push esi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4bee54
lea edx, [esp + 0x10]
push edx
push 0x2710
push 0
lea eax, [esp + 0x20]
push eax
push 0
push 0x4a
push esi
mov dword [esp + 0x30], 0x119
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x2c], 0
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
cmp dword [esp + 0x44], 0x10
jb 0x4bee68
mov ecx, dword [esp + 0x30]
push ecx
call fcn.004f3984
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x80]
xor ecx, esp
call fcn.004f398f
mov esp, ebp
pop ebp
ret 0x10
call fcn.0045bbf0
lea edx, [esp + 0x10]
push edx
mov ecx, 0x573608
call fcn.0042bf40
lea eax, [esp + 0x10]
mov edi, 0x5730e0
call fcn.0042b950
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4beec3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
mov ecx, 0x573608
call fcn.0042bf40
lea eax, [esp + 0x10]
mov edi, 0x5730e4
call fcn.0042b950
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4bef00
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x545e2c
lea esi, [esp + 0x18]
call fcn.004040a0
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.00429480
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4bef3c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x10]
call fcn.00429010
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4bef6c
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x4bef6c
push str.Initialize
push eax
call esi
test eax, eax
je 0x4bef6c
call eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4bef8c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
push 0
mov dword [0x573098], eax
call dword [sym.imp.ole32.dll_CoInitialize]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea ecx, [esp + 0x14]
push ecx
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
call fcn.004c4ed0
call fcn.004c4cd0
call fcn.00453000
xor edi, edi
call fcn.0045d820
test eax, eax
je 0x4befff
call fcn.0045e330
test al, al
je 0x4befff
call fcn.004534e0
call fcn.004be940
mov edi, eax
call fcn.004bf240
call fcn.004bf1e0
call dword [sym.imp.ole32.dll_OleUninitialize]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [0x57309c]
test eax, eax
je 0x4bf021
push eax
call ebx
push 0x545e2c
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x4bf03e
push str.OnExiting
push eax
call esi
test eax, eax
je 0x4bf03e
call eax
mov ecx, dword [esp + 0x8c]
mov eax, edi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004f398f
mov esp, ebp
pop ebp
ret 0x10