add: dev  = (struct ISAPNP_Device*) card->m_Devices.lh_Head;
context: ISAPNP_FindDevice( REG( a0, struct ISAPNP_Device* last_device ),                    REG( d0, LONG                  manufacturer ),                   REG( d1, WORD                  product ),                   REG( d2, BYTE                  revision ),                   REG( a6, struct ISAPNPBase*    res ) ){  struct ISAPNP_Card* card;  if( last_device == NULL )  {    card = (struct ISAPNP_Card*) res->m_Cards.lh_Head;  }  else  {    card = (struct ISAPNP_Card*) last_device->m_Card;  }  while( card->m_Node.ln_Succ != NULL )  {    struct ISAPNP_Device* dev;        if( last_device == NULL )    {      dev = (struct ISAPNP_Device*) card->m_Devices.lh_Head;    }    else    {      dev = (struct ISAPNP_Device*) last_device->m_Node.ln_Succ;    }        while( dev->m_Node.ln_Succ != NULL )    {      struct ISAPNP_Identifier* id;      for( id = (struct ISAPNP_Identifier*) dev->m_IDs.mlh_Head;           id->m_MinNode.mln_Succ != NULL;           id = (struct ISAPNP_Identifier*) id->m_MinNode.mln_Succ )      {        if( manufacturer == -1 ||             ISAPNP_MAKE_ID( id->m_Vendor[ 0 ],                            id->m_Vendor[ 1 ],                            id->m_Vendor[ 2 ] ) == manufacturer )        {          if( product == -1 || id->m_ProductID == product )          {            if( revision == -1 || id->m_Revision == revision )            {              return dev;            }          }        }      }      dev = (struct ISAPNP_Device*) dev->m_Node.ln_Succ;    }    card = (struct ISAPNP_Card*) card->m_Node.ln_Succ;  }  return NULL;}