Function at 0x427ee0
Capabilities:
Get installed programs
Set registry value

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x477a02
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x600
mov eax, dword [0x49c128]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebx + 0xc]
lea ecx, [ebp - 0x4c8]
mov edi, dword [ebx + 8]
push str.updater_base::update_installer_regkeys
mov dword [ebp - 0x4d4], eax
call fcn.004046d0
mov dword [ebp - 4], 0
xor eax, eax
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
mov byte [ebp - 4], 1
xorps xmm0, xmm0
cmp dword [edi + 0x14], 8
mov esi, edi
movups xmmword [ebp - 0x78], xmm0
movups xmmword [ebp - 0x68], xmm0
jb 0x427f78
mov esi, dword [edi]
mov eax, dword [edi + 0x10]
mov ecx, esi
lea edx, [esi + eax*2]
call fcn.00403a50
cmp esi, eax
jne 0x427fc4
cmp eax, edx
je 0x427fc4
nop dword [eax]
movzx ecx, word [eax]
cmp ecx, 0x5c
je 0x427f9d
cmp ecx, 0x2f
jne 0x427fa4
add eax, 2
cmp eax, edx
jne 0x427f90
cmp esi, eax
jne 0x427fc4
cmp eax, edx
je 0x427fc4
nop dword [eax]
movzx ecx, word [eax]
cmp ecx, 0x5c
je 0x427fc4
cmp ecx, 0x2f
je 0x427fc4
add eax, 2
cmp eax, edx
jne 0x427fb0
sub eax, esi
mov dword [ebp - 0x1c], esi
sar eax, 1
mov ecx, edi
cmp dword [edi + 0x14], 8
jb 0x427fd5
mov ecx, dword [edi]
mov dword [ebp - 0x78], ecx
xor ecx, ecx
mov dword [ebp - 0x74], 0
push eax
mov word [ebp - 0x74], cx
lea ecx, [ebp - 0x74]
push esi
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 7
call fcn.00418a50
mov dword [ebp - 0x5c], edi
cmp dword [edi + 0x14], 8
xorps xmm0, xmm0
movups xmmword [ebp - 0x40], xmm0
mov ecx, edi
movups xmmword [ebp - 0x30], xmm0
jb 0x428015
mov ecx, dword [edi]
mov eax, dword [edi + 0x10]
movups xmmword [ebp - 0x3c], xmm0
mov dword [ebp - 0x3c], 0
movq qword [ebp - 0x2c], xmm0
lea esi, [ecx + eax*2]
mov dword [ebp - 0x2c], 0
xor eax, eax
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x28], 7
mov word [ebp - 0x3c], ax
mov dword [ebp - 0x24], edi
mov byte [ebp - 4], 3
cmp dword [ebp - 0x78], esi
je 0x428106
lea eax, [ebp - 0x74]
push eax
lea ecx, [ebp - 0x90]
call fcn.004083f0
cmp dword [ebp - 0x80], 0
je 0x4280b8
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4280a1
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428097
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
movups xmm0, xmmword [ebp - 0x90]
movups xmmword [ebp - 0x58], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [ebp - 0x48], xmm0
jmp 0x4280f5
mov edx, dword [ebp - 0x7c]
cmp edx, 8
jb 0x4280f5
mov ecx, dword [ebp - 0x90]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4280eb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
lea ecx, [ebp - 0x78]
call fcn.00431b90
cmp dword [ebp - 0x78], esi
jne 0x428052
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x428144
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x42813a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
push str.updater_base::update_installer_regkeys
mov edx, 0x10
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov esi, eax
mov byte [ebp - 4], 4
mov al, byte [esi + 0x48]
test al, al
je 0x428194
mov edx, str.product:
mov ecx, esi
call fcn.00416e30
mov al, byte [esi + 0x48]
test al, al
je 0x428194
cmp dword [ebp - 0x44], 8
lea edx, [ebp - 0x58]
push dword [ebp - 0x48]
cmovae edx, dword [ebp - 0x58]
mov ecx, esi
call fcn.004184a0
add esp, 4
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 5
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
mov byte [ebp - 4], 1
mov eax, SysReAllocString
mov ecx, dword [ebp - 0x48]
add esp, 4
sub eax, ecx
cmp eax, 0x34
jb 0x4293d3
cmp dword [ebp - 0x44], 8
lea eax, [ebp - 0x58]
push ecx
cmovae eax, dword [ebp - 0x58]
push eax
push 0x34
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
push ecx
push dword [ebp - 0x20]
lea ecx, [ebp - 0xac]
call fcn.00435530
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x4d4]
push ecx
add eax, 0x18
lea ecx, [ebp - 0x564]
push eax
call fcn.004341a0
push edi
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 7
call fcn.004083f0
lea eax, [ebp - 0x564]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x38]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x90]
call fcn.004083f0
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x24]
cmp edx, 8
jb 0x42827a
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428270
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293d8
push edx
push ecx
call fcn.004553f5
add esp, 8
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x550]
cmp edx, 8
jb 0x4282be
mov ecx, dword [ebp - 0x564]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4282b4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293dd
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x98], 8
lea ecx, [ebp - 0x4cc]
push ecx
push 0x102
lea eax, [ebp - 0xac]
mov dword [ebp - 0x4cc], 0
cmovae eax, dword [ebp - 0xac]
xorps xmm0, xmm0
push 0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
movlpd qword [ebp - 0x1c], xmm0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x4d0], eax
test eax, eax
je 0x428313
mov dword [ebp - 0x18], 0x49cbb0
xor edi, edi
jmp 0x428329
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x4cc]
mov dword [ebp - 0x18], 0x49cb90
mov dword [ebp - 0x4d0], eax
mov dword [ebp - 0x94], edi
mov byte [ebp - 4], 0xb
test edi, edi
jne 0x42838e
push str.updater_base::update_installer_regkeys
lea edx, [edi + 4]
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0xc
mov al, byte [esi + 0x48]
test al, al
je 0x42837a
mov edx, str.failed_open_uninstall_key_err
mov ecx, esi
call fcn.00416e30
mov al, byte [esi + 0x48]
test al, al
je 0x42837a
push dword [ebp - 0x4d0]
mov ecx, esi
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
mov byte [ebp - 4], 0xd
jmp 0x428c18
push 0xa
xor eax, eax
mov dword [ebp - 0x51c], 0
push str.bdicon.ico
lea ecx, [ebp - 0x51c]
mov dword [ebp - 0x50c], 0
mov dword [ebp - 0x508], 7
mov word [ebp - 0x51c], ax
call fcn.00418a50
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp - 0x38]
call fcn.004083f0
lea eax, [ebp - 0x51c]
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp - 0x38]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x4ec]
call fcn.004083f0
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x24]
cmp edx, 8
jb 0x428437
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x42842d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293e2
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4d8], 8
lea edx, [ebp - 0x4ec]
cmovae edx, dword [ebp - 0x4ec]
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428450
sub ecx, esi
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayIcon
push edi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
test esi, esi
je 0x428483
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x42848c
xor esi, esi
mov dword [ebp - 0x18], 0x49cb90
mov edx, dword [ebp - 0x4d8]
mov dword [ebp - 0x1c], esi
cmp edx, 8
jb 0x4284cf
mov ecx, dword [ebp - 0x4ec]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4284c5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293e7
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x508]
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4d8], 7
mov word [ebp - 0x4ec], ax
cmp edx, 8
jb 0x428530
mov ecx, dword [ebp - 0x51c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428526
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293e7
push edx
push ecx
call fcn.004553f5
add esp, 8
test esi, esi
je 0x4285aa
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov dword [ebp - 0x4d0], eax
mov byte [ebp - 4], 0x10
mov cl, byte [eax + 0x48]
test cl, cl
je 0x42857e
mov edx, str.failed_set_uninstall_DisplayIcon_err
mov ecx, eax
call fcn.00416e30
mov eax, dword [ebp - 0x4d0]
mov cl, byte [eax + 0x48]
test cl, cl
je 0x42857e
push esi
mov ecx, eax
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x11
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
add esp, 4
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x4d4]
mov eax, ecx
cmp dword [ecx + 0x14], 0x10
jb 0x4285ba
mov eax, dword [ecx]
lea ecx, [ebp - 0x1c]
push ecx
push ecx
push eax
push ecx
lea ecx, [ebp - 0x38]
call fcn.00404f90
add esp, 0x10
lea edx, [ebp - 0x38]
cmp dword [ebp - 0x24], 8
cmovae edx, dword [ebp - 0x38]
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4285e0
sub ecx, esi
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push edi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov dword [ebp - 0x4d0], esi
test esi, esi
je 0x428619
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x428628
xor esi, esi
mov dword [ebp - 0x18], 0x49cb90
mov dword [ebp - 0x4d0], esi
mov edx, dword [ebp - 0x24]
cmp edx, 8
jb 0x428662
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428658
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293ec
push edx
push ecx
call fcn.004553f5
add esp, 8
test esi, esi
je 0x4286d7
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0x12
mov al, byte [esi + 0x48]
test al, al
je 0x4286ab
mov edx, str.failed_set_uninstall_DisplayVersion_err
mov ecx, esi
call fcn.00416e30
mov al, byte [esi + 0x48]
test al, al
je 0x4286ab
push dword [ebp - 0x4d0]
mov ecx, esi
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x13
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
add esp, 4
mov byte [ebp - 4], 0xb
push 0xd
xor eax, eax
mov dword [ebp - 0x504], 0
push str.installer.exe
lea ecx, [ebp - 0x504]
mov dword [ebp - 0x4f4], 0
mov dword [ebp - 0x4f0], 7
mov word [ebp - 0x504], ax
call fcn.00418a50
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x534]
push 9
xor eax, eax
mov dword [ebp - 0x534], 0
push str.installer
mov dword [ebp - 0x524], 0
mov dword [ebp - 0x520], 7
mov word [ebp - 0x534], ax
call fcn.00418a50
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 0x15
push eax
lea ecx, [ebp - 0x54c]
call fcn.004083f0
lea eax, [ebp - 0x534]
mov byte [ebp - 4], 0x16
push eax
lea ecx, [ebp - 0x54c]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x70]
call fcn.004083f0
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x538]
cmp edx, 8
jb 0x4287c6
mov ecx, dword [ebp - 0x54c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4287bc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293f1
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov dword [ebp - 0x53c], 0
mov dword [ebp - 0x538], 7
mov word [ebp - 0x54c], ax
lea eax, [ebp - 0x70]
mov byte [ebp - 4], 0x17
push eax
lea ecx, [ebp - 0x564]
call fcn.004083f0
lea eax, [ebp - 0x504]
mov byte [ebp - 4], 0x18
push eax
lea ecx, [ebp - 0x564]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x54c]
call fcn.004083f0
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0x550]
cmp edx, 8
jb 0x42885c
mov ecx, dword [ebp - 0x564]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428852
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293f6
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov dword [ebp - 0x554], 0
mov dword [ebp - 0x550], 7
mov word [ebp - 0x564], ax
lea eax, [ebp - 0x54c]
mov byte [ebp - 4], 0x19
push eax
lea ecx, [ebp - 0x38]
call fcn.004083f0
push 1
push 0x48bd88
push ecx
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1a
call fcn.004351a0
mov dword [ebp - 0x51c], 0
xor ecx, ecx
mov dword [ebp - 0x50c], 0
mov dword [ebp - 0x508], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x51c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x50c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push 0xc
push str.___uninstall
lea ecx, [ebp - 0x51c]
mov byte [ebp - 4], 0x1b
call fcn.004081d0
xor ecx, ecx
lea edx, [ebp - 0x4ec]
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x4ec], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x4dc], xmm0
mov word [eax], cx
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
cmp dword [ebp - 0x4d8], 8
cmovae edx, dword [ebp - 0x4ec]
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428941
sub ecx, esi
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.UninstallString
push edi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov dword [ebp - 0x4d0], esi
test esi, esi
je 0x42897a
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x428989
xor esi, esi
mov dword [ebp - 0x18], 0x49cb90
mov dword [ebp - 0x4d0], esi
mov edx, dword [ebp - 0x4d8]
cmp edx, 8
jb 0x4289c9
mov ecx, dword [ebp - 0x4ec]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4289bf
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0x1a
mov edx, dword [ebp - 0x508]
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4d8], 7
mov word [ebp - 0x4ec], ax
cmp edx, 8
jb 0x428a2a
mov ecx, dword [ebp - 0x51c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428a20
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0x19
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x50c], 0
mov dword [ebp - 0x508], 7
mov word [ebp - 0x51c], ax
cmp edx, 8
jb 0x428a85
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428a7b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0x538]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 7
mov word [ebp - 0x38], ax
cmp edx, 8
jb 0x428add
mov ecx, dword [ebp - 0x54c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428ad3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x428b1b
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428b11
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x520]
cmp edx, 8
jb 0x428b5f
mov ecx, dword [ebp - 0x534]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428b55
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x4f0]
mov dword [ebp - 0x524], 0
mov dword [ebp - 0x520], 7
mov word [ebp - 0x534], ax
cmp edx, 8
jb 0x428bc0
mov ecx, dword [ebp - 0x504]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428bb6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4293fb
push edx
push ecx
call fcn.004553f5
add esp, 8
test esi, esi
je 0x428c31
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0x1c
mov al, byte [esi + 0x48]
test al, al
je 0x428c09
mov edx, str.failed_set_uninstall_UninstallString_err
mov ecx, esi
call fcn.00416e30
mov al, byte [esi + 0x48]
test al, al
je 0x428c09
push dword [ebp - 0x4d0]
mov ecx, esi
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
mov byte [ebp - 4], 0x1d
lea eax, [ebp - 0x5b0]
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
push eax
call fcn.00452e26
add esp, 4
lea eax, [ebp - 0x4d0]
mov dword [ebp - 0x4d0], 0
push eax
push 0x102
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS_1_5_18ProductsEEDDA26FB4AE7874EADBF7221F52B22AInstallProperties
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x4cc], eax
test eax, eax
je 0x428c6e
mov dword [ebp - 0x18], 0x49cbb0
xor esi, esi
jmp 0x428c83
mov esi, dword [ebp - 0x4d0]
xor eax, eax
mov dword [ebp - 0x4cc], eax
mov dword [ebp - 0x18], 0x49cb90
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 0x1e
test esi, esi
jne 0x428d07
push str.updater_base::update_installer_regkeys
lea edx, [esi + 4]
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0x1f
mov al, byte [esi + 0x48]
test al, al
je 0x428cd4
mov edx, str.failed_open_installer_key_err
mov ecx, esi
call fcn.00416e30
mov al, byte [esi + 0x48]
test al, al
je 0x428cd4
push dword [ebp - 0x4cc]
mov ecx, esi
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x20
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esp, 4
jmp 0x4292b9
mov eax, dword [ebp - 0x4d4]
cmp dword [eax + 0x14], 0x10
jb 0x428d15
mov eax, dword [eax]
lea ecx, [ebp - 0x1c]
push ecx
push ecx
push eax
push ecx
lea ecx, [ebp - 0x38]
call fcn.00404f90
add esp, 0x10
lea edx, [ebp - 0x38]
cmp dword [ebp - 0x24], 8
cmovae edx, dword [ebp - 0x38]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x4cc], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428d40
sub ecx, dword [ebp - 0x4cc]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x4d4], eax
test eax, eax
je 0x428d7b
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x428d85
mov dword [ebp - 0x4d4], 0
mov edx, dword [ebp - 0x24]
cmp edx, 8
jb 0x428dbf
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428db5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429400
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4d4], 0
je 0x428e47
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov dword [ebp - 0x4cc], eax
mov byte [ebp - 4], 0x21
mov cl, byte [eax + 0x48]
test cl, cl
je 0x428e1b
mov edx, str.failed_set_installer_DisplayVersion_err
mov ecx, eax
call fcn.00416e30
mov eax, dword [ebp - 0x4cc]
mov cl, byte [eax + 0x48]
test cl, cl
je 0x428e1b
push dword [ebp - 0x4d4]
mov ecx, eax
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x22
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
add esp, 4
mov byte [ebp - 4], 0x1e
push 9
xor eax, eax
mov dword [ebp - 0x4ec], 0
push str.installer
lea ecx, [ebp - 0x4ec]
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4d8], 7
mov word [ebp - 0x4ec], ax
call fcn.00418a50
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 0x23
push eax
lea ecx, [ebp - 0x70]
call fcn.004083f0
lea eax, [ebp - 0x4ec]
mov byte [ebp - 4], 0x24
push eax
lea ecx, [ebp - 0x70]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x504]
call fcn.004083f0
mov byte [ebp - 4], 0x23
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x428ef0
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428ee6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429405
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4f0], 8
lea edx, [ebp - 0x504]
cmovae edx, dword [ebp - 0x504]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x4cc], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428f10
sub ecx, dword [ebp - 0x4cc]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.InstallSource
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x4d4], eax
test eax, eax
je 0x428f4b
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x428f55
mov dword [ebp - 0x4d4], 0
mov edx, dword [ebp - 0x4f0]
cmp edx, 8
jb 0x428f95
mov ecx, dword [ebp - 0x504]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428f8b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x42940a
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0x1e
mov edx, dword [ebp - 0x4d8]
mov dword [ebp - 0x4f4], 0
mov dword [ebp - 0x4f0], 7
mov word [ebp - 0x504], ax
cmp edx, 8
jb 0x428ff6
mov ecx, dword [ebp - 0x4ec]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x428fec
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x42940a
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4d4], 0
je 0x42907e
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov dword [ebp - 0x4cc], eax
mov byte [ebp - 4], 0x25
mov cl, byte [eax + 0x48]
test cl, cl
je 0x429052
mov edx, str.failed_set_installer_InstallSource_err
mov ecx, eax
call fcn.00416e30
mov eax, dword [ebp - 0x4cc]
mov cl, byte [eax + 0x48]
test cl, cl
je 0x429052
push dword [ebp - 0x4d4]
mov ecx, eax
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x26
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
add esp, 4
mov byte [ebp - 4], 0x1e
push 9
xor eax, eax
mov dword [ebp - 0x4ec], 0
push str.installer
lea ecx, [ebp - 0x4ec]
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4d8], 7
mov word [ebp - 0x4ec], ax
call fcn.00418a50
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 0x27
push eax
lea ecx, [ebp - 0x70]
call fcn.004083f0
lea eax, [ebp - 0x4ec]
mov byte [ebp - 4], 0x28
push eax
lea ecx, [ebp - 0x70]
call fcn.00403b30
push eax
lea ecx, [ebp - 0x504]
call fcn.004083f0
mov byte [ebp - 4], 0x27
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x429127
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x42911d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x42940f
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4f0], 8
lea edx, [ebp - 0x504]
cmovae edx, dword [ebp - 0x504]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x4cc], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x429146
sub ecx, dword [ebp - 0x4cc]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.LocalPackage
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x4d4], eax
test eax, eax
je 0x429181
mov dword [ebp - 0x18], 0x49cbb0
jmp 0x42918b
mov dword [ebp - 0x4d4], 0
mov edx, dword [ebp - 0x4f0]
cmp edx, 8
jb 0x4291cb
mov ecx, dword [ebp - 0x504]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4291c1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429414
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0x1e
mov edx, dword [ebp - 0x4d8]
mov dword [ebp - 0x4f4], 0
mov dword [ebp - 0x4f0], 7
mov word [ebp - 0x504], ax
cmp edx, 8
jb 0x42922c
mov ecx, dword [ebp - 0x4ec]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x429222
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429414
push edx
push ecx
call fcn.004553f5
add esp, 8
cmp dword [ebp - 0x4d4], 0
je 0x4292b0
push str.updater_base::update_installer_regkeys
mov edx, 4
lea ecx, [ebp - 0x610]
call fcn.00404b20
add esp, 4
mov dword [ebp - 0x4d0], eax
mov byte [ebp - 4], 0x29
mov cl, byte [eax + 0x48]
test cl, cl
je 0x429288
mov edx, str.failed_set_installer_LocalPackage_err
mov ecx, eax
call fcn.00416e30
mov eax, dword [ebp - 0x4d0]
mov cl, byte [eax + 0x48]
test cl, cl
je 0x429288
push dword [ebp - 0x4d4]
mov ecx, eax
call fcn.00415010
lea ecx, [ebp - 0x5b0]
call fcn.004048b0
lea eax, [ebp - 0x5b0]
mov byte [ebp - 4], 0x2a
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00452e26
add esp, 4
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call esi
test edi, edi
je 0x4292c0
push edi
call esi
mov edx, dword [ebp - 0x7c]
cmp edx, 8
jb 0x4292fd
mov ecx, dword [ebp - 0x90]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4292f3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
mov edx, dword [ebp - 0x98]
cmp edx, 8
jb 0x42933d
mov ecx, dword [ebp - 0xac]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x429333
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
mov edx, dword [ebp - 0x44]
xor eax, eax
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 7
mov word [ebp - 0xac], ax
cmp edx, 8
jb 0x429394
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x42938a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x429419
push edx
push ecx
call fcn.004553f5
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
lea ecx, [ebp - 0x4c8]
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.004047e0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004553e7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8
call fcn.00418f10
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
call fcn.00459a2f
int3