PopReadProducerConsumerBuffer

VOID *__stdcall PopReadProducerConsumerBuffer(
        CHAR *VirtualBuffer,
        UINT64 Size,
        VOID *ScratchBuffer,
        _PRODUCER_CONSUMER_CONTEXT *SharedContext,
        _POP_PER_PROCESSOR_CONTEXT *PrivateContext,
        UINT8 ForceCopy){
  VOID *v6; 
  unsigned __int64 v7; 
  unsigned __int64 v8; 

  v6 = ScratchBuffer;
  if( !ForceCopy && (int)Size + (int)VirtualBuffer - *SharedContext <= (unsigned int)SharedContext[2] )
    return VirtualBuffer;
  v7 = __rdtsc();
  ProducerConsumerCopyFromContextBuffer((CHAR *)ScratchBuffer, (unsigned int)Size, SharedContext, VirtualBuffer);
  v8 = __rdtsc();
  PrivateContext->ResumeCopyTicks += (((unsigned __int64)HIDWORD(v8) << 32) | (unsigned int)v8) - v7;
  return v6;
}

Referenced by:

PopDecompressHiberBlocks
PopHiberPeekRangeTable