MiBuildWakeList

_MI_CONTROL_AREA_WAIT_BLOCK *__stdcall MiBuildWakeList(_CONTROL_AREA *ControlArea, UINT64 WaitMask){
  _MI_CONTROL_AREA_WAIT_BLOCK **p_WaitList; 
  _MI_CONTROL_AREA_WAIT_BLOCK *v3; 
  _MI_CONTROL_AREA_WAIT_BLOCK *WaitList; 
  _MI_CONTROL_AREA_WAIT_BLOCK *v6; 

  p_WaitList = &ControlArea->WaitList;
  v3 = 0i64;
  WaitList = ControlArea->WaitList;
  if( WaitList )
  {
    do
    {
      v6 = *(_MI_CONTROL_AREA_WAIT_BLOCK **)WaitList;
      if( ((unsigned int)WaitMask & *((_DWORD *)WaitList + 2)) != 0 )
      {
        if( (WaitMask & 4) != 0 )
        {
          *((_DWORD *)WaitList + 3) = 1;
        }
        else
        {
          *(_QWORD *)WaitList = v3;
          v3 = WaitList;
          *p_WaitList = v6;
        }
      }
      else
      {
        p_WaitList = (_MI_CONTROL_AREA_WAIT_BLOCK **)WaitList;
      }
      WaitList = v6;
    }
    while( v6 );
  }
  return v3;
}

Referenced by:

MiCheckControlArea
MiComputeDataFlushRange
MiDecrementLargeSubsections
MiDecrementModifiedWriteCount
MiIncrementLargeSubsections
MiPrepareSegmentForDeletion
MiPreventControlAreaDeletion
MiReferenceActiveControlArea
MiReferencePfBackedSection
MiUnlockControlAreaSectionExtend