Function at 0x40ec10
Capabilities:
Get common file path

Disassembly:
mov eax, 0x1f28
call fcn.00441db0
mov eax, dword [0x514d34]
xor eax, esp
mov dword [esp + 0x1f24], eax
mov eax, dword [esp + 0x1f30]
push ebx
mov ebx, dword [esp + 0x1f38]
push ebp
mov ebp, dword [esp + 0x1f34]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x1f40]
push edi
movzx edi, word [esp + 0x1f4c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
call fcn.00410b95
test ax, ax
je 0x40eca2
push 1
call fcn.00410c4f
pop ecx
test ax, ax
jne 0x40eca2
cmp word [esp + 0x1f48], ax
jne 0x40ec9b
mov ecx, 0x4c060e
test di, di
mov eax, 0x4c3f44
push ebx
cmove eax, ecx
push eax
push str.Cannot__str_install__str____Failed_to_select_INSTALL_mode
call fcn.00413979
add esp, 0xc
xor eax, eax
jmp 0x40f43d
push esi
lea ecx, [esp + 0x34]
call fcn.004141ab
mov bx, word [esp + 0x1f4c]
xor esi, esi
test bx, bx
jne 0x40ed11
push dword [esp + 0x14]
mov eax, str.Installing
lea ecx, [esp + 0x20]
test di, di
mov ebx, str.Uninstalling
cmove ebx, eax
push ebx
push str._str___str_
call fcn.00408368
push eax
call fcn.00408abf
add esp, 0x10
cmp dword [eax + 0x14], 0x10
jb 0x40ecef
mov eax, dword [eax]
push eax
push esi
push esi
push ebx
push esi
lea ecx, [esp + 0x48]
call fcn.0041421a
push esi
push 1
lea ecx, [esp + 0x24]
call fcn.0040758b
mov bx, word [esp + 0x1f4c]
test ebp, ebp
jne 0x40ed82
push 0x519
lea eax, [esp + 0x1a1c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x40ed7b
test bx, bx
jne 0x40f430
lea ecx, [esp + 0x34]
call fcn.004141f0
lea ecx, [esp + 0x1c]
call fcn.00408368
lea eax, [esp + 0x1c]
push esi
push eax
call fcn.0040f956
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x40ed5d
mov eax, dword [eax]
push eax
push str.Cannot_determine_executable_name____str_
call fcn.00413979
pop ecx
pop ecx
push esi
push 1
lea ecx, [esp + 0x24]
call fcn.0040758b
jmp 0x40f430
lea ebp, [esp + 0x1a18]
lea eax, [esp + 0xac4]
push eax
push ebp
call fcn.0040dc1c
cmp byte [ebp], 0
pop ecx
pop ecx
jne 0x40eda6
lea eax, [esp + 0xac4]
push eax
call fcn.0045cbb5
pop ecx
lea eax, [esp + 0x398]
push eax
push esi
push esi
push 0x8026
push esi
call dword [sym.imp.SHFOLDER.dll_SHGetFolderPathA]
test eax, eax
jns 0x40edd9
test bx, bx
jne 0x40f430
push str.Cannot_determine_programs_folder
call fcn.00413979
pop ecx
jmp 0x40f430
lea eax, [esp + 0x398]
push str.Axis_FirstDiplomat_
push eax
call fcn.00446fa0
lea eax, [esp + 0x3a0]
push eax
lea eax, [esp + 0xad0]
push eax
call fcn.00447146
add esp, 0x10
test eax, eax
je 0x40f098
test di, di
jne 0x40ee81
lea eax, [esp + 0x398]
push eax
call fcn.0040c454
pop ecx
test ax, ax
jne 0x40ee81
lea eax, [esp + 0x398]
push eax
call fcn.0045c624
movzx eax, ax
pop ecx
test ax, ax
je 0x40ee81
mov ecx, 0xa2b
cmp ax, cx
je 0x40ee81
test bx, bx
jne 0x40ee81
lea ecx, [esp + 0x1c]
call fcn.00408368
lea eax, [esp + 0x1c]
push esi
push eax
call fcn.0040f956
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x40ee66
mov eax, dword [eax]
push eax
lea eax, [esp + 0x39c]
push eax
push str.Failed_to_create_folder__str_____str_
call fcn.00413979
add esp, 0xc
jmp 0x40ed6a
lea eax, [esp + 0xac4]
push eax
call fcn.00447230
lea ecx, [esp + 0xac8]
add eax, ecx
push eax
push ebp
call fcn.0040dc9b
push esi
push esi
lea eax, [esp + 0x8c8]
push eax
push esi
push esi
push esi
push ebp
call fcn.0040d952
add esp, 0x28
cmp byte [esp + 0x8b4], 0
jne 0x40eed2
lea eax, [esp + 0xac4]
push str..exe
push eax
call fcn.00446fa0
pop ecx
pop ecx
push dword [esp + 0x10]
lea eax, [esp + 0x39c]
push eax
call fcn.00446fa0
lea eax, [esp + 0x3a0]
push eax
call fcn.0040d5d3
add esp, 0xc
test ax, ax
je 0x40f035
push esi
push esi
lea eax, [esp + 0x8bc]
push eax
push esi
push esi
lea eax, [esp + 0x3ac]
push esi
push eax
call fcn.0040d952
add esp, 0x1c
test di, di
je 0x40efa6
lea eax, [esp + 0x8b4]
push 0x4c4044
push eax
call fcn.00447146
pop ecx
pop ecx
test eax, eax
jne 0x40efa6
lea eax, [esp + 0x398]
push eax
push 0x4c4048
call fcn.0045ba8e
pop ecx
pop ecx
test eax, eax
jne 0x40ef62
lea eax, [esp + 0x398]
push eax
call fcn.0043b9dd
pop ecx
jmp 0x40efa6
call fcn.00410c0b
test ax, ax
je 0x40efa6
lea eax, [esp + 0x398]
push eax
push str.regsvr32.exe__u__s__str_
lea ecx, [esp + 0x24]
call fcn.00408368
push eax
call fcn.00408abf
add esp, 0xc
cmp dword [eax + 0x14], 0x10
jb 0x40ef93
mov eax, dword [eax]
push eax
call fcn.0040ebac
pop ecx
push esi
push 1
lea ecx, [esp + 0x24]
call fcn.0040758b
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x39c]
push eax
call fcn.0040d3c8
pop ecx
pop ecx
test ax, ax
jne 0x40efe0
mov ax, word [esp + 0x10]
test al, 1
je 0x40efe0
movzx eax, ax
and eax, 0xfffe
push eax
lea eax, [esp + 0x39c]
push eax
call fcn.0040d420
pop ecx
pop ecx
lea eax, [esp + 0x398]
push eax
call fcn.0040cc97
movzx ebx, ax
pop ecx
test bx, bx
je 0x40f035
push esi
call fcn.00410c4f
pop ecx
cmp word [esp + 0x1f4c], si
jne 0x40f430
lea ecx, [esp + 0x34]
call fcn.004141f0
push ebx
call fcn.0040cb9c
push eax
lea eax, [esp + 0x3a0]
push eax
push str.Failed_to_delete_previous_copy_of__str_____str_
call fcn.00413979
add esp, 0x10
jmp 0x40f430
test di, di
jne 0x40f098
push 0x4000
lea eax, [esp + 0x39c]
push eax
push ebp
call fcn.0045cd47
movzx ebx, ax
add esp, 0xc
test bx, bx
je 0x40f098
push esi
call fcn.00410c4f
pop ecx
cmp word [esp + 0x1f4c], si
jne 0x40f430
lea ecx, [esp + 0x34]
call fcn.004141f0
push ebx
call fcn.0040cb9c
push eax
lea eax, [esp + 0x3a0]
push eax
push ebp
push str.Failed_to_copy__str__to__str_____str_
call fcn.00413979
add esp, 0x14
jmp 0x40f430
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x40f0a9
push edi
push ebx
call fcn.0040e4df
pop ecx
pop ecx
push esi
push esi
lea eax, [esp + 0x9c4]
push eax
push esi
push esi
lea eax, [esp + 0x3ac]
push esi
push eax
call fcn.0040d952
add esp, 0x1c
test di, di
jne 0x40f153
lea eax, [esp + 0x9bc]
push 0x4c4044
push eax
call fcn.00447146
pop ecx
pop ecx
test eax, eax
jne 0x40f153
lea eax, [esp + 0x398]
push eax
push 0x4c4048
call fcn.0045ba8e
pop ecx
pop ecx
test eax, eax
jne 0x40f10f
lea eax, [esp + 0x398]
push eax
call fcn.0043b9a6
pop ecx
jmp 0x40f153
call fcn.00410c0b
test ax, ax
je 0x40f153
lea eax, [esp + 0x398]
push eax
push str.regsvr32.exe__s__str_
lea ecx, [esp + 0x24]
call fcn.00408368
push eax
call fcn.00408abf
add esp, 0xc
cmp dword [eax + 0x14], 0x10
jb 0x40f140
mov eax, dword [eax]
push eax
call fcn.0040ebac
pop ecx
push esi
push 1
lea ecx, [esp + 0x24]
call fcn.0040758b
test ebx, ebx
je 0x40f39d
push 0x4c3508
push ebx
call fcn.00447146
pop ecx
pop ecx
test eax, eax
jne 0x40f39d
lea eax, [esp + 0x11ec]
test di, di
push eax
lea eax, [esp + 0x39c]
cmove eax, ebp
push eax
call fcn.0040dc1c
lea eax, [esp + 0x11f4]
push 0x4c40d8
push eax
call fcn.00446fa0
add esp, 0x10
lea ecx, [esp + 0x377]
call fcn.00408368
lea eax, [esp + 0x134]
push eax
lea eax, [esp + 0x11f0]
push eax
push 1
push 0x10
push eax
call fcn.0045cb1b
add esp, 0x14
jmp 0x40f385
cmp dword [esp + 0x38b], 0x10
lea eax, [esp + 0x377]
cmovae eax, dword [esp + 0x377]
cmp byte [eax], 0x2e
je 0x40f36e
lea eax, [esp + 0x1708]
push eax
lea eax, [esp + 0x11f0]
push eax
call fcn.0045d15a
lea eax, [esp + 0x11f4]
push 0x5c
push eax
call fcn.0040970e
lea eax, [esp + 0x1718]
push eax
lea eax, [esp + 0x1200]
push eax
call fcn.00446fa0
lea eax, [esp + 0x1204]
push str..axf
push eax
call fcn.00446fa0
lea eax, [esp + 0x120c]
push eax
call fcn.0040d5d3
add esp, 0x24
test ax, ax
je 0x40f36e
lea eax, [esp + 0xcd0]
push eax
lea eax, [esp + 0x39c]
push eax
call fcn.0040dc1c
lea eax, [esp + 0x1710]
push eax
lea eax, [esp + 0xcdc]
push eax
call fcn.00446fa0
lea eax, [esp + 0xce0]
push 0x5c
push eax
call fcn.0040970e
add esp, 0x18
test di, di
jne 0x40f2b4
lea eax, [esp + 0xcd0]
push eax
call fcn.0040c454
pop ecx
test ax, ax
jne 0x40f2b4
lea eax, [esp + 0xcd0]
push eax
call fcn.0045cbdc
pop ecx
lea eax, [esp + 0xcd0]
push eax
call fcn.00447230
lea ecx, [esp + 0xcd4]
add eax, ecx
push eax
lea eax, [esp + 0x11f4]
push eax
call fcn.0045d15a
lea eax, [esp + 0xcdc]
push eax
call fcn.0040d5d3
add esp, 0x10
test ax, ax
je 0x40f335
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0xcd4]
push eax
call fcn.0040d3c8
pop ecx
pop ecx
test ax, ax
jne 0x40f327
mov ax, word [esp + 0x10]
test al, 1
je 0x40f327
movzx eax, ax
and eax, 0xfffe
push eax
lea eax, [esp + 0xcd4]
push eax
call fcn.0040d420
pop ecx
pop ecx
lea eax, [esp + 0xcd0]
push eax
call fcn.0040cc97
pop ecx
lea eax, [esp + 0xcd0]
test di, di
je 0x40f358
push eax
call fcn.0040dcf0
lea eax, [esp + 0xcd4]
push eax
call fcn.0045cc9a
pop ecx
pop ecx
jmp 0x40f36e
push 0x4000
push eax
lea eax, [esp + 0x11f4]
push eax
call fcn.0045cd47
add esp, 0xc
lea eax, [esp + 0x134]
push eax
lea eax, [esp + 0x11f0]
push eax
call fcn.0045cab0
pop ecx
pop ecx
test ax, ax
je 0x40f1ce
push esi
push 1
lea ecx, [esp + 0x37f]
call fcn.0040758b
test di, di
je 0x40f3d9
lea eax, [esp + 0x398]
push eax
call fcn.0040dcf0
lea eax, [esp + 0x39c]
push eax
call fcn.0045cc9a
lea eax, [esp + 0x3a0]
push eax
call fcn.0040dcf0
lea eax, [esp + 0x3a4]
push eax
call fcn.0045cc9a
add esp, 0x10
push esi
call fcn.00410c4f
pop ecx
cmp word [esp + 0x1f4c], si
jne 0x40f42d
lea ecx, [esp + 0x34]
call fcn.004141f0
lea eax, [esp + 0x9bc]
push 0x4c4044
push eax
call fcn.00447146
pop ecx
pop ecx
test eax, eax
je 0x40f42d
mov ecx, str.Installed
test di, di
mov eax, str.Uninstalled
cmove eax, ecx
push eax
push dword [esp + 0x18]
push str._str___str_
call fcn.00413fdd
add esp, 0xc
xor esi, esi
inc esi
lea ecx, [esp + 0x34]
call fcn.004141d3
mov ax, si
pop esi
mov ecx, dword [esp + 0x1f30]
pop edi
pop ebp
pop ebx
xor ecx, esp
call fcn.00441a5e
add esp, 0x1f28
ret