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