PspValidateThread

__int64 __fastcall PspValidateThread(_ETHREAD *a1){
  if( a1 != *((_ETHREAD **)KeGetCurrentPrcb() + 3) )
  {
    if( KeGetCurrentIrql() < 2u
      && (POBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ *((unsigned __int8 *)a1 - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)a1 - 48) >> 8)] != PsThreadType )
    {
      return 3221225485i64;
    }
    if( a1 != (_ETHREAD *)KeGetCurrentThread() || (*((_DWORD *)KeGetPcr() + 3243) & 0x10001) == 0 )
      return 0i64;
  }
  return 3221225659i64;
}

Referenced by:

PsSetThreadProperty