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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebp, dword [esp + 0x34]
mov dword [esp], 0
mov eax, esp
push eax
push 0
push 0xffff
call dword [sym.imp.KERNEL32.dll_GetLogicalProcessorInformationEx]
mov eax, dword [esp]
test eax, eax
je 0x478950
push eax
call sym._malloc
add esp, 4
test eax, eax
je 0x478950
mov ecx, eax
mov eax, esp
push eax
mov dword [esp + 0xc], ecx
push ecx
push 0xffff
call dword [sym.imp.KERNEL32.dll_GetLogicalProcessorInformationEx]
test eax, eax
je 0x478944
mov eax, dword [esp]
test eax, eax
jle 0x478944
mov ecx, dword [esp + 8]
mov edx, ecx
add edx, eax
mov dword [esp + 0xc], edx
jmp 0x4788af
inc word [ebp + 0x18]
add ecx, dword [ecx + 4]
cmp ecx, edx
jae 0x478944
mov eax, dword [ecx]
test eax, eax
je 0x4788a0
cmp eax, 4
jne 0x4788a4
movzx eax, word [ecx + 0xa]
test eax, eax
je 0x4788a4
movzx esi, word [ebp + 0x1a]
movzx ebp, word [ebp + 0x1c]
xor edi, edi
cmp eax, 1
mov dword [esp + 0x10], eax
jne 0x4788db
mov ebx, esi
mov edx, ebp
jmp 0x478917
and eax, 0xfffffffe
mov dword [esp + 0x14], eax
lea eax, [ecx + 0x4d]
xor edi, edi
nop word [eax + eax]
movzx edx, byte [eax - 0x2c]
add ebp, edx
movzx edx, byte [eax - 0x2d]
add esi, edx
movzx edx, byte [eax]
add edx, ebp
movzx ebx, byte [eax - 1]
add ebx, esi
add edi, 2
add eax, 0x58
mov esi, ebx
mov ebp, edx
cmp dword [esp + 0x14], edi
jne 0x4788f0
test byte [esp + 0x10], 1
je 0x47892f
imul eax, edi, 0x2c
movzx esi, byte [ecx + eax + 0x21]
add edx, esi
movzx eax, byte [ecx + eax + 0x20]
add ebx, eax
mov ebp, dword [esp + 0x34]
mov word [ebp + 0x1c], dx
mov word [ebp + 0x1a], bx
mov edx, dword [esp + 0xc]
jmp 0x4788a4
push dword [esp + 8]
call sym._free
add esp, 4
mov dword [esp + 4], 0
lea eax, [esp + 4]
push eax
push 0x20019
push 0
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov esi, eax
mov edi, str.ffRegOpenKeyForRead_HKEY_LOCAL_MACHINE__L_HARDWAREDESCRIPTIONSystemCentralProcessor0___hKey__NULL__failed
test eax, eax
jne 0x478a69
mov eax, dword [esp + 4]
mov dword [esp], 4
lea ecx, [esp + 0x18]
mov edx, esp
push edx
push ecx
push 0
push 0x18
push str.MHz
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x4789cf
movss xmm0, dword [esp + 0x18]
orpd xmm0, xmmword [0x4f94a0]
subsd xmm0, qword [0x4f94b0]
divsd xmm0, qword [0x4f94b8]
movsd qword [ebp + 0x20], xmm0
push 0
push ebp
push str.ProcessorNameString
push dword [esp + 0x10]
call dbg.ffRegReadStrbuf
add esp, 0x10
lea eax, [ebp + 0xc]
push 0
push eax
push str.VendorIdentifier
push dword [esp + 0x10]
call dbg.ffRegReadStrbuf
add esp, 0x10
xor edi, edi
cmp word [ebp + 0x1a], 0
jne 0x478a69
sub esp, 0x30
xorpd xmm0, xmm0
movupd xmmword [esp + 0x14], xmm0
lea eax, [esp + 0x30]
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.HARDWAREDESCRIPTIONSystemCentralProcessor
mov dword [esp], 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x478a69
movzx eax, word [esp]
mov word [ebp + 0x1a], ax
mov word [ebp + 0x18], ax
mov word [ebp + 0x1c], ax
mov eax, dword [esp + 4]
test eax, eax
je 0x478a78
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x478b2d
mov esi, dword [esp + 0x30]
call dbg.ffGetSmbiosHeaderTable
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x478aac
jmp 0x478b17
inc edi
mov ecx, edi
lea eax, [ecx + 1]
cmp byte [ecx + 1], 4
jne 0x478b17
cmp byte [eax + 5], 3
jne 0x478abe
movzx ecx, byte [eax + 0x18]
and cl, 7
cmp cl, 1
je 0x478ae8
movzx ecx, byte [eax + 1]
lea edi, [eax + ecx]
cmp byte [eax + ecx], 0
je 0x478aa0
nop dword [eax + eax]
push edi
call sym._strlen
add esp, 4
lea ecx, [eax + edi]
inc ecx
cmp byte [eax + edi + 1], 0
mov edi, ecx
jne 0x478ad0
jmp 0x478aa3
mov eax, dword [eax + 0x14]
lea ecx, [eax - 1]
movzx ecx, cx
cmp ecx, 0x752e
ja 0x478b17
movzx eax, ax
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
divsd xmm0, qword [0x4f94b8]
ucomisd xmm0, qword [ebp + 0x20]
jbe 0x478b17
movsd qword [ebp + 0x28], xmm0
xor edi, edi
cmp byte [esi + 0x48], 0
je 0x478b2d
add ebp, 0x38
push 0
push ebp
call dbg.ffDetectSmbiosTemp
add esp, 8
mov eax, edi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret