Function at 0x407c60
Capabilities:
Get common file path
Reference sql statements

Disassembly:
push ebp
lea ebp, [esp - 0x2714]
mov eax, 0x2714
call fcn.0041cee0
push 0xffffffffffffffff
push 0x424098
mov eax, dword fs:[0]
push eax
sub esp, 0x24
mov eax, dword [0x42e43c]
xor eax, ebp
mov dword [ebp + 0x2710], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
lea eax, [ebp - 0x18]
push eax
mov edi, str.VBScript
mov ebx, ecx
mov dword [ebp - 4], 0
call fcn.00401130
lea esi, [ebx + 0x14]
push esi
push 0x1f4
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea edi, [ebx + 0x3fc]
push edi
push 0
push 0x4296e0
push esi
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push edi
push str.Set_myFSO__CreateObject__Scripting.FileSystemObject____n__t_t_t_t_t_Set_tf__myFSO.CreateTextFile____s____True___n__t_t_t_t_t_Set_installer__CreateObject___WindowsInstaller.Installer____n__t_t_t_t__On_Error_Resume_Next__n__t_t_t_t__For_Each_prod_In_installer.ProductsEx_________7___n___t_t_t_t__sLocalPkg__prod.InstallProperty___LocalPackage____n__t_t_t_t__set_oDB__installer.OpenDataBase_sLocalPkg__0___n__t_t_t_t__sQuery___SELECT__Value__FROM__Property__WHERE__Property___UpgradeCode___n__t_t_t_t__Set_oView__oDB.OpenView_sQuery___n__t_t_t_t__oView.Execute__n__t_t_t_t__Set_oRecord__oView.Fetch__n__t_t_t_t__If_Not__oRecord_is_Nothing__Then___n__sUpgradeCode__oRecord.StringData_1___n__t_t_t_t__tf.WriteLine_prod.ProductCode___n__t_t_t_t__tf.WriteLine_sUpgradeCode___n__t_t_t_t__End_If__n__t_t_t_t__Next__n__t_t_t_t__tf.Close
lea ecx, [ebp]
push 0x1388
push ecx
call fcn.0040cf33
add esp, 0x10
lea edi, [ebp - 0x14]
mov dword [ebp - 0x14], 0
call fcn.00409790
test eax, eax
jge 0x407d16
cmp eax, 0x80004002
je 0x407d16
push eax
call fcn.0040ce00
mov bl, 2
mov byte [ebp - 4], bl
mov ecx, dword [ebp - 0x14]
test ecx, ecx
jne 0x407d2c
push 0x80004003
call fcn.0040ce00
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x407d37
mov eax, dword [eax]
jmp 0x407d39
xor eax, eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x20]
push ecx
call eax
mov eax, dword [ebp - 0x14]
test eax, eax
jne 0x407d53
push 0x80004003
call fcn.0040ce00
mov ecx, dword [eax]
mov edx, dword [ecx + 0x38]
push 0x493e0
push eax
call edx
push ecx
mov eax, esp
mov dword [ebp - 0x1c], esp
push eax
lea edi, [ebp]
call fcn.00401130
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x14]
test ecx, ecx
jne 0x407d84
push 0x80004003
call fcn.0040ce00
mov byte [ebp - 4], bl
call fcn.00406f50
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x407d9f
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [ebp - 0x18]
test esi, esi
je 0x407dde
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x407dde
test esi, esi
je 0x407dde
mov eax, dword [esi]
test eax, eax
je 0x407dc5
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
test eax, eax
je 0x407dd5
push eax
call fcn.0040d1fe
add esp, 4
push esi
call fcn.0040cf19
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2710]
xor ecx, ebp
call fcn.0040cf24
add ebp, 0x2714
mov esp, ebp
pop ebp
ret