Function at 0x46c770
Capabilities:
Get installed programs
Query or enumerate registry key
Query or enumerate 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 0x4b495c
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x4c0
mov eax, dword [0x4de080]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov al, byte [ebx + 8]
lea ecx, [ebp - 0x494]
mov byte [ebp - 0x495], al
movzx eax, al
inc eax
mov dword [ebp - 0x494], 0
push ecx
shl eax, 8
or eax, 0x20019
push eax
push 0
push str.SOFTWAREMICROSOFTWINDOWSCURRENTVERSIONUNINSTALL
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov esi, eax
test esi, esi
jne 0x46ce95
push 0x200
push eax
lea eax, [ebp - 0x418]
mov dword [ebp - 0x49c], esi
push eax
call fcn.00485800
add esp, 0xc
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x420]
mov dword [ebp - 0x420], 0x200
push eax
lea eax, [ebp - 0x418]
push eax
push esi
push dword [ebp - 0x494]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x46ce84
mov dword [ebp - 0x490], eax
lea eax, [ebp - 0x490]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x418]
push eax
push dword [ebp - 0x494]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov esi, eax
test esi, esi
jne 0x46cdad
mov dword [ebp - 0x41c], eax
lea eax, [ebp - 0x48c]
push eax
lea eax, [ebp - 0x218]
mov dword [ebp - 0x48c], 0x200
push eax
lea eax, [ebp - 0x41c]
push eax
push 2
push str.DisplayName
push esi
push dword [ebp - 0x490]
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x46cd8f
lea eax, [ebp - 0x218]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x46c8c1
sub eax, edx
sar eax, 1
cmp eax, 0xc
jb 0x46cd8f
mov esi, 0xc
xor edx, edx
movzx ecx, word [ebp + edx - 0x218]
movzx eax, word [edx + 0x4c34d0]
cmp cx, ax
jne 0x46cd8f
add edx, 2
sub esi, 1
jne 0x46c8e0
push esi
xorps xmm0, xmm0
mov dword [ebp - method.InstalledProducts::InstalledProduct.virtual_0], vtable.InstalledProducts::InstalledProduct.0
push 0x4c0c34
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x474], esi
movups xmmword [ebp - 0x484], xmm0
mov dword [ebp - 0x470], esi
call fcn.0040df90
mov dword [ebp - 4], esi
lea ecx, [ebp - 0x46c]
push esi
xorps xmm0, xmm0
mov dword [ebp - 0x45c], esi
push 0x4c0c34
movups xmmword [ebp - 0x46c], xmm0
mov dword [ebp - 0x458], esi
call fcn.0040df90
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x454]
push esi
xorps xmm0, xmm0
mov dword [ebp - 0x444], esi
push 0x4c0c34
movups xmmword [ebp - 0x454], xmm0
mov dword [ebp - 0x440], esi
call fcn.0040df90
xorps xmm0, xmm0
mov dword [ebp - 0x42c], esi
xor eax, eax
mov dword [ebp - 0x428], 7
movups xmmword [ebp - 0x43c], xmm0
mov word [ebp - 0x43c], ax
mov byte [ebp - 0x424], al
lea ecx, [ebp - 0x218]
mov dword [ebp - 4], 2
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46c9c0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x46c]
call fcn.0040db20
lea ecx, [ebp - 0x418]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46c9f0
sub ecx, edx
lea eax, [ebp - 0x418]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x484]
call fcn.0040db20
mov al, byte [ebp - 0x495]
lea ecx, [ebp - 0x4b4]
mov byte [ebp - 0x424], al
call fcn.00467c30
mov byte [ebp - 4], 3
cmp dword [eax + 0x14], 7
mov ecx, dword [eax + 0x10]
jbe 0x46ca38
mov eax, dword [eax]
push ecx
mov edx, eax
mov ecx, 0x4e14e8
call fcn.00412510
add esp, 4
mov edx, str.D:JenkinsworkspaceN_SUCommon_VS2022_srcSUCommonInstalledProducts.cpp
mov ecx, eax
call fcn.00411040
mov edx, 0x4c14f8
mov ecx, eax
call fcn.00411040
cmp byte [ebp - 0x495], 0
mov ecx, str.__64_
mov esi, str.__32_
cmove esi, ecx
mov ecx, eax
push 0x3a
call fcn.0040f7e0
mov edx, str.:_Found
mov ecx, eax
call fcn.00411040
lea edx, [ebp - 0x218]
mov ecx, eax
call fcn.0041b8f0
mov edx, str._installed_as
mov ecx, eax
call fcn.00411040
lea edx, [ebp - 0x418]
mov ecx, eax
call fcn.0041b8f0
mov edx, esi
mov ecx, eax
call fcn.00411040
push eax
call fcn.004113c0
mov byte [ebp - 4], 2
add esp, 4
mov ecx, dword [ebp - 0x4a0]
cmp ecx, 7
jbe 0x46cb05
mov edx, dword [ebp - 0x4b4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x46cafb
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46cf68
push ecx
push edx
call fcn.0048355d
add esp, 8
mov esi, dword [sym.imp.ADVAPI32.dll_RegGetValueW]
lea eax, [ebp - 0x48c]
push eax
lea eax, [ebp - 0x218]
mov dword [ebp - 0x48c], 0x200
push eax
lea eax, [ebp - 0x41c]
push eax
push 2
push str.DisplayVersion
push 0
push dword [ebp - 0x490]
call esi
test eax, eax
jne 0x46cb72
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46cb50
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x454]
call fcn.0040db20
lea eax, [ebp - 0x48c]
push eax
push 0
lea eax, [ebp - 0x41c]
push eax
push 2
push str.InstallLocation
push 0
push dword [ebp - 0x490]
call esi
test eax, eax
jne 0x46cc0a
mov eax, dword [ebp - 0x48c]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004837a6
add esp, 4
mov esi, eax
lea eax, [ebp - 0x48c]
push eax
push esi
lea eax, [ebp - 0x41c]
push eax
push 2
push str.InstallLocation
push 0
push dword [ebp - 0x490]
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x46cc01
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46cbe5
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x43c]
call fcn.0040db20
push esi
call fcn.0048356b
add esp, 4
lea ecx, [ebp - 0x4b4]
call fcn.00467c30
mov byte [ebp - 4], 4
cmp dword [eax + 0x14], 7
mov ecx, dword [eax + 0x10]
jbe 0x46cc24
mov eax, dword [eax]
push ecx
mov edx, eax
mov ecx, 0x4e14e8
call fcn.00412510
add esp, 4
mov edx, str.D:JenkinsworkspaceN_SUCommon_VS2022_srcSUCommonInstalledProducts.cpp
mov ecx, eax
call fcn.00411040
mov edx, 0x4c14f8
mov ecx, eax
call fcn.00411040
push 0x49
mov ecx, eax
call fcn.0040f7e0
mov edx, str.:_DisplayVersion
mov ecx, eax
call fcn.00411040
cmp dword [ebp - 0x440], 7
lea edx, [ebp - 0x454]
push dword [ebp - 0x444]
cmova edx, dword [ebp - 0x454]
mov ecx, eax
call fcn.00412510
add esp, 4
mov edx, str.__InstallLocation
mov ecx, eax
call fcn.00411040
cmp dword [ebp - 0x428], 7
lea edx, [ebp - 0x43c]
push dword [ebp - 0x42c]
cmova edx, dword [ebp - 0x43c]
mov ecx, eax
call fcn.00412510
add esp, 4
push eax
call fcn.004113c0
mov byte [ebp - 4], 2
add esp, 4
mov ecx, dword [ebp - 0x4a0]
cmp ecx, 7
jbe 0x46cd02
mov edx, dword [ebp - 0x4b4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x46ccf8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46cf68
push ecx
push edx
call fcn.0048355d
add esp, 8
mov esi, dword [edi + 8]
lea ecx, [edi + 4]
cmp esi, dword [edi + 0xc]
je 0x46cd70
lea eax, [ebp - 0x484]
mov dword [ebp - 0x4b8], esi
lea ecx, [esi + 4]
mov dword [esi], vtable.InstalledProducts::InstalledProduct.0
push eax
call fcn.0040d620
lea eax, [ebp - 0x46c]
mov byte [ebp - 4], 5
lea ecx, [esi + 0x1c]
push eax
call fcn.0040d620
lea eax, [ebp - 0x454]
mov byte [ebp - 4], 6
lea ecx, [esi + 0x34]
push eax
call fcn.0040d620
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 7
lea ecx, [esi + 0x4c]
push eax
call fcn.0040d620
mov al, byte [ebp - 0x424]
mov byte [esi + 0x64], al
add dword [edi + 8], 0x68
jmp 0x46cd7d
lea eax, [ebp - 0x488]
push eax
push esi
call fcn.004709f0
lea ecx, [ebp - 0x488]
mov dword [ebp - 4], 0xffffffff
call fcn.004623b0
push dword [ebp - 0x490]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x49c]
inc esi
mov dword [ebp - 0x49c], esi
jmp 0x46c811
lea ecx, [ebp - 0x4b4]
call fcn.00467c30
mov dword [ebp - 4], 8
cmp dword [eax + 0x14], 7
mov edi, dword [eax + 0x10]
jbe 0x46cdca
mov eax, dword [eax]
push edi
mov edx, eax
mov ecx, 0x4e14e8
call fcn.00412510
add esp, 4
mov edx, str.D:JenkinsworkspaceN_SUCommon_VS2022_srcSUCommonInstalledProducts.cpp
mov ecx, eax
call fcn.00411040
mov edx, 0x4c14f8
mov ecx, eax
call fcn.00411040
push 0x50
mov ecx, eax
call fcn.0040f7e0
mov edx, str.:_Error_opening_uninstall_key__
mov ecx, eax
call fcn.00411040
lea edx, [ebp - 0x418]
mov ecx, eax
call fcn.0041b8f0
mov edx, 0x4cdda8
mov ecx, eax
call fcn.00411040
push esi
mov ecx, eax
call fcn.0041b6a0
mov edx, 0x4cdda4
mov ecx, eax
call fcn.00411040
push eax
call fcn.004113c0
mov dword [ebp - 4], 0xffffffff
add esp, 4
mov ecx, dword [ebp - 0x4a0]
cmp ecx, 7
jbe 0x46ce84
mov edx, dword [ebp - 0x4b4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x46ce7a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46cf68
push ecx
push edx
call fcn.0048355d
add esp, 8
push dword [ebp - 0x494]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x46cf48
lea ecx, [ebp - 0x4d0]
call fcn.00467c30
mov dword [ebp - 4], 9
cmp dword [eax + 0x14], 7
mov ecx, dword [eax + 0x10]
jbe 0x46ceb2
mov eax, dword [eax]
push ecx
mov edx, eax
mov ecx, 0x4e14e8
call fcn.00412510
add esp, 4
mov edx, str.D:JenkinsworkspaceN_SUCommon_VS2022_srcSUCommonInstalledProducts.cpp
mov ecx, eax
call fcn.00411040
mov edx, 0x4c14f8
mov ecx, eax
call fcn.00411040
push 0x58
mov ecx, eax
call fcn.0040f7e0
mov edx, str.:_Error_opening_root_uninstall_key__
mov ecx, eax
call fcn.00411040
push esi
mov ecx, eax
call fcn.0041b6a0
mov edx, 0x4cdda4
mov ecx, eax
call fcn.00411040
push eax
call fcn.004113c0
mov ecx, dword [ebp - 0x4bc]
add esp, 4
cmp ecx, 7
jbe 0x46cf48
mov edx, dword [ebp - 0x4d0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x46cf3e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46cf6d
push ecx
push edx
call fcn.0048355d
add esp, 8
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.00483226
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
call fcn.0048878f
call fcn.0048878f
int3