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