EtwpCoverageFreeStringBuffers

VOID __fastcall EtwpCoverageFreeStringBuffers(INT64 a1, INT64 a2){
  INT64 v2; 
  int v3; 
  _QWORD *v4; 
  _QWORD *v6; 
  _QWORD *v7; 
  v2 = a1 + 48;
  v3 = a2;
  v4 = *(_QWORD **)(a1 + 48);
  while( v4 != (_QWORD *)v2 )
  {
    v6 = v4;
    v4 = (_QWORD *)*v4;
    if( v3 && v6 == *(_QWORD **)(a1 + 40) )
    {
      memset((INT64)(v6 + 5), 0i64);
      v6[3] = v6 + 5;
      v6[4] = v6 + 5;
    }
    else
    {
      if( (_QWORD *)v4[1] != v6 || (v7 = (_QWORD *)v6[1], (_QWORD *)*v7 != v6) )
        __fastfail(3u);
      *v7 = v4;
      v4[1] = v7;
      ExFreePoolWithTag(v6, 0x56777445u);
    }
  }
}

Referenced by:

EtwpCoverageEnsureContext
EtwpCoverageReset