Function at 0x401ad0
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4049d0
push eax
mov dword fs:[0], esp
sub esp, 0x1c
lea eax, [esp + 0xc]
push ebx
push esi
push edi
push eax
xor ebx, ebx
push 0x20019
push ebx
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
je 0x401b32
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
push 0x4072a8
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_2
push 0x4072a8
lea ecx, [esp + 0x18]
mov dword [esp + 0x34], ebx
call sub.MFC42.DLL_CString::CString_2
mov ecx, dword [esp + 0x18]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea edx, [esp + 0x1c]
lea eax, [esp + 0xe]
push edx
push eax
push ebx
push ebx
push str.CurrentVersion
push ecx
mov byte [esp + 0x48], 1
mov byte [esp + 0x26], bl
mov byte [esp + 0x27], bl
mov dword [esp + 0x34], 2
call esi
test eax, eax
je 0x401bdb
mov edx, dword [esp + 0x1c]
inc edx
push edx
call sub.MFC42.DLL_operatornew
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x401e58
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x20]
inc eax
push ecx
push edi
push ebx
push ebx
push str.CurrentVersion
push edx
mov dword [esp + 0x38], eax
call esi
cmp eax, ebx
jne 0x401c34
push edi
lea ecx, [esp + 0x14]
push 0x4070ac
push ecx
call sub.MFC42.DLL_CString::Format
push edi
call sub.MFC42.DLL_operatordelete
add esp, 0x10
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x1c]
lea eax, [esp + 0xe]
push edx
push eax
push ebx
push ebx
push str.ProductName
push ecx
call esi
test eax, eax
je 0x401c93
mov edx, dword [esp + 0x1c]
inc edx
push edx
call sub.MFC42.DLL_operatornew
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x401e58
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x24]
inc eax
push ecx
push edi
push ebx
push ebx
push str.ProductName
push edx
mov dword [esp + 0x3c], eax
call esi
cmp eax, ebx
je 0x401c7a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
push edi
lea ecx, [esp + 0x18]
push 0x4070ac
push ecx
call sub.MFC42.DLL_CString::Format
push edi
call sub.MFC42.DLL_operatordelete
add esp, 0x10
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.MSVCRT.dll_atof]
mov ecx, dword [esp + 0x14]
mov esi, dword [sym.imp.MSVCRT.dll__mbscmp]
push 0x40715c
push ecx
fstp st(0)
call esi
add esp, 0xc
test eax, eax
jne 0x401d38
push str.Windows_10
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Find_1
test eax, eax
mov byte [esp + 0x30], bl
lea ecx, [esp + 0x14]
jl 0x401d0b
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 6
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 5
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
mov edx, dword [esp + 0x10]
push 0x40714c
push edx
call esi
add esp, 8
test eax, eax
jne 0x401d80
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 4
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
mov eax, dword [esp + 0x10]
push 0x407148
push eax
call esi
add esp, 8
test eax, eax
jne 0x401dc8
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 3
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
mov ecx, dword [esp + 0x10]
push 0x407144
push ecx
call esi
add esp, 8
test eax, eax
jne 0x401e10
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 2
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
mov edx, dword [esp + 0x10]
push 0x407140
push edx
call esi
add esp, 8
test eax, eax
jne 0x401e58
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
add esp, 0x28
ret
lea ecx, [esp + 0x14]
mov byte [esp + 0x30], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x30], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x28]
pop edi
pop esi
xor eax, eax
pop ebx
mov dword fs:[0], ecx
add esp, 0x28
ret