Function at 0x41c4c5
Capabilities:
Reference sql statements

Disassembly:
push 0x24
mov eax, 0x457ad9
call fcn.0043dd63
xor ebx, ebx
push str.InitUpgrade...
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x30], ebx
call fcn.0040215a
push ebx
lea eax, [ebp - 0x28]
push eax
push 2
pop edi
push edi
mov dword [ebp - 4], ebx
call fcn.0040ece1
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x28]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov eax, dword [0x48e50c]
mov dword [ebp - 0x30], eax
mov esi, 0x48eaf0
mov eax, esi
call fcn.0040526e
mov dword [ebp - 0x28], eax
mov eax, esi
call fcn.0040529f
cmp dword [ebp - 0x30], ebx
je 0x41c52e
cmp dword [ebp - 0x28], ebx
je 0x41c537
cmp dword [ebp - 0x28], ebx
je 0x41c56e
cmp eax, ebx
jne 0x41c56e
push str.Upgrade_disabled_in_manual_mode
lea ecx, [ebp + 0xc]
call fcn.0040215a
push ebx
lea eax, [ebp + 0xc]
push eax
push edi
mov dword [ebp - 4], 1
call fcn.0040ece1
mov ecx, dword [ebp + 0xc]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov eax, 0x3d32
jmp 0x41c9a2
neg eax
sbb eax, eax
and eax, 0xffffc2db
add eax, 0x3d32
push str.Upgrade_data_not_available
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x28], eax
call fcn.0040215a
mov dword [ebp - 4], edi
call fcn.0042a9e0
push eax
lea ecx, [ebp - 0x24]
call fcn.00410472
lea eax, [ebp - 0x24]
push eax
mov byte [ebp - 4], 3
push 4
push dword [ebp + 0xc]
call fcn.0042987c
mov esi, dword [ebp - 0x24]
add esp, 0xc
cmp dword [esi - 0xc], ebx
jne 0x41c5f0
push str.:_Upgrade_ID
lea ecx, [ebp + 0xc]
call fcn.0040215a
push ebx
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x18]
push eax
push edi
mov byte [ebp - 4], 4
call fcn.0040e85b
mov ecx, dword [ebp + 0xc]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004025dc
lea ecx, [esi - 0x10]
jmp 0x41c98f
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], ebx
push str.SELECT__FROM__UpgradeEx__WHERE__Upgrade_
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 6
call fcn.0040215a
mov byte [ebp - 4], 7
push dword [esi - 0xc]
lea ecx, [ebp - 0x1c]
push esi
call fcn.00401f90
push 0x475db0
lea eax, [ebp - 0x1c]
push eax
call fcn.00408a01
cmp dword [ebp - 0x14], ebx
je 0x41c632
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov esi, dword [ebp + 8]
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x14]
push ecx
push dword [ebp - 0x1c]
mov dword [ebp - 0x14], ebx
push eax
call sub.msi.dll_MsiEnumClientsA
test eax, eax
jne 0x41c956
push ebx
push dword [ebp - 0x14]
call sub.msi.dll_MsiViewModify
test eax, eax
jne 0x41c956
cmp dword [ebp - 0x10], ebx
je 0x41c66e
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x14]
mov dword [ebp - 0x10], ebx
call sub.msi.dll_MsiDatabaseIsTablePersistentA
test eax, eax
jne 0x41c956
call fcn.0042a9e0
push eax
lea ecx, [ebp - 0x20]
call fcn.00410472
mov byte [ebp - 4], 8
call fcn.0042a9e0
push eax
lea ecx, [ebp + 8]
call fcn.00410472
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 9
push edi
push dword [ebp - 0x10]
call fcn.0042987c
add esp, 0xc
test eax, eax
je 0x41c706
push str.:_URL
lea ecx, [ebp + 0xc]
call fcn.0040215a
push ebx
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x18]
push eax
push edi
mov byte [ebp - 4], 0xa
call fcn.0040e85b
mov ecx, dword [ebp + 0xc]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004025dc
jmp 0x41c964
lea eax, [ebp + 8]
push eax
push 3
push dword [ebp - 0x10]
call fcn.0042987c
add esp, 0xc
test eax, eax
je 0x41c7a8
push str.:_Upgrade_Match
lea ecx, [ebp + 0xc]
call fcn.0040215a
push ebx
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x18]
push eax
push edi
mov byte [ebp - 4], 0xb
call fcn.0040e85b
mov ecx, dword [ebp + 0xc]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp dword [ebp - 0x10], ebx
je 0x41c77b
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], ebx
je 0x41c788
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov esi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004025dc
mov eax, esi
jmp 0x41c9a2
lea ebx, [ebp + 8]
mov ecx, 0x48e90c
call fcn.004248b9
push str.NoLongerSupported
lea ecx, [ebp - 0x2c]
call fcn.0040215a
lea ecx, [ebp - 0x18]
push ecx
mov byte [ebp - 4], 0xc
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x2c]
xor ebx, ebx
push ecx
inc ebx
push eax
mov dword [ebp - 0x30], ebx
call fcn.004296e9
add esp, 0xc
test eax, eax
jne 0x41c7f8
push 0x45f9fc
lea ecx, [ebp - 0x18]
call fcn.00408d87
mov byte [ebp + 0xf], bl
test eax, eax
je 0x41c7fc
mov byte [ebp + 0xf], 0
mov dword [ebp - 4], 9
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp byte [ebp + 0xf], 0
je 0x41c849
push str.NoLongerSupported_is_set_in_Manifest
lea ecx, [ebp + 0xc]
call fcn.0040215a
push 0
lea eax, [ebp + 0xc]
push eax
push edi
mov byte [ebp - 4], 0xd
call fcn.0040ece1
mov byte [ebp - 4], 9
mov ecx, dword [ebp + 0xc]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov dword [0x48e9b0], ebx
push str.DisableSwitchToThisWindow
lea ecx, [ebp + 0xc]
call fcn.0040215a
lea ecx, [ebp - 0x18]
push ecx
mov byte [ebp - 4], 0xe
mov eax, dword [esi + 4]
lea ecx, [ebp + 0xc]
push ecx
push eax
mov dword [ebp - 0x30], edi
call fcn.004296e9
add esp, 0xc
test eax, eax
jne 0x41c886
push 0x45f9fc
lea ecx, [ebp - 0x18]
call fcn.00408d87
test eax, eax
je 0x41c888
xor bl, bl
mov dword [ebp - 4], 9
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004025dc
test bl, bl
je 0x41c8d6
push str.DisableSwitchToThisWindow_is_set_in_Manifest
lea ecx, [ebp - 0x2c]
call fcn.0040215a
xor esi, esi
push esi
lea eax, [ebp - 0x2c]
push eax
push edi
mov byte [ebp - 4], 0xf
call fcn.0040ece1
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov dword [0x48e9b4], esi
jmp 0x41c8d8
xor esi, esi
lea eax, [ebp - 0x20]
push eax
call fcn.00407323
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
test eax, eax
je 0x41c929
call fcn.004025dc
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp dword [ebp - 0x10], esi
je 0x41c913
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], esi
je 0x41c78b
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x41c78b
call fcn.004025dc
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp dword [ebp - 0x10], esi
je 0x41c951
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], esi
jmp 0x41c97f
push ebx
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.0040ece1
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp dword [ebp - 0x10], ebx
je 0x41c97c
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], ebx
je 0x41c989
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004025dc
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004025dc
mov eax, dword [ebp - 0x28]
call fcn.0043de3b
ret 8