Function at 0x425a56
Capabilities:
Reference sql statements

Disassembly:
push 0x28
mov eax, 0x46fdc8
call fcn.00452eb4
xor esi, esi
push str.InitUpgrade...
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x2c], esi
call fcn.004012e2
push esi
lea eax, [ebp - 0x24]
push eax
push 2
pop edi
push edi
mov dword [ebp - 4], esi
call fcn.00411806
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x24]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004017df
mov ebx, dword [0x4b7784]
mov eax, 0x4b7c0c
call fcn.00401cab
mov dword [ebp - 0x24], eax
call fcn.0040a91d
mov dword [ebp - 0x30], eax
cmp ebx, esi
je 0x425abb
cmp dword [ebp - 0x24], esi
je 0x425acc
cmp dword [ebp - 0x24], esi
je 0x425ac4
cmp eax, esi
je 0x425acc
cmp dword [0x4b77b0], esi
je 0x425b04
push str.Upgrade_disabled__returning:
lea ecx, [ebp + 8]
call fcn.004012e2
push 0x3d32
push edi
lea esi, [ebp + 8]
mov dword [ebp - 4], 1
call fcn.004118d7
pop ecx
pop ecx
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov esi, eax
call fcn.004017df
mov eax, esi
jmp 0x425f87
mov ebx, eax
neg ebx
sbb ebx, ebx
and ebx, 0xffffc2db
add ebx, 0x3d32
push str.Upgrade_data_not_available
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x24], ebx
call fcn.004012e2
mov dword [ebp - 4], edi
call fcn.0043f3c0
push eax
lea ecx, [ebp - 0x1c]
call fcn.004013a1
mov byte [ebp - 4], 3
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp + 0x10]
push dword [eax]
push dword [ebp + 0xc]
call fcn.0043a023
mov eax, dword [ebp - 0x1c]
add esp, 0xc
cmp dword [eax - 0xc], esi
jne 0x425b8a
push str.:_Upgrade_ID
lea ecx, [ebp + 8]
call fcn.004012e2
push esi
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x18]
push eax
push edi
mov byte [ebp - 4], 4
call fcn.00411336
mov ecx, dword [ebp + 8]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017df
jmp 0x425f6f
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], esi
push str.SELECT__FROM__UpgradeEx__WHERE__Upgrade_
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 6
call fcn.004012e2
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x1c]
push dword [eax - 0xc]
lea ecx, [ebp - 0x20]
push eax
call fcn.00401163
push 0x497b98
lea eax, [ebp - 0x20]
push eax
call fcn.00407162
cmp dword [ebp - 0x14], esi
je 0x425bcf
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x14]
push ecx
push dword [ebp - 0x20]
mov dword [ebp - 0x14], esi
push eax
call sub.msi.dll_MsiEnumClientsA
test eax, eax
jne 0x425f3c
push esi
push dword [ebp - 0x14]
call sub.msi.dll_MsiViewModify
test eax, eax
jne 0x425f3c
cmp dword [ebp - 0x10], esi
je 0x425c0b
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x14]
mov dword [ebp - 0x10], esi
call sub.msi.dll_MsiDatabaseIsTablePersistentA
test eax, eax
jne 0x425f3c
call fcn.0043f3c0
push eax
lea ecx, [ebp + 0xc]
call fcn.004013a1
mov byte [ebp - 4], 8
call fcn.0043f3c0
push eax
lea ecx, [ebp + 0x10]
call fcn.004013a1
lea eax, [ebp + 0xc]
push eax
mov byte [ebp - 4], 9
push edi
push dword [ebp - 0x10]
call fcn.0043a023
add esp, 0xc
test eax, eax
je 0x425ca3
push str.:_URL
lea ecx, [ebp + 8]
call fcn.004012e2
mov byte [ebp - 4], 0xa
push esi
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.00411336
mov ecx, dword [ebp + 8]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004017df
jmp 0x425f4a
lea eax, [ebp + 0x10]
push eax
push 3
push dword [ebp - 0x10]
call fcn.0043a023
add esp, 0xc
test eax, eax
je 0x425ccb
push str.:_Upgrade_Match
lea ecx, [ebp + 8]
call fcn.004012e2
mov byte [ebp - 4], 0xb
jmp 0x425c6b
lea ebx, [ebp + 0x10]
mov ecx, 0x4b77dc
call fcn.0043265b
push str.NoLongerSupported
lea ecx, [ebp - 0x28]
call fcn.004012e2
mov byte [ebp - 4], 0xc
mov esi, dword [ebp + 8]
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x18]
push ecx
lea ecx, [ebp - 0x28]
xor ebx, ebx
push ecx
inc ebx
push eax
mov dword [ebp - 0x2c], ebx
call fcn.00439e90
add esp, 0xc
test eax, eax
jne 0x425d1e
push 0x4771e4
lea ecx, [ebp - 0x18]
call fcn.004074fe
mov byte [ebp + 0xb], bl
test eax, eax
je 0x425d22
mov byte [ebp + 0xb], 0
mov dword [ebp - 4], 9
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
call fcn.004017df
cmp byte [ebp + 0xb], 0
je 0x425d6f
push str.NoLongerSupported_is_set_in_Manifest
lea ecx, [ebp + 8]
call fcn.004012e2
push 0
lea eax, [ebp + 8]
push eax
push edi
mov byte [ebp - 4], 0xd
call fcn.00411806
mov byte [ebp - 4], 9
mov ecx, dword [ebp + 8]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004017df
mov dword [0x4b78bc], ebx
cmp dword [ebp - 0x30], 0
jne 0x425ea5
call fcn.0043f3c0
push eax
lea ecx, [ebp + 8]
call fcn.004013a1
push str.UpgradeName
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0xe
call fcn.004012e2
lea ecx, [ebp + 8]
push ecx
mov byte [ebp - 4], 0xf
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x28]
push ecx
push eax
mov dword [ebp - 0x2c], edi
call fcn.00439e90
mov esi, dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x425dc0
cmp dword [esi - 0xc], 0
jne 0x425dc2
xor bl, bl
mov dword [ebp - 4], 0xe
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
call fcn.004017df
test bl, bl
je 0x425e1c
push str.UpgradeName_from_product_manifest:
lea ecx, [ebp - 0x28]
call fcn.004012e2
xor ebx, ebx
push ebx
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x28]
push eax
push edi
mov byte [ebp - 4], 0x10
call fcn.00411336
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0x28]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017df
lea eax, [ebp + 8]
push eax
mov ecx, 0x4b78d0
call fcn.004077b3
jmp 0x425e1e
xor ebx, ebx
call fcn.004379b7
test eax, eax
jne 0x425e88
lea ecx, [esi - 0x10]
call fcn.004017df
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004017df
cmp dword [ebp - 0x10], ebx
je 0x425e5d
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], ebx
je 0x425e6a
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004017df
mov eax, dword [ebp - 0x24]
jmp 0x425f87
lea edx, [ebp + 0xc]
mov ecx, 0x4b7950
call fcn.0041b28b
lea ecx, [esi - 0x10]
test eax, eax
je 0x425e2a
mov byte [ebp - 4], 9
call fcn.004017df
push 0x4b77dc
call fcn.0042fffd
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffff0
test eax, eax
jne 0x425eeb
call fcn.004017df
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004017df
cmp dword [ebp - 0x10], 0
je 0x425ee2
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], 0
jmp 0x425e60
call fcn.004017df
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004017df
cmp dword [ebp - 0x10], 0
je 0x425f14
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], 0
je 0x425f22
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004017df
xor eax, eax
jmp 0x425f87
push esi
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.00411806
add esp, 0xc
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004017df
cmp dword [ebp - 0x10], esi
je 0x425f62
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], esi
je 0x425f6f
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004017df
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004017df
mov eax, ebx
call fcn.00452f8c
ret 0xc