EtwpDeleteSessionDemuxObject
void __fastcall EtwpDeleteSessionDemuxObject(_QWORD *a1){
_QWORD *v1;
__int64 v3;
_ETHREAD *CurrentThread;
_QWORD *v5;
_QWORD **v6;
v1 = (_QWORD *)a1[3];
if( v1 )
{
v3 = PsGetCurrentServerSiloGlobals()[108];
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx(v3 + 4096, 0i64);
v5 = (_QWORD *)*a1;
if( *(_QWORD **)(*a1 + 8i64) != a1 || (v6 = (_QWORD **)a1[1], *v6 != a1) )
__fastfail(3u);
*v6 = v5;
v5[1] = v6;
a1[3] = 0i64;
if( (_QWORD *)v1[4] == v1 + 4 )
{
RtlRbRemoveNode((unsigned __int64 *)(v3 + 4080), (unsigned __int64)v1);
ExFreePoolWithTag(v1, 0);
}
ExReleasePushLockEx(v3 + 4096, 0i64);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}
}Referenced by:
No references.