Function at 0x4018e0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x16d74
call fcn.00446fd0
mov eax, dword [0x469090]
xor eax, esp
mov dword [esp + 0x16d70], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
xor ebx, ebx
push 0x18
mov edi, str.ZonaInstall.log
mov byte [esp + 0x14], bl
mov dword [esp + 0xe394], ebx
call fcn.004372a1
add esp, 4
cmp eax, ebx
je 0x402064
mov dword [esp + 0xe38c], eax
mov dword [eax], eax
mov eax, dword [esp + 0xe38c]
mov dword [eax + 4], eax
mov eax, dword [esp + 0xe38c]
mov dword [eax + 8], eax
mov ecx, dword [esp + 0xe38c]
mov al, 1
mov byte [ecx + 0x14], al
mov edx, dword [esp + 0xe38c]
push esi
lea ecx, [esp + 0xe38c]
mov byte [edx + 0x15], al
call fcn.00406d80
push 0x3e8
lea eax, [esp + 0x165ac]
push eax
push ebx
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameW]
test eax, eax
je 0x40199b
push 0x104
lea ecx, [esp + 0x163a4]
push ecx
lea edx, [esp + 0x165b0]
push edx
call dword [sym.imp.KERNEL32.DLL_GetShortPathNameW]
mov ebx, str._asService
lea eax, [esp + 0xe388]
call fcn.00407030
test al, al
je 0x401a9e
mov ebx, str._logPath
lea eax, [esp + 0xe388]
call fcn.004070d0
test eax, eax
je 0x4019dc
lea eax, [esp + 0xe388]
call fcn.004070d0
mov edi, eax
mov byte [esp + 0x10], 1
mov eax, dword [esp + 0x10]
push eax
lea ebx, [esp + 0x33c]
call fcn.0040c880
mov ecx, ebx
push ecx
lea ecx, [esp + 0xe38c]
call fcn.00406f40
push 0x4586a4
lea edx, [esp + 0x548]
push 0x458e0c
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0x3e8
call dword [sym.imp.KERNEL32.DLL_Sleep]
lea eax, [esp + 0x163a0]
push eax
mov edi, ebx
call fcn.004127e0
mov dword [esp + 0x28], eax
mov ecx, ebx
mov edx, ebx
lea eax, [esp + 0x20]
lea esi, [esp + 0x10]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], vtable.ZonaCommandFactory.0
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
call fcn.00405310
mov eax, dword [esp + 0xe38c]
mov ecx, dword [eax]
push eax
push ecx
lea esi, [esp + 0x18]
lea eax, [esp + 0xe390]
call fcn.00402bf0
mov ecx, dword [esp + 0xe38c]
push ecx
call fcn.00437245
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x16d70]
xor ecx, esp
call fcn.0043722b
mov esp, ebp
pop ebp
ret 0x10
lea edx, [esp + 0xec]
push edx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
push str.ZonaInstall.log
lea eax, [esp + 0xf0]
push eax
mov ecx, eax
push 0x459618
push ecx
call edi
push 0x459624
lea edx, [esp + 0x308]
push 0x458e0c
push edx
call edi
add esp, 0x1c
lea eax, [esp + 0xe8]
push eax
lea ecx, [esp + 0xe38c]
call fcn.00406f40
push str.zonaWeb
lea ecx, [esp + 0x5bc]
push 0x100
push ecx
call fcn.0043782b
lea edx, [esp + 0xf4]
add esp, 0xc
mov dword [esp + 0x5b4], 0
mov dword [esp + 0x7b8], edx
call fcn.00402a90
mov edi, eax
lea ebx, [esp + 0x5b0]
mov dword [esp + 0x10], edi
call fcn.00401760
test eax, eax
je 0x401bf7
xor ecx, ecx
mov eax, 0x4586be
movzx edx, word [eax - 2]
mov esi, ecx
shl esi, 5
sub esi, ecx
add edx, esi
mov ecx, edx
shl ecx, 5
sub ecx, edx
movzx edx, word [eax]
add ecx, edx
mov edx, ecx
shl edx, 5
sub edx, ecx
movzx ecx, word [eax + 2]
add edx, ecx
mov ecx, edx
shl ecx, 5
sub ecx, edx
movzx edx, word [eax + 4]
add ecx, edx
mov edx, ecx
shl edx, 5
sub edx, ecx
movzx ecx, word [eax + 6]
add eax, 0xa
add ecx, edx
cmp eax, str.___START___
jl 0x401b52
lea edx, [esp + 0x10]
mov eax, edi
mov dword [esp + 0x10], ecx
call fcn.0040d2b0
mov eax, dword [eax]
test eax, eax
jne 0x401bb6
mov eax, str.INSTALLER_RUNNING_ALREADY
push 0x10
push 0
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea edi, [esp + 0x5b0]
call fcn.00401680
lea esi, [esp + 0x10]
mov eax, dword [esp + 0xe38c]
mov ecx, dword [eax]
push eax
push ecx
lea eax, [esp + 0xe390]
call fcn.00402bf0
mov edx, dword [esp + 0xe38c]
push edx
jmp 0x401a7d
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
push str.___START___
push str.INFO
lea ecx, [esp + 0xf0]
call fcn.0040c980
mov eax, esi
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401c20
sub eax, edx
sar eax, 1
je 0x401c59
push str.Start_args:
push str.INFO
lea ecx, [esp + 0xf0]
call fcn.0040c980
push esi
push str.INFO
lea ecx, [esp + 0xf0]
call fcn.0040c980
lea eax, [esp + 0x163a0]
push eax
lea edi, [esp + 0xec]
call fcn.004127e0
push eax
mov ecx, edi
push ecx
push esi
lea edx, [esp + 0x7cc]
push edx
call fcn.0040f480
xor eax, eax
mov word [esp + 0xdb84], ax
xor ecx, ecx
xor edx, edx
mov word [esp + 0xc384], ax
mov esi, vtable.ZonaInstallContext.0
mov ebx, str._version
lea eax, [esp + 0x2038]
mov dword [esp + 0x7c0], esi
mov dword [esp + 0xc380], 0
mov word [esp + 0xd384], cx
mov word [esp + 0xcb84], dx
call fcn.00407030
test al, al
je 0x401d01
lea edi, [esp + 0x7c0]
call fcn.00410350
mov ecx, edi
push ecx
mov dword [esp + 0x7c4], esi
call fcn.0041ce10
lea edi, [esp + 0x5b0]
call fcn.00401680
lea esi, [esp + 0x1c]
jmp 0x401bd3
lea ecx, [esp + 0x7c0]
call fcn.0041e0a0
lea edi, [esp + 0x7c0]
call fcn.004101d0
mov edi, dword [esp + 0x10]
push eax
mov ebx, edi
lea ecx, [esp + 0x7c4]
call fcn.004111b0
add esp, 4
test al, al
jne 0x401dc1
push 0x80000
call fcn.0043723a
mov edi, eax
xor eax, eax
mov word [edi], ax
add esp, 4
cmp dword [esp + 0xa0fc], 1
mov eax, str.reinstallCancel
je 0x401d5f
mov eax, str.installCancel
push 0
push eax
push edi
lea ecx, [esp + 0x7cc]
push ecx
call fcn.00410f30
push edi
lea ebx, [esp + 0x7c4]
call fcn.00411360
mov edx, ebx
push edx
mov dword [esp + 0x7c4], esi
call fcn.0041ce10
lea edi, [esp + 0x5b0]
call fcn.00401680
lea eax, [esp + 0xe388]
push eax
call fcn.00402090
mov eax, 3
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x16d70]
xor ecx, esp
call fcn.0043722b
mov esp, ebp
pop ebp
ret 0x10
xor eax, eax
lea ecx, [esp + 0x7c0]
mov dword [esp + 0x3c], eax
mov word [esp + 0x41], ax
mov byte [esp + 0x40], al
mov dword [esp + 0x44], eax
mov eax, ecx
mov dword [esp + 0x34], vtable.InstallScenario.0
mov dword [esp + 0x38], ecx
call fcn.004113f0
mov ebx, str._silent
lea eax, [esp + 0x2038]
mov dword [esp + 0x34], vtable.ZonaInstallScenario.0
call fcn.00407030
test al, al
jne 0x401faf
call fcn.0040cba0
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
push edx
push ecx
push edi
lea edx, [esp + 0xf4]
push edx
lea ebx, [esp + 0x348]
call fcn.00402a20
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x11
call esi
push 0x10
mov ebx, eax
call esi
mov ecx, eax
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
sub eax, 0xdf
push 0x1bf
push eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub eax, 0xfa
push eax
mov edx, 0x1f4
lea eax, [esp + 0x344]
lea esi, [esp + 0xc8]
call fcn.00403740
xor edi, edi
push edi
call fcn.004037a0
lea eax, [esp + 0x7c0]
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x338]
lea eax, [esp + 0x34]
mov dword [esp + 0x30], ecx
push eax
lea ecx, [esp + 0x7c4]
lea edx, [esp + 0x5a0]
push ecx
lea eax, [esp + 0x28]
lea esi, [esp + 0x50]
mov dword [esp + 0x28], vtable.SimpleWizardHeader.0
mov dword [esp + 0x18], vtable.LicenseResourceProviderImpl.0
mov dword [esp + 0x1c], edx
call fcn.0040e040
lea ecx, [esp + 0xbc]
mov dword [esp + 0xa0], edi
mov dword [esp + 0x9c], edi
lea edx, [esp + 0x10]
lea eax, [esp + 0x7c0]
push ecx
mov ebx, vtable.ZonaInstallerWizard.2.0
mov edi, vtable.ZonaInstallerWizard.3.0
mov esi, vtable.ZonaInstallerWizard.4.0
lea ecx, [esp + 0x4c]
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], eax
mov dword [esp + 0x4c], vtable.ZonaInstallerWizard.0
mov dword [esp + 0x50], vtable.ZonaInstallerWizard.1.0
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x9c], esi
call fcn.00403220
lea edx, [esp + 0x84]
lea eax, [esp + 0x4c]
lea ecx, [esp + 0xbc]
mov dword [esp + 0x3c], edx
call fcn.00403830
mov dword [esp + 0x98], esi
mov dword [esp + 0x48], vtable.ZonaInstallerWizard.0
mov dword [esp + 0x4c], vtable.ZonaInstallerWizard.1.0
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], edi
lea esi, [esp + 0x48]
call fcn.00419470
mov eax, dword [esp + 0x5a0]
mov ecx, dword [eax]
push eax
push ecx
lea esi, [esp + 0x24]
lea eax, [esp + 0x5a4]
call fcn.00402bf0
mov eax, dword [esp + 0x5a0]
push eax
call fcn.00437245
add esp, 4
jmp 0x401fd1
lea ecx, [esp + 0xe8]
push ecx
lea edx, [esp + 0x7c4]
push edx
lea eax, [esp + 0x3c]
lea esi, [esp + 0x28]
call fcn.00412360
call fcn.004123d0
mov esi, dword [esp + 0x7d4]
cmp esi, dword [esp + 0x7d8]
je 0x40200b
mov ecx, dword [esi]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
lea edx, [esp + 0xe8]
push edx
push 0x100
lea edx, [esp + 0x340]
push edx
call eax
add esi, 4
cmp esi, dword [esp + 0x7d8]
jne 0x401fe1
mov esi, dword [esp + 0x1fb0]
lea ecx, [esp + 0x7c0]
push ecx
mov dword [esp + 0x38], vtable.InstallScenario.0
mov dword [esp + 0x7c4], 0x45c54c
call fcn.0041ce10
lea edi, [esp + 0x5b0]
call fcn.00401680
lea edx, [esp + 0xe388]
push edx
call fcn.00402090
mov ecx, dword [esp + 0x16d7c]
pop edi
mov eax, esi
pop esi
pop ebx
xor ecx, esp
call fcn.0043722b
mov esp, ebp
pop ebp
ret 0x10
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x24]
mov dword [esp + 0x14], ebx
call fcn.004373a9
push 0x462f60
lea ecx, [esp + 0x24]
push ecx
mov dword [esp + 0x28], vtable.std::bad_alloc.0
call fcn.0043948f
int3