KeRequestTerminationProcess

VOID __stdcall KeRequestTerminationProcess(_ETHREAD *Thread, INT64 a2){
  signed __int32 v2; 
  int v3; 
  signed __int32 v4; 

  v2 = *(&Thread->Tcb.MiscFlags + 1);
  v3 = (_DWORD)a2 << 18;
  if( (v2 & 0xC0000) == 0 )
  {
    while( 1 )
    {
      v4 = _InterlockedCompareExchange((volatile signed __int32 *)&Thread->Tcb.116 + 1, v3 | v2, v2);
      if( v2 == v4 )
        break;
      v2 = v4;
      if( (v4 & 0xC0000) != 0 )
        return;
    }
    KeRequestTerminationThread(&Thread->Tcb);
  }
}

Referenced by:

MiCommitRequestFailed
MiForceCrashForInvalidAccess