Function at 0x405678
Capabilities:
Get common file path

Disassembly:
mov eax, 0x40cdeb
call fcn.0040b3d0
sub esp, 0x25c
push ebx
push esi
mov esi, ecx
push edi
xor ebx, ebx
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 0x1c]
lea ecx, [esi + 0x18]
push eax
push edx
mov dword [ebp - 0x60], ebx
call fcn.00406412
mov al, byte [ebp + 0xf]
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x58], al
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
push ecx
mov dword [ebp - 4], 1
mov ecx, esp
mov dword [ebp - 0x18], esp
push str._Glsetup2_PackageInfo
mov dword [ebp - 0x14], ebx
call fcn.00404c1b
lea eax, [ebp - 0x10]
lea ecx, [esi + 0x14]
push eax
mov byte [ebp - 4], 1
mov dword [ebp - 0x48], ecx
call fcn.0040623f
mov ecx, eax
call fcn.00405bae
push str.GLSetup2.exe
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 3
call fcn.0040b2aa
push str.GLSetup2Version
push ecx
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
mov byte [ebp - 4], 4
call fcn.00406217
lea eax, [ebp - 0x28]
push eax
call fcn.004067de
add esp, 0xc
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 5
cmp dword [eax - 8], ebx
jne 0x405733
push str.0.0.0.0
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::operator_1
push str.GLSetup2Size
push ecx
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
call fcn.00406217
call fcn.004069b7
pop ecx
mov dword [ebp - 0x24], eax
pop ecx
lea eax, [ebp - 0x10]
push str.ReserveSize
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
call fcn.00406217
call fcn.004069b7
pop ecx
mov dword [ebp - 0x20], eax
pop ecx
lea eax, [ebp - 0x10]
push str.LicenceSize
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
call fcn.00406217
call fcn.004069b7
pop ecx
mov dword [ebp - 0x40], eax
pop ecx
lea eax, [ebp - 0x10]
push str.OutputName
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
call fcn.00406217
lea eax, [ebp - 0x2c]
push eax
call fcn.004067de
add esp, 0xc
mov ecx, dword [ebp + 0xc]
push eax
mov byte [ebp - 4], 6
call fcn.0040b29e
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 5
call sub.MFC42.DLL_CString::CString
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push dword [ebp + 0xc]
call sub.MFC42.DLL_CString::CString_1
mov ecx, esi
call fcn.004053ae
mov edi, 0x104
lea eax, [ebp - 0x268]
push edi
push ebx
push eax
mov dword [esi + 0x28], ebx
call sub.MSVCRT.dll_memset
add esp, 0xc
lea eax, [ebp - 0x268]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp + eax - 0x268]
push 0x41137c
push eax
call sub.MSVCRT.dll_strcpy
pop ecx
lea eax, [ebp - 0x28]
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
call sub.MFC42.DLL_CString::CString_1
push ecx
lea eax, [ebp - 0x268]
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
mov byte [ebp - 4], 7
call fcn.0040b2aa
mov byte [ebp - 4], 5
call fcn.00405c79
pop ecx
cmp al, bl
pop ecx
je 0x405868
mov eax, dword [ebp - 0x24]
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x34]
push eax
mov dword [ebp - 0x34], ebx
call fcn.0040231b
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
jmp 0x405929
mov ecx, dword [ebp + 0xc]
push 0x411378
push str..exe
call sub.MFC42.DLL_CString::Replace
push str.GLSetup2Version
lea ecx, [ebp + 0xc]
mov dword [esi + 0x28], 1
call fcn.00404c1b
push ecx
mov ecx, dword [ebp + 0xc]
mov eax, esp
mov dword [ebp - 0x30], esp
mov dword [eax], ecx
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x4058aa
add eax, 8
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
lea eax, [ebp - 0x18]
lea ecx, [ebp - 0x10]
push eax
mov byte [ebp - 4], 9
call fcn.0040623f
mov ecx, eax
call fcn.0040527a
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0xb
push ecx
mov ecx, eax
call fcn.0040623f
mov ecx, eax
call fcn.00405c15
mov eax, dword [ebp - 0x2c]
cmp eax, ebx
je 0x4058e4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 8
cmp eax, ebx
je 0x4058f5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0x411374
push str.GLSetup2Size
push ecx
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
call fcn.00406217
call fcn.00406af9
mov ecx, dword [ebp + 0xc]
add esp, 0xc
cmp ecx, ebx
mov byte [ebp - 4], 5
je 0x405926
call fcn.004048f9
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x40]
cmp ecx, ebx
jle 0x40594f
mov dword [ebp - 0x34], eax
add ecx, eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x30], ecx
push eax
lea ecx, [ebp - 0x58]
call fcn.0040231b
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x14], eax
mov ecx, eax
mov eax, dword [ebp - 0x24]
cmp dword [ebp - 0x20], ebx
jle 0x405976
lea edx, [ecx + eax]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x20]
add ecx, edx
add ecx, eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x30], ecx
push eax
lea ecx, [ebp - 0x58]
call fcn.0040231b
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov dword [ebp + 0xc], esp
push str._Glsetup2_Directorys
call fcn.00404c1b
mov ecx, dword [ebp - 0x48]
lea eax, [ebp - 0x44]
push eax
mov byte [ebp - 4], 5
call fcn.0040623f
mov ecx, eax
call fcn.00405bae
push ecx
mov ecx, dword [ebp - 0x44]
mov eax, esp
mov byte [ebp - 4], 0xd
mov dword [ebp + 0xc], esp
mov dword [eax], ecx
mov eax, dword [ebp - 0x44]
cmp eax, ebx
je 0x4059b9
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
mov ecx, esi
call fcn.00404a55
mov eax, dword [esi + 0x1c]
cmp eax, dword [esi + 0x20]
mov dword [ebp + 0xc], eax
je 0x405a5e
jmp 0x4059d4
mov eax, dword [ebp + 0xc]
push str.Size
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
call fcn.00406217
call fcn.004069b7
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0x20], eax
jle 0x405a4e
push str.Start
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push dword [ebp + 0xc]
call fcn.00406217
call fcn.004069b7
pop ecx
mov dword [ebp - 0x1c], eax
pop ecx
mov ecx, dword [ebp - 0x20]
add ecx, eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x18], ecx
push eax
lea ecx, [ebp - 0x58]
call fcn.0040231b
push dword [ebp - 0x14]
push str.Start
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push dword [ebp + 0xc]
call fcn.00406217
call fcn.00406e30
mov eax, dword [ebp - 0x20]
add esp, 0xc
add dword [ebp - 0x14], eax
add dword [ebp + 0xc], 4
mov eax, dword [ebp + 0xc]
cmp eax, dword [esi + 0x20]
jne 0x4059d1
cmp dword [esi + 0x28], ebx
je 0x405b36
lea eax, [ebp - 0x164]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp + eax - 0x164]
push str.gls_
push eax
call sub.MSVCRT.dll_strcpy
pop ecx
lea eax, [ebp - 0x164]
pop ecx
push eax
push ebx
lea eax, [ebp - 0x164]
push 0x411348
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
add esi, 0xc
lea eax, [ebp - 0x164]
push eax
mov ecx, esi
call sub.MFC42.DLL_CString::operator_1
push dword [esi]
lea ecx, [ebp - 0x18]
call fcn.00404c1b
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0xe
call fcn.004055d1
mov esi, dword [ebp - 0x48]
mov byte [ebp - 4], 0xf
cmp dword [esi], ebx
jne 0x405ae0
push 0x80004003
call fcn.0040b64a
mov eax, dword [esi]
sub esp, 0x10
lea esi, [ebp - 0x3c]
mov edi, esp
movsd dword es:[edi], dword [esi]
mov ecx, dword [eax]
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp + 0xc], eax
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x108]
cmp eax, ebx
jge 0x405b0c
push 0x411310
push dword [ebp + 0xc]
push eax
call fcn.0040b658
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 0xe
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
cmp eax, ebx
jge 0x405b24
push eax
call fcn.0040b64a
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0xd
cmp ecx, ebx
je 0x405b42
call fcn.004048f9
jmp 0x405b42
lea eax, [esi + 8]
lea ecx, [esi + 0xc]
push eax
call fcn.0040b29e
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x58]
push eax
call fcn.0040637d
mov dword [ebp - 0x60], 1
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 5
cmp eax, ebx
je 0x405b66
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 3
call sub.MFC42.DLL_CString::CString
mov eax, dword [ebp - 0x10]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x405b8f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], bl
call fcn.004021b4
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 8