Function at 0x401a50
Capabilities:
Check mutex on windows

Disassembly:
jmp 0x424300
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5260e6
push eax
mov dword fs:[0], esp
sub esp, 0x17c
mov eax, dword [0x566a70]
push ebx
push ebp
push esi
push edi
push 0x100
push 0x566b74
push 0x3e87
mov ebp, ecx
push eax
call fcn.0040182a
mov ecx, dword [0x566a70]
push 0x100
push 0x566c74
push 0x3eb3
push ecx
call fcn.0040182a
mov edx, dword [ebp + 0x7c]
push edx
call dword [sym.imp.MSVCRT.dll_free]
push str.ACD_FotoCanvas
call dword [sym.imp.MSVCRT.dll__strdup]
mov dword [ebp + 0x7c], eax
or ecx, 0xffffffff
mov edi, str.SOFTWARE_
xor eax, eax
add esp, 0x28
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x566a74
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x552564
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x566a74
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x550aa4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x566a74
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x566b74
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x104
mov esi, edi
mov edx, ecx
mov edi, 0x566a74
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x8c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x566a70]
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x88]
push str.FotoCanvas2.chm
push edx
call fcn.00473720
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
add esp, 4
push eax
call esi
lea eax, [esp + 0x88]
push eax
push str.FotoCanvas2.chm
call esi
call sub.MFC42.DLL_AfxOleInit
test eax, eax
jne 0x42447e
push str.COM_initialization_failed
push eax
call fcn.00472db0
add esp, 8
xor eax, eax
jmp 0x4248ed
push 0x14
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x10], eax
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x194], ebx
je 0x4244ac
push 0x566a74
push reloc.OLEAUT32.dll_SysReAllocString
mov ecx, eax
call fcn.00477940
jmp 0x4244ae
xor eax, eax
or edi, 0xffffffff
push 0x14
mov dword [esp + 0x198], edi
mov dword [0x566da4], eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, ebx
mov dword [esp + 0x194], 1
je 0x4244ed
push 0x566a74
push SysReAllocString
mov ecx, eax
call fcn.00477940
jmp 0x4244ef
xor eax, eax
push 0x14
mov dword [esp + 0x198], edi
mov dword [0x566da8], eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, ebx
mov dword [esp + 0x194], 2
je 0x424521
mov ecx, eax
call fcn.00477920
jmp 0x424523
xor eax, eax
push 0x566a74
push reloc.OLEAUT32.dll_SysReAllocString
mov ecx, eax
mov dword [esp + 0x19c], edi
mov dword [0x566dac], eax
call fcn.00477c70
mov ecx, dword [0x566dac]
push 0x566a74
push SysReAllocString
call fcn.00477d10
mov ecx, dword [0x566dac]
push 0x566a74
push SysReAllocString
call fcn.00477c20
mov ecx, dword [0x566dac]
push 0x566a74
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00477cc0
push 0xd8
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, ebx
mov dword [esp + 0x194], 3
je 0x4245af
mov ecx, dword [0x566dac]
push ecx
mov ecx, eax
call fcn.004010d2
jmp 0x4245b1
xor eax, eax
mov dword [ebp + 0xe8], eax
mov ecx, dword [0x5668f4]
cmp ecx, ebx
mov dword [esp + 0x194], edi
je 0x42468a
mov dl, byte [esp + 0x17]
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x18], dl
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov edx, dword [eax]
lea ecx, [esp + 0x18]
push ecx
mov ecx, eax
mov dword [esp + 0x198], 4
call dword [edx + 0x24]
mov esi, dword [sym.imp.MSVCP60.dll_bool___cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__]
lea edx, [esp + 0x18]
push str.EXPIRED
push edx
call esi
add esp, 8
test al, al
jne 0x424630
lea eax, [esp + 0x18]
push str.INVALIDMODE
push eax
call esi
add esp, 8
test al, al
je 0x424660
push edi
push 0x30
push 0x3e8a
call sub.MFC42.DLL_AfxMessageBox
mov ecx, dword [esp + 0x1c]
cmp ecx, ebx
je 0x424659
mov al, byte [ecx - 1]
cmp al, bl
je 0x42464f
cmp al, 0xff
je 0x42464f
dec al
mov byte [ecx - 1], al
xor eax, eax
jmp 0x4248ed
dec ecx
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
jmp 0x4248ed
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x194], edi
cmp ecx, ebx
je 0x42468a
mov al, byte [ecx - 1]
dec ecx
cmp al, bl
je 0x424681
cmp al, 0xff
je 0x424681
dec al
mov byte [ecx], al
jmp 0x42468a
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
call fcn.004013ac
test eax, eax
jne 0x4246a1
push str.DDE_registration_failed
push ebx
call fcn.00472db0
add esp, 8
mov ecx, dword [ebp + 0x74]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push str._uninstall
push ecx
call esi
test eax, eax
jne 0x4246c2
call fcn.004014e7
xor eax, eax
jmp 0x4248ed
mov ecx, ebp
call sub.MFC42.DLL_CWinApp::Enable3dControls
push str.FotoCanvas_Instance
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x566a48], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x424700
call fcn.004023c9
mov edx, dword [ebp + 0x74]
push edx
call fcn.00401cad
add esp, 4
xor eax, eax
jmp 0x4248ed
mov eax, dword [ebp + 0x74]
push str._kill
push eax
call esi
test eax, eax
je 0x4248ed
push 0x552564
mov ecx, ebp
call sub.MFC42.DLL_CWinApp::SetRegistryKey
push 0x566b74
mov ecx, ebp
call fcn.00402b76
call fcn.00401212
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 8]
lea ecx, [esp + 0x4c]
push eax
mov dword [0x566a70], eax
call fcn.004f2f10
lea ecx, [esp + 0x28]
mov dword [esp + 0x194], 5
push ecx
lea ecx, [esp + 0x50]
call fcn.004f31b0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
push edx
lea ecx, [eax + eax*4]
push eax
push str._d._d
push 0x566d74
lea ecx, [edx + ecx*2]
lea ecx, [ecx + ecx*4]
lea ecx, [esi + ecx*2]
mov dword [0x566d9c], ecx
mov ecx, dword [esp + 0x44]
mov dword [0x566da0], ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push str.MSWHEEL_ROLLMSG
call dword [sym.imp.USER32.dll_RegisterWindowMessageA]
mov dword [0x552870], eax
call fcn.00403139
push 0x566a74
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x40]
call fcn.00477940
push ebx
push str.SetAssoc
lea ecx, [esp + 0x40]
mov byte [esp + 0x19c], 6
call fcn.00478020
cmp eax, ebx
je 0x4247f7
push eax
call fcn.004020b3
add esp, 4
lea ecx, [esp + 0x38]
push str.SetAssoc
call fcn.00478cf0
mov eax, dword [ebp + 0x74]
mov ecx, 9
mov edi, str._setassoc
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x42481c
push eax
call fcn.004020b3
add esp, 4
mov esi, eax
jmp 0x4248c6
cmp dword [0x5668e4], ebx
je 0x42482e
mov ecx, 0x566740
call fcn.00403210
cmp dword [0x566914], ebx
je 0x424840
mov ecx, 0x55e710
call fcn.004867e0
push 0xa
mov ecx, ebp
call sub.MFC42.DLL_CWinApp::LoadStdProfileSettings
push 0x40
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, ebx
mov byte [esp + 0x194], 7
je 0x42486c
mov ecx, eax
call fcn.004fe118
jmp 0x42486e
xor eax, eax
mov dword [ebp + 0x20], eax
push ebx
push ebx
lea eax, [esp + 0x20]
push ebx
push eax
push SysReAllocString
push str.ACD_FotoCanvas
push ebx
push ebx
push ebx
push ebx
mov byte [esp + 0x1bc], 6
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
call sub.MFC42.DLL_AfxRegisterWndClass
mov ecx, dword [ebp + 0x20]
push eax
push ebx
call sub.MFC42.DLL_CWnd::CreateEx
mov ecx, dword [ebp + 0x74]
push ecx
call fcn.00401bef
add esp, 4
mov ecx, 0x566788
mov esi, eax
call fcn.004c0f90
lea ecx, [esp + 0x38]
mov byte [esp + 0x194], 5
call fcn.00477bd0
lea ecx, [esp + 0x4c]
mov dword [esp + 0x194], 0xffffffff
call fcn.004f2f80
mov eax, esi
mov ecx, dword [esp + 0x18c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x188
ret