EtwpCovSampCaptureBufferMapAddressesAndQueue

VOID __stdcall EtwpCovSampCaptureBufferMapAddressesAndQueue(INT64 *a1, INT64 a2){
  _LIST_ENTRY *v3; 
  INT64 v4; 
  int v5; 
  INT64 v6; 
  void *CoverageSamplerContext; 
  __int16 v8; 
  UINT64 v9; 
  UINT64 v10; 
  _LIST_ENTRY *v11; 

  LODWORD(v10) = 0;
  v3 = 0i64;
  v11 = 0i64;
  v4 = a2;
  LOBYTE(v5) = EtwpCovSampCaptureBufferIsEmpty(a2);
  if( !v5 )
  {
    if( (int)EtwpCovSampAcquireSamplerRundown(&v11) < 0
      || EtwpCovSampStackHashCheck(a1, v6, (UINT8 *)(v4 + 64), *(unsigned __int16 *)(v4 + 62))
      || (CoverageSamplerContext = KeGetCurrentThread()->ApcState.Process->CoverageSamplerContext) == 0i64 )
    {
      v3 = v11;
    }
    else
    {
      v3 = v11;
      LODWORD(v9) = *(unsigned __int16 *)(v4 + 60);
      EtwpCovSampProcessMapAddresses(
        (INT64)CoverageSamplerContext,
        (INT64)&v11[1],
        (UINT64 *)(v4 + 64),
        *(unsigned __int16 *)(v4 + 62),
        v4 + 64,
        v9,
        &v10);
      v8 = v10;
      *(_DWORD *)(v4 + 56) &= 0xFFFFFFF4;
      *(_WORD *)(v4 + 62) = v8;
      if( v8 )
        *(_DWORD *)(v4 + 56) |= 4u;
      EtwpCovSampCaptureBufferQueue((INT64)a1, v4);
      v4 = 0i64;
    }
  }
  if( v4 )
    EtwpCovSampCaptureBufferRelease((INT64)a1, v4);
  if( v3 )
  {
    ExReleaseRundownProtection((_EX_RUNDOWN_REF *)&ExBootDevicesRemovedEvent + 152);
    KeLeaveCriticalRegion();
  }
}

Referenced by:

EtwpCovSampCaptureUserAddresses