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