PiSwRemovePdoAssociation

INT64 __fastcall PiSwRemovePdoAssociation(INT64 a1, INT64 a2){
  unsigned int v2; 
  PADAPTER_OBJECT *PdoAssociation; 
  PADAPTER_OBJECT v4; 
  PADAPTER_OBJECT **v5; 
  PADAPTER_OBJECT v6; 
  PADAPTER_OBJECT **v7; 
  v2 = 0;
  PdoAssociation = (PADAPTER_OBJECT *)PiSwFindPdoAssociation(a1, a2, 0);
  if( PdoAssociation )
  {
    v4 = *PdoAssociation;
    if( (PADAPTER_OBJECT *)(*PdoAssociation)->DmaOperations != PdoAssociation
      || (v5 = (PADAPTER_OBJECT **)PdoAssociation[1], *v5 != PdoAssociation)
      || (*v5 = (PADAPTER_OBJECT *)v4,
          v4->DmaOperations = (_DMA_OPERATIONS *)v5,
          v6 = PdoAssociation[2],
          (PADAPTER_OBJECT *)v6->DmaOperations != PdoAssociation + 2)
      || (v7 = (PADAPTER_OBJECT **)PdoAssociation[3], *v7 != PdoAssociation + 2) )
    {
      __fastfail(3u);
    }
    *v7 = (PADAPTER_OBJECT *)v6;
    v6->DmaOperations = (_DMA_OPERATIONS *)v7;
    PiSwPdoAssociationFree(PdoAssociation);
  }
  else
  {
    return(unsigned int)-1073741275;
  }
  return v2;
}

Referenced by:

PiSwUnassociateDeviceObject