Function at 0x4023f0
Capabilities:
Check mutex on windows
Copy file
Create directory
Get common file path
Set current directory

Disassembly:
sub esp, 0x460
mov eax, dword [0x425164]
xor eax, esp
mov dword [esp + 0x45c], eax
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push edi
push str.Mx3_UninstallerShellIsRunning
push 1
xor ebx, ebx
push ebx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [0x4260c0], eax
call edi
cmp eax, 0xb7
je 0x4028e8
cmp eax, 5
je 0x4028e8
cmp dword [0x4260c0], ebx
je 0x4028e8
push str.Mx3_UninstallerIsRunning
push 1
push ebx
call esi
mov dword [0x4260c4], eax
call edi
cmp eax, 0xb7
je 0x4028d5
cmp eax, 5
je 0x4028d5
mov eax, dword [0x4260c4]
cmp eax, ebx
je 0x4028d5
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call ebp
push 0x103
lea eax, [esp + 0x269]
push ebx
push eax
mov dword [0x4260c4], ebx
mov byte [esp + 0x270], bl
call fcn.00403750
add esp, 0xc
push 0x104
lea ecx, [esp + 0x268]
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x264]
push edx
lea ecx, [esp + 0x30]
call fcn.00402020
push 0xffffffffffffffff
push 0x420388
lea ecx, [esp + 0x34]
call fcn.00401810
push eax
push ebx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x38]
call fcn.004020b0
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x38]
call fcn.00401c70
lea ecx, [esp + 0x10]
call fcn.00401a80
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0x34]
push ecx
mov ecx, 0x425004
call fcn.00401c70
push 0x103
lea edx, [esp + 0x165]
push ebx
push edx
mov byte [esp + 0x16c], bl
call fcn.00403750
add esp, 0xc
lea eax, [esp + 0x160]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x160]
push str.MxUninstall
push ecx
call fcn.00401310
add esp, 8
push ebx
lea edx, [esp + 0x164]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea eax, [esp + 0x160]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x84]
call fcn.00401f40
push str.MxTool.dll
lea ecx, [esp + 0x84]
call fcn.00402080
lea edx, [esp + 0x160]
push edx
lea ecx, [esp + 0xbc]
call fcn.00402020
push str.MxTool.dll
lea ecx, [esp + 0xbc]
call fcn.00402080
mov ecx, dword [esp + 0xbc]
mov edi, 0x10
cmp dword [esp + 0xd0], edi
jae 0x4025d7
lea ecx, [esp + 0xbc]
mov eax, dword [esp + 0x84]
cmp dword [esp + 0x98], edi
jae 0x4025ee
lea eax, [esp + 0x84]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
push ebx
push ecx
push eax
call esi
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x68]
call fcn.00401f40
push str.Maxzlib.dll
lea ecx, [esp + 0x68]
call fcn.00402080
lea ecx, [esp + 0x160]
push ecx
lea ecx, [esp + 0x12c]
call fcn.00402020
push str.Maxzlib.dll
lea ecx, [esp + 0x12c]
call fcn.00402080
mov ecx, dword [esp + 0x12c]
cmp dword [esp + 0x140], edi
jae 0x402651
lea ecx, [esp + 0x12c]
mov eax, dword [esp + 0x68]
cmp dword [esp + 0x7c], edi
jae 0x40265f
lea eax, [esp + 0x68]
push ebx
push ecx
push eax
call esi
lea edx, [esp + 0x2c]
push edx
lea ecx, [esp + 0xf4]
call fcn.00401f40
push str.MxUI.dll
lea ecx, [esp + 0xf4]
call fcn.00402080
lea eax, [esp + 0x160]
push eax
lea ecx, [esp + 0xa0]
call fcn.00402020
push str.MxUI.dll
lea ecx, [esp + 0xa0]
call fcn.00402080
mov ecx, dword [esp + 0xa0]
cmp dword [esp + 0xb4], edi
jae 0x4026c2
lea ecx, [esp + 0xa0]
mov eax, dword [esp + 0xf4]
cmp dword [esp + 0x108], edi
jae 0x4026d9
lea eax, [esp + 0xf4]
push ebx
push ecx
push eax
call esi
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x4c]
call fcn.00401f40
push 0xffffffffffffffff
push 0x420388
lea ecx, [esp + 0x50]
call fcn.00401810
push eax
push ebx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x54]
call fcn.004020b0
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x54]
call fcn.00401c70
lea ecx, [esp + 0x10]
call fcn.00401a80
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x50]
push eax
mov ecx, 0x425004
call fcn.00401c70
push str.Language
lea ecx, [esp + 0x4c]
call fcn.00402080
lea ecx, [esp + 0x160]
push ecx
lea ecx, [esp + 0x148]
call fcn.00402020
push 0x103
lea edx, [esp + 0x36d]
push ebx
push edx
mov byte [esp + 0x374], bl
call fcn.00403750
mov eax, dword [esp + 0x58]
add esp, 0xc
cmp dword [esp + 0x60], edi
jae 0x402781
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x36c]
push eax
call fcn.00401310
mov eax, dword [esp + 0x150]
add esp, 8
cmp dword [esp + 0x15c], edi
jae 0x4027a9
lea eax, [esp + 0x148]
push eax
lea ecx, [esp + 0x36c]
push ecx
call fcn.004020f0
add esp, 8
lea edx, [esp + 0x160]
push edx
lea ecx, [esp + 0xd8]
call fcn.00402020
push str.MxHttpRq.dll
lea ecx, [esp + 0xd8]
call fcn.00402080
mov eax, dword [esp + 0xd8]
cmp dword [esp + 0xec], edi
jae 0x4027f6
lea eax, [esp + 0xd8]
push eax
push 0x6d
call fcn.004011b0
add esp, 8
lea eax, [esp + 0x160]
push eax
lea ecx, [esp + 0x110]
call fcn.00402020
push str.MxUninstall.exe
lea ecx, [esp + 0x110]
call fcn.00402080
mov eax, dword [esp + 0x110]
cmp dword [esp + 0x124], edi
jae 0x40283d
lea eax, [esp + 0x110]
push eax
push 0x6c
call fcn.00401670
mov ecx, dword [0x4260c0]
add esp, 8
push ecx
call ebp
lea ecx, [esp + 0x10c]
mov dword [0x4260c0], ebx
call fcn.00401a80
lea ecx, [esp + 0xd4]
call fcn.00401a80
lea ecx, [esp + 0x144]
call fcn.00401a80
lea ecx, [esp + 0x48]
call fcn.00401a80
lea ecx, [esp + 0x9c]
call fcn.00401a80
lea ecx, [esp + 0xf0]
call fcn.00401a80
lea ecx, [esp + 0x128]
call fcn.00401a80
lea ecx, [esp + 0x64]
call fcn.00401a80
lea ecx, [esp + 0xb8]
call fcn.00401a80
lea ecx, [esp + 0x80]
call fcn.00401a80
lea ecx, [esp + 0x2c]
call fcn.00401a80
pop ebp
jmp 0x4028e8
mov edx, dword [0x4260c0]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x4260c0], ebx
mov ecx, dword [esp + 0x468]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00403732
add esp, 0x460
ret 0x10