EtwpCovSampProcessCleanup

VOID __stdcall EtwpCovSampProcessCleanup(INT64 a1, CHAR a2){
  void *v4; 
  unsigned int v5; 
  int v6; 
  INT64 v7; 

  v4 = *(void **)(a1 + 24);
  if( v4 )
  {
    v5 = 0;
    if( *(_DWORD *)(a1 + 32) )
    {
      do
      {
        EtwpCovSampModuleDereference(*(_QWORD *)a1, *(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64 * v5 + 8));
        v5 = v6 + 1;
      }
      while( v5 < *(_DWORD *)(a1 + 32) );
      v4 = *(void **)(a1 + 24);
    }
    ExFreePoolWithTag(v4, 0x56777445u);
    *(_QWORD *)(a1 + 24) = 0i64;
    *(_DWORD *)(a1 + 32) = 0;
    *(_DWORD *)(a1 + 36) = 0;
  }
  v7 = *(_QWORD *)(a1 + 48);
  if( v7 )
  {
    EtwpCovSampModuleDereference(*(_QWORD *)a1, v7);
    *(_QWORD *)(a1 + 48) = 0i64;
  }
  if( *(_QWORD *)a1 )
  {
    if( a2 )
      HalPutDmaAdapter(**(PADAPTER_OBJECT **)a1);
    *(_QWORD *)a1 = 0i64;
  }
}

Referenced by:

EtwExitProcess
EtwpCovSampContextCleanup
EtwpCovSampProcessEnsureContext
EtwpCoverageSamplerStop