Function at 0x407110
Capabilities:
Check mutex on windows
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x5c
push 0x1ec
call sub.MSVCR80.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x40712d
mov ecx, eax
call fcn.004022e0
jmp 0x40712f
xor eax, eax
test eax, eax
mov dword [0x42b0c8], eax
jne 0x40713e
add esp, 0x5c
ret 0x10
push ebx
push edi
push str.ACDSee_Message_Center_Mutex_1.0.00
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edi, dword [esp + 0x70]
mov ebx, eax
mov eax, edi
mov dword [esp + 8], ebx
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407160
sub eax, edx
jne 0x40718f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x40718f
test ebx, ebx
je 0x407185
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
mov ecx, dword [0x42b0c8]
call fcn.00402ce0
test eax, eax
jne 0x4071b5
push str.Can_not_load_resource_DLL
call fcn.0041ae70
add esp, 4
pop edi
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
mov eax, dword [0x42b0c4]
push esi
mov esi, dword [sym.imp.USER32.dll_LoadStringA]
push 0x64
push 0x42b060
push 0x67
push eax
call esi
mov ecx, dword [0x42b0c4]
push 0x64
push 0x42aff8
push 0x6d
push ecx
call esi
lea edx, [esp + 0x48]
push edi
push edx
call fcn.004063c0
add esp, 8
cmp dword [esp + 0x50], 0
mov edi, 1
mov dword [esp + 0x58], edi
jle 0x4073be
mov eax, dword [esp + 0x4c]
mov esi, dword [eax]
push str._kill
push esi
call fcn.00401830
add esp, 8
test al, al
je 0x407251
push 0x42b060
push 0x42aff8
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x40723a
push 0
push 0
push 2
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov ecx, dword [0x42b0c4]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push str.Kevin:__kill__exit_n
jmp 0x40742e
push str._cleanup
push esi
call fcn.00401830
add esp, 8
test al, al
je 0x4072a1
push 0x42b060
push 0x42aff8
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x407285
push 0
push edi
push 2
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x40728a
call fcn.00405f80
mov edx, dword [0x42b0c4]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push str.Kevin:__cleanup__exit_n
jmp 0x40742e
push str._showui
push esi
call fcn.00401830
add esp, 8
test al, al
je 0x407303
push 0x42b060
push 0x42aff8
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x4072ed
push 0
push 0
push 0x44d
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [0x42b0c4]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push str.Kevin:__showui__exit_n
jmp 0x40742e
mov ecx, dword [0x42b0c8]
push edi
call fcn.00401260
push str.Kevin__lpCmdLine_is_showui__set_flag_and_will_show_UI_after_init_n
jmp 0x4073b6
push str._update
mov ecx, esi
call fcn.00402bd0
cmp dword [eax], 0
je 0x4073be
cmp dword [esp + 0x50], edi
jle 0x407367
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx + 4]
push edx
lea ecx, [esp + 0x78]
call fcn.00401d00
push str.SOFTWAREACD_SystemsACDSee_MessageCenter20_
push SysReAllocStringLen
lea ecx, [esp + 0x20]
call fcn.0041aec0
mov eax, dword [esp + 0x74]
push eax
push str.RequestUpdateProductID
lea ecx, [esp + 0x20]
call fcn.0041b150
lea ecx, [esp + 0x18]
call fcn.0041af40
lea ecx, [esp + 0x74]
call fcn.00401810
push 0x42b060
push 0x42aff8
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x4073a5
push 0
push 0x800e
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov ecx, dword [0x42b0c4]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push str.Kevin:__update_without_productID__exit_n
jmp 0x40742e
mov ecx, dword [0x42b0c8]
push edi
call fcn.00401270
push str.Kevin__lpCmdLine_is_update__set_flag_and_will_check_for_updates_after_init_n
call fcn.0041ae70
add esp, 4
lea edx, [esp + 0x10]
push edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], 8
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
test eax, eax
jne 0x4073f0
lea ecx, [esp + 0x48]
call fcn.004017e0
pop esi
pop edi
mov eax, 0xfffffffe
pop ebx
add esp, 0x5c
ret 0x10
push 0x1f
call fcn.0041be10
mov esi, dword [esp + 0x70]
push esi
call fcn.00407080
mov eax, dword [esp + 0x80]
mov ecx, dword [0x42b0c8]
add esp, 8
push eax
push esi
call fcn.00404730
test eax, eax
jne 0x40744a
mov ecx, dword [0x42b0c4]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push str.Kevin:_InitInstance_return_fail_n
call fcn.0041ae70
add esp, 4
lea ecx, [esp + 0x48]
call fcn.004017e0
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
push str.Kevin:_InitInstance_OK_n
call fcn.0041ae70
add esp, 4
push 0x6d
push esi
call dword [sym.imp.USER32.dll_LoadAcceleratorsA]
push str.Kevin:_Entering_message_loop..._n
mov esi, eax
call fcn.0041ae70
mov edi, dword [sym.imp.USER32.dll_GetMessageA]
add esp, 4
push 0
push 0
push 0
lea edx, [esp + 0x38]
push edx
call edi
test eax, eax
je 0x4074cc
mov ebx, dword [sym.imp.USER32.dll_TranslateAcceleratorA]
push ebp
mov ebp, dword [sym.imp.USER32.dll_TranslateMessage]
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0x30]
push eax
push esi
push ecx
call ebx
test eax, eax
jne 0x4074b6
lea edx, [esp + 0x30]
push edx
call ebp
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea ecx, [esp + 0x3c]
push ecx
call edi
test eax, eax
jne 0x407493
mov ebx, dword [esp + 0x10]
pop ebp
mov ecx, dword [0x42b0c8]
add ecx, 0x150
call fcn.004156e0
mov ecx, dword [0x42b0c8]
add ecx, 0x150
call fcn.00415650
call fcn.0041c0a0
test ebx, ebx
je 0x4074fe
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x42b0c8]
test ecx, ecx
mov esi, ecx
je 0x407518
call fcn.004018b0
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete_void__
add esp, 4
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x48]
call fcn.004017e0
mov eax, esi
pop esi
pop edi
pop ebx
add esp, 0x5c
ret 0x10