Function at 0x40a391
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Get common file path
Set current directory
Terminate process

Disassembly:
sub esp, 0x150
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push 0x425040
mov dword [esp + 0x18], ebx
call fcn.0040c15a
mov ebp, dword [sym.imp.KERNEL32.dll_ExitProcess]
pop ecx
test eax, eax
jne 0x40a3ba
push 3
call ebp
mov eax, dword [0x425050]
mov edi, 0x104
mov esi, 0x425538
push edi
push esi
push ebx
mov dword [0x425528], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp eax, 1
jae 0x40a3e4
or eax, 0xffffffff
jmp 0x40a8f7
push esi
call dword [sym.imp.USER32.dll_CharLowerA]
push str.wcmdmgr.exe
push esi
call dword [sym.imp.MSVCRT.dll_strstr]
pop ecx
test eax, eax
pop ecx
je 0x40a407
mov dword [0x425528], 1
mov eax, dword [esp + 0x164]
mov byte [0x4252d4], bl
mov byte [0x4252a8], bl
mov byte [0x4252be], bl
mov byte [0x4252fe], bl
mov dword [0x425304], eax
call dword [sym.imp.USER32.dll_GetActiveWindow]
push str.wtinstallMutex_1.5.1
push 1
push ebx
mov dword [0x42552c], eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 0xb7
jne 0x40a477
cmp dword [0x425528], ebx
jne 0x40a473
push 0x10
push str.Installation_Error
push str.Installer_is_already_running.__Please_finish_that_install_first__or_reboot.
push dword [0x42552c]
call esi
push 2
call ebp
call fcn.0040c34f
test eax, eax
je 0x40a484
push 2
call ebp
push 1
push 0x4251a0
call fcn.004025e2
push 1
push 0x425070
call fcn.0040276b
add esp, 0x10
push 0x425420
push edi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
call fcn.0040c3dd
test eax, eax
jne 0x40a4b8
push 2
call ebp
push 0x40
pop ebp
push 0x42506c
push 0x420340
mov dword [0x42506c], ebp
call fcn.0040b1b2
pop ecx
mov edi, str.File_Error
test eax, eax
pop ecx
jne 0x40a515
cmp dword [0x42506c], ebp
jne 0x40a4fa
cmp dword [0x425528], ebx
jne 0x40a4f6
push 0x10
push edi
push str.This_package_contains_too_many_sections._n
push ebx
call esi
push 4
jmp 0x40a50f
cmp dword [0x425528], ebx
jne 0x40a50d
push 0x10
push edi
push str.This_file_was_either_improperly_generated_or_has_become_corrupt_n_n
push ebx
call esi
push 5
call dword [sym.imp.KERNEL32.dll_ExitProcess]
cmp dword [0x42506c], ebx
mov dword [esp + 0x10], ebx
jle 0x40a66a
mov eax, dword [esp + 0x10]
imul eax, eax, 0x134
add eax, 0x420340
push eax
mov dword [0x425530], eax
call fcn.0040b30b
test eax, eax
pop ecx
jne 0x40a55f
cmp dword [0x425528], ebx
jne 0x40a557
push 0x10
push edi
push str.This_file_was_either_improperly_generated_or_has_become_corrupt_n_n
push ebx
call esi
push 6
call dword [sym.imp.KERNEL32.dll_ExitProcess]
cmp dword [esp + 0x10], ebx
jne 0x40a64a
call fcn.0040314a
test eax, eax
jne 0x40a64a
mov eax, dword [0x425530]
mov eax, dword [eax + 0xdc]
cmp eax, ebx
jne 0x40a58a
mov eax, str.In_order_to_run_this_installation__you_must_have_Administrator_or_Power_User_permissions.__Please_have_someone_with_the_proper_permissions_run_this_installation_for_you.
push 0x10
push str.Installation_Failed
push eax
push ebx
call esi
push 0x46
jmp 0x40a6f6
sub esp, 0x10
mov byte [0x41e774], bl
mov ecx, esp
mov dword [esp + 0x28], esp
push str.ResourceCkArr
call fcn.0040d12a
mov eax, dword [0x425530]
push dword [eax + 0x130]
call fcn.0040143b
add esp, 0x14
cmp eax, ebx
je 0x40a656
push eax
lea ecx, [esp + 0x40]
call fcn.00403648
mov eax, dword [0x425530]
add eax, 0x88
cmp dword [eax], ebx
je 0x40a627
push dword [eax]
lea ecx, [esp + 0x20]
call fcn.0040d12a
push 0x41e80c
lea ecx, [esp + 0x30]
call fcn.0040d12a
lea eax, [esp + 0x1c]
push ebx
push eax
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x48]
call fcn.00403c74
lea ecx, [esp + 0x2c]
call fcn.00401a7a
lea ecx, [esp + 0x1c]
call fcn.00401a7a
lea ecx, [esp + 0x3c]
call fcn.00404588
lea ecx, [esp + 0x3c]
call fcn.00404144
test al, al
lea ecx, [esp + 0x3c]
je 0x40a6ef
call fcn.00403b1b
cmp byte [0x41e774], bl
jne 0x40a59c
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, dword [0x42506c]
jl 0x40a525
call fcn.004080bd
push 0x425054
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
cmp dword [0x42506c], ebx
mov dword [esp + 0x10], ebx
jle 0x40a8ba
mov dword [esp + 0x18], 0x420340
mov edi, str.Installation_Failed
mov eax, dword [esp + 0x18]
mov dword [0x425530], eax
call fcn.0040a904
mov eax, dword [0x425530]
push str.UPDATER
mov dword [0x42530c], ebx
mov dword [0x425310], ebx
push dword [eax + 0xbc]
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40a6fc
mov eax, dword [0x425530]
cmp dword [eax + 0x38], 0xffffffff
jle 0x40a723
push dword [eax + 0xb0]
push 0x4251a0
call fcn.0040aff0
pop ecx
mov dword [0x42530c], eax
pop ecx
jmp 0x40a723
call fcn.00403b1b
push 8
pop eax
jmp 0x40a8f7
push dword [0x425530]
call fcn.0040b087
cmp eax, 0xffffffff
pop ecx
mov dword [esp + 0x14], eax
je 0x40a8ba
xor ecx, ecx
cmp eax, 1
sete cl
mov dword [0x425310], ecx
cmp dword [0x42530c], ebx
jne 0x40a737
cmp dword [0x425310], ebx
je 0x40a87d
push dword [0x425530]
call fcn.0040bce6
test eax, eax
pop ecx
je 0x40a89b
mov eax, dword [0x425530]
cmp dword [eax + 0x20], ebx
jne 0x40a843
cmp dword [eax + 0x24], ebx
jne 0x40a843
cmp dword [eax + 0x28], ebx
jne 0x40a843
mov dword [0x42030c], ebx
push ebx
call fcn.0040aceb
mov ebp, eax
cmp ebp, ebx
mov dword [esp + 0x14], ebp
je 0x40a86a
cmp dword [0x425528], ebx
jne 0x40a86a
mov eax, dword [0x425530]
cmp ebp, 4
jne 0x40a7ab
mov ecx, dword [eax + 0xd4]
cmp ecx, ebx
je 0x40a7ab
push 5
push edi
push ecx
jmp 0x40a808
cmp dword [0x420318], 0x3c
jne 0x40a7d7
mov ecx, 0x425178
call fcn.0040cf9a
cmp eax, ebx
jne 0x40a7d2
push dword [0x42031c]
mov ecx, 0x425178
call fcn.0040cf5a
push 5
push edi
jmp 0x40a807
cmp dword [eax + 0xd8], ebx
je 0x40a7e9
cmp ebp, 0x32
je 0x40a81b
cmp ebp, 0x33
je 0x40a81b
cmp ebp, 4
je 0x40a7fd
cmp ebp, 6
je 0x40a7fd
cmp ebp, 2
je 0x40a7fd
cmp ebp, 3
jne 0x40a825
push 5
push edi
push ebp
call fcn.00409ea4
pop ecx
push eax
push dword [0x42552c]
call esi
cmp eax, 4
je 0x40a771
jmp 0x40a86a
push ebx
push edi
push dword [eax + 0xd8]
jmp 0x40a839
cmp ebp, 0x33
jne 0x40a82f
cmp dword [eax + 0x2c], ebx
jne 0x40a86a
push ebx
push edi
push ebp
call fcn.00409ea4
pop ecx
push eax
push dword [0x42552c]
call esi
jmp 0x40a86a
push ebx
push 0x408c5f
push dword [0x42552c]
push 0x65
push dword [0x425304]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
mov dword [esp + 0x14], eax
call fcn.00408a9e
mov ebp, dword [esp + 0x14]
call fcn.0040c454
mov ecx, 0x425178
call fcn.0040cf42
cmp ebp, ebx
jne 0x40a8ba
inc dword [esp + 0x10]
add dword [esp + 0x18], 0x134
mov eax, dword [esp + 0x10]
cmp eax, dword [0x42506c]
jl 0x40a697
jmp 0x40a8ba
cmp dword [0x425528], ebx
jne 0x40a8b2
push 0x10
push str.File_Extraction_Error
push str.This_file_was_either_improperly_generated_or_has_become_corrupt_n_nTry_getting_another_one
push ebx
call esi
mov dword [esp + 0x14], 7
push 0x425054
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x4251a0
call esi
cmp dword [0x425308], ebx
je 0x40a8e1
push str._launch__wakeup
jmp 0x40a8e6
push str._launch
call fcn.0040801d
pop ecx
push 0x425420
call esi
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x150
ret 0x10