PiDqQueryCompletePendedIrp

VOID __fastcall PiDqQueryCompletePendedIrp(INT64 a1){
  __int64 v2; 
  __int64 v3; 
  unsigned int v4; 
  int v5; 
  __int128 *v6; 
  __int128 v7; 
  v2 = *(_QWORD *)(a1 + 176);
  v7 = 0i64;
  if( v2 )
  {
    v3 = *(_QWORD *)(v2 + 184);
    if( _InterlockedExchange64((volatile __int64 *)(v2 + 104), 0i64) )
    {
      v4 = 0;
      if( (*(_DWORD *)(a1 + 216) & 1) != 0 )
      {
        v6 = 0i64;
        v5 = -1073741670;
      }
      else
      {
        PiDqQueryGetNextIoctlInfo(a1, *(unsigned int *)(v3 + 8), 0i64, &v7);
        v5 = 0;
        v6 = &v7;
        v4 = 16;
      }
      PiDqIrpComplete(*(_QWORD *)(a1 + 176), v5, v4, v6);
      *(_DWORD *)(a1 + 216) &= ~0x10u;
      *(_QWORD *)(a1 + 176) = 0i64;
    }
  }
}

Referenced by:

PiDqObjectManagerServiceActionQueue