Function at 0x409cd5
Capabilities:
Query or enumerate registry key

Disassembly:
push 0xd4
mov eax, 0x43ecf9
call fcn.004265cd
mov dword [ebp - 0xc8], ecx
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0xd8], edi
call fcn.0040ecdb
push eax
lea ecx, [ebp - 0xac]
call fcn.00402015
xor ebx, ebx
lea ecx, [ebp - 0xac]
push str.TypeLib_
mov dword [ebp - 4], ebx
call fcn.00402979
push edi
call fcn.00401b6e
pop ecx
push eax
push edi
lea ecx, [ebp - 0xac]
call fcn.00402405
push esi
lea ecx, [ebp - 0xb4]
mov dword [ebp - 0xb0], ebx
mov edi, ebx
call fcn.00401fad
push ebx
push 0x2e
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 1
call fcn.0040a738
mov esi, eax
cmp esi, 1
jl 0x409de5
push esi
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xb4]
call fcn.0040a6cb
mov byte [ebp - 4], 2
mov edi, dword [ebp - 0xbc]
push edi
call fcn.0042f37c
pop ecx
mov ecx, dword [ebp - 0xb4]
lea edx, [esi + 1]
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0xb8]
mov ecx, dword [ecx - 0xc]
sub ecx, edx
push ecx
push edx
push eax
lea ecx, [ebp - 0xb4]
call fcn.00408260
mov esi, dword [ebp - 0xb8]
push esi
call fcn.0042f37c
pop ecx
lea ecx, [esi - 0x10]
mov dword [ebp - 0xb0], eax
call fcn.00402052
lea ecx, [edi - 0x10]
mov byte [ebp - 4], 1
call fcn.00402052
mov esi, dword [ebp - 0xac]
mov edi, dword [ebp - 0xa8]
jmp 0x409f84
mov esi, dword [ebp - 0xac]
lea eax, [ebp - 0xc4]
push eax
push 0x20019
push ebx
push esi
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x409f84
lea eax, [ebp - 0xe0]
mov dword [ebp - 0xc0], 0x40
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0xc0]
mov dword [ebp - 0xbc], ebx
push eax
lea eax, [ebp - 0x94]
push eax
push ebx
push dword [ebp - 0xc4]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x409f78
mov esi, ebx
mov edi, ebx
lea eax, [ebp - 0x94]
push eax
lea ecx, [ebp - 0xa8]
call fcn.00401fad
push ebx
push 0x2e
lea ecx, [ebp - 0xa8]
mov byte [ebp - 4], 3
call fcn.0040a738
mov dword [ebp - 0xd0], eax
cmp eax, 1
jl 0x409f16
push eax
lea eax, [ebp - 0xcc]
push eax
lea ecx, [ebp - 0xa8]
call fcn.0040a6cb
mov byte [ebp - 4], 4
mov edi, dword [ebp - 0xcc]
push edi
call fcn.0042f37c
mov edx, dword [ebp - 0xd0]
pop ecx
mov ecx, dword [ebp - 0xa8]
inc edx
mov dword [ebp - 0xd4], eax
lea eax, [ebp - 0xb8]
mov ecx, dword [ecx - 0xc]
sub ecx, edx
push ecx
push edx
push eax
lea ecx, [ebp - 0xa8]
call fcn.00408260
push dword [ebp - 0xb8]
call fcn.0042f37c
pop ecx
mov ecx, eax
mov eax, dword [ebp - 0xd4]
cmp eax, esi
jg 0x409ef2
jne 0x409efa
cmp ecx, dword [ebp - 0xb0]
jle 0x409efa
mov esi, eax
mov dword [ebp - 0xb0], ecx
mov ecx, dword [ebp - 0xb8]
lea ecx, [ecx - 0x10]
call fcn.00402052
lea ecx, [edi - 0x10]
call fcn.00402052
mov edi, dword [ebp - 0xbc]
mov byte [ebp - 4], 1
inc edi
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xc0], 0x40
lea ecx, [ecx - 0x10]
call fcn.00402052
lea eax, [ebp - 0xe0]
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0xc0]
push eax
lea eax, [ebp - 0x94]
push eax
push edi
push dword [ebp - 0xc4]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
je 0x409e4d
mov dword [ebp - 0xa8], esi
mov esi, dword [ebp - 0xac]
mov edi, dword [ebp - 0xa8]
push dword [ebp - 0xc4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0xa4]
push eax
push dword [ebp - 0xd8]
call dword [sym.imp.ole32.dll_CLSIDFromString]
mov eax, dword [ebp - 0xc8]
mov ecx, dword [eax + 0x5c]
test ecx, ecx
je 0x409fc3
mov eax, dword [ecx]
lea edx, [ebp - 0xa4]
push ebx
push dword [ebp - 0xb0]
push edi
push edx
push ecx
call dword [eax + 0x24]
test eax, eax
jne 0x409fe6
mov eax, dword [ebp - 0xc8]
mov ecx, dword [eax + 0x6c]
test ecx, ecx
je 0x409fe3
mov eax, dword [ecx]
lea edx, [ebp - 0xa4]
push ebx
push dword [ebp - 0xb0]
push edi
push edx
push ecx
call dword [eax + 0x24]
test eax, eax
jne 0x409fe6
xor ebx, ebx
inc ebx
mov ecx, dword [ebp - 0xb4]
add ecx, 0xfffffff0
call fcn.00402052
lea ecx, [esi - 0x10]
call fcn.00402052
mov eax, ebx
call fcn.00426577
ret 8