EtwpFreeStackCache

void __fastcall EtwpFreeStackCache(PVOID P){
  __int64 i; 
  _QWORD **v3; 
  _QWORD *v4; 
  _QWORD *v5; 
  _QWORD *v6; 
  PSLIST_ENTRY v7; 
  PSLIST_ENTRY v8; 
  for( i = 0i64; (unsigned int)i < *((_DWORD *)P + 2); i = (unsigned int)(i + 1) )
  {
    while( 1 )
    {
      v3 = (_QWORD **)((char *)P + 16 * i + 8 * i + 32);
      v4 = *v3;
      if( *v3 == v3 )
        break;
      if( (_QWORD **)v4[1] != v3 || (v5 = (_QWORD *)*v4, *(_QWORD **)(*v4 + 8i64) != v4) )
        __fastfail(3u);
      *v3 = v5;
      v5[1] = v3;
      do
      {
        v6 = (_QWORD *)v4[2];
        ExFreePoolWithTag(v4, 0);
        v4 = v6;
      }
      while( v6 );
    }
  }
  v7 = RtlpInterlockedFlushSList((PSLIST_HEADER)((char *)P + 16));
  while( v7 )
  {
    v8 = v7;
    v7 = v7->Next;
    ExFreePoolWithTag(v8, 0);
  }
  ExFreePoolWithTag(P, 0);
}

Referenced by:

EtwpEnableStackCaching
EtwpFreeLoggerContext