Function at 0x401c10
Capabilities:
Get cpu information
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x402b10
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x254
push ebx
push esi
push edi
mov ecx, 5
mov esi, str.Microsoft_Windows_98
lea edi, [ebp - 0x260]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov ecx, 0x3a
xor eax, eax
lea edi, [ebp - 0x24b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [ebp - 0x1c]
stosb byte es:[edi], al
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x18]
mov dword [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call sub.MFC42.DLL_CString::CString
push 0x50
mov byte [ebp - 4], 3
call sub.MFC42.DLL_operatornew
push 0x50
mov esi, eax
call sub.MFC42.DLL_operatornew
push 0x50
mov edi, eax
call sub.MFC42.DLL_operatornew
push 0x50
mov dword [ebp - 0x30], eax
call sub.MFC42.DLL_operatornew
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
add esp, 0x10
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x14]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x2c], 0x28
call ebx
test eax, eax
je 0x401cf0
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x401d71
mov ecx, dword [ebp - 0x14]
lea edx, [ebp - 0x2c]
push edx
lea eax, [ebp - 0x28]
push esi
push eax
push 0
push 0x405224
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x401d71
mov cl, byte [esi]
test cl, cl
mov byte [ebp - 0x260], cl
je 0x401d3a
mov edx, esi
lea ecx, [ebp - 0x260]
sub edx, ecx
inc eax
lea ecx, [edx + eax]
mov cl, byte [ebp + ecx - 0x260]
test cl, cl
mov byte [ebp + eax - 0x260], cl
jne 0x401d24
mov byte [ebp + eax - 0x260], 0
call sub.MFC42.DLL_AfxGetEmptyString
mov edx, dword [eax]
push esi
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], edx
call sub.MFC42.DLL_CString::operator_1
lea eax, [ebp - 0x10]
lea ecx, [ebp - 0x18]
push eax
mov byte [ebp - 4], 4
call sub.MFC42.DLL_CString::operator
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0040276a
mov esi, str.Microsoft_Windows_98
lea eax, [ebp - 0x260]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x401da0
test cl, cl
je 0x401d9c
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x401da0
add eax, 2
add esi, 2
test cl, cl
jne 0x401d7c
xor eax, eax
jmp 0x401da5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401e39
xor ecx, ecx
mov al, cl
inc ecx
out 0x70, al
in al, 0x71
mov byte [ebp + ecx - 0x161], al
cmp ecx, 0x80
jl 0x401daf
mov edi, dword [ebp + 0xc]
lea ecx, [ebp - 0x125]
mov esi, 0x3b
sub ecx, edi
lea eax, [edi + 7]
sub esi, edi
movsx edx, byte [ecx + eax]
add edx, 0x80
and edx, 0x8000007f
jns 0x401df1
dec edx
or edx, 0xffffff80
inc edx
mov byte [eax], dl
dec eax
lea edx, [esi + eax]
cmp edx, 0x3b
jge 0x401dda
lea ecx, [ebp - 0x10d]
mov esi, 0x53
sub ecx, edi
lea eax, [edi + 0xf]
sub esi, edi
movsx edx, byte [ecx + eax]
add edx, 0x80
and edx, 0x8000007f
jns 0x401e25
dec edx
or edx, 0xffffff80
inc edx
mov byte [eax], dl
dec eax
lea edx, [esi + eax]
cmp edx, 0x5b
jge 0x401e0e
mov byte [edi + 0x14], 0
jmp 0x4022da
lea eax, [ebp - 0x14]
push eax
push 0x20019
push 0
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0_
push 0x80000002
call ebx
test eax, eax
jne 0x4020aa
lea ecx, [ebp - 0x2c]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push ecx
lea edx, [ebp - 0x28]
push edi
push edx
push eax
mov eax, dword [ebp - 0x14]
push str.ProcessorNameString
push eax
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x2c], 0x50
call esi
test eax, eax
je 0x401ea3
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x2c]
push ecx
lea edx, [ebp - 0x28]
push edi
push edx
push 0
push str.Identifier
push eax
call esi
test eax, eax
jne 0x4020aa
call sub.MFC42.DLL_AfxGetEmptyString
mov ecx, dword [eax]
push edi
mov dword [ebp - 0x10], ecx
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::operator_1
lea edx, [ebp - 0x10]
lea ecx, [ebp - 0x1c]
push edx
mov byte [ebp - 4], 5
call sub.MFC42.DLL_CString::operator
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0040276a
push edi
call sub.MFC42.DLL_operatordelete
mov eax, dword [ebp - 0x14]
add esp, 4
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor esi, esi
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
push esi
lea ecx, [ebp - 0x160]
push str.HARDWAREDESCRIPTIONSystemMultifunctionAdapter_1dDiskController0DiskPeripheral0_
push ecx
call ebx
add esp, 0xc
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x160]
push edx
push 0x20019
push 0
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
inc esi
cmp esi, 0xa0
jg 0x401f2b
test eax, eax
je 0x401f33
jmp 0x401ee7
test eax, eax
jne 0x4020aa
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x2c]
lea edx, [ebp - 0x28]
push ecx
push esi
push edx
push 0
push str.Identifier
push eax
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x2c], 0x50
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4020aa
call sub.MFC42.DLL_AfxGetEmptyString
mov ecx, dword [eax]
push esi
mov dword [ebp - 0x10], ecx
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::operator_1
lea edx, [ebp - 0x10]
lea ecx, [ebp - 0x20]
push edx
mov byte [ebp - 4], 6
call sub.MFC42.DLL_CString::operator
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0040276a
push esi
call sub.MFC42.DLL_operatordelete
mov eax, dword [ebp - 0x14]
add esp, 4
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edi, edi
xor esi, esi
push esi
push edi
lea ecx, [ebp - 0x160]
push str.HARDWAREDEVICEMAPScsiScsi_Port__1dScsi_Bus_0Target_Id__1dLogical_Unit_Id_0_
push ecx
call ebx
add esp, 0x10
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x160]
push edx
push 0x20019
push 0
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x40207b
inc esi
cmp esi, 2
jl 0x401fac
test eax, eax
je 0x40207b
inc edi
cmp edi, 3
jl 0x401faa
test eax, eax
je 0x40207b
push str.HARDWAREDESCRIPTIONSystemFloatingPointProcessor0_
lea ecx, [ebp - 0x160]
push 0x4050ec
push ecx
call ebx
add esp, 0xc
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x160]
push edx
push 0x20019
push 0
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x40207b
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.0040276a
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.0040276a
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0040276a
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040276a
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x1c
mov esi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x2c]
lea edx, [ebp - 0x28]
push ecx
push esi
push edx
push 0
push str.Identifier
push eax
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x2c], 0x50
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4020f2
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.0040276a
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.0040276a
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0040276a
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040276a
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x1c
call sub.MFC42.DLL_AfxGetEmptyString
mov ecx, dword [eax]
push esi
mov dword [ebp - 0x10], ecx
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::operator_1
lea edx, [ebp - 0x10]
lea ecx, [ebp - 0x24]
push edx
mov byte [ebp - 4], 7
call sub.MFC42.DLL_CString::operator
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0040276a
push esi
call sub.MFC42.DLL_operatordelete
mov eax, dword [ebp - 0x14]
add esp, 4
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x18]
lea edx, [ebp - 0x10]
push ecx
push 0x4050e0
push edx
call sub.MFC42.DLL_operator_2
push str._nCPU
push eax
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 8
push eax
call sub.MFC42.DLL_operator_1
lea ecx, [ebp - 0x1c]
lea edx, [ebp - 0x34]
push ecx
push eax
push edx
mov byte [ebp - 4], 9
call sub.MFC42.DLL_operator
lea ecx, [ebp - 0x20]
lea edx, [ebp - 0x38]
push ecx
push eax
push edx
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_operator
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xe
call fcn.0040276a
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xd
call fcn.0040276a
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 0xc
call fcn.0040276a
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 3
call fcn.0040276a
mov edx, dword [ebp - 0x18]
xor eax, eax
mov cl, byte [edx]
cmp cl, 0x20
jne 0x4021c3
mov cl, byte [eax + edx + 1]
inc eax
cmp cl, 0x20
je 0x4021b9
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x38], eax
xor eax, eax
cmp byte [ecx], 0x20
jne 0x4021da
mov dl, byte [eax + ecx + 1]
inc eax
cmp dl, 0x20
je 0x4021d0
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x34], eax
xor eax, eax
cmp byte [ecx], 0x20
jne 0x4021f1
mov dl, byte [eax + ecx + 1]
inc eax
cmp dl, 0x20
je 0x4021e7
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x30], eax
xor eax, eax
cmp byte [ecx], 0x20
jne 0x402208
mov dl, byte [eax + ecx + 1]
inc eax
cmp dl, 0x20
je 0x4021fe
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x10], 0
mov eax, 0
cpuid
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], ecx
mov eax, 1
cpuid
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x50]
push eax
push 0x4050d4
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov edx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x18]
sub ebx, edx
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp + 0x20]
sub ebx, edx
add ecx, edx
sub esi, edx
sub edi, edx
mov edx, dword [ebp - 0x18]
mov dword [ebp + 0x20], ebx
mov ebx, dword [ebp - 0x38]
add esp, 0xc
add ebx, edx
mov edx, dword [ebp - 0x1c]
mov dword [ebp + 0x14], ebx
mov ebx, dword [ebp - 0x34]
add ebx, edx
mov edx, dword [ebp - 0x20]
mov dword [ebp + 0x10], ebx
mov ebx, dword [ebp - 0x30]
add ebx, edx
mov edx, dword [ebp - 0x24]
mov dword [ebp + 0x18], ebx
mov ebx, dword [ebp - 0x3c]
xor eax, eax
add ebx, edx
mov dword [ebp + 0x1c], ebx
mov edx, dword [ebp + 0x14]
mov ebx, dword [ebp - 0x10]
add ecx, 5
mov dl, byte [edx + eax]
inc eax
mov byte [esi + ecx - 5], dl
mov edx, dword [ebp + 0x10]
cmp eax, 7
mov dl, byte [edx + eax - 1]
mov byte [ecx - 5], dl
mov edx, dword [ebp + 0x18]
mov dl, byte [edx + eax - 1]
mov byte [edi + ecx - 5], dl
mov edx, dword [ebp + 0x1c]
mov dl, byte [edx + eax - 1]
mov byte [ebx + ecx - 5], dl
mov ebx, dword [ebp + 0x20]
mov dl, byte [ebp + eax - 0x51]
mov byte [ebx + ecx - 5], dl
jle 0x402292
mov eax, dword [ebp + 0xc]
mov byte [eax + 0x27], 0
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.0040276a
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.0040276a
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0
call fcn.0040276a
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 0xffffffff
call fcn.0040276a
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x1c