MiPfIssueCoalesceCandidates
NTSTATUS __stdcall MiPfIssueCoalesceCandidates(
LIST_ENTRY *CandidateListHead,
UINT64 CoalescedSize,
LIST_ENTRY *IssuedInPageSupportsHead){
_LIST_ENTRY *Flink;
_LIST_ENTRY *v6;
_LIST_ENTRY *Blink;
NTSTATUS result;
_LIST_ENTRY *v9;
_LIST_ENTRY *v10;
_LIST_ENTRY *v11;
_LIST_ENTRY *v12;
Flink = CandidateListHead->Flink;
v6 = CandidateListHead->Flink->Flink;
if( v6 == CandidateListHead )
{
if( Flink->Blink != CandidateListHead || v6->Blink != Flink )
goto LABEL_14;
CandidateListHead->Flink = v6;
v6->Blink = CandidateListHead;
MiIssueHardFaultIo((__int64)Flink, 0, 0i64);
LABEL_5:
Blink = IssuedInPageSupportsHead->Blink;
if( Blink->Flink == IssuedInPageSupportsHead )
{
Flink->Flink = IssuedInPageSupportsHead;
Flink->Blink = Blink;
Blink->Flink = Flink;
result = 0;
IssuedInPageSupportsHead->Blink = Flink;
return result;
}
LABEL_14:
__fastfail(3u);
}
LODWORD(v9) = MiPfIssueCoalescedSupport(CandidateListHead, CoalescedSize);
Flink = v9;
if( v9 )
goto LABEL_5;
while( 1 )
{
v10 = CandidateListHead->Flink;
if( CandidateListHead->Flink == CandidateListHead )
return -1073741670;
if( v10->Blink != CandidateListHead )
goto LABEL_14;
v11 = v10->Flink;
if( v10->Flink->Blink != v10 )
goto LABEL_14;
CandidateListHead->Flink = v11;
v11->Blink = CandidateListHead;
MiIssueHardFaultIo((__int64)v10, 0, 0i64);
v12 = IssuedInPageSupportsHead->Blink;
if( v12->Flink != IssuedInPageSupportsHead )
goto LABEL_14;
v10->Flink = IssuedInPageSupportsHead;
v10->Blink = v12;
v12->Flink = v10;
IssuedInPageSupportsHead->Blink = v10;
}
}Referenced by:
MiPfCoalesceAndIssueIOs