KiFlushReadyLists

VOID __stdcall KiFlushReadyLists(
        _LIST_ENTRY *ReadyLists,
        UINT64 *ReadySummary,
        _SINGLE_LIST_ENTRY *DeferredList,
        UINT64 a4){
  unsigned int v4; 
  __int64 v8; 
  _LIST_ENTRY *v9; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v12; 

  v4 = *(_DWORD *)ReadySummary;
  if( *(_DWORD *)ReadySummary )
  {
    do
    {
      _BitScanForward((unsigned int *)&v8, v4);
      v9 = &ReadyLists[v8];
      Flink = v9->Flink;
      if( v9->Flink->Blink != v9 || (Blink = v9->Blink, Blink->Flink != v9) )
        __fastfail(3u);
      Blink->Flink = Flink;
      v12 = Flink;
      Flink->Blink = Blink;
      v9->Blink = v9;
      v9->Flink = v9;
      do
      {
        HIDWORD(Flink[-7].Blink) |= 2u;
        KiInsertDeferredReadyList((INT64)DeferredList, (INT64)&Flink[-14].Blink);
      }
      while( Flink != v12 );
    }
    while( v4 );
    *(_DWORD *)ReadySummary = 0;
  }
}

Referenced by:

KeTransitionProcessorParkState