Function at 0x401702
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb0
push ebx
push ebp
push esi
xor ebx, ebx
lea ecx, [esp + 0x1c]
push edi
mov byte [esp + 0x40], bl
call fcn.00401b33
push 0x800
mov dword [esp + 0x2c], eax
call dword [sym.imp.msvcrt.dll_malloc]
pop ecx
mov esi, eax
xor edx, edx
mov ecx, str.CLASS_PATH
mov dword [esp + 0x3c], esi
call fcn.00403b50
xor edx, edx
mov dword [esp + 0x1c], eax
mov ecx, str.EXTDIRS
call fcn.00403b50
xor edx, edx
mov dword [esp + 0x10], eax
mov ecx, str.EXTFLAGS
call fcn.00403b50
mov ebp, dword [sym.imp.msvcrt.dll_strstr]
mov edi, eax
test edi, edi
je 0x401787
push str.SERVER
push edi
call ebp
pop ecx
pop ecx
test eax, eax
je 0x401787
mov dword [esp + 0x18], 1
jmp 0x40178b
and dword [esp + 0x18], ebx
test edi, edi
je 0x4017a1
push str.NOSIDEBYSIDE
push edi
call ebp
pop ecx
pop ecx
test eax, eax
je 0x4017a1
xor eax, eax
jmp 0x4017a4
xor eax, eax
inc eax
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
push eax
push dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
call fcn.00402080
pop ecx
pop ecx
test edi, edi
je 0x401820
push str.SHARE
push edi
call ebp
pop ecx
pop ecx
test eax, eax
je 0x4017e9
push dword [esp + 0x28]
mov edx, dword [esp + 0x24]
call fcn.004040f2
mov ebx, eax
pop ecx
test ebx, ebx
jne 0x4017e9
xor edi, edi
jmp 0x401a4a
push 0x405208
push edi
call ebp
pop ecx
pop ecx
test eax, eax
je 0x401820
mov ecx, 0x405208
call fcn.00403ad6
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401820
xor edi, edi
jmp 0x401a38
lea edx, [esp + 0x10]
mov ecx, str.SPLASH_SCREEN_IMAGE
call fcn.00403b50
test eax, eax
je 0x40188b
push str.splashscreen.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x408b08], eax
test eax, eax
je 0x40188b
push str.SplashInit
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x408b0c], eax
test eax, eax
je 0x40188b
push str.SplashLoadMemory
push dword [0x408b08]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x408b04], eax
test eax, eax
je 0x40188b
call dword [0x408b0c]
push dword [esp + 0x14]
push dword [esp + 0x14]
call dword [0x408b04]
pop ecx
pop ecx
xor edx, edx
mov ecx, 0x405258
call fcn.00403b50
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
push ecx
push dword [esp + 0x28]
mov ecx, eax
call fcn.00401c13
pop ecx
pop ecx
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4018d0
push esi
lea edx, [esp + 0x3c]
call fcn.00403b95
pop ecx
mov ecx, eax
call fcn.00401ae9
mov esi, dword [esp + 0x3c]
jmp 0x401a34
lea edx, [esp + 0x10]
mov ecx, 0x405260
call fcn.00403b50
test eax, eax
je 0x401914
call fcn.00401dfc
mov ecx, dword [esp + 0x10]
cmp dword [ecx], eax
jbe 0x401914
push 0xa
lea eax, [ecx + 8]
pop edi
push eax
mov ecx, edi
call fcn.00403e40
push eax
push esi
call dword [sym.imp.msvcrt.dll_sprintf]
add esp, 0xc
mov ecx, esi
call fcn.00401ae9
jmp 0x401a38
mov esi, dword [sym.imp.msvcrt.dll_strcat]
test edi, edi
je 0x40192c
push str.IGNORE_UNCAUGHT_EXCEPTION
push edi
call ebp
pop ecx
pop ecx
test eax, eax
jne 0x40193a
lea eax, [esp + 0x40]
push str.UncaughtExceptionHandler_
push eax
call esi
pop ecx
pop ecx
test edi, edi
je 0x40194c
push str.NOLOG
push edi
call ebp
pop ecx
pop ecx
test eax, eax
jne 0x40195a
lea eax, [esp + 0x40]
push 0x4052b0
push eax
call esi
pop ecx
pop ecx
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x2c]
mov ecx, dword [esp + 0x20]
push eax
lea eax, [esp + 0x44]
push eax
call fcn.00402f92
pop ecx
pop ecx
test eax, eax
jne 0x401987
mov esi, dword [esp + 0x3c]
mov ecx, esi
call fcn.00401ae9
jmp 0x401a34
lea edx, [esp + 0x10]
mov ecx, str.SPLASH_SCREEN_IMAGE
call fcn.00403b50
test eax, eax
je 0x4019b5
xor edx, edx
mov ecx, str.SPLASH_SCREEN_NAME
call fcn.00403b50
push dword [esp + 0x14]
mov edx, dword [esp + 0x14]
mov ecx, eax
call fcn.00403795
pop ecx
test ebx, ebx
je 0x4019c9
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebx, ebx
push dword [esp + 0x34]
mov eax, dword [0x40836c]
push dword [esp + 0x34]
push dword [esp + 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x234]
mov eax, dword [0x40836c]
add esp, 0x10
mov ecx, dword [eax]
push eax
call dword [ecx + 0x390]
mov esi, dword [esp + 0x3c]
cmp al, 1
jne 0x401a29
mov eax, dword [0x40836c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x3c]
mov edi, eax
test edi, edi
je 0x401a29
push esi
mov edx, edi
call fcn.00403a1c
pop ecx
mov ecx, esi
call fcn.00401ae9
mov eax, dword [0x40836c]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x5c]
mov eax, dword [0x40836c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x44]
mov edi, dword [esp + 0x38]
test ebx, ebx
je 0x401a4a
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x401a56
push esi
call dword [sym.imp.msvcrt.dll_free]
pop ecx
cmp dword [0x40836c], 0
je 0x401a6a
mov eax, dword [0x408370]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
cmp dword [0x408370], 0
je 0x401a78
call fcn.00401d8f
mov eax, dword [0x40839c]
test eax, eax
je 0x401a95
push 0
push 0
push 0x12
push eax
call dword [sym.imp.USER32.dll_PostThreadMessageA]
and dword [0x40839c], 0
mov eax, dword [0x408398]
test eax, eax
je 0x401ab8
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x408398]
xor edx, edx
test eax, eax
cmovne ecx, edx
mov dword [0x408398], ecx
mov eax, dword [0x408394]
test eax, eax
je 0x401add
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [0x408394]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
and dword [0x408394], 0
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret 0x10