Function at 0x40141c
Capabilities:
Check mutex on windows
Create process on windows
Get common file path
Schedule task via at

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4472e7
mov eax, dword fs:[0]
push eax
sub esp, 0x490
mov eax, dword [0x460544]
xor eax, esp
mov dword [esp + 0x488], eax
push ebx
push esi
push edi
mov eax, dword [0x460544]
xor eax, esp
push eax
lea eax, [esp + 0x4a0]
mov dword fs:[0], eax
mov ebx, 0x461d88
push ebx
push str.13:34:15
push str.Nov_10_2011
push str.NODEBUG__TIME_s___s__this0x_p
mov dword [esp + 0x30], ecx
push str.BUILD_INFORMATION
mov esi, str.CDeskUpdateGUIApp::InitInstance
push 3
mov edx, str.Internal
mov ecx, esi
mov edi, ebx
call fcn.0040d853
mov eax, 0x44e464
push eax
push eax
push 3
mov edx, str.Enter
mov ecx, esi
call fcn.0040d853
mov edi, dword [sym.imp.DeskUpdateCore.dll_public:_static_class_CDeskUpdate____cdecl_CDeskUpdate::Instance_void_]
add esp, 0x24
push 0
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CDeskUpdate::Init_enum_CDeskUpdate::eExecutableType_]
push ecx
mov eax, esp
mov dword [esp + 0x38], esp
push eax
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______thiscall_CDeskUpdate::GetDUGuiLogFilePath_void_]
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CXmlLog::SetLogFilePath_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char____]
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_bool___thiscall_CDeskUpdate::GetDUGuiLogAppend_void_]
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
neg al
sbb al, al
inc al
mov byte [ecx + 1], al
call edi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_bool___thiscall_CDeskUpdate::GetDUGuiLogEnabled_void_]
test al, al
je 0x401506
mov eax, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
mov byte [eax], 1
call dword [sym.imp.DeskUpdateCore.dll_public:_static_bool___cdecl_CDeskUpdate::IsElevated_void_]
push 0x44e464
mov edx, str.Internal
mov ecx, esi
mov edi, ebx
test al, al
jne 0x4015ad
push str.IsElevated_returned_false.
push 4
call fcn.0040d853
add esp, 0xc
mov esi, 0x104
push esi
lea eax, [esp + 0x390]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x284]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0x3c
pop ecx
mov edx, ecx
lea eax, [esp + 0x48]
mov byte [eax], 0
inc eax
dec edx
jne 0x40155f
and dword [esp + 0x4c], edx
lea eax, [esp + 0x38c]
mov dword [esp + 0x58], eax
mov eax, dword [0x464cd8]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x284]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x48]
push eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x58], str.runas
mov dword [esp + 0x68], 1
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
jmp 0x401aba
push str.IsElevated_returned_true.
push 4
call fcn.0040d853
add esp, 0xc
lea eax, [esp + 0x40]
push eax
mov dword [esp + 0x44], 8
mov dword [esp + 0x48], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
push dword [0x464cd8]
lea ecx, [esp + 0x18]
call fcn.00401f84
and dword [esp + 0x4a8], 0
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x40]
push str.DeskUpdate.exe_started_with_command_line_
push eax
call fcn.00401bf2
add esp, 8
mov ecx, esp
mov byte [esp + 0x4ac], 1
mov dword [esp + 0x20], esp
push 0x44e244
push eax
push ecx
call fcn.00401b9d
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
mov edi, dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CXmlLog::Write_enum_eCXmlLogLevel__class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char____]
add esp, 0xc
push 3
call edi
mov byte [esp + 0x4a8], 0
mov ecx, dword [esp + 0x3c]
add ecx, 0xfffffff0
call fcn.0040136f
lea eax, [esp + 0x18]
push 0
push eax
call dword [sym.imp.DeskUpdateCore.dll_public:_static_class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char______cdecl_CSupport::GetLanguageEx_bool_]
add esp, 4
mov eax, esp
mov byte [esp + 0x4ac], 2
mov dword [esp + 0x20], esp
lea ecx, [esp + 0x1c]
push ecx
push str.Language:
push eax
call fcn.00401bf2
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
add esp, 0xc
push 3
call edi
push dword [esp + 0x18]
mov edx, str.Internal
push str.sLang_s
push str.GetLanguageEx
push 3
mov ecx, esi
mov edi, ebx
call fcn.0040d853
add esp, 0x10
push str.German
lea ecx, [esp + 0x1c]
call fcn.00401c9a
test eax, eax
jne 0x4016bb
push 0x10007
jmp 0x4016d2
push str.French
lea ecx, [esp + 0x1c]
call fcn.00401c9a
test eax, eax
jne 0x4016dc
push 0x1000c
call dword [sym.imp.KERNEL32.dll_SetThreadLocale]
xor edi, edi
jmp 0x4016e5
xor edi, edi
push edi
call dword [sym.imp.KERNEL32.dll_SetThreadLocale]
mov ecx, dword [esp + 0x20]
call fcn.00416682
push edi
call fcn.00417715
mov ecx, dword [esp + 0x24]
mov dword [esp], 0x44e2ac
call fcn.00417be8
mov eax, dword [esp + 0x14]
mov eax, dword [eax - 0xc]
cmp eax, edi
jle 0x4017d6
push 9
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x1c]
call fcn.00401b5f
push str._install
push eax
mov byte [esp + 0x4b0], 3
call fcn.00401ae0
neg eax
sbb al, al
mov byte [esp + 0x4a8], 2
mov ecx, dword [esp + 0x38]
inc al
add ecx, 0xfffffff0
mov byte [esp + 0x13], al
call fcn.0040136f
cmp byte [esp + 0x13], 0
je 0x401777
push ecx
lea eax, [esp + 0x18]
mov dword [esp + 0x20], esp
mov ecx, esp
push eax
call fcn.00401ded
call fcn.0040c288
pop ecx
jmp 0x401aa2
push 0x10
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x1c]
call fcn.00401b5f
push str._cleanupinstall
push eax
mov byte [esp + 0x4b0], 4
call fcn.00401ae0
neg eax
sbb al, al
mov byte [esp + 0x4a8], 2
mov ecx, dword [esp + 0x34]
inc al
add ecx, 0xfffffff0
mov byte [esp + 0x13], al
call fcn.0040136f
cmp byte [esp + 0x13], 0
je 0x4017d6
push ecx
lea eax, [esp + 0x18]
mov dword [esp + 0x20], esp
mov ecx, esp
push eax
call fcn.00401ded
call fcn.0040c2f5
pop ecx
push str.Global7792B04F_A36F_4faa_99F5_F3082F7AC5FA
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x28], eax
mov byte [esp + 0x4a8], 5
cmp eax, 0xb7
jne 0x401878
call fcn.004157d6
push eax
lea ecx, [esp + 0x34]
call fcn.00401347
push 0x66
lea ecx, [esp + 0x34]
mov byte [esp + 0x4ac], 6
call fcn.00401f3f
push edi
push 0x30
push dword [esp + 0x38]
call fcn.00417fda
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov edi, str.Instance_already_running_
push edi
call fcn.00401f84
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
push 1
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CXmlLog::Write_enum_eCXmlLogLevel__class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char____]
push 0x44e464
push edi
push 1
mov edx, str.Exception
mov ecx, esi
mov edi, ebx
call fcn.0040d853
mov ecx, dword [esp + 0x3c]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.0040136f
jmp 0x401a91
call dword [sym.imp.DeskUpdateCore.dll_public:_static_bool___cdecl_CSupport::AdminCheck_void_]
test al, al
jne 0x4018ef
call fcn.004157d6
push eax
lea ecx, [esp + 0x24]
call fcn.00401347
push 0x67
lea ecx, [esp + 0x24]
mov byte [esp + 0x4ac], 7
call fcn.00401f3f
push edi
push 0x30
push dword [esp + 0x28]
call fcn.00417fda
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov edi, str.Administration_rights_needed_
push edi
call fcn.00401f84
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
push 1
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CXmlLog::Write_enum_eCXmlLogLevel__class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char____]
push 0x44e464
push edi
push 1
mov edx, str.Exception
mov ecx, esi
mov edi, ebx
call fcn.0040d853
mov ecx, dword [esp + 0x2c]
jmp 0x401868
call dword [sym.imp.DeskUpdateCore.dll_public:_static_bool___cdecl_CDeskUpdate::IsSupportedOSVersion_void_]
test al, al
jne 0x401954
call fcn.004157d6
push eax
lea ecx, [esp + 0x28]
call fcn.00401347
push 0x8c
lea ecx, [esp + 0x28]
mov byte [esp + 0x4ac], 8
call fcn.00401f3f
push edi
push 0x30
push dword [esp + 0x2c]
call fcn.00417fda
push dword [esp + 0x24]
mov edx, str.Exception
push 0x44e350
push 0x44e464
push 1
mov ecx, esi
mov edi, ebx
call fcn.0040d853
mov ecx, dword [esp + 0x34]
add esp, 0x10
jmp 0x40186b
lea eax, [esp + 0x84]
push eax
call fcn.004022a1
push str._settings
lea edi, [esp + 0x18]
mov byte [esp + 0x4ac], 9
call fcn.00401b32
mov esi, eax
call fcn.00401b07
cmp eax, 0xffffffff
je 0x40198b
mov byte [esp + 0x27c], 1
push str._setscheduledefault
lea edi, [esp + 0x18]
call fcn.00401b32
mov esi, eax
call fcn.00401b07
cmp eax, 0xffffffff
je 0x4019cd
mov esi, dword [sym.imp.DeskUpdateCore.dll_public:_static_class_CTaskScheduler____cdecl_CTaskScheduler::Instance_void_]
push 1
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CTaskScheduler::SetScheduledEnabled_bool_]
push 0
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CTaskScheduler::SetScheduleInterval_enum_CTaskScheduler::eScheduleInterval_]
call esi
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CTaskScheduler::WriteSchedule_void_]
push 0xd
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x1c]
call fcn.00401b5f
push str._startscanweb
push eax
mov byte [esp + 0x4b0], 0xa
call fcn.00401ae0
neg eax
sbb al, al
mov byte [esp + 0x4a8], 9
mov ecx, dword [esp + 0x1c]
inc al
add ecx, 0xfffffff0
mov byte [esp + 0x13], al
call fcn.0040136f
cmp byte [esp + 0x13], 0
je 0x401a1d
mov byte [esp + 0x27d], 1
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x84]
mov dword [ecx + 0x20], eax
mov ecx, eax
call fcn.0040e9e7
call dword [sym.imp.DeskUpdateCore.dll_public:_static_class_CDeskUpdate____cdecl_CDeskUpdate::Instance_void_]
mov ecx, eax
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CDeskUpdate::Finalize_void_]
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str.DeskUpdate.exe_returned.
call fcn.00401f84
mov ecx, dword [sym.imp.DeskUpdateCore.dll_class_CXmlLog_g_log]
push 3
call dword [sym.imp.DeskUpdateCore.dll_public:_void___thiscall_CXmlLog::Write_enum_eCXmlLogLevel__class_ATL::CStringT_char__class_StrTraitMFC_char__class_ATL::ChTraitsCRT_char____]
mov eax, 0x44e464
push eax
push eax
push 3
mov edx, str.Leave
mov ecx, str.CDeskUpdateGUIApp::InitInstance
mov edi, ebx
call fcn.0040d853
add esp, 0xc
lea eax, [esp + 0x84]
push eax
mov byte [esp + 0x4ac], 5
call fcn.0040244b
cmp dword [esp + 0x2c], 0
je 0x401aa2
push dword [esp + 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
call fcn.0040136f
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff0
call fcn.0040136f
xor eax, eax
mov ecx, dword [esp + 0x4a0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x488]
xor ecx, esp
call fcn.0042b12c
mov esp, ebp
pop ebp
ret