PiDqQueryFreeActiveData

VOID __fastcall PiDqQueryFreeActiveData(INT64 a1){
  struct _RTL_AVL_TABLE *i; 
  _QWORD **v3; 
  _QWORD *v4; 
  void *v5; 
  _QWORD *v6; 
  for( i = (struct _RTL_AVL_TABLE *)(a1 + 72); !RtlIsGenericTableEmptyAvl(i); i = (struct _RTL_AVL_TABLE *)(a1 + 72) )
    PiDqQueryDeleteObjectFromResultSet(a1, *(_QWORD *)(*(_QWORD *)(a1 + 88) + 32i64));
  v3 = (_QWORD **)(a1 + 192);
  while( 1 )
  {
    v4 = *v3;
    if( *v3 == v3 )
      break;
    if( (_QWORD **)v4[1] != v3 || (v6 = (_QWORD *)*v4, *(_QWORD **)(*v4 + 8i64) != v4) )
      __fastfail(3u);
    *v3 = v6;
    v6[1] = v3;
    PiDqQueryActionQueueEntryFree(v4);
  }
  *(_DWORD *)(a1 + 208) = 0;
  v5 = *(void **)(a1 + 184);
  if( v5 )
  {
    PiDqActionDataFree(v5);
    *(_QWORD *)(a1 + 184) = 0i64;
  }
}

Referenced by:

PiDqIrpQueryCreate
PiDqIrpQueryGetResult
PiDqObjectManagerServiceActionQueue
PiDqQueryApplyObjectEvent
PiDqQueryRelease