TtmpDeleteQueue
VOID __stdcall TtmpDeleteQueue(PVOID Object){
_ETHREAD *CurrentThread;
_QWORD *v3;
volatile INT32 *v4;
PVOID *v5;
UINT64 *v6;
UINT64 v7;
INT64 v8;
_QWORD **v9;
_QWORD *v10;
_QWORD *v11;
VOID *v12;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(&TtmpSessionLock, 1u);
v3 = *(_QWORD **)Object;
v4 = (volatile INT32 *)*((_QWORD *)Object + 2);
if( *(PVOID *)(*(_QWORD *)Object + 8i64) != Object || (v5 = (PVOID *)*((_QWORD *)Object + 1), *v5 != Object) )
LABEL_9:
__fastfail(3u);
*v5 = v3;
v3[1] = v5;
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
TtmpDereferenceSessionMaybeLast(v4);
ExDeleteResourceLite((INT64)Object + 24, v6, v7, v8, v12);
v9 = (_QWORD **)((char *)Object + 152);
while( 1 )
{
v10 = *v9;
if( *v9 == v9 )
break;
if( (_QWORD **)v10[1] != v9 )
goto LABEL_9;
v11 = (_QWORD *)*v10;
if( *(_QWORD **)(*v10 + 8i64) != v10 )
goto LABEL_9;
*v9 = v11;
v11[1] = v9;
ExFreePoolWithTag(v10, 0x716D7454u);
}
TtmiLogQueueDestroyed(Object);
}Referenced by:
No references.