Function at 0x402d16
Capabilities:
Query or enumerate registry key

Disassembly:
push 0x150
mov eax, 0x409e7f
call fcn.004094a7
mov eax, dword [ebp + 8]
mov esi, ecx
xor edi, edi
push 0x40ce74
lea ecx, [ebp - 0x120]
mov dword [ebp - 0x11c], eax
mov dword [ebp - 0x138], edi
call dword [sym.imp.MFC80U.DLL_Ordinal_283]
xor ebx, ebx
inc ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x124], edi
lea eax, [ebp - 0x118]
mov byte [ebp - 4], 2
push eax
mov eax, dword [esi + 0x88]
call fcn.00403a29
push eax
lea eax, [ebp - 0x124]
push eax
mov byte [ebp - 4], 3
call fcn.00405246
lea esi, [ebp - 0x118]
mov byte [ebp - 4], 2
call fcn.00405003
or dword [ebp - 0x13c], 0xffffffff
mov dword [ebp - 0x144], 0x40d110
mov dword [ebp - 0x140], edi
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x124]
mov eax, dword [ecx]
lea edx, [ebp - 0x144]
push edx
call dword [eax + 0x58]
push dword [ebp - 0x140]
lea ecx, [ebp - 0x130]
call dword [sym.imp.MFC80U.DLL_Ordinal_283]
lea eax, [ebp - 0x134]
push eax
mov byte [ebp - 4], 5
call dword [sym.imp.hcreg9.dll_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______cdecl_GetProductBaseName_void_]
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x114]
mov dword [esp], str.SOFTWARE_
call dword [sym.imp.MFC80U.DLL_Ordinal_283]
lea eax, [ebp - 0x130]
push eax
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 7
call dword [sym.imp.MFC80U.DLL_Ordinal_896]
push 0x40ce78
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_899]
lea eax, [ebp - 0x134]
push eax
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_896]
push str.R14.0
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_899]
lea eax, [ebp - 0x12c]
push eax
push 0x20019
push edi
push dword [ebp - 0x114]
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
je 0x402e78
mov ecx, dword [ebp - 0x11c]
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.MFC80U.DLL_Ordinal_280]
jmp 0x402f7b
call fcn.00408eb7
push eax
lea ecx, [ebp - 0x15c]
call sub.MFC80U.DLL_Ordinal_314
lea eax, [ebp - 0x14c]
push eax
push edi
push edi
push edi
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x110]
mov byte [ebp - 4], 8
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
push eax
mov dword [ebp - 0x118], edi
push edi
jmp 0x402ee0
cmp eax, edi
jne 0x402fdd
inc dword [ebp - 0x118]
lea eax, [ebp - 0x14c]
push eax
push edi
push edi
push edi
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x110]
push eax
push dword [ebp - 0x118]
push dword [ebp - 0x12c]
mov dword [ebp - 0x128], 0x80
call esi
cmp eax, 0x103
jne 0x402eb4
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 7
call fcn.0040379a
lea eax, [ebp - 0x14c]
push eax
push edi
push edi
push edi
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x110]
push eax
push dword [ebp - 0x118]
mov dword [ebp - 0x128], 0x80
push dword [ebp - 0x12c]
call esi
push dword [ebp - 0x12c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x40ce78
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_899]
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_899]
mov ecx, dword [ebp - 0x11c]
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.MFC80U.DLL_Ordinal_280]
mov dword [ebp - 0x138], ebx
lea ecx, [ebp - 0x114]
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
lea ecx, [ebp - 0x134]
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
lea ecx, [ebp - 0x130]
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
lea ecx, [ebp - 0x144]
mov byte [ebp - 4], 2
call dword [sym.imp.heidi9.dll_public_virtual:_void___thiscall_HT_String::destructor_void_]
lea esi, [ebp - 0x124]
mov byte [ebp - 4], bl
call fcn.00405003
lea ecx, [ebp - 0x120]
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
mov eax, dword [ebp - 0x11c]
call fcn.004094f1
ret 4
push dword [ebp - 0x12c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x11c]
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.MFC80U.DLL_Ordinal_280]
lea ecx, [ebp - 0x15c]
mov dword [ebp - 0x138], ebx
mov byte [ebp - 4], 7
call fcn.0040379a
jmp 0x402f81