PfTTraceListTrim
VOID __stdcall PfTTraceListTrim(PF_TRACE_TYPE TraceType, UINT64 TargetCount, _LIST_ENTRY *FreeList){
unsigned int v3;
int *v4;
char *v5;
_LIST_ENTRY **v6;
_LIST_ENTRY *v7;
_LIST_ENTRY *Flink;
int Flink_high;
_LIST_ENTRY *Blink;
v3 = TargetCount;
v4 = &dword_140C4FC24;
if( TraceType != PfTraceTypeNameLogging )
v4 = (int *)&unk_140C4FC20;
v5 = (char *)&stru_140C4DB30 + 8176;
if( TraceType != PfTraceTypeNameLogging )
v5 = (char *)&stru_140C4DB30 + 8168;
v6 = (_LIST_ENTRY **)((char *)&stru_140C4DB30 + 8152);
if( TraceType != PfTraceTypeNameLogging )
v6 = (_LIST_ENTRY **)((char *)&stru_140C4DB30 + 8136);
while( *(_DWORD *)v5 > v3 )
{
v7 = *v6;
if( *v6 == (_LIST_ENTRY *)v6 )
break;
if( (_LIST_ENTRY **)v7->Blink != v6
|| (Flink = v7->Flink, v7->Flink->Blink != v7)
|| ((*v6 = Flink, Flink->Blink = (_LIST_ENTRY *)v6, HIDWORD(v7[1].Blink)) ? (Flink_high = (int)v7[3].Flink) : (Flink_high = HIDWORD(v7[2].Flink)),
--*(_DWORD *)v5,
*v4 += Flink_high,
Blink = FreeList->Blink,
Blink->Flink != FreeList) )
{
__fastfail(3u);
}
v7->Flink = FreeList;
v7->Blink = Blink;
Blink->Flink = v7;
FreeList->Blink = v7;
}
}Referenced by:
PfTCleanup
PfTTraceListAdd