Function at 0x40f5f0
Capabilities:
Access peb ldr_data
Contain obfuscated stackstrings
Get cpu information
Get number of processors
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x4ae432
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x98
push esi
mov esi, ecx
lea ecx, [esp + 0x24]
mov dword [esp + 0x54], 0
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x18]
mov dword [esp + 0xa4], 1
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 2
call sub.MFC42.DLL_CString::CString_2
lea eax, [esp + 0x28]
mov byte [esp + 0xa4], 3
push eax
push 1
push 0
push str.HardwareDescriptionSystemCentralProcessor0
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40f70d
lea ecx, [esp + 0x14]
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea edx, [esp + 0x30]
push ecx
push edx
push eax
push eax
mov eax, dword [esp + 0x3c]
push str.MHz
push eax
mov dword [esp + 0x30], 4
call edi
test eax, eax
jne 0x40f6b1
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x1c]
push ecx
push str.Speed:__dMHz
push edx
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
jmp 0x40f6bf
push str.Speed:_Unknown
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::operator
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x60]
push eax
push ecx
push 0
push 0
push str.VendorIdentifier
push edx
mov dword [esp + 0x30], 0x40
call edi
test eax, eax
pop edi
jne 0x40f6ff
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x1c]
push eax
push str.Vendor:__s
push ecx
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
jmp 0x40f70d
push str.Vendor:_Unknown
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::operator
mov edx, dword [esp + 0x28]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_2
mov eax, dword [esi + 0x1c]
mov byte [esp + 0xa4], 4
cmp eax, 0x24a
ja 0x40f756
je 0x40f74f
sub eax, 0x182
je 0x40f748
sub eax, 0x64
jne 0x40f764
push str.Type:_Intel_486
jmp 0x40f777
push str.Type:_Intel_386
jmp 0x40f777
push str.Type:_Intel_Pentium_compatible
jmp 0x40f777
cmp eax, 0xfa0
je 0x40f772
cmp eax, 0x5248
je 0x40f76b
push str.Type:_Unknown
jmp 0x40f777
push str.Type:_Alpha
jmp 0x40f777
push str.Type:_MIPS
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::CString_2
mov eax, dword [esi + 0x18]
lea ecx, [esp + 0x20]
push eax
push str.Number_Of_Processors:__lu
push ecx
mov byte [esp + 0xb0], 5
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 4]
mov byte [esp + 0xa4], 6
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 8]
mov byte [esp + 0xa4], 7
call sub.MFC42.DLL_CString::CString_2
xor eax, eax
mov byte [esp + 0xa4], 8
mov ax, word [esi + 4]
cmp eax, 2
jg 0x40f9a6
je 0x40f953
mov ecx, eax
sub ecx, 0
je 0x40f857
dec ecx
jne 0x40f9b6
push str.Architecture:_MIPS
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator
xor eax, eax
mov ax, word [esi + 0x24]
cmp eax, 4
je 0x40f82b
push eax
lea edx, [esp + 8]
push str.Level:_Unknown__u
push edx
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
jmp 0x40f839
push str.Level:_R4000
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
xor eax, eax
lea ecx, [esp + 8]
mov ax, word [esi + 0x26]
push eax
push str.Stepping:_00_u
push ecx
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
jmp 0x40fb4d
push str.Architecture:_Intel
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator
xor eax, eax
mov ax, word [esi + 0x24]
lea ecx, [eax - 3]
cmp ecx, 3
ja case.default.0x40f877
jmp dword [ecx*4 + 0x40fe04]
push str.Level:_80386
jmp 0x40f88a
push str.Level:_80486
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
push str.Stepping:__c_u
jmp 0x40fb40
push str.Level:_Pentium
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
push str.IsProcessorFeaturePresentA
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x40f914
push 3
call eax
add esp, 4
test eax, eax
je 0x40f914
push str._MMX
lea ecx, [esp + 8]
call fcn.004ac20a
jmp 0x40f914
push str.Level:_Pentium_II_Pro
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
push str.Stepping:__u__u
jmp 0x40fb40
push eax
lea eax, [esp + 8]
push str.Level:_Unknown__u
push eax
jmp 0x40fa37
push str.Architecture:_Alpha
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator
xor eax, eax
lea ecx, [esp + 4]
mov ax, word [esi + 0x24]
push eax
push str.Level:__u
push ecx
call sub.MFC42.DLL_CString::Format_1
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
push str.Stepping:__c_u
jmp 0x40fa66
cmp eax, 3
je 0x40fa78
cmp eax, 0xffff
je 0x40fa18
push eax
lea eax, [esp + 0x10]
push str.Architecture:_Unknown__u
push eax
call sub.MFC42.DLL_CString::Format_1
xor ecx, ecx
lea edx, [esp + 0x10]
mov cx, word [esi + 0x24]
push ecx
push str.Level:_Unknown__u
push edx
call sub.MFC42.DLL_CString::Format_1
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
lea edx, [esp + 0x28]
push str.Stepping:__u__u
push edx
call sub.MFC42.DLL_CString::Format_1
add esp, 0x28
jmp 0x40fb4d
push str.Architecture:_Unknown
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator
xor eax, eax
lea ecx, [esp + 4]
mov ax, word [esi + 0x24]
push eax
push str.Level:_Unknown__u
push ecx
call sub.MFC42.DLL_CString::Format_1
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
push str.Stepping:__u__u
lea edx, [esp + 0x20]
push edx
call sub.MFC42.DLL_CString::Format_1
add esp, 0x1c
jmp 0x40fb4d
push str.Architecture:_PowerPC
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator
xor eax, eax
mov ax, word [esi + 0x24]
lea ecx, [eax - 1]
cmp ecx, 0x13
ja case.0x40fa9c.7
xor edx, edx
mov dl, byte [ecx + 0x40fe30]
jmp dword [edx*4 + 0x40fe14]
push str.Level:_601
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push str.Level:_603
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push str.Level:_604
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push 0x4e15dc
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push 0x4e15cc
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push str.Level:_620
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator
jmp 0x40fb16
push eax
lea eax, [esp + 8]
push str.Level:_Unknown__u
push eax
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
xor ecx, ecx
mov eax, 0x51eb851f
mov cx, word [esi + 0x26]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x64
cdq
idiv ecx
push edx
push esi
push str.Stepping:__u._u
lea edx, [esp + 0x14]
push edx
call sub.MFC42.DLL_CString::Format_1
add esp, 0x10
lea eax, [esp + 0x1c]
push 0x4e01e0
lea ecx, [esp + 0x50]
push eax
push ecx
call sub.MFC42.DLL_operator_3
lea edx, [esp + 0x18]
mov byte [esp + 0xa4], 9
push edx
push eax
lea eax, [esp + 0x4c]
push eax
call sub.MFC42.DLL_operator_4
push 0x4e01e0
lea ecx, [esp + 0x40]
push eax
push ecx
mov byte [esp + 0xb0], 0xa
call sub.MFC42.DLL_operator_3
lea edx, [esp + 0x10]
mov byte [esp + 0xa4], 0xb
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call sub.MFC42.DLL_operator_4
push 0x4e01e0
lea ecx, [esp + 0x4c]
push eax
push ecx
mov byte [esp + 0xb0], 0xc
call sub.MFC42.DLL_operator_3
lea edx, [esp + 0x20]
mov byte [esp + 0xa4], 0xd
push edx
push eax
lea eax, [esp + 0x58]
push eax
call sub.MFC42.DLL_operator_4
push 0x4e01e0
lea ecx, [esp + 0x44]
push eax
push ecx
mov byte [esp + 0xb0], 0xe
call sub.MFC42.DLL_operator_3
lea edx, [esp + 0xc]
mov byte [esp + 0xa4], 0xf
push edx
push eax
lea eax, [esp + 0x60]
push eax
call sub.MFC42.DLL_operator_4
push 0x4e01e0
lea ecx, [esp + 0x3c]
push eax
push ecx
mov byte [esp + 0xb0], 0x10
call sub.MFC42.DLL_operator_3
lea edx, [esp + 4]
mov byte [esp + 0xa4], 0x11
push edx
push eax
lea eax, [esp + 0x38]
push eax
call sub.MFC42.DLL_operator_4
push 0x4e01e0
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0xb0], 0x12
call sub.MFC42.DLL_operator_3
lea edx, [esp + 8]
mov byte [esp + 0xa4], 0x13
push edx
push eax
lea eax, [esp + 0x34]
push eax
call sub.MFC42.DLL_operator_4
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0xa8], 0x14
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xa4], 0x13
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0xa4], 0x12
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x30]
mov byte [esp + 0xa4], 0x11
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x38]
mov byte [esp + 0xa4], 0x10
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x58]
mov byte [esp + 0xa4], 0xf
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x40]
mov byte [esp + 0xa4], 0xe
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x50]
mov byte [esp + 0xa4], 0xd
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x48]
mov byte [esp + 0xa4], 0xc
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov byte [esp + 0xa4], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x44]
mov byte [esp + 0xa4], 9
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa4], 8
call sub.MFC42.DLL_CString::CString
mov esi, dword [esp + 0xac]
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call sub.MFC42.DLL_CString::CString_1
mov dword [esp + 0x54], 1
lea ecx, [esp + 8]
mov byte [esp + 0xa4], 7
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 4]
mov byte [esp + 0xa4], 6
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0xc]
mov byte [esp + 0xa4], 5
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0xa4], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov byte [esp + 0xa4], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x24]
mov byte [esp + 0xa4], 0
call sub.MFC42.DLL_CString::CString
mov eax, esi
mov ecx, dword [esp + 0x9c]
pop esi
mov dword fs:[0], ecx
add esp, 0xa4
ret 4