KeVerifyContextXStateCetU

__int64 __fastcall KeVerifyContextXStateCetU(__int64 a1, _DWORD *a2, _QWORD *a3){
  __int64 result; 
  char *ExtendedFeature2; 
  __int64 v8; 
  void *v9; 
  __int64 v10; 

  if( (a2[12] & 0x100040) != 1048640 )
    return 0i64;
  ExtendedFeature2 = RtlLocateExtendedFeature2(a2 + 308, 0xBu, 0xFFFFF780000003D8ui64, 0i64);
  if( !ExtendedFeature2 )
    return 0i64;
  v8 = (int)a2[312];
  v9 = (void *)__readmsr(0x6A7u);
  *a3 = v9;
  v10 = *(_QWORD *)((_BYTE *)a2 + v8 + 1232) & 0x800i64;
  if( (*(_DWORD *)(a1 + 116) & 0x100000) != 0 )
  {
    if( !v10 )
    {
      *(_QWORD *)((char *)a2 + v8 + 1232) |= 0x800ui64;
      *(_QWORD *)ExtendedFeature2 = 1i64;
      *((_QWORD *)ExtendedFeature2 + 1) = v9;
      return 0i64;
    }
    result = KiVerifyContextXStateCetUEnabled(ExtendedFeature2, v9);
    if( (int)result >= 0 )
      return 0i64;
  }
  else
  {
    if( !v10 || !*(_QWORD *)ExtendedFeature2 && !*((_QWORD *)ExtendedFeature2 + 1) )
      return 0i64;
    return 3221227018i64;
  }
  return result;
}

Referenced by:

KiRaiseException
PspGetSetContextInternal