PiDqQueryFreeActiveData

VOID __stdcall PiDqQueryFreeActiveData(_PI_DQ_QUERY *Query){
  _RTL_AVL_TABLE *i; 
  _PI_DQ_QUERY_ACTION_QUEUE_ENTRY **v3; 
  _PI_DQ_QUERY_ACTION_QUEUE_ENTRY *v4; 
  _DEV_QUERY_RESULT_ACTION_DATA *v5; 
  __int64 v6; 

  for( i = (_RTL_AVL_TABLE *)(Query + 18);
        !(unsigned __int8)RtlIsGenericTableEmptyAvl(i);
        i = (_RTL_AVL_TABLE *)(Query + 18) )
  {
    PiDqQueryDeleteObjectFromResultSet(Query, *(_QWORD *)(*((_QWORD *)Query + 11) + 32i64));
  }
  v3 = (_PI_DQ_QUERY_ACTION_QUEUE_ENTRY **)(Query + 48);
  while( 1 )
  {
    v4 = *v3;
    if( *v3 == (_PI_DQ_QUERY_ACTION_QUEUE_ENTRY *)v3 )
      break;
    if( *((_PI_DQ_QUERY_ACTION_QUEUE_ENTRY ***)v4 + 1) != v3
      || (v6 = *(_QWORD *)v4, *(_PI_DQ_QUERY_ACTION_QUEUE_ENTRY **)(*(_QWORD *)v4 + 8i64) != v4) )
    {
      __fastfail(3u);
    }
    *v3 = (_PI_DQ_QUERY_ACTION_QUEUE_ENTRY *)v6;
    *(_QWORD *)(v6 + 8) = v3;
    PiDqQueryActionQueueEntryFree(v4);
  }
  Query[52] = 0;
  v5 = (_DEV_QUERY_RESULT_ACTION_DATA *)*((_QWORD *)Query + 23);
  if( v5 )
  {
    PiDqActionDataFree(v5);
    *((_QWORD *)Query + 23) = 0i64;
  }
}

Referenced by:

PiDqIrpQueryCreate
PiDqIrpQueryGetResult
PiDqObjectManagerServiceActionQueue
PiDqQueryApplyObjectEvent
PiDqQueryRelease