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

Disassembly:
push ebp
sub esp, 0x7d0
lea ebp, [esp - 4]
mov eax, dword [0x10068510]
xor eax, ebp
mov dword [ebp + 0x7d0], eax
push 0x44
mov eax, 0x10051231
call fcn.10037f69
mov esi, ecx
mov byte [esi + 0x10], 1
xor ebx, ebx
mov dword [ebp - 4], ebx
xor edi, edi
inc edi
mov dword [esi + 4], edi
mov byte [ebp - 0x11], bl
cmp dword [0x1006a458], ebx
je 0x10011861
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
lea ecx, [ebp - 0x18]
call fcn.10005ad2
mov byte [ebp - 4], 1
lea eax, [ebp - 0x18]
push eax
push 0x10056838
push 4
push ebx
push 0x10056858
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jne 0x10011847
cmp dword [ebp - 0x18], ebx
je 0x10011847
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x28], ebx
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
lea edx, [ebp - 0x28]
push edx
lea edx, [ebp - 0x3c]
push edx
lea edx, [ebp - 0x50]
push edx
push eax
call dword [ecx + 0x40]
cmp eax, ebx
jne 0x10011847
mov byte [ebp - 0x11], 1
mov eax, dword [ebp - 0x3c]
mov dword [esi + 4], eax
cmp eax, 3
jne 0x10011847
mov eax, 0x2008
cmp word [ebp - 0x50], ax
jne 0x10011847
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x30], eax
lea ecx, [ebp - 0x20]
push ecx
push edi
push eax
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
lea eax, [ebp - 0x38]
push eax
push edi
push dword [ebp - 0x30]
call dword [sym.imp.OLEAUT32.dll_SafeArrayLock]
mov edi, dword [ebp - 0x20]
sub edi, dword [ebp - 0x38]
inc edi
mov dword [esi + 0xc], edi
cmp edi, ebx
jle 0x1001183e
xor ecx, ecx
mov eax, edi
push 4
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10037b36
pop ecx
mov dword [esi + 8], eax
cmp eax, ebx
je 0x1001183e
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x40], edi
cmp edi, dword [ebp - 0x20]
jg 0x1001183e
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x1c], ebx
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x30]
call dword [sym.imp.OLEAUT32.dll_SafeArrayPutElement]
cmp dword [ebp - 0x1c], ebx
je 0x1001183b
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push dword [ebp - 0x1c]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x34], eax
cmp eax, ebx
jle 0x10011832
inc eax
push eax
call fcn.10037b36
pop ecx
mov ecx, dword [esi + 8]
mov dword [ecx + edi*4], eax
mov eax, dword [esi + 8]
lea eax, [eax + edi*4]
cmp dword [eax], ebx
je 0x10011832
push ebx
push ebx
push dword [ebp - 0x34]
push dword [eax]
push 0xffffffffffffffff
push dword [ebp - 0x1c]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push dword [ebp - 0x1c]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
inc edi
jmp 0x100117ca
push dword [ebp - 0x30]
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetDim]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x18]
call fcn.1001e586
cmp byte [ebp - 0x11], bl
jne 0x1001197b
lea eax, [ebp - 0x18]
push eax
push 9
push ebx
push str.SoftwareDownloadManagerDwnlSelPanel
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x1001197f
mov dword [ebp - 0x34], 4
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x2c]
push eax
push ebx
push ebx
push str.PanelMode
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x100118a9
mov eax, dword [ebp - 0x2c]
mov dword [esi + 4], eax
cmp dword [esi + 4], 3
jne 0x10011972
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x28]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x10011972
mov edi, dword [ebp - 0x28]
cmp edi, ebx
je 0x10011972
mov dword [esi + 0xc], edi
xor ecx, ecx
mov eax, edi
push 4
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10037b36
pop ecx
mov dword [esi + 8], eax
cmp eax, ebx
je 0x10011972
xor eax, eax
mov dword [ebp - 0x24], eax
cmp eax, dword [esi + 0xc]
jge 0x10011911
mov ecx, dword [esi + 8]
mov dword [ecx + eax*4], ebx
inc eax
jmp 0x10011900
xor edi, edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], ebx
cmp dword [ebp - 0x20], ebx
jne 0x10011972
cmp edi, dword [esi + 0xc]
je 0x10011972
push 0x7d0
lea eax, [ebp]
push eax
push edi
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
mov dword [ebp - 0x20], eax
cmp eax, ebx
jne 0x1001196c
lea eax, [ebp]
push eax
call fcn.100381a0
inc eax
push eax
call fcn.10037b36
pop ecx
pop ecx
mov ecx, dword [esi + 8]
mov dword [ecx + edi*4], eax
mov eax, dword [esi + 8]
lea eax, [eax + edi*4]
cmp dword [eax], ebx
je 0x1001196c
lea ecx, [ebp]
push ecx
push dword [eax]
call fcn.100380a0
pop ecx
pop ecx
inc edi
mov dword [ebp - 0x24], edi
jmp 0x10011919
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x7d0]
xor ecx, ebp
call fcn.10037f27
add ebp, 0x7d4
leave
ret