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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x910
mov eax, dword [0x47a42c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
xor eax, eax
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x908], edi
test ebx, ebx
je 0x411323
push esi
mov word [ebp - 0x8e0], ax
xor esi, esi
mov dword [ebp - 0x8e8], eax
mov word [ebp - 0x8f8], ax
mov dword [ebp - 0x90c], eax
lea eax, [ebp - 0x90c]
push eax
push esi
push ebx
mov dword [ebp - 0x8d0], esi
mov dword [ebp - 0x8cc], 7
mov dword [ebp - 0x8e4], 7
call sub.msi.dll_MsiOpenProductW
test eax, eax
jne 0x410fca
push 0x53
push str.SELECT__Property_._Value__FROM__Property__WHERE__Property_._Property_ProductCode
lea ecx, [ebp - 0x8c8]
mov dword [ebp - 0x8fc], esi
mov dword [ebp - 0x900], esi
mov dword [ebp - 0x8b8], esi
mov dword [ebp - 0x8b4], 7
mov word [ebp - 0x8c8], ax
call fcn.0040cfe0
mov eax, dword [ebp - 0x8fc]
test eax, eax
je 0x410dfd
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x8b4], 8
lea ecx, [ebp - 0x8fc]
lea eax, [ebp - 0x8c8]
cmovae eax, dword [ebp - 0x8c8]
push ecx
push eax
push dword [ebp - 0x90c]
call sub.msi.dll_MsiEnumClientsA
test eax, eax
jne 0x4112c0
push eax
push dword [ebp - 0x8fc]
call sub.msi.dll_MsiViewModify
test eax, eax
jne 0x4112c0
mov eax, dword [ebp - 0x900]
test eax, eax
je 0x410e50
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea eax, [ebp - 0x900]
push eax
push dword [ebp - 0x8fc]
call sub.msi.dll_MsiDatabaseIsTablePersistentA
test eax, eax
jne 0x4112c0
push 0x80
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.0042b800
add esp, 0xc
mov dword [ebp - 0x904], 0x40
lea eax, [ebp - 0x904]
push eax
lea eax, [ebp - 0x84]
push eax
push 1
push dword [ebp - 0x900]
call sub.msi.dll_MsiRecordSetStreamA
test eax, eax
jne 0x4112c0
lea eax, [ebp - 0x84]
push eax
lea ecx, [ebp - 0x8e0]
call fcn.0040efe0
push dword [ebp - 0x900]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
push dword [ebp - 0x8fc]
call sub.msi.dll_MsiViewGetErrorW
push dword [ebp - 0x8fc]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
push str.SELECT__Property_._Value__FROM__Property__WHERE__Property_._Property_ProductVersion
lea ecx, [ebp - 0x8c8]
call fcn.0040efe0
cmp dword [ebp - 0x8b4], 8
lea edi, [ebp - 0x8c8]
mov esi, dword [ebp - 0x90c]
lea ecx, [ebp - 0x8fc]
cmovae edi, dword [ebp - 0x8c8]
call fcn.0040f010
push eax
push edi
push esi
call sub.msi.dll_MsiEnumClientsA
test eax, eax
jne 0x4112c0
push eax
push dword [ebp - 0x8fc]
call sub.msi.dll_MsiViewModify
test eax, eax
jne 0x4112c0
mov esi, dword [ebp - 0x8fc]
lea ecx, [ebp - 0x900]
call fcn.0040f010
push eax
push esi
call sub.msi.dll_MsiDatabaseIsTablePersistentA
test eax, eax
jne 0x4112c0
lea eax, [ebp - 0x904]
mov dword [ebp - 0x904], 0x40
push eax
lea eax, [ebp - 0x84]
push eax
push 1
push dword [ebp - 0x900]
call sub.msi.dll_MsiRecordSetStreamA
test eax, eax
jne 0x4112c0
lea eax, [ebp - 0x84]
push eax
lea ecx, [ebp - 0x8f8]
call fcn.0040efe0
lea ecx, [ebp - 0x8c8]
call fcn.0040c360
mov eax, dword [ebp - 0x900]
test eax, eax
je 0x410fb2
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov eax, dword [ebp - 0x8fc]
test eax, eax
je 0x410fc2
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov edi, dword [ebp - 0x908]
xor esi, esi
cmp dword [ebp - 0x8d0], 0
je 0x4112fa
cmp dword [ebp - 0x8e8], 0
je 0x4112fa
push 0x20a
lea eax, [ebp - 0x6a8]
push 0
push eax
call fcn.0042b800
add esp, 0xc
mov dword [ebp - 0x910], 0x104
cmp dword [ebp - 0x8cc], 8
lea ecx, [ebp - 0x910]
lea eax, [ebp - 0x8e0]
cmovae eax, dword [ebp - 0x8e0]
push ecx
lea ecx, [ebp - 0x6a8]
push ecx
push str.PackageName
push eax
call sub.msi.dll_MsiGetPropertyW
test eax, eax
je 0x411047
cmp eax, 0x645
je 0x411047
cmp eax, 0x648
jne 0x4112f8
lea eax, [ebp - 0x6a8]
push eax
lea ecx, [ebp - 0x8c8]
call fcn.0040e240
cmp dword [ebp - 0x8b8], 0
jne 0x411097
push ebx
lea ecx, [ebp - 0x8c8]
call fcn.0040efe0
push 0x5c
push ebx
call fcn.0042ca77
add esp, 8
test eax, eax
je 0x411097
push 0x5c
push ebx
call fcn.0042ca77
add esp, 8
lea ecx, [ebp - 0x8c8]
add eax, 2
push eax
call fcn.0040efe0
push 0x20a
lea eax, [ebp - 0x290]
push 0
push eax
call fcn.0042b800
push 0x20a
lea eax, [ebp - 0x49c]
push 0
push eax
call fcn.0042b800
add esp, 0x18
lea eax, [ebp - 0x8b0]
push eax
push 0
push 0
push 0x8023
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x4112ed
push 0x80
lea eax, [ebp - 0x84]
push 0
push eax
call fcn.0042b800
cmp dword [ebp - 0x8e4], 8
lea eax, [ebp - 0x8f8]
mov dword [ebp - 0x8fc], 0
cmovae eax, dword [ebp - 0x8f8]
push eax
mov dword [ebp - 0x900], 0
mov dword [ebp - 0x904], 0
mov dword [ebp - 0x908], 0
call fcn.0043b1ff
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4112ed
push 0
push 0x45c9b0
push esi
call fcn.0043b260
add esp, 0xc
test eax, eax
je 0x411165
push eax
call fcn.0043a803
add esp, 4
mov dword [ebp - 0x8fc], eax
push 0
push 0x45c9b0
push 0
call fcn.0043b260
add esp, 0xc
test eax, eax
je 0x411189
push eax
call fcn.0043a803
add esp, 4
mov dword [ebp - 0x900], eax
push 0
push 0x45c9b0
push 0
call fcn.0043b260
add esp, 0xc
test eax, eax
je 0x4111ad
push eax
call fcn.0043a803
add esp, 4
mov dword [ebp - 0x904], eax
push 0
push 0x45c9b0
push 0
call fcn.0043b260
add esp, 0xc
test eax, eax
je 0x4111d1
push eax
call fcn.0043a803
add esp, 4
mov dword [ebp - 0x908], eax
push esi
call fcn.0043b170
push dword [ebp - 0x908]
lea eax, [ebp - 0x84]
push dword [ebp - 0x904]
push dword [ebp - 0x900]
push dword [ebp - 0x8fc]
push 0x45c9b4
push 0x40
push eax
call fcn.00410d00
cmp dword [ebp - 0x8cc], 8
lea ecx, [ebp - 0x84]
push ecx
lea eax, [ebp - 0x8e0]
cmovae eax, dword [ebp - 0x8e0]
push eax
lea eax, [ebp - 0x8b0]
push eax
push str._sApplicationsCache_s_s_
lea eax, [ebp - 0x290]
push 0x105
push eax
call fcn.00410d00
lea eax, [ebp - 0x290]
push eax
call fcn.0040fec0
cmp dword [ebp - 0x8b4], 8
lea eax, [ebp - 0x8c8]
cmovae eax, dword [ebp - 0x8c8]
push eax
lea eax, [ebp - 0x290]
push eax
push 0x45ca0c
lea eax, [ebp - 0x49c]
push 0x105
push eax
call fcn.00410d00
add esp, 0x50
lea eax, [ebp - 0x49c]
push 0
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4112ed
push ebx
call fcn.0043b3eb
add esp, 4
test edi, edi
je 0x4112ae
lea eax, [ebp - 0x49c]
push eax
call fcn.0043b1ff
add esp, 4
mov dword [edi], eax
lea ecx, [ebp - 0x8c8]
mov esi, 1
call fcn.0040c360
jmp 0x4112fa
lea ecx, [ebp - 0x8c8]
call fcn.0040c360
mov eax, dword [ebp - 0x900]
test eax, eax
je 0x4112db
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov eax, dword [ebp - 0x8fc]
test eax, eax
je 0x4112f8
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x4112f8
lea ecx, [ebp - 0x8c8]
call fcn.0040c360
xor esi, esi
mov ecx, dword [ebp - 0x90c]
test ecx, ecx
je 0x41130a
push ecx
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [ebp - 0x8f8]
call fcn.0040c360
lea ecx, [ebp - 0x8e0]
call fcn.0040c360
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.00428a27
mov esp, ebp
pop ebp
ret