CmpSortByTag
UINT8 __stdcall CmpSortByTag(_LIST_ENTRY *DriverListHead){
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
_LIST_ENTRY *v4;
_LIST_ENTRY *v5;
_LIST_ENTRY *v6;
_LIST_ENTRY *v7;
_LIST_ENTRY *i;
_LIST_ENTRY *v9;
Flink = DriverListHead->Flink;
Blink = DriverListHead->Blink;
v4 = DriverListHead->Flink->Flink;
if( DriverListHead->Flink != Blink )
{
while( 1 )
{
if( LODWORD(Flink[8].Blink) > LODWORD(v4[8].Blink) )
{
v5 = v4->Flink;
v6 = Flink;
if( v4 != Blink )
v6 = Blink;
Blink = v6;
if( v5->Blink != v4 )
goto LABEL_16;
v7 = v4->Blink;
if( v7->Flink != v4 )
goto LABEL_16;
v7->Flink = v5;
v5->Blink = v7;
for( i = DriverListHead->Flink; i != Flink; i = i->Flink )
{
if( LODWORD(i[8].Blink) >= LODWORD(v4[8].Blink) )
break;
}
v9 = i->Blink;
if( v9->Flink != i )
LABEL_16:
__fastfail(3u);
v4->Flink = i;
v4->Blink = v9;
v9->Flink = v4;
i->Blink = v4;
v4 = Flink;
}
else
{
Flink = v4;
}
if( Flink == Blink )
break;
v4 = v4->Flink;
}
}
return 1;
}Referenced by:
CmpDoSort