PopFxDestroyDirectedDripsCandidateDeviceList
VOID __stdcall PopFxDestroyDirectedDripsCandidateDeviceList(PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX **a1){
PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX *v2;
PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX v3;
while( 1 )
{
v2 = *a1;
if( *a1 == (PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX *)a1 )
break;
v3 = *v2;
if( (char *)v2[1] != (char *)a1 || *((PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX **)v3 + 1) != v2 )
__fastfail(3u);
*a1 = (PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX *)v3;
*((_QWORD *)v3 + 1) = a1;
v2[1] = (PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX)v2;
*v2 = (PFN_KE_GET_PROCESSOR_NUMBER_FROM_INDEX)v2;
if( _InterlockedExchangeAdd((volatile signed __int32 *)v2 - 157, 0xFFFFFFFF) == 1 )
KeSetEvent((PRKEVENT)(v2 - 78), 0, 0);
}
ExReleasePushLockEx((ULONG_PTR)&stru_140C23628 + 3984, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}Referenced by:
PopDirectedDripsInitializeBroadcast