__int64 __fastcall sub_4854(__int64 a1, __int64 a2, __int64 a3, __int64 a4)
{
double v4; // xmm3_8
__int64 v5; // rdx
__int64 v6; // rcx
__int64 v7; // rbx
__int64 v8; // r8
__int64 v9; // r9
__int64 result; // rax
unsigned __int8 v11; // si
__int64 v12; // rdi
unsigned __int8 n2; // bp
__int64 v14; // rdx
__int64 v15; // rcx
__int64 v16; // r8
__int64 v17; // r9
__int64 v18; // rbx
unsigned __int8 v19; // dl
__int64 v20; // rdx
__int64 v21; // rcx
__int64 v22; // r8
__int64 v23; // r9
__int64 v24; // rdx
__int64 v25; // rcx
__int64 v26; // r8
__int64 v27; // r9
__int64 v28; // rdx
__int64 v29; // rcx
__int64 v30; // r8
__int64 v31; // r9
__int64 v32; // rdx
__int64 v33; // rcx
__int64 v34; // r8
__int64 v35; // r9
__int64 v36; // rdx
__int64 v37; // rcx
__int64 v38; // r8
__int64 v39; // r9
__int64 v40; // rdx
__int64 v41; // rcx
__int64 v42; // r8
__int64 v43; // r9
_QWORD v44[9]; // [rsp+30h] [rbp-48h] BYREF
char v45; // [rsp+80h] [rbp+8h] BYREF
int v46; // [rsp+88h] [rbp+10h] BYREF
int v47; // [rsp+90h] [rbp+18h] BYREF
char v48; // [rsp+98h] [rbp+20h] BYREF
if ( (unsigned __int8)sub_7F8(a1, a2, a3, a4) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4873*/
sub_740(0x80000000LL, "Enter InitializeCpuData ... \n"); /*0x4886*/
*(_BYTE *)(qword_9680 + 86LL) = 2; /*0x4892*/
if ( qword_9670 /*0x48c3*/
|| (v7 = (*(__int64 (__fastcall **)(void *, _QWORD, __int64 *))(qword_96D8 + 320))(&unk_93F0, 0, &qword_9670),
v7 >= 0) )
{
v11 = 0; /*0x48f9*/
v12 = 0; /*0x4903*/
do /*0x4bec*/
{
n2 = v11 + 1; /*0x490c*/
LOBYTE(v5) = v11 + 1; /*0x4917*/
LOBYTE(v6) = 4; /*0x491f*/
*(_BYTE *)(v12 + qword_9680 + 87) = v11 + 1; /*0x4921*/
if ( (*(__int64 (__fastcall **)(__int64, __int64, _QWORD *, char *))(qword_9670 + 64))(v6, v5, v44, &v45) >= 0 ) /*0x4933*/
{
v18 = v44[0]; /*0x4939*/
*(_BYTE *)(v12 + qword_9680 + 88) = *(_BYTE *)(v44[0] + 35LL); /*0x4954*/
*(_BYTE *)(v12 + qword_9680 + 89) = *(_BYTE *)(v18 + 37); /*0x4962*/
sub_D38(v12 + qword_9680 + 90LL, 13, "Intel"); /*0x4974*/
*(_DWORD *)(v12 + qword_9680 + 166) = *(unsigned __int16 *)(v18 + 20); /*0x49a2*/
sub_27F8(*(_DWORD *)(v18 + 8), (unsigned int)&v48, (unsigned int)&v46, (unsigned int)&v47, 0); /*0x49ac*/
v19 = 0; /*0x49b6*/
while ( *((_WORD *)&unk_9518 + 5 * v19) != *(unsigned __int8 *)(v18 + 6) /*0x49d0*/
&& *((_WORD *)&unk_9518 + 5 * v19) != 255 )
{
if ( ++v19 >= 3u ) /*0x49d7*/
goto LABEL_17; /*0x49d7*/
}
sub_D38(v12 + qword_9680 + 103LL, 30, *(const char **)((char *)&unk_9518 + 10 * v19 + 2)); /*0x49fa*/
LABEL_17:
sub_D38(v12 + qword_9680 + 133LL, 30, "%2Xh Model", v46); /*0x49ff*/
sub_D38(v12 + qword_9680 + 163LL, 3, "%X", v47); /*0x4a4e*/
}
if ( (unsigned __int8)sub_7F8(v15, v14, v16, v17) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4a5f*/
sub_740( /*0x4a83*/
0x80000000LL,
"gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.CoreCount = %x \n",
v11,
*(unsigned __int8 *)(v12 + qword_9680 + 88));
if ( (unsigned __int8)sub_7F8(v21, v20, v22, v23) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4a94*/
sub_740( /*0x4ab8*/
0x80000000LL,
"gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.ThreadCount = %x \n",
v11,
*(unsigned __int8 *)(v12 + qword_9680 + 89));
if ( (unsigned __int8)sub_7F8(v25, v24, v26, v27) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4ac9*/
sub_740(0x80000000LL, "gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.CpuVendor = %a \n", v11, v4); /*0x4aee*/
if ( (unsigned __int8)sub_7F8(v29, v28, v30, v31) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4aff*/
sub_740(0x80000000LL, "gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.CpuFamilyName = %a \n", v11, v4); /*0x4b24*/
if ( (unsigned __int8)sub_7F8(v33, v32, v34, v35) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4b35*/
sub_740(0x80000000LL, "gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.CpuModelIdName = %a \n", v11, v4); /*0x4b5d*/
if ( (unsigned __int8)sub_7F8(v37, v36, v38, v39) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4b6e*/
sub_740(0x80000000LL, "gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.Stepping = %a \n", v11, v4); /*0x4b96*/
if ( (unsigned __int8)sub_7F8(v41, v40, v42, v43) && (unsigned __int8)sub_804(0x80000000LL) ) /*0x4ba7*/
sub_740( /*0x4bcd*/
0x80000000LL,
"gSystemInventoryProtocol->CpuInfo[%d].SingleCpuInfo.MaxFrequency = %x \n",
v11,
*(_DWORD *)(v12 + qword_9680 + 166));
result = (*(__int64 (__fastcall **)(_QWORD))(qword_96D8 + 72))(v44[0]); /*0x4bde*/
v12 += 85; /*0x4be1*/
++v11; /*0x4be5*/
}
while ( n2 < 2u ); /*0x4bec*/
}
else
{
result = sub_7F8(v6, v5, v8, v9); /*0x48c5*/
if ( (_BYTE)result ) /*0x48cc*/
{
result = sub_804(0x80000000LL); /*0x48d5*/
if ( (_BYTE)result ) /*0x48dc*/
return sub_740(0x80000000LL, "LocateProtocol gAmiSmbiosProtocolGuid Status = %r ... \n", v7); /*0x48ef*/
}
}
return result; /*0x4bf2*/
}