SeAuditingWithTokenForSubcategory

INT8 __fastcall SeAuditingWithTokenForSubcategory(INT64 a1, INT64 a2){
  __int64 v3; 
  VOID *PrimaryToken; 
  _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  UINT8 GenerateAudit; 

  memset(&SubjectContext, 0, sizeof(SubjectContext));
  v3 = (unsigned int)(a1 - 100);
  GenerateAudit = SepAuditingForSubCategory(a1, 1u);
  if( SepTokenPolicyCounter[v3] )
  {
    if( a2 )
    {
      PrimaryToken = (VOID *)a2;
    }
    else
    {
      SeCaptureSubjectContext((INT64)&SubjectContext);
      PrimaryToken = SubjectContext.PrimaryToken;
      if( SubjectContext.ClientToken )
        PrimaryToken = SubjectContext.ClientToken;
    }
    SepAdtIncorporatePerUserPolicy((unsigned int)v3, 1u, 0, PrimaryToken, &GenerateAudit);
    if( !a2 )
      SeReleaseSubjectContext(&SubjectContext);
  }
  return GenerateAudit;
}

Referenced by:

ObCompleteObjectDuplication
ObInitProcess
PiPnpRtlSetDeviceRegProperty
PiPnpRtlSetObjectProperty
PipClearDevNodeProblem
PipSetDevNodeProblem
PspExitThread
SeAdtRegistryValueChangedAuditAlarm
SeAssignPrimaryToken
SeAuditingPlugAndPlayEvents
SeExchangePrimaryToken
SepAdtTokenRightAdjusted