Function at 0x421a10
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48b73a
mov eax, dword fs:[0]
push eax
mov eax, 0x1044
call fcn.00458510
mov eax, dword [0x4db434]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 4], 0
lea eax, [ebp - 0x14]
push 0
mov esi, dword [ebp + 8]
push 0
push 0
push 0
push eax
push 0
push 0
push 0
push 0
push 0
mov dword [ebp - 0x34], 0
push 0
push dword [ebx]
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x14], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
je 0x421aac
push eax
lea eax, [ebp - 0x1050]
push str.Could_not_get_registry_value_count_while_attempting_to_get_value_names___i_.
push eax
call fcn.004052e0
add esp, 0xc
lea eax, [ebp - 0x1050]
push 0x4d8cc4
push eax
call fcn.00459b3b
xor eax, eax
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0x2c]
push 0x7fff
mov dword [ebp - 0x30], 0x7fff
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], ax
call fcn.00402e30
mov dword [ebp - 4], 1
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov ecx, dword [esi + 8]
mov eax, 0x2aaaaaab
sub ecx, dword [esi]
imul ecx
mov ecx, dword [ebp - 0x14]
sar edx, 2
mov eax, edx
mov dword [ebp - 0x34], 1
shr eax, 0x1f
add eax, edx
cmp eax, ecx
jae 0x421b4d
cmp ecx, 0xaaaaaaa
jbe 0x421b42
push str.vector_T__too_long
call fcn.004569fd
push ecx
mov ecx, esi
call fcn.00408e30
mov ecx, dword [ebp - 0x14]
xor edi, edi
test ecx, ecx
je 0x421bce
cmp dword [ebp - 0x18], 8
lea ecx, [ebp - 0x30]
push 0
push 0
push 0
push 0
push ecx
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x30], 0x7fff
cmovae eax, dword [ebp - 0x2c]
push eax
push edi
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
test eax, eax
jne 0x421bea
cmp dword [ebp - 0x18], 8
lea ebx, [ebp - 0x2c]
mov eax, dword [esi + 4]
cmovae ebx, dword [ebp - 0x2c]
cmp eax, dword [esi + 8]
jne 0x421b9b
push 1
mov ecx, esi
call fcn.00408d30
mov ecx, dword [esi + 4]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], ecx
mov byte [ebp - 4], 2
test ecx, ecx
je 0x421bbd
push dword [ebp - 0x30]
mov edx, ebx
call fcn.004027b0
add esp, 4
mov byte [ebp - 4], 2
mov byte [ebp - 4], 1
inc edi
add dword [esi + 4], 0x18
mov ebx, dword [ebp - 0x38]
cmp edi, dword [ebp - 0x14]
jb 0x421b53
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x18]
cmp eax, 8
jb 0x421c52
mov ecx, dword [ebp - 0x2c]
inc eax
cmp eax, 0x7fffffff
jbe 0x421c11
call fcn.0045e46c
push eax
push edi
lea eax, [ebp - 0x1050]
push str.Could_not_get_registry_value_name_at_index__i___i_.
push eax
call fcn.004052e0
add esp, 0x10
lea eax, [ebp - 0x1050]
push 0x4d8cc4
push eax
call fcn.00459b3b
add eax, eax
cmp eax, 0x1000
jb 0x421c49
test byte [ebp - 0x2c], 0x1f
je 0x421c25
call fcn.0045e46c
mov eax, dword [ecx - 4]
cmp eax, ecx
jb 0x421c31
call fcn.0045e46c
sub ecx, eax
cmp ecx, 4
jae 0x421c3d
call fcn.0045e46c
cmp ecx, 0x23
jbe 0x421c47
call fcn.0045e46c
mov ecx, eax
push ecx
call fcn.004584e5
add esp, 4
xor eax, eax
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], ax
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004584f8
mov esp, ebp
pop ebp
ret 4