ObpDeferObjectDeletion

VOID __stdcall ObpDeferObjectDeletion(_OBJECT_HEADER *ObjectHeader){
  signed __int64 v1; 
  signed __int64 i; 

  _m_prefetchw(&qword_140C25870);
  v1 = qword_140C25870;
  ObjectHeader->HandleCount = qword_140C25870;
  for( i = _InterlockedCompareExchange64(&qword_140C25870, (signed __int64)ObjectHeader, v1);
        i != v1;
        i = _InterlockedCompareExchange64(&qword_140C25870, (signed __int64)ObjectHeader, i) )
  {
    v1 = i;
    ObjectHeader->HandleCount = i;
  }
  if( !v1 )
  {
    if( ObGetCurrentIrql() > 2u )
      KiInsertQueueDpc(&stru_140C258C0, 0i64, 0i64, 0i64, 0);
    else
      ExQueueWorkItem(&qword_140C25900, CriticalWorkQueue);
  }
}

Referenced by:

ExTimerRundown
ExpSetTimerObject
IopDropIrp
MiCompleteProtoPteFault
MiEmptyPageAccessLog
MiReferenceControlAreaFile
NtCancelTimer
ObDereferenceObjectDeferDelete
ObDereferenceObjectDeferDeleteWithTag
ObDereferenceObjectEx
ObFastReferenceObject
ObFastReplaceObject
ObfDereferenceObjectWithTag