PopCountDataAsProduced

char __fastcall PopCountDataAsProduced(
        __int64 a1,
        UINT8 *a2,
        UINT8 *a3,
        UINT8 *a4,
        int a5,
        PRODUCER_CONSUMER_WAIT_FLAGS a6){
  _PRODUCER_CONSUMER_CONTEXT *v7; 
  unsigned int v11; 
  unsigned int v12; 
  INT8 *Buffer; 
  char result; 
  unsigned __int64 v15; 
  unsigned __int64 v16; 

  v7 = (_PRODUCER_CONSUMER_CONTEXT *)SharedContext;
  v11 = 8 * (unsigned __int8)*(_DWORD *)a3;
  v12 = ((*(_DWORD *)a3 >> 8) & 0x3FFFFF) + v11;
  Buffer = ProducerGetBuffer((PRODUCER_CONSUMER_CONTEXT *)SharedContext, v12 + 4, (unsigned int)(a5 << 12), a6);
  result = 0;
  if( Buffer )
  {
    ProducerConsumerCopyToContextBuffer(a3, 4ui64, v7, Buffer);
    ProducerConsumerCopyToContextBuffer(a4, v11, v7, Buffer + 4);
    ProducerConsumerCopyToContextBuffer(a2, (*(_DWORD *)a3 >> 8) & 0x3FFFFF, v7, &Buffer[v11 + 4]);
    v15 = __rdtsc();
    ProducerConsumerBufferComplete((__int64)v7, (__int64)(v7 + 8), (int)Buffer, v12 + 4);
    v16 = __rdtsc();
    *(_QWORD *)(a1 + 80) += (((unsigned __int64)HIDWORD(v16) << 32) | (unsigned int)v16) - v15;
    return 1;
  }
  return result;
}

Referenced by:

PopCompressHiberBlocks
PopWriteHiberImage