PopFxDestroyDirectedDripsCandidateDeviceList
VOID __fastcall PopFxDestroyDirectedDripsCandidateDeviceList(volatile INT32 **a1){
volatile INT32 *v2;
__int64 v3;
while( 1 )
{
v2 = *a1;
if( *a1 == (volatile INT32 *)a1 )
break;
v3 = *(_QWORD *)v2;
if( *((volatile INT32 ***)v2 + 1) != a1 || *(volatile INT32 **)(v3 + 8) != v2 )
__fastfail(3u);
*a1 = (volatile INT32 *)v3;
*(_QWORD *)(v3 + 8) = a1;
*((_QWORD *)v2 + 1) = v2;
*(_QWORD *)v2 = v2;
if( _InterlockedExchangeAdd(v2 - 157, 0xFFFFFFFF) == 1 )
KeSetEvent((PRKEVENT)v2 - 26, 0);
}
ExReleasePushLockEx((UINT64)&PopFxBlockingDeviceListLock, 0i64);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
PopDirectedDripsInitializeBroadcast