Function at 0x40bd30
Capabilities:
Check if file exists
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2cc
mov eax, dword [0x43f090]
xor eax, esp
mov dword [esp + 0x2c8], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
push 3
mov dword [esp + 0x28], esi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0x118
xor ebx, ebx
lea eax, [esp + 0xd0]
push ebx
push eax
call fcn.00420660
add esp, 0xc
lea edi, [esp + 0xc8]
mov dword [esp + 0xc8], 0x11c
call fcn.00404660
test eax, eax
je 0x40bdd8
cmp dword [esp + 0xcc], 0xa
je 0x40bdd8
cmp esi, ebx
je 0x40bdbf
push str._Silence
push esi
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
jne 0x40bdbf
push ebx
push 0x4390c4
push 0x4390ec
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2c8]
xor ecx, esp
call fcn.0041e5bb
mov esp, ebp
pop ebp
ret 0x10
lea esi, [esp + 0x10]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
call fcn.0040ba00
call fcn.004020b0
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea ecx, [esp + 0x1c]
push ecx
mov dword [esp + 0x20], 8
mov dword [esp + 0x24], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
call fcn.0040c890
xor edx, edx
cmp edx, str.360CleanMasterSetupSingletonMutex
je 0x40be9a
push str.360CleanMasterSetupSingletonMutex
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
cmp esi, ebx
je 0x40be9a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x40be9a
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.00402b70
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x40be72
mov ecx, dword [eax]
mov edx, dword [ecx + 0x10]
push eax
call edx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x40be81
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2c8]
xor ecx, esp
call fcn.0041e5bb
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [esp + 0x18]
call fcn.00402eb0
mov eax, dword [esp + 0x18]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call esi
test eax, eax
je 0x40bff6
mov ecx, dword [esp + 0x18]
push ebx
push 1
push 1
call fcn.00402450
test eax, eax
je 0x40bff6
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
call fcn.004049c0
add eax, 0x10
mov edx, str...360CsaVer.dll
lea edi, [esp + 0x1c]
mov dword [esp + 0x1c], eax
call fcn.00403d00
mov edi, dword [esp + 0x1c]
push edi
call esi
test eax, eax
je 0x40bfed
push ebx
push 1
push 1
mov ecx, edi
call fcn.00402450
test eax, eax
je 0x40bfed
push 0x4e
lea edx, [esp + 0x7e]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0x84], cx
call fcn.00420660
lea eax, [esp + 0x84]
add esp, 0xc
push eax
call fcn.00404120
add esp, 4
push 0x4e
lea edx, [esp + 0x2e]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0x34], cx
call fcn.00420660
add esp, 0xc
push 0x206
lea ecx, [esp + 0xce]
xor eax, eax
push ebx
push ecx
mov word [esp + 0xd4], ax
call fcn.00420660
add esp, 0xc
push 0x104
lea edx, [esp + 0xcc]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x28]
push eax
lea edi, [esp + 0xcc]
call fcn.00404120
add esp, 4
lea esi, [esp + 0x28]
lea ecx, [esp + 0x78]
call fcn.0040c740
test eax, eax
jle 0x40bfed
mov eax, dword [esp + 0x24]
cmp eax, ebx
je 0x40bfd6
push str._Silence
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
jne 0x40bfd6
push ebx
push 0x4390c4
push 0x439188
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [esp + 0x1c]
call fcn.00402a80
lea ecx, [esp + 0x18]
call fcn.00402a80
jmp 0x40be56
lea ecx, [esp + 0x1c]
call fcn.00402a80
test byte [0x443410], 1
jne 0x40c01f
or dword [0x443410], 1
push 0x4337b0
mov dword [0x443408], ebx
mov dword [0x44340c], ebx
call fcn.0041eeed
add esp, 4
mov esi, 0x443408
call fcn.004116c0
call fcn.004106a0
mov edi, eax
call fcn.004106e0
test eax, eax
jne 0x40c062
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 0x40be56
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40be56
call fcn.00405040
mov esi, eax
call fcn.00405290
mov esi, dword [sym.imp.KERNEL32.dll_CreateEventW]
push ebx
push ebx
push 1
push ebx
call esi
push ebx
push ebx
push 1
push ebx
mov dword [0x4426fc], eax
call esi
mov dword [0x442700], eax
call fcn.00411680
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp dword [0x443404], ebx
jne 0x40c0c5
push str.sites.dll
call esi
cmp eax, ebx
je 0x40c0c5
push str.set_dpi_flag
push eax
call edi
mov dword [0x443404], eax
cmp eax, ebx
je 0x40c0c5
push 1
call eax
mov eax, dword [esp + 0x24]
push eax
call fcn.0040baf0
add esp, 4
mov ebx, eax
call fcn.00411ce0
push str.CrashReport.dll
call esi
test eax, eax
je 0x40c0f2
push str.OnExiting
push eax
call edi
test eax, eax
je 0x40c0f2
call eax
call fcn.0040c6e0
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 0x40c117
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40c133
mov ecx, dword [eax]
mov edx, dword [ecx + 0x10]
push eax
call edx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x40c142
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [esp + 0x2d4]
pop edi
pop esi
mov eax, ebx
pop ebx
xor ecx, esp
call fcn.0041e5bb
mov esp, ebp
pop ebp
ret 0x10