SeCheckPrivilegedObject

UINT8 __stdcall SeCheckPrivilegedObject(
        _LUID PrivilegeValue,
        VOID *ObjectHandle,
        UINT64 DesiredAccess,
        INT64 PreviousMode){
  INT8 v4; 
  unsigned int v5; 
  INT8 v7; 
  UINT8 v8; 
  _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  PRIVILEGE_SET RequiredPrivileges; 

  RequiredPrivileges.Privilege[0].Attributes = 0;
  RequiredPrivileges.Privilege[0].Luid = PrivilegeValue;
  RequiredPrivileges.PrivilegeCount = 1;
  memset(&SubjectContext, 0, sizeof(SubjectContext));
  RequiredPrivileges.Control = 1;
  v4 = PreviousMode;
  v5 = DesiredAccess;
  SeCaptureSubjectContext((INT64)&SubjectContext);
  v7 = SePrivilegeCheck((UINT64 *)&RequiredPrivileges.PrivilegeCount, (INT64)&SubjectContext, v4);
  v8 = v7;
  if( v4 )
    SePrivilegeObjectAuditAlarm(
      (UINT64)ObjectHandle,
      (INT64 *)&SubjectContext,
      v5,
      (UINT64 *)&RequiredPrivileges.PrivilegeCount,
      v7,
      v4);
  SeReleaseSubjectContext(&SubjectContext);
  return v8;
}

Referenced by:

NtSetInformationJobObject
NtSetInformationProcess
NtSetInformationThread
PspAssignPrimaryToken
PspSetProcessPriorityClass