EtwpCovSampContextRemoveAndFreeModule

VOID __stdcall EtwpCovSampContextRemoveAndFreeModule(INT64 a1, INT64 *a2){
  INT64 v2; 
  INT64 *i; 
  INT64 *v6; 
  INT64 *j; 
  INT64 *v8; 
  INT64 v9; 
  INT64 *v10; 
  INT64 v11; 
  INT64 v12; 

  v2 = *a2;
  a2[8] = 0i64;
  if( v2 )
  {
    v11 = a2[1] & (-1i64 << (*(_DWORD *)(a1 + 684) & 0x1F));
    for( i = (INT64 *)(*(_QWORD *)(a1 + 688)
                      + 8i64
                      * ((37
                        * (BYTE6(v11)
                         + 37
                         * (BYTE5(v11)
                          + 37
                          * (BYTE4(v11)
                           + 37
                           * (BYTE3(v11) + 37
                                         * (BYTE2(v11) + 37 * (BYTE1(v11) + 37 * ((unsigned __int8)v11 + 11623883)))))))
                        + HIBYTE(v11)) & (unsigned int)((*(_DWORD *)(a1 + 684) >> 5) - 1))); (*i & 1) == 0; i = (INT64 *)*i )
    {
      if( (INT64 *)*i == a2 )
      {
        *i = *a2;
        --*(_DWORD *)(a1 + 680);
        break;
      }
    }
    *a2 = 0i64;
  }
  v6 = a2 + 2;
  if( a2[2] )
  {
    v12 = a2[3] & (-1i64 << (*(_DWORD *)(a1 + 700) & 0x1F));
    for( j = (INT64 *)(*(_QWORD *)(a1 + 704)
                      + 8i64
                      * ((37
                        * (BYTE6(v12)
                         + 37
                         * (BYTE5(v12)
                          + 37
                          * (BYTE4(v12)
                           + 37
                           * (BYTE3(v12) + 37
                                         * (BYTE2(v12) + 37 * (BYTE1(v12) + 37 * ((unsigned __int8)v12 + 11623883)))))))
                        + HIBYTE(v12)) & (unsigned int)((*(_DWORD *)(a1 + 700) >> 5) - 1))); (*j & 1) == 0; j = (INT64 *)*j )
    {
      if( (INT64 *)*j == v6 )
      {
        *j = *v6;
        --*(_DWORD *)(a1 + 696);
        break;
      }
    }
    *v6 = 0i64;
  }
  v8 = a2 + 9;
  v9 = a2[9];
  if( *(INT64 **)(v9 + 8) != a2 + 9 || (v10 = (INT64 *)a2[10], (INT64 *)*v10 != v8) )
    __fastfail(3u);
  *v10 = v9;
  *(_QWORD *)(v9 + 8) = v10;
  a2[10] = (INT64)(a2 + 9);
  *v8 = (INT64)v8;
  --*(_DWORD *)(a1 + 728);
  EtwpCovSampModuleCleanup((INT64)a2);
  ExFreePoolWithTag(a2, 0x56777445u);
}

Referenced by:

EtwpCovSampContextCleanup