PfpReturnAccessBuffer

VOID __stdcall PfpReturnAccessBuffer(_MM_PAGE_ACCESS_INFO_HEADER *AccessBuffer){
  unsigned int Alignment_low; 
  int v3; 

  if( !ExAcquireRundownProtection(&PfKernelGlobals.AccessBufferRef) )
    goto LABEL_8;
  Alignment_low = LOWORD(PfKernelGlobals.AccessBufferList.Alignment);
  if( LOWORD(PfKernelGlobals.AccessBufferList.Alignment) >= PfKernelGlobals.AccessBufferMax )
  {
    _InterlockedExchangeAdd((volatile signed __int32 *)&xmmword_140C4FC10, 0x64u);
    v3 = 0;
  }
  else
  {
    RtlpInterlockedPushEntrySList(&PfKernelGlobals.AccessBufferList, (PSLIST_ENTRY)AccessBuffer);
    if( !*(_DWORD *)&PfKernelGlobals.gap10[4] && Alignment_low >= 8 )
      KeSetEvent((PRKEVENT)PfKernelGlobals.gap10, 0, 0);
    v3 = 1;
  }
  ExReleaseRundownProtection(&PfKernelGlobals.AccessBufferRef);
  if( !v3 )
LABEL_8:
    MmFreeAccessPfnBuffer(AccessBuffer, 0);
}

Referenced by:

PfpFlushBuffers