ObpPushStackInfo

VOID __fastcall ObpPushStackInfo(INT64 a1, CHAR a2, INT64 a3, INT64 a4){
  unsigned int v4; 
  unsigned int v7; 
  __int64 v8; 
  signed __int32 v9; 
  UINT64 v10; 
  int v11; 
  INT64 v12; 
  void *BackTrace[16]; 
  v4 = a3;
  v7 = a4;
  memset((INT64)BackTrace, 0i64);
  if( *((char *)&PerfGlobalGroupMask + 16) < 0 )
    EtwTraceObjectOperation(4403 - (a2 != 0), a1, v4, v7);
  if( (ObpTraceFlags & 0x73) != 0 && (*(_BYTE *)(a1 + 25) & 1) != 0 && ObGetCurrentIrql() <= 2u )
  {
    v8 = RtlCaptureStackBackTrace(1ui64, 0x10ui64, BackTrace, 0i64);
    if( (_WORD)v8 )
    {
      if( (unsigned int)v8 < 0x10 )
        memset((INT64)&BackTrace[v8], 0i64);
      v9 = _InterlockedExchangeAdd(&ObpStackSequence, 1u);
      MmCanThreadFault();
      LODWORD(v12) = v7;
      v10 = (unsigned int)(v9 + 1);
      if( v11 )
        ObpPushRefDerefInfo(a1, a2, v4, v10, (UINT16 *)BackTrace, v12);
      else
        ObpDeferPushRefDerefInfo(a1, a2, v4, v10, (struct SLIST_ENTRY *)BackTrace, v12);
    }
  }
}

Referenced by:

CmpCreateKeyBody
ExAllocatePoolWithQuotaTag
ExpApplyPriorityBoost
ExpSetResourceOwnerPointerEx
IoGetAttachedDeviceReference
IopAllocRealFileObject
IopCallDriverReference
IopQueueIrpToFileObject
IopVerifierExAllocatePoolWithQuota_1
NtCancelTimer
ObCreateObjectEx
ObDereferenceObjectDeferDelete
ObDereferenceObjectDeferDeleteWithTag
ObReferenceFileObjectForWrite
ObReferenceObjectByPointer
ObReferenceObjectByPointerWithTag
ObReferenceObjectExWithTag
ObReferenceObjectSafe
ObReferenceObjectSafeWithTag
ObWaitForMultipleObjects
ObfDereferenceObjectWithTag
ObfReferenceObject
ObfReferenceObjectWithTag
ObpReferenceObjectByHandleWithTag
ObpReferenceProcessObjectByHandle
ObpTraceObjectDereferenceIfActive
PsGetThreadProperty
PsImpersonateContainerOfThread
PspReferenceCidTableEntry