PfFbBufferListInsertInFree

VOID __fastcall PfFbBufferListInsertInFree(SLIST_ENTRY *RunRef, struct SLIST_ENTRY *P, INT64 a3, INT64 a4, INT64 a5){
  __int64 v7; 
  char *v8; 
  if( (a4 & 1) != 0 && LOWORD(RunRef[1].Next) + (unsigned int)LOWORD(RunRef[2].Next) >= (int)KeNumberProcessors_0 + 1 )
  {
    _InterlockedExchangeAdd((volatile signed __int32 *)&RunRef[6].Next + 2, -(int)a3);
    ExFreePoolWithTag(P, HIDWORD(RunRef[4].Next));
  }
  else
  {
    P[1].Next = RunRef;
    P[2].Next = (struct SLIST_ENTRY *)((char *)P + (int)a3);
    v7 = *((unsigned int *)&RunRef[4].Next + 3);
    *((_DWORD *)&P[2].Next + 2) = 0;
    v8 = (char *)P + v7;
    *((_QWORD *)&P[1].Next + 1) = v8;
    *((_DWORD *)&P[2].Next + 3) = a4;
    memset((INT64)v8, 0i64);
    RtlpInterlockedPushEntrySList((PSLIST_HEADER)&RunRef[1], P);
  }
  if( (_DWORD)a5 )
    ExReleaseRundownProtection((PEX_RUNDOWN_REF)RunRef);
}

Referenced by:

PfFbBufferListAllocate
PfFbBufferListAllocateTemporary
PfFbBufferListFlushStandby
PfTCleanup
PfTFullEventListAdd
PfpFlushEventBuffers
PfpRepurposeNameLoggingTrace