Function at 0x418540
Capabilities:
Reference sql statements

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x597299
mov eax, dword fs:[0]
push eax
sub esp, 0xd3c
mov eax, dword [0x60dfd4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0xcf0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xce4], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xcd0], 0
mov dword [ebp - 0xce0], eax
mov dword [ebp - 0xcf8], 0
push 0x208
lea eax, [ebp - 0x298]
mov dword [ebp - 4], 0
push 0
push eax
call fcn.0056eeb0
push 0x208
lea eax, [ebp - 0x4a0]
push 0
push eax
call fcn.0056eeb0
push 0x208
lea eax, [ebp - 0xab8]
push 0
push eax
call fcn.0056eeb0
push 0x208
lea eax, [ebp - 0xcc0]
push 0
push eax
call fcn.0056eeb0
push 0x208
lea eax, [ebp - 0x6a8]
push 0
push eax
call fcn.0056eeb0
mov dword [ebp - 0xcc4], 0x104
mov dword [ebp - 0xccc], 0
push 0x208
lea eax, [ebp - 0x8b0]
push 0
push eax
call fcn.0056eeb0
mov ecx, 0x13
mov dword [ebp - 0xcdc], 0
mov esi, str.EAB78CB1_2951_4462_83D4_5F72F56E7312
lea edi, [ebp - 0xd48]
rep movsd dword es:[edi], dword [esi]
xorps xmm0, xmm0
add esp, 0x48
movsd qword [ebp - 0xcec], xmm0
movsw word es:[edi], word [esi]
lea eax, [ebx + 0xcc8]
mov byte [ebp - 4], 2
push eax
lea ecx, [ebp - 0xcc8]
mov dword [ebp - 0xcc8], 0
call fcn.00410650
lea ecx, [ebx + 0x68]
mov dword [ebp - 0xcd0], 1
push ecx
lea ecx, [ebp - 0xcc8]
mov esi, eax
call fcn.00411ef0
mov eax, dword [esi]
test eax, eax
je 0x41869d
mov eax, dword [eax]
jmp 0x41869f
xor eax, eax
push eax
lea ecx, [ebp - 0xcdc]
call fcn.004104f0
mov byte [ebp - 4], 4
mov esi, dword [ebp - 0xcc8]
test esi, esi
je 0x418707
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
dec eax
jne 0x4186fd
test esi, esi
je 0x4186fd
mov eax, dword [esi]
test eax, eax
je 0x4186db
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4186f2
push eax
call fcn.0041d1ed
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0056a733
add esp, 8
mov dword [ebp - 0xcc8], 0
mov eax, dword [ebp - 0xccc]
test eax, eax
je 0x418718
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
lea eax, [ebp - 0xccc]
mov dword [ebp - 0xccc], 0
push eax
push 0
push dword [ebp - 0xcdc]
call dword [sym.imp.msi.dll_MsiOpenProductW]
test eax, eax
jne 0x418808
mov ecx, 0x1e
mov dword [ebp - 0xcd8], eax
mov esi, str.SELECT__FROM_Property_WHERE_Property.PropertyUpgradeCode
mov dword [ebp - 0xcd0], eax
lea edi, [ebp - 0x8c]
rep movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0xcd0]
push eax
lea eax, [ebp - 0x8c]
push eax
push dword [ebp - 0xccc]
movsw word es:[edi], word [esi]
call dword [sym.imp.msi.dll_MsiEnumClientsA]
mov esi, eax
test esi, esi
jne 0x4187d8
push eax
push dword [ebp - 0xcd0]
call dword [sym.imp.msi.dll_MsiViewModify]
mov esi, eax
test esi, esi
jne 0x4187d8
mov eax, dword [ebp - 0xcd8]
test eax, eax
je 0x4187a3
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
lea eax, [ebp - 0xcd8]
push eax
push dword [ebp - 0xcd0]
call dword [sym.imp.msi.dll_MsiDatabaseIsTablePersistentA]
mov esi, eax
test esi, esi
jne 0x4187d8
lea eax, [ebp - 0xcc4]
push eax
lea eax, [ebp - 0x8b0]
push eax
push 2
push dword [ebp - 0xcd8]
call dword [sym.imp.msi.dll_MsiRecordSetStreamA]
mov eax, dword [ebp - 0xcd8]
test eax, eax
je 0x4187e9
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
mov eax, dword [ebp - 0xcd0]
test eax, eax
je 0x4187fa
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
test esi, esi
je 0x418808
mov eax, str.Setup___CheckMinorDownGrade:_MSI_open_databse_error_code___d_fails_
jmp 0x418b5b
lea eax, [ebp - 0x298]
push eax
push 0
push 0
lea eax, [ebp - 0x8b0]
push eax
call dword [sym.imp.msi.dll_MsiSourceListClearAllW]
test eax, eax
jne 0x418b65
lea eax, [ebp - 0xcc4]
mov dword [ebp - 0xcc4], 0x104
push eax
lea eax, [ebp - 0x4a0]
push eax
push str.VersionString
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.msi.dll_MsiGetPropertyW]
test eax, eax
jne 0x418895
lea eax, [ebp - 0x4a0]
push eax
push str.Setup___CheckMinorDownGrade:_Installed_Product_Version_String:__s_
call fcn.0041c4c0
lea ecx, [ebp - 0x4a0]
add esp, 8
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x418873
sub ecx, edx
lea eax, [ebp - 0x4a0]
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0xce4]
push eax
call fcn.004050e0
lea eax, [ebp - 0xcc4]
mov dword [ebx + 0x80], 1
push eax
lea eax, [ebp - 0xab8]
mov dword [ebp - 0xcc4], 0x104
push eax
push str.VersionMajor
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.msi.dll_MsiGetPropertyW]
test eax, eax
jne 0x41892d
lea eax, [ebp - 0xab8]
push eax
call fcn.0057a0ea
fstp qword [ebp - 0xcec]
movsd xmm0, qword [ebp - 0xcec]
add esp, 4
ucomisd xmm0, qword [0x5ed808]
movsd qword [ebp - 0xcec], xmm0
lahf
test ah, 0x44
jnp 0x41890e
ucomisd xmm0, qword [0x5ed810]
lahf
test ah, 0x44
jp 0x41892d
sub esp, 8
movsd qword [esp], xmm0
push str.Setup___CheckMinorDownGrade:_Installed_Product_Major_Version:__d_
call fcn.0041c4c0
add esp, 0xc
mov dword [ebx + 0x84], 1
lea eax, [ebp - 0xcc4]
mov dword [ebp - 0xcc4], 0x104
push eax
lea eax, [ebp - 0xcc0]
push eax
push str.VersionMinor
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.msi.dll_MsiGetPropertyW]
test eax, eax
jne 0x418a07
lea eax, [ebp - 0xcc0]
push eax
call fcn.0057a0ea
push ecx
fstp qword [ebp - 0xcd4]
movsd xmm0, qword [ebp - 0xcd4]
movsd qword [esp], xmm0
push str.Setup___CheckMinorDownGrade:_Installed_Product_Minor_Version:__d_
call fcn.0041c4c0
movsd xmm0, qword [ebp - 0xcec]
add esp, 0xc
ucomisd xmm0, qword [0x5ed808]
lahf
test ah, 0x44
jp 0x418a07
movsd xmm0, qword [ebp - 0xcd4]
comisd xmm0, xmmword [0x5ed800]
jb 0x418a07
push str.Setup___CheckMinorDownGrade:_FL_12.3_installed
call fcn.0041c4c0
add esp, 4
mov dword [ebx + 0x88], 1
lea eax, [ebp - 0xcc4]
mov dword [ebp - 0xcc4], 0x104
lea esi, [ebx + 0x8c]
push eax
push esi
push str.InstallLocation
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.msi.dll_MsiGetPropertyW]
test eax, eax
jne 0x418a07
push esi
push str.Setup___CheckMinorDownGrade:_FL_12.3_InstallLocation:__s_
call fcn.0041c4c0
add esp, 8
mov eax, dword [ebp - 0xccc]
test eax, eax
je 0x418a18
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
lea eax, [ebp - 0xccc]
mov dword [ebp - 0xccc], 0
push eax
push 0
push dword [ebp - 0xcdc]
call dword [sym.imp.msi.dll_MsiOpenProductW]
test eax, eax
jne 0x418bc9
mov dword [ebp - 0xcc8], eax
mov byte [ebp - 4], 6
lea edi, [ebp - 0x90]
mov dword [ebp - 0xcd0], eax
mov ecx, 0x20
lea eax, [ebp - 0xcd0]
mov esi, str.SELECT__FROM_Property_WHERE_Property.PropertyProductVersion
push eax
lea eax, [ebp - 0x90]
push eax
push dword [ebp - 0xccc]
rep movsd dword es:[edi], dword [esi]
call dword [sym.imp.msi.dll_MsiEnumClientsA]
mov esi, eax
test esi, esi
jne 0x418b26
push eax
push dword [ebp - 0xcd0]
call dword [sym.imp.msi.dll_MsiViewModify]
mov esi, eax
test esi, esi
jne 0x418b26
mov eax, dword [ebp - 0xcc8]
test eax, eax
je 0x418aad
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
lea eax, [ebp - 0xcc8]
mov dword [ebp - 0xcc8], 0
push eax
push dword [ebp - 0xcd0]
call dword [sym.imp.msi.dll_MsiDatabaseIsTablePersistentA]
mov esi, eax
test esi, esi
jne 0x418b26
lea eax, [ebp - 0xcc4]
mov dword [ebp - 0xcc4], 0x104
push eax
lea eax, [ebp - 0x6a8]
push eax
push 2
push dword [ebp - 0xcc8]
call dword [sym.imp.msi.dll_MsiRecordSetStreamA]
lea ecx, [ebp - 0x6a8]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x418b00
mov edi, dword [ebp - 0xce0]
lea eax, [ebp - 0x6a8]
sub ecx, edx
sar ecx, 1
push ecx
push eax
mov ecx, edi
call fcn.004050e0
jmp 0x418b2c
mov edi, dword [ebp - 0xce0]
mov eax, dword [ebp - 0xcc8]
test eax, eax
je 0x418b3d
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
mov eax, dword [ebp - 0xcd0]
test eax, eax
je 0x418b4e
push eax
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
test esi, esi
je 0x418bcf
mov eax, str.Setup___CheckMinorDownGrade_MSI_open_databse_error_code___d_fails_
push esi
push eax
call fcn.0041c4c0
add esp, 8
xor ebx, ebx
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0xcdc]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x418b98
lfence
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x5a72d4]
mov ecx, edi
call esi
mov ecx, dword [ebp - 0xccc]
test ecx, ecx
je 0x418ba9
push ecx
call dword [sym.imp.msi.dll_MsiConfigureFeatureFromDescriptorA]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056a6fa
mov esp, ebp
pop ebp
ret 0xc
mov edi, dword [ebp - 0xce0]
lea ecx, [ebp - 0xd48]
lea eax, [ebp - 0x8b0]
nop dword [eax + eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x418c06
test dx, dx
je 0x418c02
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x418c06
add eax, 4
add ecx, 4
test dx, dx
jne 0x418be0
xor eax, eax
jmp 0x418c0b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x418c56
mov eax, dword [ebp - 0xce4]
mov ecx, dword [edi]
mov eax, dword [eax]
nop dword [eax]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x418c46
test dx, dx
je 0x418c42
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x418c46
add ecx, 4
add eax, 4
test dx, dx
jne 0x418c20
xor eax, eax
jmp 0x418c4b
sbb eax, eax
or eax, 1
test eax, eax
jle 0x418c56
mov dword [ebx + 0x74], 1
mov ebx, dword [ebp - 0xcf0]
lea eax, [ebp - 0x6a8]
push eax
mov dword [ebx], 0
call fcn.0057a0ea
movsd xmm1, qword [ebp - 0xcec]
add esp, 4
fstp qword [ebp - 0xcf4]
movsd xmm0, qword [ebp - 0xcf4]
comisd xmm0, xmm1
jbe 0x418c9d
mov dword [ebx], 1
mov ebx, 1
jmp 0x418b67
comisd xmm1, xmm0
jbe 0x418ca9
mov dword [ebx], 0xffffffff
mov ebx, 1
jmp 0x418b67