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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov dword [esp + 4], 0
lea ebp, [esp + 4]
push ebp
push 0
push 0xffff
call dword [sym.imp.KERNEL32.dll_GetLogicalProcessorInformationEx]
mov eax, dword [esp + 4]
test eax, eax
je 0x478768
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
test eax, eax
je 0x4788c1
mov esi, eax
push ebp
push eax
push 0xffff
call dword [sym.imp.KERNEL32.dll_GetLogicalProcessorInformationEx]
test eax, eax
je 0x4788b8
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 4]
test ecx, ecx
jle 0x478772
mov eax, esi
add eax, ecx
mov ecx, esi
jmp 0x478757
movzx edx, byte [ecx + 0x21]
add word [ebx + 0x1c], dx
movzx edx, byte [ecx + 0x20]
add word [ebx + 0x1a], dx
add ecx, dword [ecx + 4]
cmp ecx, eax
jae 0x478772
mov edx, dword [ecx]
cmp edx, 4
je 0x478740
test edx, edx
jne 0x478750
inc word [ebx + 0x18]
jmp 0x478750
mov esi, 0x4f93b0
jmp 0x4788c6
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [esp], 0
mov eax, esp
push eax
push 0x20019
push 0
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edi, eax
mov esi, str.ffRegOpenKeyForRead_HKEY_LOCAL_MACHINE__L_HARDWAREDESCRIPTIONSystemCentralProcessor0___hKey__NULL__failed
test eax, eax
jne 0x478823
mov eax, dword [esp]
mov dword [esp + 4], 4
lea ecx, [esp + 8]
push ebp
push ecx
push 0
push 0x18
push str.MHz
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x4787f6
movss xmm0, dword [esp + 8]
orpd xmm0, xmmword [0x4f9390]
subsd xmm0, qword [0x4f93a0]
divsd xmm0, qword [0x4f93a8]
movsd qword [ebx + 0x28], xmm0
movsd qword [ebx + 0x20], xmm0
push 0
push ebx
push str.ProcessorNameString
push dword [esp + 0xc]
call fcn.00485460
add esp, 0x10
lea eax, [ebx + 0xc]
push 0
push eax
push str.VendorIdentifier
push dword [esp + 0xc]
call fcn.00485460
add esp, 0x10
xor esi, esi
mov eax, dword [esp]
test eax, eax
je 0x478831
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x4788c6
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x48], 0
je 0x478851
lea eax, [ebx + 0x30]
push 0
push eax
call fcn.004829d0
add esp, 8
call fcn.00473df0
mov eax, dword [eax + 0x10]
xor esi, esi
test eax, eax
jne 0x47887c
jmp 0x4788c6
inc edi
mov ecx, edi
lea eax, [ecx + 1]
cmp byte [ecx + 1], 4
jne 0x4788c6
cmp byte [eax + 5], 3
jne 0x47888e
movzx ecx, byte [eax + 0x18]
and cl, 7
cmp cl, 1
je 0x4788d0
movzx ecx, byte [eax + 1]
lea edi, [eax + ecx]
cmp byte [eax + ecx], 0
je 0x478870
nop dword [eax + eax]
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
lea ecx, [eax + edi]
inc ecx
cmp byte [eax + edi + 1], 0
mov edi, ecx
jne 0x4788a0
jmp 0x478873
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov esi, str.GetLogicalProcessorInformationEx_RelationAll__pProcessorInfo__length__failed
mov eax, esi
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [eax + 0x14]
mov edx, ecx
dec edx
movzx edx, dx
cmp edx, 0x752f
jb 0x4788e5
movzx ecx, word [eax + 0x16]
movzx eax, cx
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
divsd xmm0, qword [0x4f93a8]
ucomisd xmm0, qword [ebx + 0x28]
jbe 0x4788c6
movsd qword [ebx + 0x28], xmm0
jmp 0x4788c6