Function at 0x41c54f
Capabilities:
Reference sql statements

Disassembly:
push 0x24
mov eax, 0x457d57
call fcn.0043dfc3
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.0040ed4d
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 0x41c5b8
cmp dword [ebp - 0x28], ebx
je 0x41c5c1
cmp dword [ebp - 0x28], ebx
je 0x41c5f8
cmp eax, ebx
jne 0x41c5f8
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.0040ed4d
mov ecx, dword [ebp + 0xc]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov eax, 0x3d32
jmp 0x41ca2c
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.0042ac34
push eax
lea ecx, [ebp - 0x24]
call fcn.004104de
lea eax, [ebp - 0x24]
push eax
mov byte [ebp - 4], 3
push 4
push dword [ebp + 0xc]
call fcn.00429ad1
mov esi, dword [ebp - 0x24]
add esp, 0xc
cmp dword [esi - 0xc], ebx
jne 0x41c67a
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.0040e8c7
mov ecx, dword [ebp + 0xc]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004025dc
lea ecx, [esi - 0x10]
jmp 0x41ca19
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 0x475dc8
lea eax, [ebp - 0x1c]
push eax
call fcn.00408a0d
cmp dword [ebp - 0x14], ebx
je 0x41c6bc
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 0x41c9e0
push ebx
push dword [ebp - 0x14]
call sub.msi.dll_MsiViewModify
test eax, eax
jne 0x41c9e0
cmp dword [ebp - 0x10], ebx
je 0x41c6f8
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 0x41c9e0
call fcn.0042ac34
push eax
lea ecx, [ebp - 0x20]
call fcn.004104de
mov byte [ebp - 4], 8
call fcn.0042ac34
push eax
lea ecx, [ebp + 8]
call fcn.004104de
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 9
push edi
push dword [ebp - 0x10]
call fcn.00429ad1
add esp, 0xc
test eax, eax
je 0x41c790
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.0040e8c7
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 0x41c9ee
lea eax, [ebp + 8]
push eax
push 3
push dword [ebp - 0x10]
call fcn.00429ad1
add esp, 0xc
test eax, eax
je 0x41c832
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.0040e8c7
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 0x41c805
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], ebx
je 0x41c812
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 0x41ca2c
lea ebx, [ebp + 8]
mov ecx, 0x48e90c
call fcn.00424a11
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.0042993e
add esp, 0xc
test eax, eax
jne 0x41c882
push 0x45f9ec
lea ecx, [ebp - 0x18]
call fcn.00408d93
mov byte [ebp + 0xf], bl
test eax, eax
je 0x41c886
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 0x41c8d3
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.0040ed4d
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.0042993e
add esp, 0xc
test eax, eax
jne 0x41c910
push 0x45f9ec
lea ecx, [ebp - 0x18]
call fcn.00408d93
test eax, eax
je 0x41c912
xor bl, bl
mov dword [ebp - 4], 9
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffff0
call fcn.004025dc
test bl, bl
je 0x41c960
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.0040ed4d
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004025dc
mov dword [0x48e9b4], esi
jmp 0x41c962
xor esi, esi
lea eax, [ebp - 0x20]
push eax
call fcn.00407323
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
test eax, eax
je 0x41c9b3
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 0x41c99d
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], esi
je 0x41c815
push dword [ebp - 0x14]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x41c815
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 0x41c9db
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], esi
jmp 0x41ca09
push ebx
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.0040ed4d
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004025dc
cmp dword [ebp - 0x10], ebx
je 0x41ca06
push dword [ebp - 0x10]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x14], ebx
je 0x41ca13
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.0043e09b
ret 8