Function at 0x10005f90
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
sub esp, 0x960
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x171]
mov byte [esp + 0x170], 0
mov esi, dword [esp + 0x97c]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, dword [esp + 0x978]
mov edx, dword [esp + 0x974]
stosb byte es:[edi], al
lea eax, [esp + 0x1c]
or esi, 0x20019
push eax
push esi
push 0
mov ebx, 0x100
push ecx
push edx
mov dword [esp + 0x40], ebp
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], ebx
mov dword [esp + 0x50], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x100067e9
push eax
push eax
push eax
push eax
mov ecx, dword [esp + 0x2c]
push eax
push eax
push eax
lea eax, [esp + 0x3c]
push eax
push 0
push 0
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x100067cf
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x38], eax
test ecx, ecx
jbe 0x100067cf
jmp 0x10006043
mov esi, dword [esp + 0x3c]
mov ebx, 0x100
push 0
push 0
push 0
lea edx, [esp + 0x1c]
push 0
lea ecx, [esp + 0x180]
push edx
mov edx, dword [esp + 0x30]
push ecx
push eax
push edx
mov dword [esp + 0x30], ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x14]
push eax
push esi
lea ecx, [esp + 0x178]
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x100067ba
mov ecx, 0x1c0
lea edi, [esp + 0x270]
rep stosd dword es:[edi], eax
mov ecx, 0x3f
lea edi, [esp + 0x71]
mov byte [esp + 0x70], al
lea edx, [esp + 0x18]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x10]
lea ecx, [esp + 0x270]
push eax
mov eax, dword [esp + 0x18]
push ecx
push edx
push 0
mov dword [esp + 0x20], ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push str.DisplayName
push eax
call ebx
mov edi, 0x100674d4
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x70]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x10], 0x100
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x370]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
xor edi, edi
push ecx
mov ecx, dword [esp + 0x18]
push edx
push eax
push edi
push str.Publisher
push ecx
call ebx
lea edx, [esp + 0x10]
lea eax, [esp + 0x670]
push edx
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
push eax
push ecx
push edi
mov esi, 0x100
push str.DisplayVersion
push edx
mov dword [esp + 0x28], esi
call ebx
lea eax, [esp + 0x10]
lea ecx, [esp + 0x470]
push eax
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x1c]
push ecx
push edx
push edi
push str.InstallDate
push eax
mov dword [esp + 0x28], esi
call ebx
test eax, eax
je 0x100061e3
lea ecx, [esp + 0x48]
mov edx, dword [esp + 0x14]
push ecx
push edi
push edi
push edi
push edi
push edi
push edi
push edi
push edi
push edi
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
lea eax, [esp + 0x60]
lea ecx, [esp + 0x48]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
lea edx, [esp + 0x50]
lea eax, [esp + 0x60]
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SystemTimeToTzSpecificLocalTime]
mov ecx, dword [esp + 0x56]
mov edx, dword [esp + 0x52]
mov eax, dword [esp + 0x50]
and ecx, 0xffff
and edx, 0xffff
push ecx
and eax, 0xffff
push edx
push eax
lea ecx, [esp + 0x47c]
push str._d_02d_02d
push ecx
call fcn.100208b9
add esp, 0x14
lea edx, [esp + 0x10]
lea eax, [esp + 0x770]
push edx
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
push eax
push ecx
push edi
push str.UninstallString
push edx
mov dword [esp + 0x28], esi
call ebx
lea eax, [esp + 0x10]
lea ecx, [esp + 0x34]
push eax
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x1c]
push ecx
push edx
push edi
push str.EstimatedSize
push eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x4c], edi
call ebx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], ecx
sub esp, 8
fild qword [esp + 0x48]
lea edx, [esp + 0x578]
fmul qword [0x10044590]
fstp qword [esp]
push str._.2f_MB
push edx
call fcn.100208b9
add esp, 0x10
lea eax, [esp + 0x10]
lea ecx, [esp + 0x870]
lea edx, [esp + 0x18]
push eax
mov eax, dword [esp + 0x18]
push ecx
push edx
push edi
push str.InstallLocation
push eax
mov dword [esp + 0x28], esi
call ebx
lea ecx, [esp + 0x10]
lea edx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push edx
push eax
push edi
push str.SystemComponent
push ecx
mov dword [esp + 0x28], esi
mov dword [esp + 0x48], edi
call ebx
mov edi, 0x100674d4
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x10], esi
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x70]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x74]
lea eax, [esp + 0x1c]
push edx
push eax
push 0
push str.ParentKeyName
push ecx
call ebx
lea edx, [esp + 0x270]
push 0x100674d4
push edx
mov dword [esp + 0x18], 0x100
call fcn.10020ce8
add esp, 8
test eax, eax
je 0x100067ba
lea eax, [esp + 0x70]
push 0x100674d4
push eax
call fcn.10020ce8
add esp, 8
test eax, eax
jne 0x100067ba
mov edi, 0x100674d4
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x70]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x70]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x18]
and ecx, 3
mov dword [esp + 0x10], 0x100
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push edx
push eax
push 0
push str.ReleaseType
push ecx
call ebx
lea edx, [esp + 0x70]
push 0x100674d4
push edx
call fcn.10020ce8
add esp, 8
test eax, eax
jne 0x100067ba
mov eax, dword [esp + 0x30]
test eax, eax
je 0x100065a2
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x1c]
add ebp, 0x10
sub esi, ecx
mov eax, 0x92492493
mov ebx, ecx
imul esi
add edx, esi
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 1
jae 0x1000649b
mov eax, dword [ebp + 4]
test eax, eax
je 0x100063e3
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 0xa
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
cmp edx, 1
mov esi, edx
ja 0x100063e8
mov esi, 1
mov ecx, ebp
call fcn.100068b0
mov edi, eax
add edi, esi
mov eax, edi
jns 0x100063f9
xor eax, eax
lea edx, [eax*8]
sub edx, eax
shl edx, 8
push edx
call fcn.1003ba7d
add esp, 4
mov esi, eax
mov eax, dword [ebp + 4]
mov ecx, ebp
push esi
push ebx
push eax
call fcn.100068e0
lea ecx, [esp + 0x270]
mov dword [esp + 0x28], eax
push ecx
push 1
push eax
mov ecx, ebp
call fcn.10006920
mov edx, dword [esp + 0x28]
mov eax, dword [ebp + 8]
add edx, 0x700
mov ecx, ebp
push edx
push eax
push ebx
call fcn.100068e0
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 4]
push ecx
push edx
mov ecx, ebp
call fcn.100068a0
mov eax, dword [ebp + 4]
push eax
call fcn.1003baa6
lea ecx, [edi*8]
add esp, 4
sub ecx, edi
shl ecx, 8
add ecx, esi
mov dword [ebp + 0xc], ecx
mov ecx, ebp
call fcn.100068b0
inc eax
mov dword [ebp + 4], esi
lea edx, [eax*8]
sub edx, eax
shl edx, 8
add edx, esi
mov dword [ebp + 8], edx
mov ebp, dword [esp + 0x2c]
jmp 0x100067ba
mov esi, ecx
mov eax, 0x92492493
sub esi, ebx
imul esi
add edx, esi
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 1
jae 0x1000652e
lea edx, [ebx + 0x700]
push edx
push ecx
push ebx
mov ecx, ebp
call fcn.100068e0
mov esi, dword [ebp + 8]
lea eax, [esp + 0x270]
mov ecx, esi
push eax
sub ecx, ebx
mov eax, 0x92492493
imul ecx
add edx, ecx
mov eax, 1
sar edx, 0xa
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, ebp
sub eax, edx
push eax
push esi
call fcn.10006920
mov eax, dword [ebp + 8]
cmp ebx, eax
je 0x1000651a
mov edi, ebx
add ebx, 0x700
mov ecx, 0x1c0
lea esi, [esp + 0x270]
cmp ebx, eax
rep movsd dword es:[edi], dword [esi]
jne 0x10006500
mov eax, dword [ebp + 8]
add eax, 0x700
mov dword [ebp + 8], eax
mov ebp, dword [esp + 0x2c]
jmp 0x100067ba
lea eax, [ecx - 0x700]
push ecx
push ecx
push eax
mov ecx, ebp
mov dword [esp + 0x30], eax
call fcn.100068e0
mov edx, dword [ebp + 8]
lea eax, [edx - 0x700]
cmp ebx, eax
je 0x10006569
sub eax, 0x700
sub edx, 0x700
mov ecx, 0x1c0
mov esi, eax
mov edi, edx
cmp eax, ebx
rep movsd dword es:[edi], dword [esi]
jne 0x1000654f
lea edx, [ebx + 0x700]
mov eax, ebx
cmp ebx, edx
je 0x1000658e
mov edi, eax
add eax, 0x700
mov ecx, 0x1c0
lea esi, [esp + 0x270]
cmp eax, edx
rep movsd dword es:[edi], dword [esi]
jne 0x10006575
mov eax, dword [ebp + 8]
add eax, 0x700
mov dword [ebp + 8], eax
mov ebp, dword [esp + 0x2c]
jmp 0x100067ba
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
sub esi, ecx
mov eax, 0x92492493
imul esi
add edx, esi
mov ebx, ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 1
jae 0x100066d2
mov edi, dword [ebp + 4]
test edi, edi
je 0x100065ed
mov esi, ecx
mov eax, 0x92492493
sub esi, edi
imul esi
add edx, esi
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 1
mov esi, edx
ja 0x100065f2
mov esi, 1
test edi, edi
jne 0x100065fa
xor edx, edx
jmp 0x1000660f
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 0xa
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea eax, [edx + esi]
test eax, eax
mov dword [esp + 0x28], eax
jge 0x1000661c
xor eax, eax
lea edx, [eax*8]
sub edx, eax
shl edx, 8
push edx
call fcn.1003ba7d
mov edi, dword [ebp + 4]
add esp, 4
cmp edi, ebx
mov dword [esp + 0x24], eax
mov esi, eax
je 0x10006658
push edi
push esi
call fcn.10006960
add edi, 0x700
add esp, 8
add esi, 0x700
cmp edi, ebx
jne 0x1000663e
lea eax, [esp + 0x270]
mov ecx, ebp
push eax
push 1
push esi
call fcn.10006920
mov ecx, dword [ebp + 8]
add esi, 0x700
push esi
push ecx
push ebx
mov ecx, ebp
call fcn.100068e0
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 4]
push edx
push eax
mov ecx, ebp
call fcn.100068a0
mov ecx, dword [ebp + 4]
push ecx
call fcn.1003baa6
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
add esp, 4
mov ecx, ebp
lea edx, [eax*8]
sub edx, eax
shl edx, 8
add edx, esi
mov dword [ebp + 0xc], edx
call fcn.100068b0
inc eax
mov dword [ebp + 4], esi
lea ecx, [eax*8]
sub ecx, eax
shl ecx, 8
add ecx, esi
mov dword [ebp + 8], ecx
jmp 0x100067ba
mov esi, ecx
mov eax, 0x92492493
sub esi, ebx
imul esi
add edx, esi
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 1
jae 0x10006753
lea edx, [ebx + 0x700]
push edx
push ecx
push ebx
mov ecx, ebp
call fcn.100068e0
mov esi, dword [ebp + 8]
lea eax, [esp + 0x270]
mov ecx, esi
push eax
sub ecx, ebx
mov eax, 0x92492493
imul ecx
add edx, ecx
mov eax, 1
sar edx, 0xa
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, ebp
sub eax, edx
push eax
push esi
call fcn.10006920
mov eax, dword [ebp + 8]
cmp ebx, eax
je 0x100067b3
mov edi, ebx
add ebx, 0x700
mov ecx, 0x1c0
lea esi, [esp + 0x270]
cmp ebx, eax
rep movsd dword es:[edi], dword [esi]
jne 0x10006737
jmp 0x100067b3
lea eax, [ecx - 0x700]
push ecx
push ecx
push eax
mov ecx, ebp
mov dword [esp + 0x30], eax
call fcn.100068e0
mov edx, dword [ebp + 8]
lea eax, [edx - 0x700]
cmp ebx, eax
je 0x1000678e
sub eax, 0x700
sub edx, 0x700
mov ecx, 0x1c0
mov esi, eax
mov edi, edx
cmp eax, ebx
rep movsd dword es:[edi], dword [esi]
jne 0x10006774
lea edx, [ebx + 0x700]
mov eax, ebx
cmp ebx, edx
je 0x100067b3
mov edi, eax
add eax, 0x700
mov ecx, 0x1c0
lea esi, [esp + 0x270]
cmp eax, edx
rep movsd dword es:[edi], dword [esi]
jne 0x1000679a
add dword [ebp + 8], 0x700
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x38], eax
jb 0x1000603a
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x960
ret 0xc
push str.CAssets___Get_Software_Error_
call fcn.10001280
add esp, 4
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x960
ret 0xc