KiGetCpuVendor

UINT64 __stdcall KiGetCpuVendor(){
  struct _KPRCB *CurrentPrcb; 
  __int64 v1; 
  CHAR first[16]; 

  CurrentPrcb = KeGetCurrentPrcb();
  v1 = __cpuid(0, 0);
  CurrentPrcb->VendorString[0] = 0;
  *(_QWORD *)&first[4] = __PAIR64__(EDX(v1), EBX(v1));
  *(_DWORD *)&first[12] = ECX(v1);
  *(_QWORD *)CurrentPrcb->VendorString = *(_QWORD *)&first[4];
  *(_DWORD *)&CurrentPrcb->VendorString[8] = *(_DWORD *)&first[12];
  CurrentPrcb->VendorString[12] = 0;
  if( !strncmp(&first[4], (INT8 *)"AuthenticAMD", 0xCui64) )
    return 1i64;
  if( !strncmp(&first[4], (INT8 *)"GenuineIntel", 0xCui64) )
    return 2i64;
  if( !strncmp(&first[4], (INT8 *)"CentaurHauls", 0xCui64) )
    return 3i64;
  return !strncmp(&first[4], (INT8 *)"HygonGenuine", 0xCui64);
}

Referenced by:

EtwSetPerformanceTraceInformation
EtwpAddMicroarchitecturalPmcToPmcGroup
EtwpAddMicroarchitecturalPmcToRegistry
EtwpLoadMicroarchitecturalProfileGroup
EtwpLoadMicroarchitecturalProfileSource
EtwpRemoveMicroarchitecturalPmcFromRegistry
HvlpProcessIommu
KiGetIptInfo
KiGetProcessorSignature
KiInitializeNxSupportDiscard
KiIsNXSupported