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