KiIsHyperVCr3RspErrataPresent

BOOL __stdcall KiIsHyperVCr3RspErrataPresent(INT64 a1){
  bool v1; 
  BOOL result; 
  _HV_HYPERVISOR_VERSION_INFO HypervisorVersionOut; 
  _HV_X64_HYPERVISOR_FEATURES HvFeaturesOut; 

  v1 = *(_BYTE *)(a1 + 141) == 1;
  HypervisorVersionOut = 0i64;
  result = 0;
  if( v1 )
  {
    if( HviIsHypervisorVendorMicrosoft() )
    {
      HvFeaturesOut = 0i64;
      HviGetHypervisorFeatures(&HvFeaturesOut);
      if( (HvFeaturesOut.PartitionPrivileges.AsUINT64 & 0x100000000000i64) == 0 )
      {
        HviGetHypervisorVersion(&HypervisorVersionOut);
        if( HypervisorVersionOut.BuildNumber < 0x429D
          && (HypervisorVersionOut.BuildNumber != 14393 || (HypervisorVersionOut._bf_c & 0xFFFFFFu) < 0x1479) )
        {
          return 1;
        }
      }
    }
  }
  return result;
}

Referenced by:

KiIsBranchConfusionMitigationSupported