Download raw body.
rge(4): enable rss/rx queues/tso for rtl8127
Hi,
This diff adds RX queues/RSS/TSO support and updates microcode for RTL8127.
On the RTL8127 the RX and TX descriptors are now the 16-byte format instead of
the 32-byte one.
TX stays on a single queue. With several tx queues a busy ring starves the
higher numbered ones for seconds. Realtek's Linux vendor driver shows the
same behaviour, which is presumably why it ships with ENABLE_MULTIPLE_TX_QUEUE
disabled.
Tested on:
rge0 at pci1 dev 0 function 0 "Realtek RTL8127" rev 0x05: msix, 4 rx queues, address 1c:86:0b:xx:xx:xx
$ vmstat -iz | grep rge0
irq64/rge0 2 0
irq65/rge0:rx0 432 0
irq66/rge0:rx1 797 1
irq67/rge0:rx2 125 0
irq68/rge0:rx3 130 0
irq69/rge0:tx0 1018 1
Test reports and/or oks welcome.
Index: sys/dev/pci/files.pci
===================================================================
RCS file: /cvs/src/sys/dev/pci/files.pci,v
diff -u -p -u -p -r1.372 files.pci
--- sys/dev/pci/files.pci 18 May 2026 12:14:38 -0000 1.372
+++ sys/dev/pci/files.pci 8 Oct 2026 01:53:53 -0000
@@ -860,7 +860,7 @@ attach iavf at pci
file dev/pci/if_iavf.c iavf
# Realtek 8125
-device rge: ether, ifnet, ifmedia
+device rge: ether, ifnet, ifmedia, intrmap, stoeplitz
attach rge at pci
file dev/pci/if_rge.c rge
Index: sys/dev/pci/if_rge.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_rge.c,v
diff -u -p -u -p -r1.45 if_rge.c
--- sys/dev/pci/if_rge.c 9 Jul 2026 05:12:34 -0000 1.45
+++ sys/dev/pci/if_rge.c 8 Oct 2026 01:53:53 -0000
@@ -1,7 +1,7 @@
/* $OpenBSD: if_rge.c,v 1.45 2026/07/09 05:12:34 kevlo Exp $ */
/*
- * Copyright (c) 2019, 2020, 2023-2025
+ * Copyright (c) 2019, 2020, 2023-2026
* Kevin Lo <kevlo@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
@@ -28,12 +28,17 @@
#include <sys/malloc.h>
#include <sys/device.h>
#include <sys/endian.h>
+#include <sys/intrmap.h>
#include <net/if.h>
#include <net/if_media.h>
+#include <net/toeplitz.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
+#include <netinet/tcp.h>
+#include <netinet/tcp_timer.h>
+#include <netinet/tcp_var.h>
#if NBPFILTER > 0
#include <net/bpf.h>
@@ -65,6 +70,9 @@ int rge_match(struct device *, void *,
void rge_attach(struct device *, struct device *, void *);
int rge_activate(struct device *, int);
int rge_intr(void *);
+int rge_intr_link(void *);
+int rge_intr_queue(void *);
+int rge_intr_tx_queue(void *);
int rge_ioctl(struct ifnet *, u_long, caddr_t);
void rge_start(struct ifqueue *);
void rge_watchdog(struct ifnet *);
@@ -72,15 +80,25 @@ void rge_init(struct ifnet *);
void rge_stop(struct ifnet *);
int rge_ifmedia_upd(struct ifnet *);
void rge_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-int rge_allocmem(struct rge_softc *);
+int rge_rx_dma_alloc(struct rge_softc *, struct rge_queues *);
+int rge_tx_dma_alloc(struct rge_softc *, struct rge_queues *);
int rge_newbuf(struct rge_queues *);
+int rge_rxrinfo(struct rge_softc *, struct if_rxrinfo *);
void rge_rx_list_init(struct rge_queues *);
void rge_tx_list_init(struct rge_queues *);
void rge_fill_rx_ring(struct rge_queues *);
+void rge_fill_rx_desc_addr(struct rge_queues *, int);
+void rge_fill_tx_desc_addr(struct rge_queues *, int);
+void rge_free_rx_ring(struct rge_softc *, struct rge_queues *);
+void rge_free_tx_ring(struct rge_softc *, struct rge_queues *);
+void rge_rxcsum(struct rge_softc *, uint32_t, uint32_t,
+ struct mbuf *);
+void rge_tx_offload(struct mbuf *, uint32_t *, uint32_t *);
int rge_rxeof(struct rge_queues *);
int rge_txeof(struct rge_queues *);
int rge_reset(struct rge_softc *);
void rge_iff(struct rge_softc *);
+void rge_init_rss(struct rge_softc *);
int rge_chipinit(struct rge_softc *);
void rge_set_phy_power(struct rge_softc *, int);
void rge_ephy_config(struct rge_softc *);
@@ -110,7 +128,10 @@ void rge_add_media_types(struct rge_sof
void rge_config_imtype(struct rge_softc *, int);
void rge_disable_aspm_clkreq(struct rge_softc *);
void rge_disable_hw_im(struct rge_softc *);
+void rge_disable_queue(struct rge_softc *, uint32_t);
void rge_disable_sim_im(struct rge_softc *);
+void rge_enable_queue(struct rge_softc *, uint32_t);
+void rge_enable_queues(struct rge_softc *);
void rge_setup_sim_im(struct rge_softc *);
void rge_setup_intr(struct rge_softc *, int);
void rge_switch_mcu_ram_page(struct rge_softc *, int);
@@ -127,6 +148,7 @@ void rge_write_phy(struct rge_softc *,
uint16_t rge_read_phy(struct rge_softc *, uint16_t, uint16_t);
void rge_write_phy_ocp(struct rge_softc *, uint16_t, uint16_t);
uint16_t rge_read_phy_ocp(struct rge_softc *, uint16_t);
+uint32_t rge_rxstatus_mask(struct rge_softc *, int);
int rge_get_link_status(struct rge_softc *);
void rge_txstart(void *);
void rge_tick(void *);
@@ -181,13 +203,13 @@ rge_attach(struct device *parent, struct
struct pci_attach_args *pa = aux;
pci_chipset_tag_t pc = pa->pa_pc;
pci_intr_handle_t ih;
- const char *intrstr = NULL;
struct ifnet *ifp;
- struct rge_queues *q;
+ int (*isr)(void *);
+ const char *intrstr = NULL;
pcireg_t reg;
uint32_t hwrev;
uint8_t eaddr[ETHER_ADDR_LEN];
- int offset;
+ int i, nmsix, offset;
pci_set_powerstate(pa->pa_pc, pa->pa_tag, PCI_PMCSR_STATE_D0);
@@ -209,39 +231,6 @@ rge_attach(struct device *parent, struct
}
}
- q = malloc(sizeof(struct rge_queues), M_DEVBUF, M_NOWAIT | M_ZERO);
- if (q == NULL) {
- printf(": unable to allocate queue memory\n");
- return;
- }
- q->q_sc = sc;
- q->q_index = 0;
-
- sc->sc_queues = q;
- sc->sc_nqueues = 1;
-
- /*
- * Allocate interrupt.
- */
- if (pci_intr_map_msix(pa, 0, &ih) == 0 ||
- pci_intr_map_msi(pa, &ih) == 0)
- sc->rge_flags |= RGE_FLAG_MSI;
- else if (pci_intr_map(pa, &ih) != 0) {
- printf(": couldn't map interrupt\n");
- return;
- }
- intrstr = pci_intr_string(pc, ih);
- sc->sc_ih = pci_intr_establish(pc, ih, IPL_NET | IPL_MPSAFE, rge_intr,
- sc, sc->sc_dev.dv_xname);
- if (sc->sc_ih == NULL) {
- printf(": couldn't establish interrupt");
- if (intrstr != NULL)
- printf(" at %s", intrstr);
- printf("\n");
- return;
- }
- printf(": %s", intrstr);
-
sc->sc_dmat = pa->pa_dmat;
sc->sc_pc = pa->pa_pc;
sc->sc_tag = pa->pa_tag;
@@ -271,14 +260,80 @@ rge_attach(struct device *parent, struct
printf(": RTL8125D");
break;
case 0x6c900000:
- sc->rge_type = MAC_R27;
+ if (rge_read_mac_ocp(sc, 0xd006) == 0x0007) {
+ sc->rge_type = MAC_R27ATF;
+ printf(": RTL8127ATF");
+ } else
+ sc->rge_type = MAC_R27;
+ sc->sc_linkvec = RGE_LINK_VECTOR_8127;
+ sc->rge_min_msix = RGE_MIN_MSIX_VECTORS_8127;
+ sc->rge_flags |= RGE_FLAG_DESCV2;
break;
default:
printf(": unknown version 0x%08x\n", hwrev);
return;
}
- rge_config_imtype(sc, RGE_IMTYPE_SIM);
+ sc->sc_nqueues = sc->sc_ntxqs = 1;
+ isr = rge_intr;
+
+ if (RGE_TYPE_R27(sc)) {
+ nmsix = pci_intr_msix_count(pa);
+ if (nmsix >= sc->rge_min_msix) {
+ sc->sc_intrmap = intrmap_create(&sc->sc_dev, nmsix,
+ MIN(RGE_MAX_VECTORS_8127, IF_MAX_VECTORS),
+ INTRMAP_POWEROF2);
+ if (sc->sc_intrmap == NULL) {
+ printf(": unable to create interrupt map\n");
+ return;
+ }
+
+ if (pci_intr_map_msix(pa, sc->sc_linkvec, &ih)) {
+ printf(": unable to map link vector\n");
+ goto intrunmap;
+ }
+
+ sc->rge_flags |= RGE_FLAG_MULTIVEC;
+ sc->sc_nqueues = intrmap_count(sc->sc_intrmap);
+ isr = rge_intr_link;
+ }
+ }
+
+ sc->sc_queues = mallocarray(sc->sc_nqueues, sizeof(struct rge_queues),
+ M_DEVBUF, M_WAITOK | M_ZERO);
+ if (sc->sc_queues == NULL) {
+ printf(": unable to create queues\n");
+ goto intrunmap;
+ }
+
+ /*
+ * Allocate interrupt.
+ */
+ if (!(sc->rge_flags & RGE_FLAG_MULTIVEC)) {
+ if (pci_intr_map_msix(pa, 0, &ih) == 0 ||
+ pci_intr_map_msi(pa, &ih) == 0)
+ sc->rge_flags |= RGE_FLAG_MSI;
+ else if (pci_intr_map(pa, &ih) != 0) {
+ printf(": couldn't map interrupt\n");
+ return;
+ }
+ }
+
+ intrstr = pci_intr_string(pc, ih);
+ sc->sc_ih = pci_intr_establish(pc, ih, IPL_NET | IPL_MPSAFE, isr, sc,
+ sc->sc_dev.dv_xname);
+ if (sc->sc_ih == NULL) {
+ printf(": couldn't establish interrupt");
+ if (intrstr != NULL)
+ printf(" at %s", intrstr);
+ printf("\n");
+ goto intrunmap;
+ }
+ printf(": %s", intrstr);
+
+ if (sc->sc_nqueues > 1)
+ printf(", %d rx queue%s",
+ sc->sc_nqueues, sc->sc_nqueues > 1 ? "s" : "");
/*
* PCI Express check.
@@ -295,15 +350,19 @@ rge_attach(struct device *parent, struct
}
if (rge_chipinit(sc))
- return;
+ goto intrunmap;
rge_get_macaddr(sc, eaddr);
printf(", address %s\n", ether_sprintf(eaddr));
memcpy(sc->sc_arpcom.ac_enaddr, eaddr, ETHER_ADDR_LEN);
- if (rge_allocmem(sc))
- return;
+ for (i = 0; i < sc->sc_nqueues; i++) {
+ if (rge_rx_dma_alloc(sc, &sc->sc_queues[i]))
+ goto intrunmap;
+ }
+ if (rge_tx_dma_alloc(sc, &sc->sc_queues[0]))
+ goto intrunmap;
ifp = &sc->sc_arpcom.ac_if;
ifp->if_softc = sc;
@@ -317,8 +376,11 @@ rge_attach(struct device *parent, struct
ifp->if_hardmtu = RGE_JUMBO_MTU;
ifp->if_capabilities = IFCAP_VLAN_MTU | IFCAP_CSUM_IPv4 |
- IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4;
+ IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4 | IFCAP_CSUM_TCPv6 |
+ IFCAP_CSUM_UDPv6;
+ if (RGE_TYPE_R27(sc))
+ ifp->if_capabilities |= IFCAP_TSOv4 | IFCAP_TSOv6;
#if NVLAN > 0
ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING;
#endif
@@ -329,7 +391,6 @@ rge_attach(struct device *parent, struct
rge_wol(ifp, 0);
#endif
timeout_set(&sc->sc_timeout, rge_tick, sc);
- task_set(&sc->sc_task, rge_txstart, sc);
/* Initialize ifmedia structures. */
ifmedia_init(&sc->sc_media, IFM_IMASK, rge_ifmedia_upd,
@@ -342,9 +403,99 @@ rge_attach(struct device *parent, struct
if_attach(ifp);
ether_ifattach(ifp);
+ if_attach_iqueues(ifp, sc->sc_nqueues);
+ for (i = 0; i < sc->sc_nqueues; i++) {
+ struct ifiqueue *ifiq = ifp->if_iqs[i];
+ struct rge_queues *q = &sc->sc_queues[i];
+ struct rge_rx *rx = &q->q_rx;
+
+ q->q_sc = sc;
+ q->q_index = i;
+
+ rx->rge_rx_ifiq = ifiq;
+ ifiq->ifiq_softc = q;
+
+ if (sc->sc_intrmap) {
+ if (pci_intr_map_msix(pa, i, &ih)) {
+ printf("%s: unable to map msi-x vector %d\n",
+ sc->sc_dev.dv_xname, i);
+ goto intrdisestablish;
+ }
+ snprintf(q->q_name, sizeof(q->q_name), "%s:rx%d",
+ sc->sc_dev.dv_xname, i);
+
+ q->q_ihc = pci_intr_establish_cpu(sc->sc_pc, ih,
+ IPL_NET | IPL_MPSAFE,
+ intrmap_cpu(sc->sc_intrmap, i),
+ rge_intr_queue, q, q->q_name);
+ if (q->q_ihc == NULL) {
+ printf("%s: unable to establish interrupt %d\n",
+ sc->sc_dev.dv_xname, i);
+ goto intrdisestablish;
+ }
+ }
+ }
+
+ if_attach_queues(ifp, sc->sc_ntxqs);
+ for (i = 0; i < sc->sc_ntxqs; i++) {
+ struct ifqueue *ifq = ifp->if_ifqs[i];
+ struct rge_queues *q = &sc->sc_queues[i];
+ struct rge_tx *tx = &q->q_tx;
+
+ q->q_tx_index = RGE_TX_VECTOR_8127(i);
+ task_set(&q->q_task, rge_txstart, q);
+ tx->rge_tx_ifq = ifq;
+ ifq->ifq_softc = q;
+
+ if (sc->sc_intrmap) {
+ if (pci_intr_map_msix(pa, q->q_tx_index, &ih)) {
+ printf("%s: unable to map msi-x vector %d\n",
+ sc->sc_dev.dv_xname, i);
+ goto intrdisestablish;
+ }
+ snprintf(q->q_tx_name, sizeof(q->q_tx_name), "%s:tx%d",
+ sc->sc_dev.dv_xname, i);
+
+ q->q_tx_ihc = pci_intr_establish_cpu(sc->sc_pc, ih,
+ IPL_NET | IPL_MPSAFE,
+ intrmap_cpu(sc->sc_intrmap, i),
+ rge_intr_tx_queue, q, q->q_tx_name);
+ if (q->q_tx_ihc == NULL) {
+ printf("%s: unable to establish interrupt %d\n",
+ sc->sc_dev.dv_xname, i);
+ goto intrdisestablish;
+ }
+ }
+ }
+
#if NKSTAT > 0
rge_kstat_attach(sc);
#endif
+ return;
+
+intrdisestablish:
+ for (i = 0; i < sc->sc_nqueues; i++) {
+ struct rge_queues *q = &sc->sc_queues[i];
+
+ if (q->q_ihc != NULL) {
+ pci_intr_disestablish(sc->sc_pc, q->q_ihc);
+ q->q_ihc = NULL;
+ }
+ }
+ for (i = 0; i < sc->sc_ntxqs; i++) {
+ struct rge_queues *q = &sc->sc_queues[i];
+
+ if (q->q_tx_ihc != NULL) {
+ pci_intr_disestablish(sc->sc_pc, q->q_tx_ihc);
+ q->q_tx_ihc = NULL;
+ }
+ }
+ free(sc->sc_queues, M_DEVBUF, sc->sc_nqueues * sizeof(*sc->sc_queues));
+intrunmap:
+ if (sc->rge_flags & RGE_FLAG_MULTIVEC) {
+ intrmap_destroy(sc->sc_intrmap);
+ sc->sc_intrmap = NULL;
+ }
}
int
@@ -368,7 +519,7 @@ int
rge_intr(void *arg)
{
struct rge_softc *sc = arg;
- struct rge_queues *q = sc->sc_queues;
+ struct rge_queues *q = &sc->sc_queues[0];
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
uint32_t status;
int claimed = 0, rv;
@@ -435,13 +586,67 @@ rge_intr(void *arg)
return (claimed);
}
+int
+rge_intr_link(void *arg)
+{
+ struct rge_softc *sc = arg;
+
+ rge_disable_queue(sc, sc->sc_linkvec);
+ rge_link_state(sc);
+ rge_enable_queue(sc, sc->sc_linkvec);
+
+ return (1);
+}
+
+int
+rge_intr_queue(void *arg)
+{
+ struct rge_queues *q = arg;
+ struct rge_softc *sc = q->q_sc;
+ struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ int claimed = 0;
+
+ rge_disable_queue(sc, q->q_index);
+
+ if (ISSET(ifp->if_flags, IFF_RUNNING)) {
+ rge_rxeof(q);
+ claimed = 1;
+ }
+
+ rge_enable_queue(sc, q->q_index);
+
+ return (claimed);
+}
+
+int
+rge_intr_tx_queue(void *arg)
+{
+ struct rge_queues *q = arg;
+ struct rge_softc *sc = q->q_sc;
+ struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ int claimed = 0;
+
+ rge_disable_queue(sc, q->q_tx_index);
+
+ if (ISSET(ifp->if_flags, IFF_RUNNING)) {
+ rge_txeof(q);
+ claimed = 1;
+ }
+
+ rge_enable_queue(sc, q->q_tx_index);
+
+ return (claimed);
+}
+
static inline void
rge_tx_list_sync(struct rge_softc *sc, struct rge_queues *q,
unsigned int idx, unsigned int len, int ops)
{
+ int descsz = (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ sizeof(struct rge_tx_desc_v2) : sizeof(struct rge_tx_desc);
+
bus_dmamap_sync(sc->sc_dmat, q->q_tx.rge_tx_list_map,
- idx * sizeof(struct rge_tx_desc), len * sizeof(struct rge_tx_desc),
- ops);
+ idx * descsz, len * descsz, ops);
}
static int
@@ -449,9 +654,10 @@ rge_encap(struct ifnet *ifp, struct rge_
{
struct rge_softc *sc = q->q_sc;
struct rge_tx_desc *d = NULL;
+ struct rge_tx_desc_v2 *dv2 = NULL;
struct rge_txq *txq;
bus_dmamap_t txmap;
- uint32_t cmdsts, cflags = 0;
+ uint32_t cmdsts, cflags = 0, tflags = 0;
int cur, error, i;
#if NBPFILTER > 0
caddr_t if_bpf;
@@ -484,31 +690,13 @@ rge_encap(struct ifnet *ifp, struct rge_
bus_dmamap_sync(sc->sc_dmat, txmap, 0, txmap->dm_mapsize,
BUS_DMASYNC_PREWRITE);
- /*
- * Set RGE_TDEXTSTS_IPCSUM if any checksum offloading is requested.
- * Otherwise, RGE_TDEXTSTS_TCPCSUM / RGE_TDEXTSTS_UDPCSUM does not
- * take affect.
- */
- if ((m->m_pkthdr.csum_flags &
- (M_IPV4_CSUM_OUT | M_TCP_CSUM_OUT | M_UDP_CSUM_OUT)) != 0) {
- cflags |= RGE_TDEXTSTS_IPCSUM;
- if (m->m_pkthdr.csum_flags & M_TCP_CSUM_OUT)
- cflags |= RGE_TDEXTSTS_TCPCSUM;
- if (m->m_pkthdr.csum_flags & M_UDP_CSUM_OUT)
- cflags |= RGE_TDEXTSTS_UDPCSUM;
- }
-
- /* Set up hardware VLAN tagging. */
-#if NVLAN > 0
- if (m->m_flags & M_VLANTAG)
- cflags |= swap16(m->m_pkthdr.ether_vtag) | RGE_TDEXTSTS_VTAG;
-#endif
+ rge_tx_offload(m, &cflags, &tflags);
cur = idx;
for (i = 1; i < txmap->dm_nsegs; i++) {
cur = RGE_NEXT_TX_DESC(cur);
- cmdsts = RGE_TDCMDSTS_OWN;
+ cmdsts = RGE_TDCMDSTS_OWN | tflags;
cmdsts |= txmap->dm_segs[i].ds_len;
if (cur == RGE_TX_LIST_CNT - 1)
@@ -516,17 +704,24 @@ rge_encap(struct ifnet *ifp, struct rge_
if (i == txmap->dm_nsegs - 1)
cmdsts |= RGE_TDCMDSTS_EOF;
- d = &q->q_tx.rge_tx_list[cur];
- d->rge_cmdsts = htole32(cmdsts);
- d->rge_extsts = htole32(cflags);
- d->rge_addr = htole64(txmap->dm_segs[i].ds_addr);
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ dv2 = &q->q_tx.rge_tx_list_v2[cur];
+ dv2->rge_cmdsts = htole32(cmdsts);
+ dv2->rge_extsts = htole32(cflags);
+ dv2->rge_addr = htole64(txmap->dm_segs[i].ds_addr);
+ } else {
+ d = &q->q_tx.rge_tx_list[cur];
+ d->rge_cmdsts = htole32(cmdsts);
+ d->rge_extsts = htole32(cflags);
+ d->rge_addr = htole64(txmap->dm_segs[i].ds_addr);
+ }
}
/* Update info of TX queue and descriptors. */
txq->txq_mbuf = m;
txq->txq_descidx = cur;
- cmdsts = RGE_TDCMDSTS_SOF;
+ cmdsts = RGE_TDCMDSTS_SOF | tflags;
cmdsts |= txmap->dm_segs[0].ds_len;
if (idx == RGE_TX_LIST_CNT - 1)
@@ -534,10 +729,17 @@ rge_encap(struct ifnet *ifp, struct rge_
if (txmap->dm_nsegs == 1)
cmdsts |= RGE_TDCMDSTS_EOF;
- d = &q->q_tx.rge_tx_list[idx];
- d->rge_cmdsts = htole32(cmdsts);
- d->rge_extsts = htole32(cflags);
- d->rge_addr = htole64(txmap->dm_segs[0].ds_addr);
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ dv2 = &q->q_tx.rge_tx_list_v2[idx];
+ dv2->rge_cmdsts = htole32(cmdsts);
+ dv2->rge_extsts = htole32(cflags);
+ dv2->rge_addr = htole64(txmap->dm_segs[0].ds_addr);
+ } else {
+ d = &q->q_tx.rge_tx_list[idx];
+ d->rge_cmdsts = htole32(cmdsts);
+ d->rge_extsts = htole32(cflags);
+ d->rge_addr = htole64(txmap->dm_segs[0].ds_addr);
+ }
if (cur >= idx) {
rge_tx_list_sync(sc, q, idx, txmap->dm_nsegs,
@@ -552,7 +754,10 @@ rge_encap(struct ifnet *ifp, struct rge_
/* Transfer ownership of packet to the chip. */
cmdsts |= RGE_TDCMDSTS_OWN;
rge_tx_list_sync(sc, q, idx, 1, BUS_DMASYNC_POSTWRITE);
- d->rge_cmdsts = htole32(cmdsts);
+ if (sc->rge_flags & RGE_FLAG_DESCV2)
+ dv2->rge_cmdsts = htole32(cmdsts);
+ else
+ d->rge_cmdsts = htole32(cmdsts);
rge_tx_list_sync(sc, q, idx, 1, BUS_DMASYNC_PREWRITE);
return (txmap->dm_nsegs);
@@ -589,8 +794,7 @@ rge_ioctl(struct ifnet *ifp, u_long cmd,
error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd);
break;
case SIOCGIFRXR:
- error = if_rxr_ioctl((struct if_rxrinfo *)ifr->ifr_data,
- NULL, MCLBYTES, &sc->sc_queues->q_rx.rge_rx_ring);
+ error = rge_rxrinfo(sc, (struct if_rxrinfo *)ifr->ifr_data);
break;
default:
error = ether_ioctl(ifp, &sc->sc_arpcom, cmd, data);
@@ -610,8 +814,7 @@ void
rge_start(struct ifqueue *ifq)
{
struct ifnet *ifp = ifq->ifq_if;
- struct rge_softc *sc = ifp->if_softc;
- struct rge_queues *q = sc->sc_queues;
+ struct rge_queues *q = ifq->ifq_softc;
struct mbuf *m;
int free, idx, used;
int queued = 0;
@@ -630,7 +833,7 @@ rge_start(struct ifqueue *ifq)
for (;;) {
if (free < RGE_TX_NSEGS + 2) {
- ifq_set_oactive(&ifp->if_snd);
+ ifq_set_oactive(ifq);
break;
}
@@ -661,7 +864,7 @@ rge_start(struct ifqueue *ifq)
ifp->if_timer = 5;
q->q_tx.rge_txq_prodidx = idx;
- ifq_serialize(ifq, &sc->sc_task);
+ ifq_serialize(ifq, &q->q_task);
}
void
@@ -679,7 +882,7 @@ void
rge_init(struct ifnet *ifp)
{
struct rge_softc *sc = ifp->if_softc;
- struct rge_queues *q = sc->sc_queues;
+ pcireg_t reg;
uint32_t rxconf, val;
int i, num_miti;
@@ -689,8 +892,9 @@ rge_init(struct ifnet *ifp)
rge_set_macaddr(sc, sc->sc_arpcom.ac_enaddr);
/* Initialize RX and TX descriptors lists. */
- rge_rx_list_init(q);
- rge_tx_list_init(q);
+ for (i = 0; i < sc->sc_nqueues; i++)
+ rge_rx_list_init(&sc->sc_queues[i]);
+ rge_tx_list_init(&sc->sc_queues[0]);
if (rge_chipinit(sc))
return;
@@ -706,14 +910,9 @@ rge_init(struct ifnet *ifp)
RGE_JUMBO_MTU + ETHER_HDR_LEN + 32);
/* Load the addresses of the RX and TX lists into the chip. */
- RGE_WRITE_4(sc, RGE_RXDESC_ADDR_LO,
- RGE_ADDR_LO(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
- RGE_WRITE_4(sc, RGE_RXDESC_ADDR_HI,
- RGE_ADDR_HI(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
- RGE_WRITE_4(sc, RGE_TXDESC_ADDR_LO,
- RGE_ADDR_LO(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
- RGE_WRITE_4(sc, RGE_TXDESC_ADDR_HI,
- RGE_ADDR_HI(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
+ for (i = 0; i < sc->sc_nqueues; i++)
+ rge_fill_rx_desc_addr(&sc->sc_queues[i], i);
+ rge_fill_tx_desc_addr(&sc->sc_queues[0], 0);
/* Set the initial RX and TX configurations. */
if (sc->rge_type == MAC_R25)
@@ -724,20 +923,25 @@ rge_init(struct ifnet *ifp)
rxconf = RGE_RXCFG_CONFIG_8125D;
else
rxconf = RGE_RXCFG_CONFIG_8126;
+ if (sc->rge_flags & RGE_FLAG_DESCV2)
+ rxconf &= ~RGE_RXCFG_ENBDESCV1;
RGE_WRITE_4(sc, RGE_RXCFG, rxconf);
RGE_WRITE_4(sc, RGE_TXCFG, RGE_TXCFG_CONFIG);
- val = rge_read_csi(sc, 0x70c) & ~0x3f000000;
- rge_write_csi(sc, 0x70c, val | 0x27000000);
+ reg = pci_conf_read(sc->sc_pc, sc->sc_tag, 0x70c) & ~0x3f000000;
+ pci_conf_write(sc->sc_pc, sc->sc_tag, 0x70c, reg | 0x27000000);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27) {
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc)) {
/* Disable L1 timeout. */
- val = rge_read_csi(sc, 0x890) & ~0x00000001;
- rge_write_csi(sc, 0x890, val);
+ reg = pci_conf_read(sc->sc_pc, sc->sc_tag, 0x890) & ~0x00000001;
+ pci_conf_write(sc->sc_pc, sc->sc_tag, 0x890, reg);
} else if (!RGE_TYPE_R25D(sc))
RGE_WRITE_2(sc, 0x0382, 0x221b);
- RGE_WRITE_1(sc, RGE_RSS_CTRL, 0);
+ if (sc->sc_nqueues > 1)
+ rge_init_rss(sc);
+ else
+ RGE_WRITE_4(sc, RGE_RSS_CTRL, 0);
val = RGE_READ_2(sc, RGE_RXQUEUE_CTRL) & ~0x001c;
RGE_WRITE_2(sc, RGE_RXQUEUE_CTRL, val | (fls(sc->sc_nqueues) - 1) << 2);
@@ -747,19 +951,25 @@ rge_init(struct ifnet *ifp)
rge_write_mac_ocp(sc, 0xc140, 0xffff);
rge_write_mac_ocp(sc, 0xc142, 0xffff);
- RGE_MAC_SETBIT(sc, 0xeb58, 0x0001);
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ val = rge_read_mac_ocp(sc, 0xeb58) & ~0x0003;
+ rge_write_mac_ocp(sc, 0xeb58, val | 0x0002);
+ } else
+ RGE_MAC_SETBIT(sc, 0xeb58, 0x0001);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27) {
- RGE_CLRBIT_1(sc, 0xd8, 0x02);
- if (sc->rge_type == MAC_R27) {
- RGE_CLRBIT_1(sc, 0x20e4, 0x04);
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc)) {
+ if (sc->rge_flags & RGE_FLAG_DESCV2)
+ RGE_SETBIT_1(sc, 0xd8, 0x02);
+ else
+ RGE_CLRBIT_1(sc, 0xd8, 0x02);
+ if (RGE_TYPE_R27(sc)) {
RGE_MAC_CLRBIT(sc, 0xe00c, 0x1000);
RGE_MAC_CLRBIT(sc, 0xc0c2, 0x0040);
}
}
val = rge_read_mac_ocp(sc, 0xe614);
- val &= (sc->rge_type == MAC_R27) ? ~0x0f00 : ~0x0700;
+ val &= RGE_TYPE_R27(sc) ? ~0x0f00 : ~0x0700;
if (sc->rge_type == MAC_R25 || RGE_TYPE_R25D(sc))
rge_write_mac_ocp(sc, 0xe614, val | 0x0300);
else if (sc->rge_type == MAC_R25B)
@@ -771,7 +981,7 @@ rge_init(struct ifnet *ifp)
val = rge_read_mac_ocp(sc, 0xe63e) & ~0x0c00;
rge_write_mac_ocp(sc, 0xe63e, val |
- ((fls(sc->sc_nqueues) - 1) & 0x03) << 10);
+ ((fls(sc->sc_ntxqs) - 1) & 0x03) << 10);
val = rge_read_mac_ocp(sc, 0xe63e) & ~0x0030;
rge_write_mac_ocp(sc, 0xe63e, val | 0x0020);
@@ -808,6 +1018,7 @@ rge_init(struct ifnet *ifp)
rge_write_mac_ocp(sc, 0xd430, val | 0x045f);
RGE_SETBIT_1(sc, RGE_DLLPR, RGE_DLLPR_PFM_EN | RGE_DLLPR_TX_10M_PS_EN);
+ RGE_SETBIT_1(sc, RGE_PPSW, 0x40);
if (sc->rge_type == MAC_R25)
RGE_SETBIT_1(sc, RGE_MCUCMD, 0x01);
@@ -817,7 +1028,7 @@ rge_init(struct ifnet *ifp)
RGE_MAC_CLRBIT(sc, 0xe080, 0x0002);
}
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27)
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc))
RGE_MAC_CLRBIT(sc, 0xea1c, 0x0304);
else
RGE_MAC_CLRBIT(sc, 0xea1c, 0x0004);
@@ -829,15 +1040,20 @@ rge_init(struct ifnet *ifp)
RGE_CLRBIT_2(sc, 0x1880, 0x0030);
- if (sc->rge_type == MAC_R27) {
+ if (RGE_TYPE_R27(sc)) {
val = rge_read_mac_ocp(sc, 0xd40c) & ~0xe038;
- rge_write_phy_ocp(sc, 0xd40c, val | 0x8020);
+ rge_write_mac_ocp(sc, 0xd40c, val | 0x8020);
}
/* Config interrupt type. */
- if (sc->rge_type == MAC_R27)
- RGE_CLRBIT_1(sc, RGE_INT_CFG0, RGE_INT_CFG0_AVOID_MISS_INTR);
- else if (sc->rge_type != MAC_R25)
+ if (RGE_TYPE_R27(sc)) {
+ val = RGE_READ_1(sc, RGE_INT_CFG0);
+ val &= ~(RGE_INT_CFG0_EN | RGE_INT_CFG0_AUTO_CLEAR_IMR |
+ RGE_INT_CFG0_AVOID_MISS_INTR);
+ if (sc->rge_flags & RGE_FLAG_MULTIVEC)
+ val |= RGE_INT_CFG0_EN;
+ RGE_WRITE_1(sc, RGE_INT_CFG0, val);
+ } else if (sc->rge_type != MAC_R25)
RGE_CLRBIT_1(sc, RGE_INT_CFG0, RGE_INT_CFG0_EN);
/* Clear timer interrupts. */
@@ -859,6 +1075,15 @@ rge_init(struct ifnet *ifp)
RGE_WRITE_2(sc, RGE_INT_CFG1, 0);
}
+ if (sc->rge_flags & RGE_FLAG_MULTIVEC) {
+ for (i = 0; i < sc->sc_nqueues; i++) {
+ RGE_WRITE_1(sc, RGE_RX_MULTIVEC_INTMITI(i),
+ RGE_TIMER_VALUE);
+ RGE_WRITE_1(sc, RGE_TX_MULTIVEC_INTMITI(i),
+ RGE_TIMER_VALUE);
+ }
+ }
+
RGE_MAC_SETBIT(sc, 0xc0ac, 0x1f80);
rge_write_mac_ocp(sc, 0xe098, 0xc302);
@@ -866,6 +1091,7 @@ rge_init(struct ifnet *ifp)
RGE_MAC_CLRBIT(sc, 0xe032, 0x0003);
val = rge_read_csi(sc, 0x98) & ~0x0000ff00;
rge_write_csi(sc, 0x98, val);
+ DELAY(20);
if (RGE_TYPE_R25D(sc)) {
val = rge_read_mac_ocp(sc, 0xe092) & ~0x00ff;
@@ -880,16 +1106,19 @@ rge_init(struct ifnet *ifp)
RGE_READ_2(sc, RGE_CPLUSCMD);
/* Set Maximum frame size. */
- RGE_WRITE_2(sc, RGE_RXMAXSIZE, RGE_JUMBO_FRAMELEN);
+ if (sc->rge_type == MAC_R25 || sc->rge_type == MAC_R25B)
+ RGE_WRITE_2(sc, RGE_RXMAXSIZE, RGE_JUMBO_FRAMELEN);
+ else
+ RGE_WRITE_2(sc, RGE_RXMAXSIZE,
+ RGE_JUMBO_FRAMELEN | RGE_RXCFG_VLANPHYS);
/* Disable RXDV gate. */
RGE_CLRBIT_1(sc, RGE_PPSW, 0x08);
- DELAY(2000);
/* Program promiscuous mode and multicast filters. */
rge_iff(sc);
- if (sc->rge_type == MAC_R27)
+ if (RGE_TYPE_R27(sc))
RGE_CLRBIT_1(sc, RGE_RADMFIFO_PROTECT, 0x2001);
rge_disable_aspm_clkreq(sc);
@@ -903,10 +1132,13 @@ rge_init(struct ifnet *ifp)
RGE_WRITE_1(sc, RGE_CMD, RGE_CMD_TXENB | RGE_CMD_RXENB);
/* Enable interrupts. */
- rge_setup_intr(sc, RGE_IMTYPE_SIM);
+ if (sc->rge_flags & RGE_FLAG_MULTIVEC)
+ rge_enable_queues(sc);
+ else
+ rge_setup_intr(sc, RGE_IMTYPE_SIM);
ifp->if_flags |= IFF_RUNNING;
- ifq_clr_oactive(&ifp->if_snd);
+ ifq_clr_oactive(ifp->if_ifqs[0]);
timeout_add_sec(&sc->sc_timeout, 1);
}
@@ -918,7 +1150,6 @@ void
rge_stop(struct ifnet *ifp)
{
struct rge_softc *sc = ifp->if_softc;
- struct rge_queues *q = sc->sc_queues;
int i;
timeout_del(&sc->sc_timeout);
@@ -936,34 +1167,9 @@ rge_stop(struct ifnet *ifp)
RGE_MAC_CLRBIT(sc, 0xc0ac, 0x1f80);
intr_barrier(sc->sc_ih);
- ifq_barrier(&ifp->if_snd);
- ifq_clr_oactive(&ifp->if_snd);
-
- if (q->q_rx.rge_head != NULL) {
- m_freem(q->q_rx.rge_head);
- q->q_rx.rge_head = NULL;
- q->q_rx.rge_tail = &q->q_rx.rge_head;
- }
-
- /* Free the TX list buffers. */
- for (i = 0; i < RGE_TX_LIST_CNT; i++) {
- if (q->q_tx.rge_txq[i].txq_mbuf != NULL) {
- bus_dmamap_unload(sc->sc_dmat,
- q->q_tx.rge_txq[i].txq_dmamap);
- m_freem(q->q_tx.rge_txq[i].txq_mbuf);
- q->q_tx.rge_txq[i].txq_mbuf = NULL;
- }
- }
-
- /* Free the RX list buffers. */
- for (i = 0; i < RGE_RX_LIST_CNT; i++) {
- if (q->q_rx.rge_rxq[i].rxq_mbuf != NULL) {
- bus_dmamap_unload(sc->sc_dmat,
- q->q_rx.rge_rxq[i].rxq_dmamap);
- m_freem(q->q_rx.rge_rxq[i].rxq_mbuf);
- q->q_rx.rge_rxq[i].rxq_mbuf = NULL;
- }
- }
+ for (i = 0; i < sc->sc_nqueues; i++)
+ rge_free_rx_ring(sc, &sc->sc_queues[i]);
+ rge_free_tx_ring(sc, &sc->sc_queues[0]);
}
/*
@@ -981,9 +1187,10 @@ rge_ifmedia_upd(struct ifnet *ifp)
/* Disable Gigabit Lite. */
RGE_PHY_CLRBIT(sc, 0xa428, 0x0200);
- RGE_PHY_CLRBIT(sc, 0xa5ea, 0x0001);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27)
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc))
RGE_PHY_CLRBIT(sc, 0xa5ea, 0x0007);
+ else
+ RGE_PHY_CLRBIT(sc, 0xa5ea, 0x0001);
val = rge_read_phy_ocp(sc, 0xa5d4);
switch (sc->rge_type) {
@@ -1092,114 +1299,136 @@ rge_ifmedia_sts(struct ifnet *ifp, struc
}
}
-/*
- * Allocate memory for RX/TX rings.
- */
int
-rge_allocmem(struct rge_softc *sc)
+rge_rx_dma_alloc(struct rge_softc *sc, struct rge_queues *q)
{
- struct rge_queues *q = sc->sc_queues;
- int error, i;
+ void **desc;
+ int descsz, error, i;
- /* Allocate DMA'able memory for the TX ring. */
- error = bus_dmamap_create(sc->sc_dmat, RGE_TX_LIST_SZ, 1,
- RGE_TX_LIST_SZ, 0,
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ desc = (void **)&q->q_rx.rge_rx_list_v2;
+ descsz = sizeof(struct rge_rx_desc_v2);
+ } else {
+ desc = (void **)&q->q_rx.rge_rx_list;
+ descsz = sizeof(struct rge_rx_desc);
+ }
+
+ /* Allocate DMA'able memory for the RX ring. */
+ error = bus_dmamap_create(sc->sc_dmat, RGE_RX_LIST_CNT * descsz, 1,
+ RGE_RX_LIST_CNT * descsz, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW | BUS_DMA_64BIT,
- &q->q_tx.rge_tx_list_map);
+ &q->q_rx.rge_rx_list_map);
if (error) {
- printf("%s: can't create TX list map\n", sc->sc_dev.dv_xname);
+ printf("%s: can't create RX list map\n", sc->sc_dev.dv_xname);
return (error);
}
- error = bus_dmamem_alloc(sc->sc_dmat, RGE_TX_LIST_SZ, RGE_ALIGN, 0,
- &q->q_tx.rge_tx_listseg, 1, &q->q_tx.rge_tx_listnseg,
+ error = bus_dmamem_alloc(sc->sc_dmat, RGE_RX_LIST_CNT * descsz,
+ RGE_ALIGN, 0, &q->q_rx.rge_rx_listseg, 1, &q->q_rx.rge_rx_listnseg,
BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_64BIT);
if (error) {
- printf("%s: can't alloc TX list\n", sc->sc_dev.dv_xname);
+ printf("%s: can't alloc RX list\n", sc->sc_dev.dv_xname);
return (error);
}
- /* Load the map for the TX ring. */
- error = bus_dmamem_map(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
- q->q_tx.rge_tx_listnseg, RGE_TX_LIST_SZ,
- (caddr_t *)&q->q_tx.rge_tx_list, BUS_DMA_NOWAIT | BUS_DMA_COHERENT);
+ /* Load the map for the RX ring. */
+ error = bus_dmamem_map(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
+ q->q_rx.rge_rx_listnseg, RGE_RX_LIST_CNT * descsz,
+ (caddr_t *)desc, BUS_DMA_NOWAIT | BUS_DMA_COHERENT);
if (error) {
- printf("%s: can't map TX dma buffers\n", sc->sc_dev.dv_xname);
- bus_dmamem_free(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
- q->q_tx.rge_tx_listnseg);
+ printf("%s: can't map RX dma buffers\n", sc->sc_dev.dv_xname);
+ bus_dmamem_free(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
+ q->q_rx.rge_rx_listnseg);
return (error);
}
- error = bus_dmamap_load(sc->sc_dmat, q->q_tx.rge_tx_list_map,
- q->q_tx.rge_tx_list, RGE_TX_LIST_SZ, NULL, BUS_DMA_NOWAIT);
+ error = bus_dmamap_load(sc->sc_dmat, q->q_rx.rge_rx_list_map, *desc,
+ RGE_RX_LIST_CNT * descsz, NULL, BUS_DMA_NOWAIT);
if (error) {
- printf("%s: can't load TX dma map\n", sc->sc_dev.dv_xname);
- bus_dmamap_destroy(sc->sc_dmat, q->q_tx.rge_tx_list_map);
- bus_dmamem_unmap(sc->sc_dmat,
- (caddr_t)q->q_tx.rge_tx_list, RGE_TX_LIST_SZ);
- bus_dmamem_free(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
- q->q_tx.rge_tx_listnseg);
+ printf("%s: can't load RX dma map\n", sc->sc_dev.dv_xname);
+ bus_dmamap_destroy(sc->sc_dmat, q->q_rx.rge_rx_list_map);
+ bus_dmamem_unmap(sc->sc_dmat, (caddr_t)*desc,
+ RGE_RX_LIST_CNT * descsz);
+ bus_dmamem_free(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
+ q->q_rx.rge_rx_listnseg);
return (error);
}
- /* Create DMA maps for TX buffers. */
- for (i = 0; i < RGE_TX_LIST_CNT; i++) {
- error = bus_dmamap_create(sc->sc_dmat, RGE_JUMBO_FRAMELEN,
- RGE_TX_NSEGS, RGE_JUMBO_FRAMELEN, 0,
+ /* Create DMA maps for RX buffers. */
+ for (i = 0; i < RGE_RX_LIST_CNT; i++) {
+ error = bus_dmamap_create(sc->sc_dmat, RGE_JUMBO_FRAMELEN, 1,
+ RGE_JUMBO_FRAMELEN, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW | BUS_DMA_64BIT,
- &q->q_tx.rge_txq[i].txq_dmamap);
+ &q->q_rx.rge_rxq[i].rxq_dmamap);
if (error) {
- printf("%s: can't create DMA map for TX\n",
+ printf("%s: can't create DMA map for RX\n",
sc->sc_dev.dv_xname);
return (error);
}
}
- /* Allocate DMA'able memory for the RX ring. */
- error = bus_dmamap_create(sc->sc_dmat, RGE_RX_LIST_SZ, 1,
- RGE_RX_LIST_SZ, 0,
+ return (error);
+}
+
+int
+rge_tx_dma_alloc(struct rge_softc *sc, struct rge_queues *q)
+{
+ void **desc;
+ int descsz, error, i;
+
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ desc = (void **)&q->q_tx.rge_tx_list_v2;
+ descsz = sizeof(struct rge_tx_desc_v2);
+ } else {
+ desc = (void **)&q->q_tx.rge_tx_list;
+ descsz = sizeof(struct rge_tx_desc);
+ }
+
+ /* Allocate DMA'able memory for the TX ring. */
+ error = bus_dmamap_create(sc->sc_dmat, RGE_TX_LIST_CNT * descsz, 1,
+ RGE_TX_LIST_CNT * descsz, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW | BUS_DMA_64BIT,
- &q->q_rx.rge_rx_list_map);
+ &q->q_tx.rge_tx_list_map);
if (error) {
- printf("%s: can't create RX list map\n", sc->sc_dev.dv_xname);
+ printf("%s: can't create TX list map\n", sc->sc_dev.dv_xname);
return (error);
}
- error = bus_dmamem_alloc(sc->sc_dmat, RGE_RX_LIST_SZ, RGE_ALIGN, 0,
- &q->q_rx.rge_rx_listseg, 1, &q->q_rx.rge_rx_listnseg,
+ error = bus_dmamem_alloc(sc->sc_dmat, RGE_TX_LIST_CNT * descsz,
+ RGE_ALIGN, 0, &q->q_tx.rge_tx_listseg, 1, &q->q_tx.rge_tx_listnseg,
BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_64BIT);
if (error) {
- printf("%s: can't alloc RX list\n", sc->sc_dev.dv_xname);
+ printf("%s: can't alloc TX list\n", sc->sc_dev.dv_xname);
return (error);
}
- /* Load the map for the RX ring. */
- error = bus_dmamem_map(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
- q->q_rx.rge_rx_listnseg, RGE_RX_LIST_SZ,
- (caddr_t *)&q->q_rx.rge_rx_list, BUS_DMA_NOWAIT | BUS_DMA_COHERENT);
+ /* Load the map for the TX ring. */
+ error = bus_dmamem_map(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
+ q->q_tx.rge_tx_listnseg, RGE_TX_LIST_CNT * descsz,
+ (caddr_t *)desc, BUS_DMA_NOWAIT | BUS_DMA_COHERENT);
if (error) {
- printf("%s: can't map RX dma buffers\n", sc->sc_dev.dv_xname);
- bus_dmamem_free(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
- q->q_rx.rge_rx_listnseg);
+ printf("%s: can't map TX dma buffers\n", sc->sc_dev.dv_xname);
+ bus_dmamem_free(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
+ q->q_tx.rge_tx_listnseg);
return (error);
}
- error = bus_dmamap_load(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- q->q_rx.rge_rx_list, RGE_RX_LIST_SZ, NULL, BUS_DMA_NOWAIT);
+ error = bus_dmamap_load(sc->sc_dmat, q->q_tx.rge_tx_list_map, *desc,
+ RGE_TX_LIST_CNT * descsz, NULL, BUS_DMA_NOWAIT);
if (error) {
- printf("%s: can't load RX dma map\n", sc->sc_dev.dv_xname);
- bus_dmamap_destroy(sc->sc_dmat, q->q_rx.rge_rx_list_map);
- bus_dmamem_unmap(sc->sc_dmat,
- (caddr_t)q->q_rx.rge_rx_list, RGE_RX_LIST_SZ);
- bus_dmamem_free(sc->sc_dmat, &q->q_rx.rge_rx_listseg,
- q->q_rx.rge_rx_listnseg);
+ printf("%s: can't load TX dma map\n", sc->sc_dev.dv_xname);
+ bus_dmamap_destroy(sc->sc_dmat, q->q_tx.rge_tx_list_map);
+ bus_dmamem_unmap(sc->sc_dmat, (caddr_t)*desc,
+ RGE_TX_LIST_CNT * descsz);
+ bus_dmamem_free(sc->sc_dmat, &q->q_tx.rge_tx_listseg,
+ q->q_tx.rge_tx_listnseg);
return (error);
}
- /* Create DMA maps for RX buffers. */
- for (i = 0; i < RGE_RX_LIST_CNT; i++) {
- error = bus_dmamap_create(sc->sc_dmat, RGE_JUMBO_FRAMELEN, 1,
- RGE_JUMBO_FRAMELEN, 0,
+ /* Create DMA maps for TX buffers. */
+ for (i = 0; i < RGE_TX_LIST_CNT; i++) {
+ error = bus_dmamap_create(sc->sc_dmat, MAXMCLBYTES,
+ RGE_TX_NSEGS, RGE_JUMBO_FRAMELEN, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW | BUS_DMA_64BIT,
- &q->q_rx.rge_rxq[i].rxq_dmamap);
+ &q->q_tx.rge_txq[i].txq_dmamap);
if (error) {
- printf("%s: can't create DMA map for RX\n",
+ printf("%s: can't create DMA map for TX\n",
sc->sc_dev.dv_xname);
return (error);
}
@@ -1217,10 +1446,11 @@ rge_newbuf(struct rge_queues *q)
struct rge_softc *sc = q->q_sc;
struct mbuf *m;
struct rge_rx_desc *r;
+ struct rge_rx_desc_v2 *rv2;
struct rge_rxq *rxq;
bus_dmamap_t rxmap;
uint32_t cmdsts;
- int idx;
+ int descsz, idx;
m = MCLGETL(NULL, M_DONTWAIT, MCLBYTES);
if (m == NULL)
@@ -1241,41 +1471,83 @@ rge_newbuf(struct rge_queues *q)
bus_dmamap_sync(sc->sc_dmat, rxmap, 0, rxmap->dm_mapsize,
BUS_DMASYNC_PREREAD);
- /* Map the segments into RX descriptors. */
- r = &q->q_rx.rge_rx_list[idx];
-
rxq->rxq_mbuf = m;
cmdsts = rxmap->dm_segs[0].ds_len;
if (idx == RGE_RX_LIST_CNT - 1)
cmdsts |= RGE_RDCMDSTS_EOR;
- r->hi_qword1.rx_qword4.rge_cmdsts = htole32(cmdsts);
- r->hi_qword1.rx_qword4.rge_extsts = htole32(0);
- r->hi_qword0.rge_addr = htole64(rxmap->dm_segs[0].ds_addr);
-
- bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- idx * sizeof(struct rge_rx_desc), sizeof(struct rge_rx_desc),
- BUS_DMASYNC_PREWRITE);
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ descsz = sizeof(struct rge_rx_desc_v2);
+ rv2 = &q->q_rx.rge_rx_list_v2[idx];
+ rv2->rx_qword0.rge_cmdsts = htole32(cmdsts);
+ rv2->rx_qword0.rge_extsts = htole32(0);
+ rv2->qword0.rge_addr = htole64(rxmap->dm_segs[0].ds_addr);
+ } else {
+ descsz = sizeof(struct rge_rx_desc);
+ r = &q->q_rx.rge_rx_list[idx];
+ r->hi_qword1.rx_qword4.rge_cmdsts = htole32(cmdsts);
+ r->hi_qword1.rx_qword4.rge_extsts = htole32(0);
+ r->hi_qword0.rge_addr = htole64(rxmap->dm_segs[0].ds_addr);
+ }
+ bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map, idx * descsz,
+ descsz, BUS_DMASYNC_PREWRITE);
- bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- idx * sizeof(struct rge_rx_desc), sizeof(struct rge_rx_desc),
- BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map, idx * descsz,
+ descsz, BUS_DMASYNC_POSTWRITE);
cmdsts |= RGE_RDCMDSTS_OWN;
- r->hi_qword1.rx_qword4.rge_cmdsts = htole32(cmdsts);
- bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- idx * sizeof(struct rge_rx_desc), sizeof(struct rge_rx_desc),
- BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
+
+ if (sc->rge_flags & RGE_FLAG_DESCV2)
+ rv2->rx_qword0.rge_cmdsts = htole32(cmdsts);
+ else
+ r->hi_qword1.rx_qword4.rge_cmdsts = htole32(cmdsts);
+ bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map, idx * descsz,
+ descsz, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
q->q_rx.rge_rxq_prodidx = RGE_NEXT_RX_DESC(idx);
return (0);
}
+int
+rge_rxrinfo(struct rge_softc *sc, struct if_rxrinfo *ifri)
+{
+ struct if_rxring_info *ifr;
+ int i;
+ int error;
+
+ ifr = mallocarray(sc->sc_nqueues, sizeof(*ifr), M_TEMP,
+ M_WAITOK | M_ZERO | M_CANFAIL);
+ if (ifr == NULL)
+ return (ENOMEM);
+
+ for (i = 0; i < sc->sc_nqueues; i++) {
+ ifr[i].ifr_size = MCLBYTES;
+ ifr[i].ifr_info = sc->sc_queues[i].q_rx.rge_rx_ring;
+ }
+
+ error = if_rxr_info_ioctl(ifri, sc->sc_nqueues, ifr);
+ free(ifr, M_TEMP, sc->sc_nqueues * sizeof(*ifr));
+
+ return (error);
+}
+
void
rge_rx_list_init(struct rge_queues *q)
{
- memset(q->q_rx.rge_rx_list, 0, RGE_RX_LIST_SZ);
+ struct rge_softc *sc = q->q_sc;
+ void *desc;
+ int descsz;
+
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ desc = q->q_rx.rge_rx_list_v2;
+ descsz = sizeof(struct rge_rx_desc_v2);
+ } else {
+ desc = q->q_rx.rge_rx_list;
+ descsz = sizeof(struct rge_rx_desc);
+ }
+
+ memset(desc, 0, RGE_RX_LIST_CNT * descsz);
q->q_rx.rge_rxq_prodidx = q->q_rx.rge_rxq_considx = 0;
q->q_rx.rge_head = NULL;
@@ -1299,19 +1571,70 @@ rge_fill_rx_ring(struct rge_queues *q)
}
void
+rge_fill_rx_desc_addr(struct rge_queues *q, int queue)
+{
+ struct rge_softc *sc = q->q_sc;
+
+ if (queue == 0) {
+ RGE_WRITE_4(sc, RGE_RXDESC_ADDR_LO,
+ RGE_ADDR_LO(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
+ RGE_WRITE_4(sc, RGE_RXDESC_ADDR_HI,
+ RGE_ADDR_HI(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
+ } else {
+ RGE_WRITE_4(sc, RGE_RXDESC_ADDR_LO_V2(queue),
+ RGE_ADDR_LO(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
+ RGE_WRITE_4(sc, RGE_RXDESC_ADDR_HI_V2(queue),
+ RGE_ADDR_HI(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
+ }
+}
+
+void
+rge_fill_tx_desc_addr(struct rge_queues *q, int queue)
+{
+ struct rge_softc *sc = q->q_sc;
+
+ if (queue == 0) {
+ RGE_WRITE_4(sc, RGE_TXDESC_ADDR_LO,
+ RGE_ADDR_LO(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
+ RGE_WRITE_4(sc, RGE_TXDESC_ADDR_HI,
+ RGE_ADDR_HI(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
+ } else {
+ RGE_WRITE_4(sc, RGE_TXDESC_ADDR_LO_V2(queue),
+ RGE_ADDR_LO(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
+ RGE_WRITE_4(sc, RGE_TXDESC_ADDR_HI_V2(queue),
+ RGE_ADDR_HI(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
+ }
+}
+
+void
rge_tx_list_init(struct rge_queues *q)
{
struct rge_softc *sc = q->q_sc;
struct rge_tx_desc *d;
- int i;
+ struct rge_tx_desc_v2 *dv2;
+ void *desc;
+ int descsz, i;
+
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ desc = q->q_tx.rge_tx_list_v2;
+ descsz = sizeof(struct rge_tx_desc_v2);
+ } else {
+ desc = q->q_tx.rge_tx_list;
+ descsz = sizeof(struct rge_tx_desc);
+ }
- memset(q->q_tx.rge_tx_list, 0, RGE_TX_LIST_SZ);
+ memset(desc, 0, RGE_TX_LIST_CNT * descsz);
for (i = 0; i < RGE_TX_LIST_CNT; i++)
q->q_tx.rge_txq[i].txq_mbuf = NULL;
- d = &q->q_tx.rge_tx_list[RGE_TX_LIST_CNT - 1];
- d->rge_cmdsts = htole32(RGE_TDCMDSTS_EOR);
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ dv2 = &q->q_tx.rge_tx_list_v2[RGE_TX_LIST_CNT - 1];
+ dv2->rge_cmdsts = htole32(RGE_TDCMDSTS_EOR);
+ } else {
+ d = &q->q_tx.rge_tx_list[RGE_TX_LIST_CNT - 1];
+ d->rge_cmdsts = htole32(RGE_TDCMDSTS_EOR);
+ }
bus_dmamap_sync(sc->sc_dmat, q->q_tx.rge_tx_list_map, 0,
q->q_tx.rge_tx_list_map->dm_mapsize,
@@ -1320,6 +1643,135 @@ rge_tx_list_init(struct rge_queues *q)
q->q_tx.rge_txq_prodidx = q->q_tx.rge_txq_considx = 0;
}
+void
+rge_free_rx_ring(struct rge_softc *sc, struct rge_queues *q)
+{
+ int i;
+
+ if (sc->sc_intrmap)
+ intr_barrier(q->q_ihc);
+
+ if (q->q_rx.rge_head != NULL) {
+ m_freem(q->q_rx.rge_head);
+ q->q_rx.rge_head = NULL;
+ q->q_rx.rge_tail = &q->q_rx.rge_head;
+ }
+
+ /* Free the RX list buffers. */
+ for (i = 0; i < RGE_RX_LIST_CNT; i++) {
+ if (q->q_rx.rge_rxq[i].rxq_mbuf != NULL) {
+ bus_dmamap_unload(sc->sc_dmat,
+ q->q_rx.rge_rxq[i].rxq_dmamap);
+ m_freem(q->q_rx.rge_rxq[i].rxq_mbuf);
+ q->q_rx.rge_rxq[i].rxq_mbuf = NULL;
+ }
+ }
+}
+
+void
+rge_free_tx_ring(struct rge_softc *sc, struct rge_queues *q)
+{
+ int i;
+
+ ifq_barrier(q->q_tx.rge_tx_ifq);
+ ifq_clr_oactive(q->q_tx.rge_tx_ifq);
+
+ if (sc->sc_intrmap)
+ intr_barrier(q->q_tx_ihc);
+
+ /* Free the TX list buffers. */
+ for (i = 0; i < RGE_TX_LIST_CNT; i++) {
+ if (q->q_tx.rge_txq[i].txq_mbuf != NULL) {
+ bus_dmamap_unload(sc->sc_dmat,
+ q->q_tx.rge_txq[i].txq_dmamap);
+ m_freem(q->q_tx.rge_txq[i].txq_mbuf);
+ q->q_tx.rge_txq[i].txq_mbuf = NULL;
+ }
+ }
+}
+
+void
+rge_rxcsum(struct rge_softc *sc, uint32_t cmdsts, uint32_t extsts,
+ struct mbuf *m)
+{
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ /* Check IP header checksum. */
+ if (!(cmdsts & RGE_RDCMDSTS_IPCSUMERR_V2) &&
+ (extsts & RGE_RDEXTSTS_IPV4))
+ m->m_pkthdr.csum_flags |= M_IPV4_CSUM_IN_OK;
+
+ /* Check TCP/UDP checksum. */
+ if ((extsts & (RGE_RDEXTSTS_IPV4 | RGE_RDEXTSTS_IPV6)) &&
+ (((cmdsts & RGE_RDCMDSTS_TCPPKT_V2) &&
+ !(cmdsts & RGE_RDCMDSTS_TCPCSUMERR_V2)) ||
+ ((cmdsts & RGE_RDCMDSTS_UDPPKT_V2) &&
+ !(cmdsts & RGE_RDCMDSTS_UDPCSUMERR_V2))))
+ m->m_pkthdr.csum_flags |= M_TCP_CSUM_IN_OK |
+ M_UDP_CSUM_IN_OK;
+ } else {
+ /* Check IP header checksum. */
+ if (!(extsts & RGE_RDEXTSTS_IPCSUMERR) &&
+ (extsts & RGE_RDEXTSTS_IPV4))
+ m->m_pkthdr.csum_flags |= M_IPV4_CSUM_IN_OK;
+
+ /* Check TCP/UDP checksum. */
+ if ((extsts & (RGE_RDEXTSTS_IPV4 | RGE_RDEXTSTS_IPV6)) &&
+ (((extsts & RGE_RDEXTSTS_TCPPKT) &&
+ !(extsts & RGE_RDEXTSTS_TCPCSUMERR)) ||
+ ((extsts & RGE_RDEXTSTS_UDPPKT) &&
+ !(extsts & RGE_RDEXTSTS_UDPCSUMERR))))
+ m->m_pkthdr.csum_flags |= M_TCP_CSUM_IN_OK |
+ M_UDP_CSUM_IN_OK;
+ }
+}
+
+void
+rge_tx_offload(struct mbuf *m, uint32_t *cflags, uint32_t *tflags)
+{
+ struct ether_extracted ext;
+ uint32_t hdrlen;
+
+ /* Set up hardware VLAN tagging. */
+#if NVLAN > 0
+ if (m->m_flags & M_VLANTAG)
+ *cflags |= swap16(m->m_pkthdr.ether_vtag) | RGE_TDEXTSTS_VTAG;
+#endif
+
+ ether_extract_headers(m, &ext);
+ hdrlen = sizeof(*ext.eh) + ext.iphlen;
+
+ if (m->m_pkthdr.csum_flags & M_TCP_TSO) {
+ uint32_t outlen;
+
+ if (ext.tcp && m->m_pkthdr.ph_mss > 0 &&
+ hdrlen <= RGE_TDCMDSTS_TCPHO_MAX) {
+ *tflags = hdrlen << RGE_TDCMDSTS_TCPHO_SHIFT;
+ outlen = MIN(m->m_pkthdr.ph_mss, RGE_TDEXTSTS_MAX_MSS);
+ *cflags |= outlen << RGE_TDEXTSTS_MSS_SHIFT;
+ *cflags |= RGE_TDEXTSTS_TSOENB_V2 |
+ RGE_TDEXTSTS_TSOTCP_V2;
+ *cflags |= (ext.ip4) ?
+ RGE_TDEXTSTS_TSOIPV4_V2 : RGE_TDEXTSTS_TSOIPV6_V2;
+
+ tcpstat_add(tcps_outpkttso,
+ (ext.paylen + outlen - 1) / outlen);
+ } else
+ tcpstat_inc(tcps_outbadtso);
+ } else if (m->m_pkthdr.csum_flags &
+ (M_IPV4_CSUM_OUT | M_TCP_CSUM_OUT | M_UDP_CSUM_OUT)) {
+ if (ext.ip4)
+ *cflags |= RGE_TDEXTSTS_IPCSUM;
+#ifdef INET6
+ else if (ext.ip6)
+ *tflags = hdrlen << RGE_TDCMDSTS_TCPHO_SHIFT;
+#endif
+ if (m->m_pkthdr.csum_flags & M_TCP_CSUM_OUT)
+ *cflags |= RGE_TDEXTSTS_TCPCSUM;
+ if (m->m_pkthdr.csum_flags & M_UDP_CSUM_OUT)
+ *cflags |= RGE_TDEXTSTS_UDPCSUM;
+ }
+}
+
int
rge_rxeof(struct rge_queues *q)
{
@@ -1329,24 +1781,37 @@ rge_rxeof(struct rge_queues *q)
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
struct if_rxring *rxr = &q->q_rx.rge_rx_ring;
struct rge_rx_desc *cur_rx;
+ struct rge_rx_desc_v2 *cur_rx_v2;
struct rge_rxq *rxq;
- uint32_t rxstat, extsts;
- int i, mlen, rx = 0;
- int cons;
+ uint32_t extsts, rxstat;
+ uint32_t hash = 0, hashtype = 0;
+ int cons, descsz, i, mlen, rx = 0;
i = cons = q->q_rx.rge_rxq_considx;
- while (if_rxr_inuse(rxr) > 0) {
- cur_rx = &q->q_rx.rge_rx_list[i];
+ descsz = (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ sizeof(*cur_rx_v2) : sizeof(*cur_rx);
+ while (if_rxr_inuse(rxr) > 0) {
bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- i * sizeof(*cur_rx), sizeof(*cur_rx),
- BUS_DMASYNC_POSTREAD);
- rxstat = letoh32(cur_rx->hi_qword1.rx_qword4.rge_cmdsts);
+ i * descsz, descsz, BUS_DMASYNC_POSTREAD);
+
+ if (sc->rge_flags & RGE_FLAG_DESCV2) {
+ cur_rx_v2 = &q->q_rx.rge_rx_list_v2[i];
+ rxstat = letoh32(cur_rx_v2->rx_qword0.rge_cmdsts);
+ hash = letoh32(cur_rx_v2->qword0.rx_rss.rge_rss);
+ hashtype =
+ letoh32(cur_rx_v2->qword0.rx_rss.rge_hdr_info) &
+ RGE_RDHDRINFO_RSSTYPE_MASK;
+ } else {
+ cur_rx = &q->q_rx.rge_rx_list[i];
+ rxstat =
+ letoh32(cur_rx->hi_qword1.rx_qword4.rge_cmdsts);
+ }
+
if (rxstat & RGE_RDCMDSTS_OWN) {
bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- i * sizeof(*cur_rx), sizeof(*cur_rx),
- BUS_DMASYNC_PREREAD);
+ i * descsz, descsz, BUS_DMASYNC_PREREAD);
break;
}
@@ -1361,7 +1826,7 @@ rge_rxeof(struct rge_queues *q)
if_rxr_put(rxr, 1);
rx = 1;
- if (ISSET(rxstat, RGE_RDCMDSTS_SOF)) {
+ if (ISSET(rxstat, rge_rxstatus_mask(sc, CMDSTS_SOF))) {
if (q->q_rx.rge_head != NULL) {
ifp->if_ierrors++;
m_freem(q->q_rx.rge_head);
@@ -1384,7 +1849,7 @@ rge_rxeof(struct rge_queues *q)
m = q->q_rx.rge_head;
m->m_pkthdr.len += mlen;
- if (rxstat & RGE_RDCMDSTS_RXERRSUM) {
+ if (rxstat & rge_rxstatus_mask(sc, CMDSTS_RXERRSUM)) {
ifp->if_ierrors++;
m_freem(m);
q->q_rx.rge_head = NULL;
@@ -1392,7 +1857,7 @@ rge_rxeof(struct rge_queues *q)
continue;
}
- if (!ISSET(rxstat, RGE_RDCMDSTS_EOF))
+ if (!ISSET(rxstat, rge_rxstatus_mask(sc, CMDSTS_EOF)))
continue;
q->q_rx.rge_head = NULL;
@@ -1400,21 +1865,16 @@ rge_rxeof(struct rge_queues *q)
m_adj(m, -ETHER_CRC_LEN);
- extsts = letoh32(cur_rx->hi_qword1.rx_qword4.rge_extsts);
-
- /* Check IP header checksum. */
- if (!(extsts & RGE_RDEXTSTS_IPCSUMERR) &&
- (extsts & RGE_RDEXTSTS_IPV4))
- m->m_pkthdr.csum_flags |= M_IPV4_CSUM_IN_OK;
-
- /* Check TCP/UDP checksum. */
- if ((extsts & (RGE_RDEXTSTS_IPV4 | RGE_RDEXTSTS_IPV6)) &&
- (((extsts & RGE_RDEXTSTS_TCPPKT) &&
- !(extsts & RGE_RDEXTSTS_TCPCSUMERR)) ||
- ((extsts & RGE_RDEXTSTS_UDPPKT) &&
- !(extsts & RGE_RDEXTSTS_UDPCSUMERR))))
- m->m_pkthdr.csum_flags |= M_TCP_CSUM_IN_OK |
- M_UDP_CSUM_IN_OK;
+ extsts = (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ letoh32(cur_rx_v2->rx_qword0.rge_extsts) :
+ letoh32(cur_rx->hi_qword1.rx_qword4.rge_extsts);
+
+ rge_rxcsum(sc, rxstat, extsts, m);
+
+ if (hashtype != RGE_RDHDRINFO_RSSTYPE_NONE) {
+ m->m_pkthdr.ph_flowid = hash;
+ m->m_pkthdr.csum_flags |= M_FLOWID;
+ }
#if NVLAN > 0
if (extsts & RGE_RDEXTSTS_VTAG) {
@@ -1432,21 +1892,18 @@ rge_rxeof(struct rge_queues *q)
if (i >= cons) {
bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- cons * sizeof(*cur_rx), (i - cons) * sizeof(*cur_rx),
- BUS_DMASYNC_POSTWRITE);
+ cons * descsz, (i - cons) * descsz, BUS_DMASYNC_POSTWRITE);
} else {
bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- cons * sizeof(*cur_rx),
- (RGE_RX_LIST_CNT - cons) * sizeof(*cur_rx),
+ cons * descsz, (RGE_RX_LIST_CNT - cons) * descsz,
BUS_DMASYNC_POSTWRITE);
if (i > 0) {
bus_dmamap_sync(sc->sc_dmat, q->q_rx.rge_rx_list_map,
- 0, i * sizeof(*cur_rx),
- BUS_DMASYNC_POSTWRITE);
+ 0, i * descsz, BUS_DMASYNC_POSTWRITE);
}
}
- if (ifiq_input(&ifp->if_rcv, &ml))
+ if (ifiq_input(q->q_rx.rge_rx_ifiq, &ml))
if_rxr_livelocked(rxr);
q->q_rx.rge_rxq_considx = i;
@@ -1474,7 +1931,9 @@ rge_txeof(struct rge_queues *q)
cur = txq->txq_descidx;
rge_tx_list_sync(sc, q, cur, 1, BUS_DMASYNC_POSTREAD);
- txstat = q->q_tx.rge_tx_list[cur].rge_cmdsts;
+ txstat = (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ q->q_tx.rge_tx_list_v2[cur].rge_cmdsts :
+ q->q_tx.rge_tx_list[cur].rge_cmdsts;
rge_tx_list_sync(sc, q, cur, 1, BUS_DMASYNC_PREREAD);
if (ISSET(txstat, htole32(RGE_TDCMDSTS_OWN))) {
free = 2;
@@ -1512,10 +1971,10 @@ rge_txeof(struct rge_queues *q)
q->q_tx.rge_txq_considx = idx;
- if (ifq_is_oactive(&ifp->if_snd))
- ifq_restart(&ifp->if_snd);
+ if (ifq_is_oactive(q->q_tx.rge_tx_ifq))
+ ifq_restart(q->q_tx.rge_tx_ifq);
else if (free == 2)
- ifq_serialize(&ifp->if_snd, &sc->sc_task);
+ ifq_serialize(q->q_tx.rge_tx_ifq, &q->q_task);
else
ifp->if_timer = 0;
@@ -1622,6 +2081,43 @@ rge_iff(struct rge_softc *sc)
RGE_WRITE_4(sc, RGE_MAR4, swap32(hashes[0]));
}
+void
+rge_init_rss(struct rge_softc *sc)
+{
+ uint32_t rss_key[RGE_RSS_KEY_SIZE / sizeof(uint32_t)];
+ uint32_t ctrl, reta = 0;
+ int i, qid;
+
+ stoeplitz_to_key(rss_key, sizeof(rss_key));
+
+ ctrl = (fls(sc->sc_nqueues) - 1) << 16;
+ ctrl |= (RGE_RSS_CTRL_IPV4 | RGE_RSS_CTRL_IPV6);
+ ctrl |= (RGE_RSS_CTRL_TCP_IPV4 | RGE_RSS_CTRL_TCP_IPV6);
+ ctrl |= (RGE_RSS_CTRL_IPV6_EXT | RGE_RSS_CTRL_TCP_IPV6_EXT);
+ ctrl |= (fls(RGE_RSS_MAX_INDTBL_SIZE) - 1) << 8;
+ RGE_WRITE_4(sc, RGE_RSS_CTRL, ctrl);
+
+ /* Set up the redirection table. */
+ for (i = 0; i < RGE_RSS_MAX_INDTBL_SIZE; i++) {
+ qid = (i % sc->sc_nqueues);
+
+ /*
+ * The low 8 bits are for hash value (n+0);
+ * The next 8 bits are for hash value (n+1), etc.
+ */
+ reta = reta >> 8;
+ reta |= (((uint32_t)qid) << 24);
+ if ((i & 3) == 3) {
+ RGE_WRITE_4(sc, RGE_RSS_INDTBL(i >> 2), reta);
+ reta = 0;
+ }
+ }
+
+ /* Now fill our hash function seeds. */
+ for (i = 0; i < nitems(rss_key); i++)
+ RGE_WRITE_4(sc, RGE_RSS_KEY(i), letoh32(rss_key[i]));
+}
+
int
rge_chipinit(struct rge_softc *sc)
{
@@ -1831,7 +2327,7 @@ rge_mac_config_ext_mcu(struct rge_softc
rge_write_mac_ocp(sc, 0xfc32, 0x4298);
rge_write_mac_ocp(sc, 0xfc3a, 0x234a);
rge_write_mac_ocp(sc, 0xfc48, 0x023c);
- } else if (type == MAC_R27) {
+ } else {
bps = &rtl8127_mac_bps;
mcodever =
rge_mcu_get_bin_version(rtl8127_mac_bps_vals, bps->count);
@@ -1843,6 +2339,11 @@ rge_mac_config_ext_mcu(struct rge_softc
bps->vals[i]);
/* Switch to page 1. */
rge_switch_mcu_ram_page(sc, 1);
+ for (; i < 512; i++)
+ rge_write_mac_ocp(sc, bps->regs[i],
+ bps->vals[i]);
+ /* Switch to page 2. */
+ rge_switch_mcu_ram_page(sc, 2);
for (; i < bps->count; i++)
rge_write_mac_ocp(sc, bps->regs[i],
bps->vals[i]);
@@ -1856,7 +2357,8 @@ rge_mac_config_ext_mcu(struct rge_softc
rge_write_mac_ocp(sc, 0xfc32, 0x0166);
rge_write_mac_ocp(sc, 0xfc34, 0x1a6a);
rge_write_mac_ocp(sc, 0xfc36, 0x1a2c);
- rge_write_mac_ocp(sc, 0xfc48, 0x00ff);
+ rge_write_mac_ocp(sc, 0xfc3c, 0x1598);
+ rge_write_mac_ocp(sc, 0xfc48, 0x04ff);
}
/* Write microcode version. */
@@ -1905,6 +2407,7 @@ rge_ephy_config(struct rge_softc *sc)
rge_ephy_config_mac_r25b(sc);
break;
case MAC_R27:
+ case MAC_R27ATF:
rge_ephy_config_mac_r27(sc);
break;
default:
@@ -1976,6 +2479,7 @@ rge_phy_config(struct rge_softc *sc)
~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX));
switch (sc->rge_type) {
case MAC_R27:
+ case MAC_R27ATF:
val |= RGE_ADV_10000TFDX;
/* fallthrough */
case MAC_R26_1:
@@ -2023,6 +2527,7 @@ rge_phy_config(struct rge_softc *sc)
rge_phy_config_mac_r26_2(sc);
break;
case MAC_R27:
+ case MAC_R27ATF:
rge_phy_config_mac_r27(sc);
break;
default:
@@ -2031,6 +2536,8 @@ rge_phy_config(struct rge_softc *sc)
RGE_PHY_CLRBIT(sc, 0xa5b4, 0x8000);
+ /* kevlo FIBER PHY */
+
/* Disable EEE. */
RGE_MAC_CLRBIT(sc, 0xe040, 0x0003);
if (sc->rge_type == MAC_R25) {
@@ -2039,10 +2546,11 @@ rge_phy_config(struct rge_softc *sc)
} else if (sc->rge_type == MAC_R25B || RGE_TYPE_R25D(sc))
RGE_PHY_SETBIT(sc, 0xa432, 0x0010);
- RGE_PHY_CLRBIT(sc, 0xa5d0, (sc->rge_type == MAC_R27) ? 0x000e : 0x0006);
- RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0001);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27)
- RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0002);
+ RGE_PHY_CLRBIT(sc, 0xa5d0, RGE_TYPE_R27(sc) ? 0x000e : 0x0006);
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc))
+ RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0003);
+ else
+ RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0001);
RGE_PHY_CLRBIT(sc, 0xa6d8, 0x0010);
RGE_PHY_CLRBIT(sc, 0xa428, 0x0080);
RGE_PHY_CLRBIT(sc, 0xa4a2, 0x0200);
@@ -2117,16 +2625,16 @@ rge_phy_config_mac_r27(struct rge_softc
RGE_PHY_SETBIT(sc, 0xa438, 0x2000);
rge_write_phy_ocp(sc, 0xa436, 0x8187);
RGE_PHY_SETBIT(sc, 0xa438, 0x2000);
- rge_write_phy_ocp(sc, 0xA436, 0x8192);
- RGE_PHY_SETBIT(sc, 0xA438, 0x2000);
- rge_write_phy_ocp(sc, 0xA436, 0x819D);
- RGE_PHY_SETBIT(sc, 0xA438, 0x2000);
- rge_write_phy_ocp(sc, 0xA436, 0x81A8);
- RGE_PHY_CLRBIT(sc, 0xA438, 0x2000);
- rge_write_phy_ocp(sc, 0xA436, 0x81B3);
- RGE_PHY_CLRBIT(sc, 0xA438, 0x2000);
- rge_write_phy_ocp(sc, 0xA436, 0x81BE);
- RGE_PHY_SETBIT(sc, 0xA438, 0x2000);
+ rge_write_phy_ocp(sc, 0xa436, 0x8192);
+ RGE_PHY_SETBIT(sc, 0xa438, 0x2000);
+ rge_write_phy_ocp(sc, 0xa436, 0x819d);
+ RGE_PHY_SETBIT(sc, 0xa438, 0x2000);
+ rge_write_phy_ocp(sc, 0xa436, 0x81a8);
+ RGE_PHY_CLRBIT(sc, 0xa438, 0x2000);
+ rge_write_phy_ocp(sc, 0xa436, 0x81b3);
+ RGE_PHY_CLRBIT(sc, 0xa438, 0x2000);
+ rge_write_phy_ocp(sc, 0xa436, 0x81be);
+ RGE_PHY_SETBIT(sc, 0xa438, 0x2000);
rge_write_phy_ocp(sc, 0xa436, 0x817d);
val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
rge_write_phy_ocp(sc, 0xa438, val | 0xa600);
@@ -2200,6 +2708,18 @@ rge_phy_config_mac_r27(struct rge_softc
rge_write_phy_ocp(sc, 0xb87c, 0x82ce);
val = rge_read_phy_ocp(sc, 0xb87e) & ~0xf000;
rge_write_phy_ocp(sc, 0xb87e, val | 0x4000);
+ rge_write_phy_ocp(sc, 0xb87c, 0x83a5);
+ val = rge_read_phy_ocp(sc, 0xb87e) & ~0xff00;
+ rge_write_phy_ocp(sc, 0xb87e, val | 0x0400);
+ rge_write_phy_ocp(sc, 0xb87c, 0x83a6);
+ val = rge_read_phy_ocp(sc, 0xb87e) & ~0xff00;
+ rge_write_phy_ocp(sc, 0xb87e, val | 0x0400);
+ rge_write_phy_ocp(sc, 0xb87c, 0x83a7);
+ val = rge_read_phy_ocp(sc, 0xb87e) & ~0xff00;
+ rge_write_phy_ocp(sc, 0xb87e, val | 0x0400);
+ rge_write_phy_ocp(sc, 0xb87c, 0x83a8);
+ val = rge_read_phy_ocp(sc, 0xb87e) & ~0xff00;
+ rge_write_phy_ocp(sc, 0xb87e, val | 0x0400);
rge_write_phy_ocp(sc, 0xb87c, 0x84ac);
rge_write_phy_ocp(sc, 0xb87e, 0x0000);
rge_write_phy_ocp(sc, 0xb87c, 0x84ae);
@@ -2212,7 +2732,7 @@ rge_phy_config_mac_r27(struct rge_softc
rge_write_phy_ocp(sc, 0xb87c, 0x8ffc);
rge_write_phy_ocp(sc, 0xb87e, 0x6008);
rge_write_phy_ocp(sc, 0xb87c, 0x8ffe);
- rge_write_phy_ocp(sc, 0xb87e, 0xf450);
+ rge_write_phy_ocp(sc, 0xb87e, 0xf4ff);
rge_write_phy_ocp(sc, 0xb87c, 0x8015);
RGE_PHY_SETBIT(sc, 0xb87e, 0x0200);
rge_write_phy_ocp(sc, 0xb87c, 0x8016);
@@ -2323,6 +2843,8 @@ rge_phy_config_mac_r27(struct rge_softc
val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
rge_write_phy_ocp(sc, 0xa438, val | 0x1600);
RGE_PHY_SETBIT(sc, 0xa430, 0x0003);
+ RGE_PHY_SETBIT(sc, 0xa442, 0x0080);
+ RGE_PHY_CLRBIT(sc, 0xa430, 0x1000);
}
void
@@ -3196,8 +3718,8 @@ rge_phy_config_mcu(struct rge_softc *sc,
for (i = 0; i < nitems(mac_r26_2_mcu); i++)
rge_write_phy_ocp(sc,
mac_r26_2_mcu[i].reg, mac_r26_2_mcu[i].val);
- } else if (sc->rge_type == MAC_R27) {
- for (i = 0; i < 1887; i++)
+ } else if (RGE_TYPE_R27(sc)) {
+ for (i = 0; i < 4097; i++)
rge_write_phy_ocp(sc,
mac_r27_mcu[i].reg, mac_r27_mcu[i].val);
rge_patch_phy_mcu(sc, 0);
@@ -3260,7 +3782,7 @@ rge_hw_init(struct rge_softc *sc)
DELAY(3000);
rge_write_mac_ocp(sc, 0xfc26, 0);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27)
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc))
rge_mac_config_ext_mcu(sc, sc->rge_type);
else
rge_mac_config_mcu(sc, sc->rge_type);
@@ -3278,8 +3800,15 @@ void
rge_hw_reset(struct rge_softc *sc)
{
/* Disable interrupts */
- RGE_WRITE_4(sc, RGE_IMR, 0);
- RGE_WRITE_4(sc, RGE_ISR, RGE_READ_4(sc, RGE_ISR));
+ if (sc->rge_flags & RGE_FLAG_MULTIVEC) {
+ RGE_WRITE_4(sc, RGE_IMR_CLR_V2, 0xffffffff);
+ RGE_WRITE_4(sc, RGE_IMR_V4, 0xffffffff);
+ RGE_WRITE_4(sc, RGE_ISR_V2, 0xffffffff);
+ RGE_WRITE_4(sc, RGE_ISR_V4, 0xffffffff);
+ } else {
+ RGE_WRITE_4(sc, RGE_IMR, 0);
+ RGE_WRITE_4(sc, RGE_ISR, RGE_READ_4(sc, RGE_ISR));
+ }
/* Clear timer interrupts. */
RGE_WRITE_4(sc, RGE_TIMERINT0, 0);
@@ -3376,7 +3905,7 @@ rge_disable_aspm_clkreq(struct rge_softc
if (unlock)
RGE_SETBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
- if (RGE_TYPE_R26(sc) || sc->rge_type == MAC_R27)
+ if (RGE_TYPE_R26(sc) || RGE_TYPE_R27(sc))
RGE_CLRBIT_1(sc, RGE_INT_CFG0, 0x08);
else
RGE_CLRBIT_1(sc, RGE_CFG2, RGE_CFG2_CLKREQ_EN);
@@ -3393,6 +3922,15 @@ rge_disable_hw_im(struct rge_softc *sc)
}
void
+rge_disable_queue(struct rge_softc *sc, uint32_t vector)
+{
+ uint32_t mask = 1 << vector;
+
+ RGE_WRITE_4(sc, RGE_IMR_CLR_V2, mask);
+ RGE_WRITE_4(sc, RGE_ISR_V2, mask);
+}
+
+void
rge_disable_sim_im(struct rge_softc *sc)
{
RGE_WRITE_4(sc, RGE_TIMERINT0, 0);
@@ -3400,6 +3938,28 @@ rge_disable_sim_im(struct rge_softc *sc)
}
void
+rge_enable_queue(struct rge_softc *sc, uint32_t vector)
+{
+ uint32_t mask = 1 << vector;
+
+ RGE_WRITE_4(sc, RGE_IMR_SET_V2, mask);
+}
+
+void
+rge_enable_queues(struct rge_softc *sc)
+{
+ struct rge_queues *q;
+ int i;
+
+ for (i = 0, q = sc->sc_queues; i < sc->sc_nqueues; i++, q++) {
+ rge_enable_queue(sc, q->q_index);
+ if (i < sc->sc_ntxqs)
+ rge_enable_queue(sc, q->q_tx_index);
+ }
+ rge_enable_queue(sc, sc->sc_linkvec);
+}
+
+void
rge_setup_sim_im(struct rge_softc *sc)
{
RGE_WRITE_4(sc, RGE_TIMERINT0, 0x2600);
@@ -3668,6 +4228,22 @@ rge_read_phy_ocp(struct rge_softc *sc, u
return (val & RGE_PHYOCP_DATA_MASK);
}
+uint32_t
+rge_rxstatus_mask(struct rge_softc *sc, int status)
+{
+ switch (status) {
+ case CMDSTS_EOF:
+ return (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ RGE_RDCMDSTS_EOF_V2 : RGE_RDCMDSTS_EOF;
+ case CMDSTS_SOF:
+ return (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ RGE_RDCMDSTS_SOF_V2 : RGE_RDCMDSTS_SOF;
+ default:
+ return (sc->rge_flags & RGE_FLAG_DESCV2) ?
+ RGE_RDCMDSTS_RXERRSUM_V2 : RGE_RDCMDSTS_RXERRSUM;
+ }
+}
+
int
rge_get_link_status(struct rge_softc *sc)
{
@@ -3677,7 +4253,8 @@ rge_get_link_status(struct rge_softc *sc
void
rge_txstart(void *arg)
{
- struct rge_softc *sc = arg;
+ struct rge_queues *q = arg;
+ struct rge_softc *sc = q->q_sc;
RGE_WRITE_2(sc, RGE_TXSTART, RGE_TXSTART_START);
}
@@ -3748,7 +4325,6 @@ rge_wol_power(struct rge_softc *sc)
{
/* Disable RXDV gate. */
RGE_CLRBIT_1(sc, RGE_PPSW, 0x08);
- DELAY(2000);
RGE_SETBIT_1(sc, RGE_CFG1, RGE_CFG1_PM_EN);
RGE_SETBIT_1(sc, RGE_CFG2, RGE_CFG2_PMSTS_EN);
Index: sys/dev/pci/if_rgereg.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_rgereg.h,v
diff -u -p -u -p -r1.17 if_rgereg.h
--- sys/dev/pci/if_rgereg.h 26 Jan 2026 01:45:18 -0000 1.17
+++ sys/dev/pci/if_rgereg.h 8 Oct 2026 01:53:53 -0000
@@ -1,7 +1,8 @@
/* $OpenBSD: if_rgereg.h,v 1.17 2026/01/26 01:45:18 kevlo Exp $ */
/*
- * Copyright (c) 2019, 2020, 2025 Kevin Lo <kevlo@openbsd.org>
+ * Copyright (c) 2019, 2020, 2025, 2026
+ * Kevin Lo <kevlo@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -20,64 +21,78 @@
#define RGE_PCI_BAR1 (PCI_MAPREG_START + 4)
#define RGE_PCI_BAR2 (PCI_MAPREG_START + 8)
-#define RGE_MAC0 0x0000
-#define RGE_MAC4 0x0004
-#define RGE_MAR0 0x0008
-#define RGE_MAR4 0x000c
-#define RGE_TXDESC_ADDR_LO 0x0020
-#define RGE_TXDESC_ADDR_HI 0x0024
-#define RGE_INT_CFG0 0x0034
-#define RGE_CMD 0x0037
-#define RGE_IMR 0x0038
-#define RGE_ISR 0x003c
-#define RGE_TXCFG 0x0040
-#define RGE_RXCFG 0x0044
-#define RGE_TIMERCNT 0x0048
-#define RGE_EECMD 0x0050
-#define RGE_CFG0 0x0051
-#define RGE_CFG1 0x0052
-#define RGE_CFG2 0x0053
-#define RGE_CFG3 0x0054
-#define RGE_CFG4 0x0055
-#define RGE_CFG5 0x0056
-#define RGE_TDFNR 0x0057
-#define RGE_TIMERINT0 0x0058
-#define RGE_TIMERINT1 0x005c
-#define RGE_CSIDR 0x0064
-#define RGE_CSIAR 0x0068
-#define RGE_PHYSTAT 0x006c
-#define RGE_PMCH 0x006f
-#define RGE_INT_CFG1 0x007a
-#define RGE_EPHYAR 0x0080
-#define RGE_TIMERINT2 0x008c
-#define RGE_TXSTART 0x0090
-#define RGE_MACOCP 0x00b0
-#define RGE_PHYOCP 0x00b8
-#define RGE_DLLPR 0x00d0
-#define RGE_TWICMD 0x00d2
-#define RGE_MCUCMD 0x00d3
-#define RGE_RXMAXSIZE 0x00da
-#define RGE_CPLUSCMD 0x00e0
-#define RGE_IM 0x00e2
-#define RGE_RXDESC_ADDR_LO 0x00e4
-#define RGE_RXDESC_ADDR_HI 0x00e8
-#define RGE_PPSW 0x00f2
-#define RGE_TIMERINT3 0x00f4
-#define RGE_RADMFIFO_PROTECT 0x0402
-#define RGE_INTMITI(i) (0x0a00 + (i) * 4)
-#define RGE_PHYBASE 0x0a40
-#define RGE_EPHYAR_EXT_ADDR 0x0ffe
-#define RGE_ADDR0 0x19e0
-#define RGE_ADDR1 0x19e4
-#define RGE_RSS_CTRL 0x4500
-#define RGE_RXQUEUE_CTRL 0x4800
-#define RGE_EEE_TXIDLE_TIMER 0x6048
+#define RGE_MAC0 0x0000
+#define RGE_MAC4 0x0004
+#define RGE_MAR0 0x0008
+#define RGE_MAR4 0x000c
+#define RGE_TXDESC_ADDR_LO 0x0020
+#define RGE_TXDESC_ADDR_HI 0x0024
+#define RGE_INT_CFG0 0x0034
+#define RGE_CMD 0x0037
+#define RGE_IMR 0x0038
+#define RGE_ISR 0x003c
+#define RGE_TXCFG 0x0040
+#define RGE_RXCFG 0x0044
+#define RGE_TIMERCNT 0x0048
+#define RGE_EECMD 0x0050
+#define RGE_CFG0 0x0051
+#define RGE_CFG1 0x0052
+#define RGE_CFG2 0x0053
+#define RGE_CFG3 0x0054
+#define RGE_CFG4 0x0055
+#define RGE_CFG5 0x0056
+#define RGE_TDFNR 0x0057
+#define RGE_TIMERINT0 0x0058
+#define RGE_TIMERINT1 0x005c
+#define RGE_CSIDR 0x0064
+#define RGE_CSIAR 0x0068
+#define RGE_PHYSTAT 0x006c
+#define RGE_PMCH 0x006f
+#define RGE_INT_CFG1 0x007a
+#define RGE_EPHYAR 0x0080
+#define RGE_TIMERINT2 0x008c
+#define RGE_TXSTART 0x0090
+#define RGE_MACOCP 0x00b0
+#define RGE_PHYOCP 0x00b8
+#define RGE_DLLPR 0x00d0
+#define RGE_TWICMD 0x00d2
+#define RGE_MCUCMD 0x00d3
+#define RGE_RXMAXSIZE 0x00da
+#define RGE_CPLUSCMD 0x00e0
+#define RGE_IM 0x00e2
+#define RGE_RXDESC_ADDR_LO 0x00e4
+#define RGE_RXDESC_ADDR_HI 0x00e8
+#define RGE_PPSW 0x00f2
+#define RGE_TIMERINT3 0x00f4
+#define RGE_RADMFIFO_PROTECT 0x0402
+#define RGE_INTMITI(i) (0x0a00 + (i) * 4)
+#define RGE_RX_MULTIVEC_INTMITI(i) (0x0a00 + (i) * 8)
+#define RGE_TX_MULTIVEC_INTMITI(i) (0x0a02 + (i) * 8)
+#define RGE_PHYBASE 0x0a40
+#define RGE_IMR_CLR_V2 0x0d00
+#define RGE_ISR_V2 0x0d04
+#define RGE_IMR_SET_V2 0x0d0c
+#define RGE_IMR_V4 0x0d10
+#define RGE_ISR_V4 0x0d14
+#define RGE_EPHYAR_EXT_ADDR 0x0ffe
+#define RGE_ADDR0 0x19e0
+#define RGE_ADDR1 0x19e4
+#define RGE_TXDESC_ADDR_LO_V2(i) (0x2100 + ((i) - 1) * 8)
+#define RGE_TXDESC_ADDR_HI_V2(i) (0x2104 + ((i) - 1) * 8)
+#define RGE_RXDESC_ADDR_LO_V2(i) (0x4000 + ((i) - 1) * 8)
+#define RGE_RXDESC_ADDR_HI_V2(i) (0x4004 + ((i) - 1) * 8)
+#define RGE_RSS_CTRL 0x4500
+#define RGE_RSS_KEY(i) (0x4600 + (i) * 4)
+#define RGE_RSS_INDTBL(i) (0x4700 + (i) * 4)
+#define RGE_RXQUEUE_CTRL 0x4800
+#define RGE_EEE_TXIDLE_TIMER 0x6048
/* Flags for register RGE_INT_CFG0 */
#define RGE_INT_CFG0_EN 0x01
#define RGE_INT_CFG0_TIMEOUT_BYPASS 0x02
#define RGE_INT_CFG0_MITIGATION_BYPASS 0x04
#define RGE_INT_CFG0_RDU_BYPASS_8126 0x10
+#define RGE_INT_CFG0_AUTO_CLEAR_IMR 0x20
#define RGE_INT_CFG0_AVOID_MISS_INTR 0x40
/* Flags for register RGE_CMD */
@@ -110,6 +125,7 @@
RGE_ISR_SYSTEM_ERR)
/* Flags for register RGE_TXCFG */
+#define RGE_TXCFG_NOCLOSE 0x00000040
#define RGE_TXCFG_HWREV 0x7cf00000
/* Flags for register RGE_RXCFG */
@@ -119,7 +135,9 @@
#define RGE_RXCFG_BROAD 0x00000008
#define RGE_RXCFG_RUNT 0x00000010
#define RGE_RXCFG_ERRPKT 0x00000020
+#define RGE_RXCFG_VLANPHYS 0x00008000
#define RGE_RXCFG_VLANSTRIP 0x00c00000
+#define RGE_RXCFG_ENBDESCV1 0x01000000
/* Flags for register RGE_EECMD */
#define RGE_EECMD_WRITECFG 0xc0
@@ -193,12 +211,18 @@
/* Flags for register RGE_CPLUSCMD */
#define RGE_CPLUSCMD_RXCSUM 0x0020
+/* Flags for register RGE_RSS_CTRL */
+#define RGE_RSS_CTRL_TCP_IPV4 0x00000001
+#define RGE_RSS_CTRL_IPV4 0x00000002
+#define RGE_RSS_CTRL_TCP_IPV6 0x00000004
+#define RGE_RSS_CTRL_IPV6 0x00000008
+#define RGE_RSS_CTRL_IPV6_EXT 0x00000010
+#define RGE_RSS_CTRL_TCP_IPV6_EXT 0x00000020
+
#define RGE_TX_NSEGS 32
#define RGE_TX_LIST_CNT 1024
#define RGE_RX_LIST_CNT 1024
#define RGE_ALIGN 256
-#define RGE_TX_LIST_SZ (sizeof(struct rge_tx_desc) * RGE_TX_LIST_CNT)
-#define RGE_RX_LIST_SZ (sizeof(struct rge_rx_desc) * RGE_RX_LIST_CNT)
#define RGE_NEXT_TX_DESC(x) (((x) + 1) % RGE_TX_LIST_CNT)
#define RGE_NEXT_RX_DESC(x) (((x) + 1) % RGE_RX_LIST_CNT)
#define RGE_ADDR_LO(y) ((uint64_t) (y) & 0xffffffff)
@@ -229,6 +253,23 @@ struct rge_tx_desc {
#define RGE_TDEXTSTS_TCPCSUM 0x40000000
#define RGE_TDEXTSTS_UDPCSUM 0x80000000
+/* V2 Tx descriptor */
+struct rge_tx_desc_v2 {
+ uint32_t rge_cmdsts;
+ uint32_t rge_extsts;
+ uint64_t rge_addr;
+} __packed __aligned(16);
+
+#define RGE_TDCMDSTS_TCPHO_SHIFT 18
+#define RGE_TDCMDSTS_TCPHO_MAX 112
+
+#define RGE_TDEXTSTS_TSOIPV6_V2 0x00000000
+#define RGE_TDEXTSTS_TSOENB_V2 0x00010000
+#define RGE_TDEXTSTS_TSOIPV4_V2 0x20000000
+#define RGE_TDEXTSTS_TSOTCP_V2 0x40000000
+#define RGE_TDEXTSTS_MSS_SHIFT 18
+#define RGE_TDEXTSTS_MAX_MSS 2047
+
/* Rx descriptor */
struct rge_rx_desc {
union {
@@ -240,9 +281,9 @@ struct rge_rx_desc {
union {
struct {
- uint32_t rss;
- uint16_t length;
- uint16_t hdr_info;
+ uint32_t rge_rss;
+ uint16_t rge_length;
+ uint16_t rge_hdr_info;
} rx_qword1;
struct {
@@ -295,6 +336,41 @@ struct rge_rx_desc {
#define RGE_RDEXTSTS_IPV4 0x40000000
#define RGE_RDEXTSTS_IPV6 0x80000000
+/* V2 Rx descriptor */
+struct rge_rx_desc_v2 {
+ union {
+ uint64_t rge_addr;
+
+ struct {
+ uint32_t rge_hdr_info;
+ uint32_t rge_rss;
+ } rx_rss;
+ } qword0;
+
+ struct {
+ uint32_t rge_extsts;
+ uint32_t rge_cmdsts;
+ } rx_qword0;
+} __packed __aligned(16);
+
+#define RGE_RDHDRINFO_RSSTYPE_NONE 0x00000000
+#define RGE_RDHDRINFO_RSSTYPE_MASK 0x30000000
+
+#define RGE_RDCMDSTS_TCPCSUMERR_V2 0x00008000
+#define RGE_RDCMDSTS_UDPCSUMERR_V2 0x00010000
+#define RGE_RDCMDSTS_IPCSUMERR_V2 0x00020000
+#define RGE_RDCMDSTS_TCPPKT_V2 0x00040000
+#define RGE_RDCMDSTS_UDPPKT_V2 0x00080000
+#define RGE_RDCMDSTS_RXERRSUM_V2 0x00400000
+#define RGE_RDCMDSTS_EOF_V2 0x10000000
+#define RGE_RDCMDSTS_SOF_V2 0x20000000
+
+enum {
+ CMDSTS_EOF,
+ CMDSTS_RXERRSUM,
+ CMDSTS_SOF
+};
+
/*
* Statistics counter structure
*/
@@ -332,10 +408,12 @@ struct rge_tx {
int rge_txq_prodidx;
int rge_txq_considx;
+ struct ifqueue *rge_tx_ifq;
bus_dma_segment_t rge_tx_listseg;
int rge_tx_listnseg;
bus_dmamap_t rge_tx_list_map;
struct rge_tx_desc *rge_tx_list;
+ struct rge_tx_desc_v2 *rge_tx_list_v2;
};
struct rge_rx {
@@ -343,11 +421,13 @@ struct rge_rx {
int rge_rxq_prodidx;
int rge_rxq_considx;
+ struct ifiqueue *rge_rx_ifiq;
struct if_rxring rge_rx_ring;
bus_dma_segment_t rge_rx_listseg;
int rge_rx_listnseg;
bus_dmamap_t rge_rx_list_map;
struct rge_rx_desc *rge_rx_list;
+ struct rge_rx_desc_v2 *rge_rx_list_v2;
struct mbuf *rge_head;
struct mbuf **rge_tail;
@@ -356,19 +436,31 @@ struct rge_rx {
struct rge_queues {
struct rge_softc *q_sc;
void *q_ihc;
+ void *q_tx_ihc;
int q_index;
+ int q_tx_index;
char q_name[16];
- pci_intr_handle_t q_ih;
+ char q_tx_name[16];
struct rge_tx q_tx;
struct rge_rx q_rx;
+ struct task q_task;
};
+#define RGE_MAX_VECTORS_8127 8
+
+#define RGE_TX_VECTOR_8127(i) (8 + (i))
+#define RGE_LINK_VECTOR_8127 29
+#define RGE_MIN_MSIX_VECTORS_8127 30
+
+#define RGE_RSS_KEY_SIZE 40
+#define RGE_RSS_MAX_INDTBL_SIZE 128
+
/* Ram version */
#define RGE_MAC_R25D_1_RCODE_VER 0x0027
#define RGE_MAC_R25D_2_RCODE_VER 0x0031
#define RGE_MAC_R26_1_RCODE_VER 0x0033
#define RGE_MAC_R26_2_RCODE_VER 0x0060
-#define RGE_MAC_R27_RCODE_VER 0x0036
+#define RGE_MAC_R27_RCODE_VER 0x0051
#define RGE_MAC_R25_RCODE_VER 0x0b33
#define RGE_MAC_R25B_RCODE_VER 0x0b99
@@ -380,7 +472,8 @@ enum rge_mac_type {
MAC_R25D_2,
MAC_R26_1,
MAC_R26_2,
- MAC_R27
+ MAC_R27,
+ MAC_R27ATF
};
#define RGE_TYPE_R25D(sc) \
@@ -389,9 +482,16 @@ enum rge_mac_type {
#define RGE_TYPE_R26(sc) \
((sc)->rge_type == MAC_R26_1 || (sc)->rge_type == MAC_R26_2)
+#define RGE_TYPE_R27(sc) \
+ ((sc)->rge_type == MAC_R27 || (sc)->rge_type == MAC_R27ATF)
+
#define RGE_TIMEOUT 100
+#define RGE_TIMER_VALUE 19
+
+#define RGE_RSS_KEY_SIZE 40
+#define RGE_RSS_MAX_INDTBL_SIZE 128
-#define RGE_JUMBO_FRAMELEN 9216
+#define RGE_JUMBO_FRAMELEN 16384
#define RGE_JUMBO_MTU \
(RGE_JUMBO_FRAMELEN - ETHER_HDR_LEN - ETHER_CRC_LEN - \
ETHER_VLAN_ENCAP_LEN)
@@ -415,19 +515,24 @@ struct rge_softc {
pci_chipset_tag_t sc_pc;
pcitag_t sc_tag;
struct ifmedia sc_media; /* media info */
+ struct intrmap *sc_intrmap;
enum rge_mac_type rge_type;
- struct rge_queues *sc_queues;
- unsigned int sc_nqueues;
+ uint16_t rge_min_msix;
- struct task sc_task;
+ struct rge_queues *sc_queues;
+ int sc_nqueues;
+ int sc_ntxqs;
+ uint32_t sc_linkvec;
struct timeout sc_timeout; /* tick timeout */
uint64_t rge_mcodever;
uint16_t rge_rcodever;
uint32_t rge_flags;
-#define RGE_FLAG_MSI 0x00000001
+#define RGE_FLAG_DESCV2 0x00000001
+#define RGE_FLAG_MSI 0x00000002
+#define RGE_FLAG_MULTIVEC 0x00000004
uint32_t rge_intrs;
int rge_timerintr;
@@ -884,13 +989,66 @@ static const uint16_t rtl8127_mac_bps_re
0xf84c, 0xf84e, 0xf850, 0xf852, 0xf854, 0xf856, 0xf858,
0xf85a, 0xf85c, 0xf85e, 0xf860, 0xf862, 0xf864, 0xf866,
0xf868, 0xf86a, 0xf86c, 0xf86e, 0xf870, 0xf872, 0xf874,
- 0xf876, 0xf878, 0xf87a, 0xf87c
+ 0xf876, 0xf878, 0xf87a, 0xf87c, 0xf87e, 0xf880, 0xf882,
+ 0xf884, 0xf886, 0xf888, 0xf88a, 0xf88c, 0xf88e, 0xf890,
+ 0xf892, 0xf894, 0xf896, 0xf898, 0xf89a, 0xf89c, 0xf89e,
+ 0xf8a0, 0xf8a2, 0xf8a4, 0xf8a6, 0xf8a8, 0xf8aa, 0xf8ac,
+ 0xf8ae, 0xf8b0, 0xf8b2, 0xf8b4, 0xf8b6, 0xf8b8, 0xf8ba,
+ 0xf8bc, 0xf8be, 0xf8c0, 0xf8c2, 0xf8c4, 0xf8c6, 0xf8c8,
+ 0xf8ca, 0xf8cc, 0xf8ce, 0xf8d0, 0xf8d2, 0xf8d4, 0xf8d6,
+ 0xf8d8, 0xf8da, 0xf8dc, 0xf8de, 0xf8e0, 0xf8e2, 0xf8e4,
+ 0xf8e6, 0xf8e8, 0xf8ea, 0xf8ec, 0xf8ee, 0xf8f0, 0xf8f2,
+ 0xf8f4, 0xf8f6, 0xf8f8, 0xf8fa, 0xf8fc, 0xf8fe, 0xf900,
+ 0xf902, 0xf904, 0xf906, 0xf908, 0xf90a, 0xf90c, 0xf90e,
+ 0xf910, 0xf912, 0xf914, 0xf916, 0xf918, 0xf91a, 0xf91c,
+ 0xf91e, 0xf920, 0xf922, 0xf924, 0xf926, 0xf928, 0xf92a,
+ 0xf92c, 0xf92e, 0xf930, 0xf932, 0xf934, 0xf936, 0xf938,
+ 0xf93a, 0xf93c, 0xf93e, 0xf940, 0xf942, 0xf944, 0xf946,
+ 0xf948, 0xf94a, 0xf94c, 0xf94e, 0xf950, 0xf952, 0xf954,
+ 0xf956, 0xf958, 0xf95a, 0xf95c, 0xf95e, 0xf960, 0xf962,
+ 0xf964, 0xf966, 0xf968, 0xf96a, 0xf96c, 0xf96e, 0xf970,
+ 0xf972, 0xf974, 0xf976, 0xf978, 0xf97a, 0xf97c, 0xf97e,
+ 0xf980, 0xf982, 0xf984, 0xf986, 0xf988, 0xf98a, 0xf98c,
+ 0xf98e, 0xf990, 0xf992, 0xf994, 0xf996, 0xf998, 0xf99a,
+ 0xf99c, 0xf99e, 0xf9a0, 0xf9a2, 0xf9a4, 0xf9a6, 0xf9a8,
+ 0xf9aa, 0xf9ac, 0xf9ae, 0xf9b0, 0xf9b2, 0xf9b4, 0xf9b6,
+ 0xf9b8, 0xf9ba, 0xf9bc, 0xf9be, 0xf9c0, 0xf9c2, 0xf9c4,
+ 0xf9c6, 0xf9c8, 0xf9ca, 0xf9cc, 0xf9ce, 0xf9d0, 0xf9d2,
+ 0xf9d4, 0xf9d6, 0xf9d8, 0xf9da, 0xf9dc, 0xf9de, 0xf9e0,
+ 0xf9e2, 0xf9e4, 0xf9e6, 0xf9e8, 0xf9ea, 0xf9ec, 0xf9ee,
+ 0xf9f0, 0xf9f2, 0xf9f4, 0xf9f6, 0xf9f8, 0xf9fa, 0xf9fc,
+ 0xf9fe, 0xf800, 0xf802, 0xf804, 0xf806, 0xf808, 0xf80a,
+ 0xf80c, 0xf80e, 0xf810, 0xf812, 0xf814, 0xf816, 0xf818,
+ 0xf81a, 0xf81c, 0xf81e, 0xf820, 0xf822, 0xf824, 0xf826,
+ 0xf828, 0xf82a, 0xf82c, 0xf82e, 0xf830, 0xf832, 0xf834,
+ 0xf836, 0xf838, 0xf83a, 0xf83c, 0xf83e, 0xf840, 0xf842,
+ 0xf844, 0xf846, 0xf848, 0xf84a, 0xf84c, 0xf84e, 0xf850,
+ 0xf852, 0xf854, 0xf856, 0xf858, 0xf85a, 0xf85c, 0xf85e,
+ 0xf860, 0xf862, 0xf864, 0xf866, 0xf868, 0xf86a, 0xf86c,
+ 0xf86e, 0xf870, 0xf872, 0xf874, 0xf876, 0xf878, 0xf87a,
+ 0xf87c, 0xf87e, 0xf880, 0xf882, 0xf884, 0xf886, 0xf888,
+ 0xf88a, 0xf88c, 0xf88e, 0xf890, 0xf892, 0xf894, 0xf896,
+ 0xf898, 0xf89a, 0xf89c, 0xf89e, 0xf8a0, 0xf8a2, 0xf8a4,
+ 0xf8a6, 0xf8a8, 0xf8aa, 0xf8ac, 0xf8ae, 0xf8b0, 0xf8b2,
+ 0xf8b4, 0xf8b6, 0xf8b8, 0xf8ba, 0xf8bc, 0xf8be, 0xf8c0,
+ 0xf8c2, 0xf8c4, 0xf8c6, 0xf8c8, 0xf8ca, 0xf8cc, 0xf8ce,
+ 0xf8d0, 0xf8d2, 0xf8d4, 0xf8d6, 0xf8d8, 0xf8da, 0xf8dc,
+ 0xf8de, 0xf8e0, 0xf8e2, 0xf8e4, 0xf8e6, 0xf8e8, 0xf8ea,
+ 0xf8ec, 0xf8ee, 0xf8f0, 0xf8f2, 0xf8f4, 0xf8f6, 0xf8f8,
+ 0xf8fa, 0xf8fc, 0xf8fe, 0xf900, 0xf902, 0xf904, 0xf906,
+ 0xf908, 0xf90a, 0xf90c, 0xf90e, 0xf910, 0xf912, 0xf914,
+ 0xf916, 0xf918, 0xf91a, 0xf91c, 0xf91e, 0xf920, 0xf922,
+ 0xf924, 0xf926, 0xf928, 0xf92a, 0xf92c, 0xf92e, 0xf930,
+ 0xf932, 0xf934, 0xf936, 0xf938, 0xf93a, 0xf93c, 0xf93e,
+ 0xf940, 0xf942, 0xf944, 0xf946, 0xf948, 0xf94a, 0xf94c,
+ 0xf94e, 0xf950, 0xf952, 0xf954, 0xf956, 0xf958, 0xf95a,
+ 0xf95c, 0xf95e, 0xf960, 0xf962, 0xf964, 0xf966, 0xf968
};
static const uint16_t rtl8127_mac_bps_vals[] = {
0xe010, 0xe023, 0xe036, 0xe049, 0xe05c, 0xe075, 0xe0b1,
- 0xe117, 0xe11b, 0xe11d, 0xe11f, 0xe121, 0xe123, 0xe125,
- 0xe127, 0xe129, 0x7020, 0xb405, 0xb404, 0xc50f, 0x74a0,
+ 0xe117, 0xe11b, 0xe1f7, 0xe1f9, 0xe297, 0xe299, 0xe29b,
+ 0xe29d, 0xe29f, 0x7020, 0xb405, 0xb404, 0xc50f, 0x74a0,
0xc50e, 0x4025, 0xf005, 0x4850, 0x4025, 0xf002, 0xe002,
0x4809, 0xb004, 0xb005, 0xc502, 0xbd00, 0x1522, 0xd006,
0x0004, 0x7760, 0xb405, 0xb404, 0xc50f, 0x74a0, 0xc50e,
@@ -929,11 +1087,64 @@ static const uint16_t rtl8127_mac_bps_va
0xb005, 0xb006, 0xb007, 0x2125, 0xc102, 0xb900, 0x1a6c,
0xd410, 0xc000, 0xe86c, 0xb600, 0xb800, 0xb40a, 0xe024,
0x5a00, 0x5a81, 0x0073, 0x5a80, 0x0042, 0x0001, 0xc104,
- 0xc202, 0xba00, 0x1a2e, 0xc896, 0xc302, 0xbb00, 0x0000,
- 0xc002, 0xb800, 0x0000, 0xc002, 0xb800, 0x0000, 0xc502,
- 0xbd00, 0x0000, 0xc102, 0xb900, 0x0000, 0xc102, 0xb900,
- 0x0000, 0xc602, 0xbe00, 0x0000, 0xc602, 0xbe00, 0x0000,
- 0x6961, 0x0019, 0x050c, 0x140c
+ 0xc202, 0xba00, 0x1a2e, 0xc896, 0xb400, 0xb401, 0xb402,
+ 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, 0xc11f, 0xc21f,
+ 0x9a24, 0xc21b, 0x9a26, 0xe83b, 0x7320, 0x7422, 0xc010,
+ 0x7200, 0x4822, 0x9a00, 0x7218, 0x4822, 0x9a18, 0x7206,
+ 0x4822, 0x9a06, 0x720c, 0x49c0, 0xf00d, 0x4822, 0x9a0c,
+ 0xe00c, 0xdc46, 0xd40c, 0xe008, 0xdead, 0xde20, 0x0012,
+ 0x3d02, 0xe8e0, 0x0168, 0x48a2, 0x9a0c, 0x49cf, 0xf058,
+ 0x1301, 0xf00a, 0x1302, 0xf00d, 0x1303, 0xf01b, 0x1304,
+ 0xf01f, 0x1305, 0xf024, 0xe043, 0xe858, 0xc7ec, 0xe863,
+ 0xe893, 0xe048, 0xe853, 0xc7e7, 0x4878, 0xe85d, 0xe88d,
+ 0xe042, 0xe8e0, 0xf180, 0xbd02, 0x8ffe, 0xc000, 0xc1df,
+ 0x6227, 0x49a6, 0xf1fd, 0xff80, 0xe843, 0xc7d7, 0x4879,
+ 0xe84d, 0xe87d, 0xe032, 0xe83d, 0xc7d1, 0x4878, 0x4879,
+ 0xe846, 0xe876, 0xe02b, 0xc5c8, 0x76a0, 0x4868, 0x9ea0,
+ 0xc5c3, 0x71a0, 0xc5e7, 0x70a0, 0xc2e1, 0x9940, 0x9842,
+ 0xc1df, 0x9944, 0xc1de, 0x9946, 0xefdf, 0x71a2, 0x70a4,
+ 0xc2d7, 0x9940, 0x9842, 0xc16c, 0x9944, 0xc1d4, 0x9946,
+ 0xefd5, 0xc5ae, 0x76a0, 0x48e8, 0x9ea0, 0xe856, 0xe00b,
+ 0xc6a9, 0xc2c8, 0x9e40, 0x9e42, 0xc1c6, 0x9944, 0xc1c5,
+ 0x9946, 0xefc6, 0xe84b, 0xb007, 0xb006, 0xb005, 0xb004,
+ 0xb003, 0xb002, 0xb001, 0xb000, 0x1100, 0xc202, 0xba00,
+ 0x1a86, 0xc694, 0xe807, 0x1d00, 0x9dc0, 0xc5b2, 0x9dc2,
+ 0xe802, 0xff80, 0xc18c, 0x7222, 0x49ae, 0xf1fd, 0xff80,
+ 0xc687, 0x9fc2, 0xeff9, 0x70c0, 0x0702, 0x9fc2, 0xeff5,
+ 0x71c0, 0xc235, 0x9940, 0x9842, 0xc19c, 0x9944, 0xc12e,
+ 0x9946, 0xef9c, 0x0701, 0x9fc2, 0xefe9, 0x70c0, 0x0704,
+ 0x9fc2, 0xefe5, 0x71c0, 0xc225, 0x9940, 0x9842, 0xc123,
+ 0x9944, 0xc11e, 0x9946, 0xef8c, 0x071a, 0x9fc2, 0xefd9,
+ 0x70c0, 0x0728, 0x9fc2, 0xefd5, 0x71c0, 0xc215, 0x9940,
+ 0x9842, 0xc114, 0x9944, 0xc10e, 0x9946, 0xef7c, 0xff80,
+ 0x48cf, 0xc20b, 0x9b40, 0x9c42, 0xc107, 0x9944, 0xc104,
+ 0x9946, 0xef72, 0xff80, 0xbd02, 0xf168, 0xe8e0, 0xf184,
+ 0xf188, 0xc502, 0xbd00, 0x0000, 0xb400, 0xb401, 0xb402,
+ 0xb403, 0xc079, 0xc377, 0x7160, 0x9906, 0xc376, 0xe87c,
+ 0xc073, 0x9900, 0x1906, 0xc371, 0xe884, 0xc170, 0xc370,
+ 0xe881, 0x1908, 0xc36b, 0xe87e, 0xc36c, 0xe86f, 0x1a88,
+ 0x44ca, 0xe879, 0xc367, 0x4833, 0xe869, 0x4816, 0xe874,
+ 0xc362, 0x4838, 0xe864, 0x1a88, 0x44ca, 0xe86e, 0xc35c,
+ 0x4838, 0x4833, 0xe85d, 0x4816, 0xe868, 0xc357, 0xe859,
+ 0x1a88, 0x44ca, 0xe863, 0xc352, 0x4833, 0xe853, 0x4816,
+ 0xe85e, 0xc34d, 0x4838, 0xe84e, 0x1a88, 0x44ca, 0xe858,
+ 0xc347, 0x4838, 0x4833, 0xe847, 0x4816, 0xe852, 0xc342,
+ 0xe843, 0x1a58, 0x44ca, 0xe84d, 0xc33d, 0x4833, 0xe83d,
+ 0x4816, 0xe848, 0xc338, 0x4838, 0xe838, 0x1a58, 0x44ca,
+ 0xe842, 0xc332, 0x4838, 0x4833, 0xe831, 0x4816, 0xe83c,
+ 0xc32d, 0xe82d, 0x1a58, 0x44ca, 0xe837, 0xc328, 0x4833,
+ 0xe827, 0x4816, 0xe832, 0xc323, 0x4838, 0xe822, 0x1a58,
+ 0x44ca, 0xe82c, 0xc31d, 0x4838, 0x4833, 0xe81b, 0x4816,
+ 0xe826, 0xc010, 0x7100, 0xc30f, 0xe822, 0xc00c, 0x7106,
+ 0xc309, 0x9960, 0xb003, 0xb002, 0xb001, 0xb000, 0xc402,
+ 0xbc00, 0x15b0, 0xde20, 0xdd26, 0x0ffe, 0x0000, 0x6f00,
+ 0x8086, 0x8486, 0x8886, 0x8c86, 0xc0f7, 0x7202, 0x49ae,
+ 0xf1fd, 0x44d3, 0x4413, 0x48af, 0x9a02, 0x7202, 0x49ae,
+ 0xf1fe, 0x7100, 0xff80, 0xc0ea, 0x7202, 0x49ae, 0xf1fd,
+ 0x9900, 0x44d3, 0x4413, 0x482f, 0x9a02, 0x7202, 0x49ae,
+ 0xf1fe, 0xff80, 0xc502, 0xbd00, 0x0000, 0xc102, 0xb900,
+ 0x0000, 0xc102, 0xb900, 0x0000, 0xc602, 0xbe00, 0x0000,
+ 0xc602, 0xbe00, 0x0000, 0x6961, 0x0019, 0x0a1e, 0x0f2a
};
static const struct rge_mac_bps rtl8127_mac_bps = {
@@ -4850,598 +5061,1382 @@ static const struct {
{ 0xa436, 0xa090 }, { 0xa438, 0x00ff }, { 0xa436, 0xa016 },
{ 0xa438, 0x0020 }, { 0xa436, 0xa012 }, { 0xa438, 0x0000 },
{ 0xa436, 0xa014 }, { 0xa438, 0x1800 }, { 0xa438, 0x8010 },
- { 0xa438, 0x1800 }, { 0xa438, 0x801d }, { 0xa438, 0x1800 },
- { 0xa438, 0x803b }, { 0xa438, 0x1800 }, { 0xa438, 0x8087 },
- { 0xa438, 0x1800 }, { 0xa438, 0x808e }, { 0xa438, 0x1800 },
- { 0xa438, 0x809d }, { 0xa438, 0x1800 }, { 0xa438, 0x80b7 },
- { 0xa438, 0x1800 }, { 0xa438, 0x80c4 }, { 0xa438, 0xd1bc },
+ { 0xa438, 0x1800 }, { 0xa438, 0x8663 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x8681 }, { 0xa438, 0x1800 }, { 0xa438, 0x86cd },
+ { 0xa438, 0x1800 }, { 0xa438, 0x86d4 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x86e3 }, { 0xa438, 0x1800 }, { 0xa438, 0x8944 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x8951 }, { 0xa438, 0xd1bc },
{ 0xa438, 0xd040 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
{ 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0xd700 },
- { 0xa438, 0x273d }, { 0xa438, 0x801b }, { 0xa438, 0x1800 },
- { 0xa438, 0x07d1 }, { 0xa438, 0x1800 }, { 0xa438, 0x080e },
- { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x8032 },
- { 0xa438, 0x33a9 }, { 0xa438, 0x802a }, { 0xa438, 0xd705 },
- { 0xa438, 0x4084 }, { 0xa438, 0xd1f4 }, { 0xa438, 0xd048 },
- { 0xa438, 0xf013 }, { 0xa438, 0xd1b7 }, { 0xa438, 0xd04b },
- { 0xa438, 0xf010 }, { 0xa438, 0xd705 }, { 0xa438, 0x4084 },
- { 0xa438, 0xd1f4 }, { 0xa438, 0xd048 }, { 0xa438, 0xf00b },
- { 0xa438, 0xd1b7 }, { 0xa438, 0xd04b }, { 0xa438, 0xf008 },
- { 0xa438, 0xd705 }, { 0xa438, 0x4084 }, { 0xa438, 0xd1f4 },
- { 0xa438, 0xd048 }, { 0xa438, 0xf003 }, { 0xa438, 0xd1b7 },
- { 0xa438, 0xd04b }, { 0xa438, 0x1800 }, { 0xa438, 0x14cc },
- { 0xa438, 0xd700 }, { 0xa438, 0x2b59 }, { 0xa438, 0x803f },
- { 0xa438, 0xf003 }, { 0xa438, 0x1800 }, { 0xa438, 0x118f },
- { 0xa438, 0x6060 }, { 0xa438, 0x1800 }, { 0xa438, 0x1167 },
- { 0xa438, 0xd700 }, { 0xa438, 0x60c7 }, { 0xa438, 0xd704 },
- { 0xa438, 0x609f }, { 0xa438, 0xd705 }, { 0xa438, 0x4043 },
- { 0xa438, 0xf003 }, { 0xa438, 0x1800 }, { 0xa438, 0x1150 },
+ { 0xa438, 0x273d }, { 0xa438, 0x8056 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x37c9 }, { 0xa438, 0x802e }, { 0xa438, 0x33a9 },
+ { 0xa438, 0x8026 }, { 0xa438, 0xd702 }, { 0xa438, 0x6099 },
+ { 0xa438, 0xd1b7 }, { 0xa438, 0xd05c }, { 0xa438, 0xf013 },
+ { 0xa438, 0xd1b7 }, { 0xa438, 0xd05c }, { 0xa438, 0xf010 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x6099 }, { 0xa438, 0xd1b7 },
+ { 0xa438, 0xd05c }, { 0xa438, 0xf00b }, { 0xa438, 0xd1b7 },
+ { 0xa438, 0xd05c }, { 0xa438, 0xf008 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x6099 }, { 0xa438, 0xd199 }, { 0xa438, 0xd05d },
+ { 0xa438, 0xf003 }, { 0xa438, 0xd199 }, { 0xa438, 0xd05d },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x804a },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x8042 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x6099 }, { 0xa438, 0xd1bf }, { 0xa438, 0xd06d },
+ { 0xa438, 0xf013 }, { 0xa438, 0xd1e5 }, { 0xa438, 0xd06d },
+ { 0xa438, 0xf010 }, { 0xa438, 0xd702 }, { 0xa438, 0x6099 },
+ { 0xa438, 0xd1ec }, { 0xa438, 0xd06d }, { 0xa438, 0xf00b },
+ { 0xa438, 0xd1bf }, { 0xa438, 0xd06d }, { 0xa438, 0xf008 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x6099 }, { 0xa438, 0xd199 },
+ { 0xa438, 0xd06e }, { 0xa438, 0xf003 }, { 0xa438, 0xd199 },
+ { 0xa438, 0xd06e }, { 0xa438, 0xd703 }, { 0xa438, 0x6090 },
+ { 0xa438, 0xd41a }, { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 },
+ { 0xa438, 0xd408 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 },
+ { 0xa438, 0xcd31 }, { 0xa438, 0xd700 }, { 0xa438, 0x2fa9 },
+ { 0xa438, 0x8061 }, { 0xa438, 0x33c9 }, { 0xa438, 0x8064 },
+ { 0xa438, 0x6117 }, { 0xa438, 0xf00a }, { 0xa438, 0xd141 },
+ { 0xa438, 0xd043 }, { 0xa438, 0xf009 }, { 0xa438, 0xd121 },
+ { 0xa438, 0xd043 }, { 0xa438, 0xf006 }, { 0xa438, 0xd122 },
+ { 0xa438, 0xd042 }, { 0xa438, 0xf003 }, { 0xa438, 0xd181 },
+ { 0xa438, 0xd043 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x80da }, { 0xa438, 0xd700 },
+ { 0xa438, 0x6ccb }, { 0xa438, 0xd700 }, { 0xa438, 0x6d67 },
+ { 0xa438, 0x800a }, { 0xa438, 0x81a0 }, { 0xa438, 0x8312 },
+ { 0xa438, 0x8480 }, { 0xa438, 0x0c86 }, { 0xa438, 0x0680 },
{ 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8702 },
- { 0xa438, 0x8011 }, { 0xa438, 0x9503 }, { 0xa438, 0x800a },
- { 0xa438, 0x81a0 }, { 0xa438, 0x8302 }, { 0xa438, 0x8480 },
- { 0xa438, 0x8686 }, { 0xa438, 0xcde0 }, { 0xa438, 0xd1ff },
- { 0xa438, 0xd049 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
- { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0xd705 },
- { 0xa438, 0x417e }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
- { 0xa438, 0xa011 }, { 0xa438, 0x9503 }, { 0xa438, 0xd1c8 },
- { 0xa438, 0xd045 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
- { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0x0c03 },
- { 0xa438, 0x1502 }, { 0xa438, 0xa702 }, { 0xa438, 0x9503 },
- { 0xa438, 0xa00a }, { 0xa438, 0xa1a0 }, { 0xa438, 0xa480 },
- { 0xa438, 0xa686 }, { 0xa438, 0xd705 }, { 0xa438, 0x605e },
- { 0xa438, 0xa302 }, { 0xa438, 0x9503 }, { 0xa438, 0xd700 },
- { 0xa438, 0x37c9 }, { 0xa438, 0x8083 }, { 0xa438, 0x33a9 },
- { 0xa438, 0x807f }, { 0xa438, 0xd178 }, { 0xa438, 0xd04b },
- { 0xa438, 0x1800 }, { 0xa438, 0x115d }, { 0xa438, 0xd1c8 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd407 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cc8 }, { 0xa438, 0xd703 }, { 0xa438, 0x6090 },
+ { 0xa438, 0xd41a }, { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd406 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cc8 }, { 0xa438, 0xcd39 }, { 0xa438, 0xd404 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x60cf }, { 0xa438, 0x60f1 }, { 0xa438, 0x6113 },
+ { 0xa438, 0x6135 }, { 0xa438, 0x6157 }, { 0xa438, 0xf00b },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf00a }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf008 }, { 0xa438, 0xce03 }, { 0xa438, 0xf006 },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf004 }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xce03 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x0c07 }, { 0xa438, 0x0c01 }, { 0xa438, 0x8d07 },
+ { 0xa438, 0x0cc3 }, { 0xa438, 0x0b40 }, { 0xa438, 0x8d07 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xa810 }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa302 }, { 0xa438, 0x0ca0 }, { 0xa438, 0x0480 },
+ { 0xa438, 0xa684 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd706 }, { 0xa438, 0x5fa7 }, { 0xa438, 0xb920 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x7fb4 }, { 0xa438, 0x8810 }, { 0xa438, 0x9920 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x60e5 }, { 0xa438, 0x5f94 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd706 }, { 0xa438, 0x5fa7 },
+ { 0xa438, 0xfff0 }, { 0xa438, 0xb820 }, { 0xa438, 0xa810 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x7fa5 }, { 0xa438, 0x9820 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd706 }, { 0xa438, 0x5f69 }, { 0xa438, 0xf010 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0xae80 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd700 }, { 0xa438, 0x2b6d },
+ { 0xa438, 0x8184 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x8380 }, { 0xa438, 0x9503 }, { 0xa438, 0xd406 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 }, { 0xa438, 0xcd32 },
+ { 0xa438, 0xd701 }, { 0xa438, 0x6191 }, { 0xa438, 0xa504 },
+ { 0xa438, 0xcd3a }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x6067 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d2b }, { 0xa438, 0xd701 }, { 0xa438, 0x5f3a },
+ { 0xa438, 0x8504 }, { 0xa438, 0xd700 }, { 0xa438, 0x2739 },
+ { 0xa438, 0x817a }, { 0xa438, 0xd707 }, { 0xa438, 0x6061 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x816c }, { 0xa438, 0xd193 },
+ { 0xa438, 0xd047 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f7a }, { 0xa438, 0xd706 }, { 0xa438, 0x5f29 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce06 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf008 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce06 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf002 }, { 0xa438, 0xce06 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x0c0f }, { 0xa438, 0x0b01 },
+ { 0xa438, 0x0c3f }, { 0xa438, 0x0c08 }, { 0xa438, 0x8bc0 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd707 }, { 0xa438, 0x409f },
+ { 0xa438, 0x4062 }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa120 }, { 0xa438, 0xa420 },
+ { 0xa438, 0xd193 }, { 0xa438, 0xd048 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5f7a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x5f29 }, { 0xa438, 0xd700 }, { 0xa438, 0x60cf },
+ { 0xa438, 0x60f1 }, { 0xa438, 0x6113 }, { 0xa438, 0x6135 },
+ { 0xa438, 0x6157 }, { 0xa438, 0xf00b }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf00a }, { 0xa438, 0xce03 }, { 0xa438, 0xf008 },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf006 }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf004 }, { 0xa438, 0xce03 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xce03 }, { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c07 },
+ { 0xa438, 0x0c01 }, { 0xa438, 0x9503 }, { 0xa438, 0x8420 },
+ { 0xa438, 0x800a }, { 0xa438, 0x8120 }, { 0xa438, 0x8312 },
+ { 0xa438, 0x8480 }, { 0xa438, 0x8604 }, { 0xa438, 0xd419 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x4080 }, { 0xa438, 0xbb20 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x8507 }, { 0xa438, 0xa00a }, { 0xa438, 0xa302 },
+ { 0xa438, 0xa480 }, { 0xa438, 0xa604 }, { 0xa438, 0xd193 },
+ { 0xa438, 0xd047 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f7a }, { 0xa438, 0xd706 }, { 0xa438, 0x5f29 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x814f }, { 0xa438, 0x800a },
+ { 0xa438, 0x8302 }, { 0xa438, 0x8480 }, { 0xa438, 0x8604 },
+ { 0xa438, 0xd405 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 },
+ { 0xa438, 0xbb20 }, { 0xa438, 0xa00a }, { 0xa438, 0xa302 },
+ { 0xa438, 0xa480 }, { 0xa438, 0xa604 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x8507 }, { 0xa438, 0xd405 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cc8 }, { 0xa438, 0xd404 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cc8 }, { 0xa438, 0xd700 }, { 0xa438, 0x2b69 },
+ { 0xa438, 0x8184 }, { 0xa438, 0xf06d }, { 0xa438, 0xd700 },
+ { 0xa438, 0x60cf }, { 0xa438, 0x60f1 }, { 0xa438, 0x6113 },
+ { 0xa438, 0x6135 }, { 0xa438, 0x6157 }, { 0xa438, 0xf00b },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf00a }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf008 }, { 0xa438, 0xce03 }, { 0xa438, 0xf006 },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf004 }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xce03 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x0c07 }, { 0xa438, 0x0c01 }, { 0xa438, 0x0c3f },
+ { 0xa438, 0x0d08 }, { 0xa438, 0x9503 }, { 0xa438, 0xa810 },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa302 }, { 0xa438, 0x0ca0 },
+ { 0xa438, 0x0480 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x0960 }, { 0xa438, 0x60a4 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407d }, { 0xa438, 0x8604 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa604 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0xa340 }, { 0xa438, 0xd700 }, { 0xa438, 0x37cd },
+ { 0xa438, 0x81b4 }, { 0xa438, 0x8310 }, { 0xa438, 0x9503 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd706 },
+ { 0xa438, 0x5fa7 }, { 0xa438, 0xb920 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x7fb4 },
+ { 0xa438, 0x8810 }, { 0xa438, 0x9920 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x60e5 },
+ { 0xa438, 0x5f94 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd706 }, { 0xa438, 0x5fa7 }, { 0xa438, 0xfff0 },
+ { 0xa438, 0xb820 }, { 0xa438, 0xa810 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x7fa5 },
+ { 0xa438, 0x9820 }, { 0xa438, 0xd700 }, { 0xa438, 0x2d59 },
+ { 0xa438, 0x8507 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x8c07 }, { 0xa438, 0x9503 }, { 0xa438, 0xa120 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x2969 }, { 0xa438, 0x81e3 },
+ { 0xa438, 0x60e4 }, { 0xa438, 0xd704 }, { 0xa438, 0x40bd },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407b }, { 0xa438, 0x8310 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xa310 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x81ec }, { 0xa438, 0x60a4 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407d }, { 0xa438, 0xa202 },
+ { 0xa438, 0xf002 }, { 0xa438, 0x8202 }, { 0xa438, 0xa420 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x861d }, { 0xa438, 0x8810 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5fbb }, { 0xa438, 0xd17a }, { 0xa438, 0xd05a },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce06 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf008 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce06 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf002 }, { 0xa438, 0xce06 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x0c0f }, { 0xa438, 0x0b04 },
+ { 0xa438, 0x0c3f }, { 0xa438, 0x0c21 }, { 0xa438, 0x8d07 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xa340 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0xa110 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cef }, { 0xa438, 0x8110 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d50 }, { 0xa438, 0xa304 }, { 0xa438, 0xa440 },
+ { 0xa438, 0xa8c0 }, { 0xa438, 0x8810 }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa120 }, { 0xa438, 0xa310 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x405d }, { 0xa438, 0xa308 }, { 0xa438, 0x0cfc },
+ { 0xa438, 0x0224 }, { 0xa438, 0x0ca0 }, { 0xa438, 0x0480 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0xa340 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37cd }, { 0xa438, 0x8231 },
+ { 0xa438, 0x8310 }, { 0xa438, 0x9503 }, { 0xa438, 0xd162 },
+ { 0xa438, 0xd048 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0x8840 },
+ { 0xa438, 0xd1c4 }, { 0xa438, 0xd045 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 }, { 0xa438, 0x5fba },
+ { 0xa438, 0xd706 }, { 0xa438, 0x6127 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f3b }, { 0xa438, 0x88c0 }, { 0xa438, 0x800a },
+ { 0xa438, 0x8120 }, { 0xa438, 0x8350 }, { 0xa438, 0x84a0 },
+ { 0xa438, 0xffad }, { 0xa438, 0xb920 }, { 0xa438, 0xcd33 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x7fb4 }, { 0xa438, 0x9920 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x6065 },
+ { 0xa438, 0x5f94 }, { 0xa438, 0xffee }, { 0xa438, 0xb820 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x7fa5 }, { 0xa438, 0x9820 }, { 0xa438, 0x800a },
+ { 0xa438, 0x8120 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d47 },
+ { 0xa438, 0xa108 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cef },
+ { 0xa438, 0x8108 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x60bd }, { 0xa438, 0xd707 },
+ { 0xa438, 0x413f }, { 0xa438, 0x4100 }, { 0xa438, 0xf004 },
+ { 0xa438, 0x0cfd }, { 0xa438, 0x0201 }, { 0xa438, 0xf005 },
+ { 0xa438, 0x0cfc }, { 0xa438, 0x02bc }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa2fc }, { 0xa438, 0xa304 }, { 0xa438, 0x8880 },
+ { 0xa438, 0x0cc0 }, { 0xa438, 0x0440 }, { 0xa438, 0xcd34 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407d }, { 0xa438, 0x405b },
+ { 0xa438, 0xf006 }, { 0xa438, 0xd704 }, { 0xa438, 0x60fd },
+ { 0xa438, 0xd707 }, { 0xa438, 0x40bf }, { 0xa438, 0x4080 },
+ { 0xa438, 0x8310 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d15 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8c07 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x409d }, { 0xa438, 0x8b0f },
+ { 0xa438, 0x8c38 }, { 0xa438, 0xf004 }, { 0xa438, 0x0c0f },
+ { 0xa438, 0x0b07 }, { 0xa438, 0xac38 }, { 0xa438, 0x0c38 },
+ { 0xa438, 0x0d10 }, { 0xa438, 0x9503 }, { 0xa438, 0xa810 },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa120 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x607d }, { 0xa438, 0xa4a0 }, { 0xa438, 0xa604 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x829f },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd049 }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd19f }, { 0xa438, 0xd049 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x413d }, { 0xa438, 0xa00a }, { 0xa438, 0xa120 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407b }, { 0xa438, 0x8310 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xa310 }, { 0xa438, 0xa403 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x6a14 }, { 0xa438, 0xd700 }, { 0xa438, 0x409a },
+ { 0xa438, 0xd706 }, { 0xa438, 0x4988 }, { 0xa438, 0xf014 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x6055 }, { 0xa438, 0xfff5 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0x800a },
+ { 0xa438, 0x8120 }, { 0xa438, 0x8310 }, { 0xa438, 0xa380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d2b }, { 0xa438, 0xd705 }, { 0xa438, 0x5f77 },
+ { 0xa438, 0x8380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xffdd }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x8b0f }, { 0xa438, 0x8c38 }, { 0xa438, 0x8d38 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd700 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x82d8 }, { 0xa438, 0x33a9 }, { 0xa438, 0x82d5 },
+ { 0xa438, 0xd1f4 }, { 0xa438, 0xd04b }, { 0xa438, 0xf006 },
+ { 0xa438, 0xd1b7 }, { 0xa438, 0xd04b }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd1c6 }, { 0xa438, 0xd04c }, { 0xa438, 0xd704 },
+ { 0xa438, 0x413d }, { 0xa438, 0xa00a }, { 0xa438, 0xa120 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407b }, { 0xa438, 0x8310 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xa310 }, { 0xa438, 0xa403 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x62f4 }, { 0xa438, 0xd700 }, { 0xa438, 0x405a },
+ { 0xa438, 0xf01a }, { 0xa438, 0xd704 }, { 0xa438, 0x6055 },
+ { 0xa438, 0xfff7 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d47 },
+ { 0xa438, 0x800a }, { 0xa438, 0x8120 }, { 0xa438, 0x8310 },
+ { 0xa438, 0xa380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd705 },
+ { 0xa438, 0x5f77 }, { 0xa438, 0x8380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d50 }, { 0xa438, 0xffdf }, { 0xa438, 0x8403 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x629c }, { 0xa438, 0xfffb }, { 0xa438, 0x8403 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x6096 }, { 0xa438, 0xd700 }, { 0xa438, 0x619c },
+ { 0xa438, 0xfffa }, { 0xa438, 0xd706 }, { 0xa438, 0x4128 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x60b0 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0xae80 }, { 0xa438, 0x9503 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x8431 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd05a }, { 0xa438, 0xd700 }, { 0xa438, 0x60cf },
+ { 0xa438, 0x60f1 }, { 0xa438, 0x6113 }, { 0xa438, 0x6135 },
+ { 0xa438, 0x6157 }, { 0xa438, 0xf00b }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf00a }, { 0xa438, 0xce06 }, { 0xa438, 0xf008 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf006 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf004 }, { 0xa438, 0xce06 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xce06 }, { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c0f },
+ { 0xa438, 0x0b04 }, { 0xa438, 0x0c3f }, { 0xa438, 0x0c21 },
+ { 0xa438, 0x8d07 }, { 0xa438, 0x0cc3 }, { 0xa438, 0x0b40 },
+ { 0xa438, 0x0c3f }, { 0xa438, 0x0c24 }, { 0xa438, 0x8d07 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xa340 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0xa110 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cef }, { 0xa438, 0x8110 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d50 }, { 0xa438, 0xa304 }, { 0xa438, 0xa440 },
+ { 0xa438, 0xa8c0 }, { 0xa438, 0x8810 }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa120 }, { 0xa438, 0xa310 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x405d }, { 0xa438, 0xa308 }, { 0xa438, 0x0cfc },
+ { 0xa438, 0x0224 }, { 0xa438, 0x0ca0 }, { 0xa438, 0x0480 },
+ { 0xa438, 0x8604 }, { 0xa438, 0xcd35 }, { 0xa438, 0xd162 },
+ { 0xa438, 0xd048 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0x8840 },
+ { 0xa438, 0xd1c4 }, { 0xa438, 0xd045 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 }, { 0xa438, 0x5fba },
+ { 0xa438, 0xd706 }, { 0xa438, 0x6127 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f3b }, { 0xa438, 0x88c0 }, { 0xa438, 0x800a },
+ { 0xa438, 0x8120 }, { 0xa438, 0x8350 }, { 0xa438, 0x84a0 },
+ { 0xa438, 0xffae }, { 0xa438, 0xbb80 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x5fb4 },
+ { 0xa438, 0xb920 }, { 0xa438, 0xcd36 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x7fb4 },
+ { 0xa438, 0x9920 }, { 0xa438, 0x9b80 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x6065 },
+ { 0xa438, 0x5f94 }, { 0xa438, 0xffe8 }, { 0xa438, 0xb820 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f },
+ { 0xa438, 0x7fa5 }, { 0xa438, 0x9820 }, { 0xa438, 0x800a },
+ { 0xa438, 0x8120 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d47 },
+ { 0xa438, 0xa108 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cef },
+ { 0xa438, 0x8108 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x60bd }, { 0xa438, 0xd707 },
+ { 0xa438, 0x413f }, { 0xa438, 0x4100 }, { 0xa438, 0xf004 },
+ { 0xa438, 0x0cfd }, { 0xa438, 0x0201 }, { 0xa438, 0xf005 },
+ { 0xa438, 0x0cfc }, { 0xa438, 0x02bc }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa2fc }, { 0xa438, 0xa304 }, { 0xa438, 0x8880 },
+ { 0xa438, 0x0cc0 }, { 0xa438, 0x0440 }, { 0xa438, 0xcd37 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407d }, { 0xa438, 0x405b },
+ { 0xa438, 0xf006 }, { 0xa438, 0xd704 }, { 0xa438, 0x60fd },
+ { 0xa438, 0xd707 }, { 0xa438, 0x40bf }, { 0xa438, 0x4080 },
+ { 0xa438, 0x8310 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d15 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8c07 },
+ { 0xa438, 0x0cc0 }, { 0xa438, 0x0b00 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x40bd }, { 0xa438, 0x8b0f }, { 0xa438, 0x8c38 },
+ { 0xa438, 0x8c3f }, { 0xa438, 0xf005 }, { 0xa438, 0x0c0f },
+ { 0xa438, 0x0b07 }, { 0xa438, 0xac38 }, { 0xa438, 0xac3f },
+ { 0xa438, 0x0c38 }, { 0xa438, 0x0d10 }, { 0xa438, 0x0c38 },
+ { 0xa438, 0x0d10 }, { 0xa438, 0x9503 }, { 0xa438, 0xa810 },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa120 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x607d }, { 0xa438, 0xa4a0 }, { 0xa438, 0xa604 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x83d0 },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x83cd }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd048 }, { 0xa438, 0xf006 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd048 }, { 0xa438, 0xf003 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd048 }, { 0xa438, 0xd704 }, { 0xa438, 0x413d },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa120 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407b }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x409a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x4048 }, { 0xa438, 0xf014 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x6055 }, { 0xa438, 0xfff5 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0x800a }, { 0xa438, 0x8120 },
+ { 0xa438, 0x8310 }, { 0xa438, 0xa380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd705 }, { 0xa438, 0x5f77 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xffdd },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8b0f },
+ { 0xa438, 0x8c38 }, { 0xa438, 0x8d38 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x8409 },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x8406 }, { 0xa438, 0xd13d },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf006 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf003 }, { 0xa438, 0xd189 },
+ { 0xa438, 0xd04c }, { 0xa438, 0xd704 }, { 0xa438, 0x413d },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa120 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407b }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x409a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x4048 }, { 0xa438, 0xf014 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x6055 }, { 0xa438, 0xfff5 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0x800a }, { 0xa438, 0x8120 },
+ { 0xa438, 0x8310 }, { 0xa438, 0xa380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd705 }, { 0xa438, 0x5f77 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xffdd },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c07 },
+ { 0xa438, 0x0d01 }, { 0xa438, 0x0c03 }, { 0xa438, 0x0b01 },
+ { 0xa438, 0x0c07 }, { 0xa438, 0x0d01 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce08 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf008 }, { 0xa438, 0xce08 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce08 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf002 }, { 0xa438, 0xce08 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0xa180 },
+ { 0xa438, 0xcd38 }, { 0xa438, 0xd700 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x8465 }, { 0xa438, 0x33a9 }, { 0xa438, 0x845d },
+ { 0xa438, 0xd702 }, { 0xa438, 0x4098 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf013 }, { 0xa438, 0xd100 },
+ { 0xa438, 0xd049 }, { 0xa438, 0xf010 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x4098 }, { 0xa438, 0xd1b7 }, { 0xa438, 0xd049 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xd100 }, { 0xa438, 0xd048 },
+ { 0xa438, 0xf008 }, { 0xa438, 0xd702 }, { 0xa438, 0x4098 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04b }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd199 }, { 0xa438, 0xd04a }, { 0xa438, 0xd13b },
+ { 0xa438, 0xd055 }, { 0xa438, 0xd704 }, { 0xa438, 0x413d },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa1a0 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407b }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x405b }, { 0xa438, 0xf014 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x6055 }, { 0xa438, 0xfff7 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0x800a },
+ { 0xa438, 0x81a0 }, { 0xa438, 0x8310 }, { 0xa438, 0xa380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d2b }, { 0xa438, 0xd705 }, { 0xa438, 0x5f77 },
+ { 0xa438, 0x8380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xffdf }, { 0xa438, 0xa302 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x415d }, { 0xa438, 0xa00a }, { 0xa438, 0xa1a0 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x407b }, { 0xa438, 0x8310 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xa310 }, { 0xa438, 0xa302 },
+ { 0xa438, 0xa403 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x409a }, { 0xa438, 0xd706 }, { 0xa438, 0x4048 },
+ { 0xa438, 0xf014 }, { 0xa438, 0xd704 }, { 0xa438, 0x6055 },
+ { 0xa438, 0xfff5 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d47 },
+ { 0xa438, 0x800a }, { 0xa438, 0x81a0 }, { 0xa438, 0x8312 },
+ { 0xa438, 0xa380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd705 },
+ { 0xa438, 0x5f77 }, { 0xa438, 0x8380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d50 }, { 0xa438, 0xffdc }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x0c0f }, { 0xa438, 0x0b02 },
+ { 0xa438, 0x0c38 }, { 0xa438, 0x0c10 }, { 0xa438, 0x0c3f },
+ { 0xa438, 0x0c12 }, { 0xa438, 0x9503 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x37c9 }, { 0xa438, 0x84d8 }, { 0xa438, 0x33a9 },
+ { 0xa438, 0x84d0 }, { 0xa438, 0xd702 }, { 0xa438, 0x4098 },
+ { 0xa438, 0xd199 }, { 0xa438, 0xd04a }, { 0xa438, 0xf013 },
+ { 0xa438, 0xd100 }, { 0xa438, 0xd04a }, { 0xa438, 0xf010 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x4098 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf00b }, { 0xa438, 0xd100 },
+ { 0xa438, 0xd048 }, { 0xa438, 0xf008 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x4098 }, { 0xa438, 0xd199 }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf003 }, { 0xa438, 0xd16b }, { 0xa438, 0xd04b },
+ { 0xa438, 0xd704 }, { 0xa438, 0x415d }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa1a0 }, { 0xa438, 0xd704 }, { 0xa438, 0x407b },
+ { 0xa438, 0x8310 }, { 0xa438, 0xf002 }, { 0xa438, 0xa310 },
+ { 0xa438, 0xa302 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x40ba }, { 0xa438, 0xd706 },
+ { 0xa438, 0x406a }, { 0xa438, 0x8403 }, { 0xa438, 0xf014 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x6055 }, { 0xa438, 0xfff4 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0x800a },
+ { 0xa438, 0x81a0 }, { 0xa438, 0x8312 }, { 0xa438, 0xa380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d2b }, { 0xa438, 0xd705 }, { 0xa438, 0x5f77 },
+ { 0xa438, 0x8380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xffdb }, { 0xa438, 0x81a0 }, { 0xa438, 0x8310 },
+ { 0xa438, 0xa302 }, { 0xa438, 0xa00a }, { 0xa438, 0xa480 },
+ { 0xa438, 0x8420 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x8517 }, { 0xa438, 0x60e4 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x40a7 }, { 0xa438, 0xd704 }, { 0xa438, 0x407d },
+ { 0xa438, 0x8604 }, { 0xa438, 0xf002 }, { 0xa438, 0xa604 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60c7 }, { 0xa438, 0xa602 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0xa702 },
+ { 0xa438, 0x9503 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0xa340 }, { 0xa438, 0x9503 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x60cf }, { 0xa438, 0x60f1 }, { 0xa438, 0x6113 },
+ { 0xa438, 0x6135 }, { 0xa438, 0x6157 }, { 0xa438, 0xf00b },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf00a }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf008 }, { 0xa438, 0xce03 }, { 0xa438, 0xf006 },
+ { 0xa438, 0xce03 }, { 0xa438, 0xf004 }, { 0xa438, 0xce03 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xce03 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x0c07 }, { 0xa438, 0x0c01 }, { 0xa438, 0x0c3f },
+ { 0xa438, 0x0d08 }, { 0xa438, 0x9503 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x646d }, { 0xa438, 0x37c9 }, { 0xa438, 0x8558 },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x854e }, { 0xa438, 0xd700 },
+ { 0xa438, 0x40c7 }, { 0xa438, 0xd702 }, { 0xa438, 0x6098 },
+ { 0xa438, 0xd100 }, { 0xa438, 0xd048 }, { 0xa438, 0xf01a },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd049 }, { 0xa438, 0xf017 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x40c7 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x6098 }, { 0xa438, 0xd100 }, { 0xa438, 0xd049 },
+ { 0xa438, 0xf010 }, { 0xa438, 0xd17a }, { 0xa438, 0xd04c },
+ { 0xa438, 0xf00d }, { 0xa438, 0xd700 }, { 0xa438, 0x40c7 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x6098 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf006 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf003 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd048 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f7a }, { 0xa438, 0xd706 }, { 0xa438, 0x5f29 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce06 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf008 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce06 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf002 }, { 0xa438, 0xce06 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x0c0f }, { 0xa438, 0x0b01 },
+ { 0xa438, 0x0c3f }, { 0xa438, 0x0c08 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xa120 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x859c }, { 0xa438, 0x6224 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x4147 }, { 0xa438, 0xd704 }, { 0xa438, 0x409d },
+ { 0xa438, 0xd704 }, { 0xa438, 0x613b }, { 0xa438, 0xf00a },
+ { 0xa438, 0xd707 }, { 0xa438, 0x411f }, { 0xa438, 0x40e0 },
+ { 0xa438, 0xf004 }, { 0xa438, 0xd707 }, { 0xa438, 0x409f },
+ { 0xa438, 0x4062 }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x85a7 }, { 0xa438, 0x60e4 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x40a7 }, { 0xa438, 0xd704 }, { 0xa438, 0x407d },
+ { 0xa438, 0xa202 }, { 0xa438, 0xf002 }, { 0xa438, 0x8202 },
+ { 0xa438, 0xa420 }, { 0xa438, 0xcd3b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x65ad }, { 0xa438, 0x43c7 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x37c9 }, { 0xa438, 0x85c2 }, { 0xa438, 0x33a9 },
+ { 0xa438, 0x85ba }, { 0xa438, 0xd702 }, { 0xa438, 0x4098 },
+ { 0xa438, 0xd199 }, { 0xa438, 0xd04c }, { 0xa438, 0xf024 },
+ { 0xa438, 0xd13d }, { 0xa438, 0xd04a }, { 0xa438, 0xf021 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x4098 }, { 0xa438, 0xd1c6 },
+ { 0xa438, 0xd04c }, { 0xa438, 0xf01c }, { 0xa438, 0xd15c },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf019 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x4098 }, { 0xa438, 0xd199 }, { 0xa438, 0xd04c },
+ { 0xa438, 0xf014 }, { 0xa438, 0xd17a }, { 0xa438, 0xd04c },
+ { 0xa438, 0xf011 }, { 0xa438, 0xd700 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x85d5 }, { 0xa438, 0x33a9 }, { 0xa438, 0x85d2 },
+ { 0xa438, 0xd1e5 }, { 0xa438, 0xd04c }, { 0xa438, 0xf009 },
+ { 0xa438, 0xd191 }, { 0xa438, 0xd04d }, { 0xa438, 0xf006 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04d }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd16b }, { 0xa438, 0xd04c }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5f7a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x5f2c }, { 0xa438, 0xd700 }, { 0xa438, 0x40e7 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c07 },
+ { 0xa438, 0x0d01 }, { 0xa438, 0x9503 }, { 0xa438, 0xf006 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c07 },
+ { 0xa438, 0x0d02 }, { 0xa438, 0x9503 }, { 0xa438, 0xcd3c },
+ { 0xa438, 0xd700 }, { 0xa438, 0x644d }, { 0xa438, 0x43c7 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x8608 },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x8600 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x4098 }, { 0xa438, 0xd17a }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf019 }, { 0xa438, 0xd17a }, { 0xa438, 0xd048 },
+ { 0xa438, 0xf016 }, { 0xa438, 0xd702 }, { 0xa438, 0x4098 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04b }, { 0xa438, 0xf011 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd048 }, { 0xa438, 0xf00e },
+ { 0xa438, 0xd702 }, { 0xa438, 0x4098 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf009 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd049 }, { 0xa438, 0xf006 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf003 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd048 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5f7a }, { 0xa438, 0xd706 }, { 0xa438, 0x5f2d },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce08 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf008 }, { 0xa438, 0xce08 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce08 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf002 }, { 0xa438, 0xce08 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x0c0f }, { 0xa438, 0x0b02 },
+ { 0xa438, 0x0c38 }, { 0xa438, 0x0c10 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xa180 }, { 0xa438, 0xcd3d }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x865f }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x8655 }, { 0xa438, 0x33a9 }, { 0xa438, 0x864b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x40c7 }, { 0xa438, 0xd702 },
+ { 0xa438, 0x6098 }, { 0xa438, 0xd11f }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf01a }, { 0xa438, 0xd199 }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf017 }, { 0xa438, 0xd700 }, { 0xa438, 0x40c7 },
+ { 0xa438, 0xd702 }, { 0xa438, 0x6098 }, { 0xa438, 0xd11f },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf010 }, { 0xa438, 0xd199 },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf00d }, { 0xa438, 0xd700 },
+ { 0xa438, 0x40c7 }, { 0xa438, 0xd702 }, { 0xa438, 0x6098 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04c }, { 0xa438, 0xf006 },
+ { 0xa438, 0xd199 }, { 0xa438, 0xd04c }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04b }, { 0xa438, 0x1800 },
+ { 0xa438, 0x0e04 }, { 0xa438, 0xd700 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x8678 }, { 0xa438, 0x33a9 }, { 0xa438, 0x8670 },
+ { 0xa438, 0xd705 }, { 0xa438, 0x4084 }, { 0xa438, 0xd1f4 },
+ { 0xa438, 0xd048 }, { 0xa438, 0xf013 }, { 0xa438, 0xd1b7 },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf010 }, { 0xa438, 0xd705 },
+ { 0xa438, 0x4084 }, { 0xa438, 0xd1f4 }, { 0xa438, 0xd048 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xd1b7 }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf008 }, { 0xa438, 0xd705 }, { 0xa438, 0x4084 },
+ { 0xa438, 0xd1f4 }, { 0xa438, 0xd048 }, { 0xa438, 0xf003 },
+ { 0xa438, 0xd1b7 }, { 0xa438, 0xd04b }, { 0xa438, 0x1800 },
+ { 0xa438, 0x14cc }, { 0xa438, 0xd700 }, { 0xa438, 0x2b59 },
+ { 0xa438, 0x8685 }, { 0xa438, 0xf003 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x118f }, { 0xa438, 0x6060 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x1167 }, { 0xa438, 0xd700 }, { 0xa438, 0x60c7 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x609f }, { 0xa438, 0xd705 },
+ { 0xa438, 0x4043 }, { 0xa438, 0xf003 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x1150 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x8702 }, { 0xa438, 0x8011 }, { 0xa438, 0x9503 },
+ { 0xa438, 0x800a }, { 0xa438, 0x81a0 }, { 0xa438, 0x8302 },
+ { 0xa438, 0x8480 }, { 0xa438, 0x8686 }, { 0xa438, 0xcde0 },
+ { 0xa438, 0xd1ff }, { 0xa438, 0xd049 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 }, { 0xa438, 0x5fba },
+ { 0xa438, 0xd705 }, { 0xa438, 0x417e }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0xa011 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xd1c8 }, { 0xa438, 0xd045 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 }, { 0xa438, 0x5fba },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0xa702 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xa00a }, { 0xa438, 0xa1a0 },
+ { 0xa438, 0xa480 }, { 0xa438, 0xa686 }, { 0xa438, 0xd705 },
+ { 0xa438, 0x605e }, { 0xa438, 0xa302 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x37c9 }, { 0xa438, 0x86c9 },
+ { 0xa438, 0x33a9 }, { 0xa438, 0x86c5 }, { 0xa438, 0xd178 },
{ 0xa438, 0xd04b }, { 0xa438, 0x1800 }, { 0xa438, 0x115d },
- { 0xa438, 0xd1e6 }, { 0xa438, 0xd04b }, { 0xa438, 0x1800 },
- { 0xa438, 0x115d }, { 0xa438, 0xd71f }, { 0xa438, 0x6080 },
- { 0xa438, 0xd704 }, { 0xa438, 0x1800 }, { 0xa438, 0x1bc0 },
- { 0xa438, 0x1800 }, { 0xa438, 0x1bc4 }, { 0xa438, 0x4134 },
- { 0xa438, 0xd115 }, { 0xa438, 0xd04f }, { 0xa438, 0x1000 },
- { 0xa438, 0x1d0b }, { 0xa438, 0x1000 }, { 0xa438, 0x80ad },
- { 0xa438, 0x1800 }, { 0xa438, 0x01f2 }, { 0xa438, 0x1000 },
- { 0xa438, 0x1d0b }, { 0xa438, 0x1000 }, { 0xa438, 0x80ad },
- { 0xa438, 0x1800 }, { 0xa438, 0x01f9 }, { 0xa438, 0x2969 },
- { 0xa438, 0x80a3 }, { 0xa438, 0xd700 }, { 0xa438, 0x606b },
- { 0xa438, 0xd701 }, { 0xa438, 0x60b4 }, { 0xa438, 0x1000 },
- { 0xa438, 0x80ad }, { 0xa438, 0x1800 }, { 0xa438, 0x0551 },
- { 0xa438, 0xd196 }, { 0xa438, 0xd04d }, { 0xa438, 0x1000 },
- { 0xa438, 0x80ad }, { 0xa438, 0x1800 }, { 0xa438, 0x054d },
- { 0xa438, 0xd208 }, { 0xa438, 0x0c09 }, { 0xa438, 0x1301 },
- { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd701 },
- { 0xa438, 0x5fa3 }, { 0xa438, 0xb302 }, { 0xa438, 0xd200 },
- { 0xa438, 0x0800 }, { 0xa438, 0xd705 }, { 0xa438, 0x6064 },
- { 0xa438, 0x1800 }, { 0xa438, 0x140a }, { 0xa438, 0x8810 },
- { 0xa438, 0xd199 }, { 0xa438, 0xd04b }, { 0xa438, 0x1000 },
+ { 0xa438, 0xd1c8 }, { 0xa438, 0xd04b }, { 0xa438, 0x1800 },
+ { 0xa438, 0x115d }, { 0xa438, 0xd1e6 }, { 0xa438, 0xd04b },
+ { 0xa438, 0x1800 }, { 0xa438, 0x115d }, { 0xa438, 0xd71f },
+ { 0xa438, 0x6080 }, { 0xa438, 0xd704 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x1bc0 }, { 0xa438, 0x1800 }, { 0xa438, 0x1bc4 },
+ { 0xa438, 0x4134 }, { 0xa438, 0xd115 }, { 0xa438, 0xd04f },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d0b }, { 0xa438, 0x1000 },
+ { 0xa438, 0x893a }, { 0xa438, 0x1800 }, { 0xa438, 0x01f2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d0b }, { 0xa438, 0x1000 },
+ { 0xa438, 0x893a }, { 0xa438, 0x1800 }, { 0xa438, 0x01f9 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x86e9 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x606b }, { 0xa438, 0xd701 }, { 0xa438, 0x60b4 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x893a }, { 0xa438, 0x1800 },
+ { 0xa438, 0x0551 }, { 0xa438, 0xd196 }, { 0xa438, 0xd04d },
+ { 0xa438, 0x1000 }, { 0xa438, 0x893a }, { 0xa438, 0x1000 },
{ 0xa438, 0x1cd2 }, { 0xa438, 0xd700 }, { 0xa438, 0x5fba },
- { 0xa438, 0x1800 }, { 0xa438, 0x140a }, { 0xa438, 0x8910 },
- { 0xa438, 0xd704 }, { 0xa438, 0x61a8 }, { 0xa438, 0x8480 },
- { 0xa438, 0x8604 }, { 0xa438, 0x8302 }, { 0xa438, 0x81a0 },
- { 0xa438, 0xd703 }, { 0xa438, 0x4112 }, { 0xa438, 0x0c03 },
- { 0xa438, 0x1502 }, { 0xa438, 0xa990 }, { 0xa438, 0x9503 },
- { 0xa438, 0xb904 }, { 0xa438, 0xf002 }, { 0xa438, 0x0000 },
- { 0xa438, 0x0800 }, { 0xa436, 0xa10e }, { 0xa438, 0x1de8 },
- { 0xa436, 0xa10c }, { 0xa438, 0x1352 }, { 0xa436, 0xa10a },
- { 0xa438, 0x0545 }, { 0xa436, 0xa108 }, { 0xa438, 0x01ed },
- { 0xa436, 0xa106 }, { 0xa438, 0x1bbf }, { 0xa436, 0xa104 },
- { 0xa438, 0x114b }, { 0xa436, 0xa102 }, { 0xa438, 0x14bf },
- { 0xa436, 0xa100 }, { 0xa438, 0x07ce }, { 0xa436, 0xa110 },
- { 0xa438, 0x00ff }, { 0xa436, 0xa016 }, { 0xa438, 0x0020 },
- { 0xa436, 0xa012 }, { 0xa438, 0x1ff8 }, { 0xa436, 0xa014 },
- { 0xa438, 0xd1ce }, { 0xa438, 0x0000 }, { 0xa438, 0x0000 },
+ { 0xa438, 0x8802 }, { 0xa438, 0xcd22 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd05a }, { 0xa438, 0xa501 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd701 }, { 0xa438, 0x5fbd },
+ { 0xa438, 0x8501 }, { 0xa438, 0xa502 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd702 }, { 0xa438, 0x5fbe },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cc8 }, { 0xa438, 0x8502 }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x8a80 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xd40c }, { 0xa438, 0x1000 }, { 0xa438, 0x1cc8 },
+ { 0xa438, 0xd707 }, { 0xa438, 0x428f }, { 0xa438, 0xd700 },
+ { 0xa438, 0x60cf }, { 0xa438, 0x60f1 }, { 0xa438, 0x6113 },
+ { 0xa438, 0x6135 }, { 0xa438, 0x6157 }, { 0xa438, 0xf00b },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf01d }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf01b }, { 0xa438, 0xce06 }, { 0xa438, 0xf019 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf017 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf015 }, { 0xa438, 0xce06 }, { 0xa438, 0xf013 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x60cf }, { 0xa438, 0x60f1 },
+ { 0xa438, 0x6113 }, { 0xa438, 0x6135 }, { 0xa438, 0x6157 },
+ { 0xa438, 0xf00b }, { 0xa438, 0xce02 }, { 0xa438, 0xf00a },
+ { 0xa438, 0xce02 }, { 0xa438, 0xf008 }, { 0xa438, 0xce01 },
+ { 0xa438, 0xf006 }, { 0xa438, 0xce01 }, { 0xa438, 0xf004 },
+ { 0xa438, 0xce01 }, { 0xa438, 0xf002 }, { 0xa438, 0xce01 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 }, { 0xa438, 0xa340 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0xa110 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cef }, { 0xa438, 0x8110 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xa304 },
+ { 0xa438, 0xa440 }, { 0xa438, 0xa8c0 }, { 0xa438, 0xd707 },
+ { 0xa438, 0x40cf }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x8d07 }, { 0xa438, 0x9503 }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa120 }, { 0xa438, 0xa310 }, { 0xa438, 0x0ca0 },
+ { 0xa438, 0x0480 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x05b7 }, { 0xa438, 0x60a4 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407d }, { 0xa438, 0xa308 }, { 0xa438, 0xf002 },
+ { 0xa438, 0x8308 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0x0c60 }, { 0xa438, 0x0340 }, { 0xa438, 0x9503 },
+ { 0xa438, 0xcd23 }, { 0xa438, 0xd162 }, { 0xa438, 0xd048 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x5fba }, { 0xa438, 0x8840 }, { 0xa438, 0xd1c4 },
+ { 0xa438, 0xd045 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0xd706 },
+ { 0xa438, 0x6327 }, { 0xa438, 0xd700 }, { 0xa438, 0x5f3b },
+ { 0xa438, 0x88c0 }, { 0xa438, 0x800a }, { 0xa438, 0x8120 },
+ { 0xa438, 0x8358 }, { 0xa438, 0x8308 }, { 0xa438, 0x84a0 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8360 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xd707 }, { 0xa438, 0x2f7d },
+ { 0xa438, 0x86f7 }, { 0xa438, 0xd17a }, { 0xa438, 0xd05a },
+ { 0xa438, 0xa501 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd701 }, { 0xa438, 0x5fbd }, { 0xa438, 0x8501 },
+ { 0xa438, 0xff8b }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd71f }, { 0xa438, 0x5fb4 }, { 0xa438, 0xb920 },
+ { 0xa438, 0xcd24 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd71f }, { 0xa438, 0x7fb4 }, { 0xa438, 0x9920 },
+ { 0xa438, 0x9a20 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd71f }, { 0xa438, 0x6065 }, { 0xa438, 0x5f94 },
+ { 0xa438, 0xffd9 }, { 0xa438, 0xb820 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd71f }, { 0xa438, 0x7fa5 },
+ { 0xa438, 0x9820 }, { 0xa438, 0x800a }, { 0xa438, 0x8120 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0xa108 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cef }, { 0xa438, 0x8108 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x87b8 }, { 0xa438, 0x6144 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x60bd }, { 0xa438, 0xd707 },
+ { 0xa438, 0x417f }, { 0xa438, 0x4140 }, { 0xa438, 0xf006 },
+ { 0xa438, 0x82fc }, { 0xa438, 0xa201 }, { 0xa438, 0xf007 },
+ { 0xa438, 0xa2fc }, { 0xa438, 0xf005 }, { 0xa438, 0x0cfc },
+ { 0xa438, 0x02bc }, { 0xa438, 0xf002 }, { 0xa438, 0xa2fc },
+ { 0xa438, 0xa304 }, { 0xa438, 0x8880 }, { 0xa438, 0x0cc0 },
+ { 0xa438, 0x0440 }, { 0xa438, 0xcd25 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x87d7 }, { 0xa438, 0x6224 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x605d }, { 0xa438, 0xf004 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x613b }, { 0xa438, 0xf00b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x2969 }, { 0xa438, 0x87d7 },
+ { 0xa438, 0x60eb }, { 0xa438, 0xd707 }, { 0xa438, 0x40bf },
+ { 0xa438, 0x4080 }, { 0xa438, 0x8310 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d15 }, { 0xa438, 0xd700 }, { 0xa438, 0x60cf },
+ { 0xa438, 0x60f1 }, { 0xa438, 0x6113 }, { 0xa438, 0x6135 },
+ { 0xa438, 0x6157 }, { 0xa438, 0xf00b }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf00a }, { 0xa438, 0xce06 }, { 0xa438, 0xf008 },
+ { 0xa438, 0xce06 }, { 0xa438, 0xf006 }, { 0xa438, 0xce06 },
+ { 0xa438, 0xf004 }, { 0xa438, 0xce06 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xce06 }, { 0xa438, 0x1000 }, { 0xa438, 0x1ce7 },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x8c07 },
+ { 0xa438, 0x0c07 }, { 0xa438, 0x0d03 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x87f9 }, { 0xa438, 0x60c4 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x409d }, { 0xa438, 0x8b0f },
+ { 0xa438, 0x8c38 }, { 0xa438, 0xf003 }, { 0xa438, 0xab07 },
+ { 0xa438, 0xac38 }, { 0xa438, 0x0c07 }, { 0xa438, 0x0d03 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xa810 }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa120 }, { 0xa438, 0xd700 }, { 0xa438, 0x2969 },
+ { 0xa438, 0x8807 }, { 0xa438, 0x6064 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x607d }, { 0xa438, 0xa4a0 }, { 0xa438, 0xa605 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd049 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x8819 }, { 0xa438, 0x6164 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x413d }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa120 }, { 0xa438, 0xd704 }, { 0xa438, 0x407b },
+ { 0xa438, 0x8310 }, { 0xa438, 0xf002 }, { 0xa438, 0xa310 },
+ { 0xa438, 0xa403 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd700 },
+ { 0xa438, 0x409a }, { 0xa438, 0xd706 }, { 0xa438, 0x4046 },
+ { 0xa438, 0xf014 }, { 0xa438, 0xd704 }, { 0xa438, 0x6055 },
+ { 0xa438, 0xfff5 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d47 },
+ { 0xa438, 0x800a }, { 0xa438, 0x8120 }, { 0xa438, 0x8310 },
+ { 0xa438, 0xa380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d2b }, { 0xa438, 0xd705 },
+ { 0xa438, 0x5f77 }, { 0xa438, 0x8380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d50 }, { 0xa438, 0xffdd }, { 0xa438, 0x0c03 },
+ { 0xa438, 0x1502 }, { 0xa438, 0x8b0f }, { 0xa438, 0x8c38 },
+ { 0xa438, 0x8d38 }, { 0xa438, 0x9503 }, { 0xa438, 0xcd26 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x63d1 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x8858 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x8855 }, { 0xa438, 0x33a9 }, { 0xa438, 0x884d },
+ { 0xa438, 0xd705 }, { 0xa438, 0x6084 }, { 0xa438, 0xd18a },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf014 }, { 0xa438, 0xd14c },
+ { 0xa438, 0xd04b }, { 0xa438, 0xf011 }, { 0xa438, 0xd705 },
+ { 0xa438, 0x6084 }, { 0xa438, 0xd17a }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf00c }, { 0xa438, 0xd15c }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf009 }, { 0xa438, 0xd1c6 }, { 0xa438, 0xd04b },
+ { 0xa438, 0xf006 }, { 0xa438, 0xd1b7 }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf003 }, { 0xa438, 0xd1c4 }, { 0xa438, 0xd046 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x2969 }, { 0xa438, 0x886b },
+ { 0xa438, 0x6164 }, { 0xa438, 0xd704 }, { 0xa438, 0x413d },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa120 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407b }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x409a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x4048 }, { 0xa438, 0xf014 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x6055 }, { 0xa438, 0xfff5 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0x800a }, { 0xa438, 0x8120 },
+ { 0xa438, 0x8310 }, { 0xa438, 0xa380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd705 }, { 0xa438, 0x5f77 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xffdd },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c07 },
+ { 0xa438, 0x0d01 }, { 0xa438, 0x9503 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x60cf }, { 0xa438, 0x60f1 }, { 0xa438, 0x6113 },
+ { 0xa438, 0x6135 }, { 0xa438, 0x6157 }, { 0xa438, 0xf00b },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf00a }, { 0xa438, 0xce08 },
+ { 0xa438, 0xf008 }, { 0xa438, 0xce08 }, { 0xa438, 0xf006 },
+ { 0xa438, 0xce08 }, { 0xa438, 0xf004 }, { 0xa438, 0xce08 },
+ { 0xa438, 0xf002 }, { 0xa438, 0xce08 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1ce7 }, { 0xa438, 0xa180 }, { 0xa438, 0xcd27 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x6331 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x37c9 }, { 0xa438, 0x88b9 }, { 0xa438, 0x33a9 },
+ { 0xa438, 0x88b1 }, { 0xa438, 0xd705 }, { 0xa438, 0x6084 },
+ { 0xa438, 0xd17a }, { 0xa438, 0xd04a }, { 0xa438, 0xf011 },
+ { 0xa438, 0xd13d }, { 0xa438, 0xd04a }, { 0xa438, 0xf00e },
+ { 0xa438, 0xd705 }, { 0xa438, 0x6084 }, { 0xa438, 0xd1b7 },
+ { 0xa438, 0xd049 }, { 0xa438, 0xf009 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd049 }, { 0xa438, 0xf006 }, { 0xa438, 0xd17a },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf003 }, { 0xa438, 0xd128 },
+ { 0xa438, 0xd044 }, { 0xa438, 0xd13b }, { 0xa438, 0xd055 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x2969 }, { 0xa438, 0x88ce },
+ { 0xa438, 0x6164 }, { 0xa438, 0xd704 }, { 0xa438, 0x413d },
+ { 0xa438, 0xa00a }, { 0xa438, 0xa1a0 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x407b }, { 0xa438, 0x8310 }, { 0xa438, 0xf002 },
+ { 0xa438, 0xa310 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x405b }, { 0xa438, 0xf014 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x6055 }, { 0xa438, 0xfff7 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d47 }, { 0xa438, 0x800a },
+ { 0xa438, 0x81a0 }, { 0xa438, 0x8310 }, { 0xa438, 0xa380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d2b }, { 0xa438, 0xd705 }, { 0xa438, 0x5f77 },
+ { 0xa438, 0x8380 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d50 },
+ { 0xa438, 0xffdf }, { 0xa438, 0xa302 }, { 0xa438, 0xd700 },
+ { 0xa438, 0x2969 }, { 0xa438, 0x0740 }, { 0xa438, 0x6184 },
+ { 0xa438, 0xd704 }, { 0xa438, 0x415d }, { 0xa438, 0xa00a },
+ { 0xa438, 0xa1a0 }, { 0xa438, 0xd704 }, { 0xa438, 0x407b },
+ { 0xa438, 0x8310 }, { 0xa438, 0xf002 }, { 0xa438, 0xa310 },
+ { 0xa438, 0xa302 }, { 0xa438, 0xa403 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x409a }, { 0xa438, 0xd706 },
+ { 0xa438, 0x4048 }, { 0xa438, 0xf014 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x6055 }, { 0xa438, 0xfff5 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1d47 }, { 0xa438, 0x800a }, { 0xa438, 0x81a0 },
+ { 0xa438, 0x8312 }, { 0xa438, 0xa380 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0x1000 }, { 0xa438, 0x1d2b },
+ { 0xa438, 0xd705 }, { 0xa438, 0x5f77 }, { 0xa438, 0x8380 },
+ { 0xa438, 0x1000 }, { 0xa438, 0x1d50 }, { 0xa438, 0xffdc },
+ { 0xa438, 0x0c03 }, { 0xa438, 0x1502 }, { 0xa438, 0x0c0f },
+ { 0xa438, 0x0b02 }, { 0xa438, 0x0c38 }, { 0xa438, 0x0c10 },
+ { 0xa438, 0x9503 }, { 0xa438, 0xcd28 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x6331 }, { 0xa438, 0xd700 }, { 0xa438, 0x37c9 },
+ { 0xa438, 0x8933 }, { 0xa438, 0x33a9 }, { 0xa438, 0x892b },
+ { 0xa438, 0xd705 }, { 0xa438, 0x6084 }, { 0xa438, 0xd199 },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf011 }, { 0xa438, 0xd13d },
+ { 0xa438, 0xd04a }, { 0xa438, 0xf00e }, { 0xa438, 0xd705 },
+ { 0xa438, 0x6084 }, { 0xa438, 0xd17a }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf009 }, { 0xa438, 0xd13d }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf006 }, { 0xa438, 0xd199 }, { 0xa438, 0xd04a },
+ { 0xa438, 0xf003 }, { 0xa438, 0xd128 }, { 0xa438, 0xd044 },
+ { 0xa438, 0x1800 }, { 0xa438, 0x0776 }, { 0xa438, 0xd208 },
+ { 0xa438, 0x0c09 }, { 0xa438, 0x1301 }, { 0xa438, 0x1000 },
+ { 0xa438, 0x1cd2 }, { 0xa438, 0xd701 }, { 0xa438, 0x5fa3 },
+ { 0xa438, 0xb302 }, { 0xa438, 0xd200 }, { 0xa438, 0x0800 },
+ { 0xa438, 0xd705 }, { 0xa438, 0x6064 }, { 0xa438, 0x1800 },
+ { 0xa438, 0x140a }, { 0xa438, 0x8810 }, { 0xa438, 0xd199 },
+ { 0xa438, 0xd04b }, { 0xa438, 0x1000 }, { 0xa438, 0x1cd2 },
+ { 0xa438, 0xd700 }, { 0xa438, 0x5fba }, { 0xa438, 0x1800 },
+ { 0xa438, 0x140a }, { 0xa438, 0x8910 }, { 0xa438, 0xd704 },
+ { 0xa438, 0x61a8 }, { 0xa438, 0x8480 }, { 0xa438, 0x8604 },
+ { 0xa438, 0x8302 }, { 0xa438, 0x81a0 }, { 0xa438, 0xd703 },
+ { 0xa438, 0x4112 }, { 0xa438, 0x0c03 }, { 0xa438, 0x1502 },
+ { 0xa438, 0xa990 }, { 0xa438, 0x9503 }, { 0xa438, 0xb904 },
+ { 0xa438, 0xf002 }, { 0xa438, 0x0000 }, { 0xa438, 0x0800 },
+ { 0xa436, 0xa10e }, { 0xa438, 0x1de8 }, { 0xa436, 0xa10c },
+ { 0xa438, 0x1352 }, { 0xa436, 0xa10a }, { 0xa438, 0x0545 },
+ { 0xa436, 0xa108 }, { 0xa438, 0x01ed }, { 0xa436, 0xa106 },
+ { 0xa438, 0x1bbf }, { 0xa436, 0xa104 }, { 0xa438, 0x114b },
+ { 0xa436, 0xa102 }, { 0xa438, 0x14bf }, { 0xa436, 0xa100 },
+ { 0xa438, 0x07ce }, { 0xa436, 0xa110 }, { 0xa438, 0x00ff },
+ { 0xa436, 0xa016 }, { 0xa438, 0x0020 }, { 0xa436, 0xa012 },
+ { 0xa438, 0x1ff8 }, { 0xa436, 0xa014 }, { 0xa438, 0x0000 },
{ 0xa438, 0x0000 }, { 0xa438, 0x0000 }, { 0xa438, 0x0000 },
- { 0xa438, 0x0000 }, { 0xa438, 0x0000 }, { 0xa436, 0xa164 },
- { 0xa438, 0x07fc }, { 0xa436, 0xa166 }, { 0xa438, 0x143d },
- { 0xa436, 0xa168 }, { 0xa438, 0x3fff }, { 0xa436, 0xa16a },
- { 0xa438, 0x3fff }, { 0xa436, 0xa16c }, { 0xa438, 0x3fff },
- { 0xa436, 0xa16e }, { 0xa438, 0x3fff }, { 0xa436, 0xa170 },
- { 0xa438, 0x3fff }, { 0xa436, 0xa172 }, { 0xa438, 0x3fff },
- { 0xa436, 0xa162 }, { 0xa438, 0x0003 }, { 0xa436, 0xb87c },
- { 0xa438, 0x8994 }, { 0xa436, 0xb87e }, { 0xa438, 0xaf89 },
- { 0xa438, 0xacaf }, { 0xa438, 0x89e4 }, { 0xa438, 0xaf89 },
- { 0xa438, 0xecaf }, { 0xa438, 0x8a04 }, { 0xa438, 0xaf8a },
- { 0xa438, 0x2eaf }, { 0xa438, 0x8a4a }, { 0xa438, 0xaf8d },
- { 0xa438, 0x31af }, { 0xa438, 0x8dc6 }, { 0xa438, 0x1f55 },
- { 0xa438, 0xe18f }, { 0xa438, 0xe3a1 }, { 0xa438, 0x0007 },
- { 0xa438, 0xee86 }, { 0xa438, 0xe900 }, { 0xa438, 0xaf4f },
- { 0xa438, 0x9ead }, { 0xa438, 0x281b }, { 0xa438, 0xe18f },
- { 0xa438, 0xfcef }, { 0xa438, 0x71bf }, { 0xa438, 0x74f6 },
- { 0xa438, 0x027e }, { 0xa438, 0xd2ef }, { 0xa438, 0x641c },
- { 0xa438, 0x670d }, { 0xa438, 0x67ef }, { 0xa438, 0x461f },
- { 0xa438, 0x00bf }, { 0xa438, 0x74f6 }, { 0xa438, 0x027e },
- { 0xa438, 0xdee1 }, { 0xa438, 0x8fe3 }, { 0xa438, 0x0d11 },
- { 0xa438, 0xe58f }, { 0xa438, 0xe313 }, { 0xa438, 0xaeca },
- { 0xa438, 0x028d }, { 0xa438, 0xd1d3 }, { 0xa438, 0x01af },
- { 0xa438, 0x40d1 }, { 0xa438, 0xbf7a }, { 0xa438, 0x6102 },
- { 0xa438, 0x7d44 }, { 0xa438, 0xa100 }, { 0xa438, 0x09e0 },
- { 0xa438, 0x8ffa }, { 0xa438, 0xe18f }, { 0xa438, 0xfbaf },
- { 0xa438, 0x683d }, { 0xa438, 0x027f }, { 0xa438, 0xa9af },
- { 0xa438, 0x682c }, { 0xa438, 0xbf8e }, { 0xa438, 0x4102 },
- { 0xa438, 0x7d44 }, { 0xa438, 0xe58f }, { 0xa438, 0xecbf },
- { 0xa438, 0x74cc }, { 0xa438, 0x027d }, { 0xa438, 0x44e3 },
- { 0xa438, 0x8fed }, { 0xa438, 0x0d31 }, { 0xa438, 0xf63f },
- { 0xa438, 0x0d11 }, { 0xa438, 0xf62f }, { 0xa438, 0x1b13 },
- { 0xa438, 0xad2f }, { 0xa438, 0x06bf }, { 0xa438, 0x8e41 },
- { 0xa438, 0x027c }, { 0xa438, 0xf9d1 }, { 0xa438, 0x01af },
- { 0xa438, 0x5974 }, { 0xa438, 0xee88 }, { 0xa438, 0x8600 },
- { 0xa438, 0xe08f }, { 0xa438, 0xebad }, { 0xa438, 0x200b },
- { 0xa438, 0xe18f }, { 0xa438, 0xecbf }, { 0xa438, 0x8e41 },
- { 0xa438, 0x027d }, { 0xa438, 0x25ae }, { 0xa438, 0x04ee },
- { 0xa438, 0x8feb }, { 0xa438, 0x01af }, { 0xa438, 0x5945 },
- { 0xa438, 0xad28 }, { 0xa438, 0x2ce0 }, { 0xa438, 0x8fea },
- { 0xa438, 0xa000 }, { 0xa438, 0x0502 }, { 0xa438, 0x8af0 },
- { 0xa438, 0xae1e }, { 0xa438, 0xa001 }, { 0xa438, 0x0502 },
- { 0xa438, 0x8b9f }, { 0xa438, 0xae16 }, { 0xa438, 0xa002 },
- { 0xa438, 0x0502 }, { 0xa438, 0x8c0f }, { 0xa438, 0xae0e },
- { 0xa438, 0xa003 }, { 0xa438, 0x0502 }, { 0xa438, 0x8c95 },
- { 0xa438, 0xae06 }, { 0xa438, 0xa004 }, { 0xa438, 0x0302 },
- { 0xa438, 0x8d08 }, { 0xa438, 0xaf63 }, { 0xa438, 0x8902 },
- { 0xa438, 0x8a7f }, { 0xa438, 0xaf63 }, { 0xa438, 0x81f8 },
- { 0xa438, 0xef49 }, { 0xa438, 0xf8e0 }, { 0xa438, 0x8015 },
- { 0xa438, 0xad21 }, { 0xa438, 0x19bf }, { 0xa438, 0x7bd8 },
- { 0xa438, 0x027c }, { 0xa438, 0xf9bf }, { 0xa438, 0x7bf3 },
- { 0xa438, 0x027d }, { 0xa438, 0x44bf }, { 0xa438, 0x7bf6 },
- { 0xa438, 0x027c }, { 0xa438, 0xf902 }, { 0xa438, 0x638e },
- { 0xa438, 0xee8f }, { 0xa438, 0xea00 }, { 0xa438, 0xe080 },
- { 0xa438, 0x16ad }, { 0xa438, 0x233d }, { 0xa438, 0xbf7b },
- { 0xa438, 0xf302 }, { 0xa438, 0x7d44 }, { 0xa438, 0xbf7a },
- { 0xa438, 0x9402 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf8e },
- { 0xa438, 0x4402 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf7a },
- { 0xa438, 0xa602 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf7a },
- { 0xa438, 0xa302 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf7a },
- { 0xa438, 0xa902 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf7a },
- { 0xa438, 0xac02 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf8e },
- { 0xa438, 0x4702 }, { 0xa438, 0x7cf9 }, { 0xa438, 0xbf8e },
- { 0xa438, 0x4a02 }, { 0xa438, 0x7cf9 }, { 0xa438, 0x0263 },
- { 0xa438, 0x8eee }, { 0xa438, 0x8fea }, { 0xa438, 0x00bf },
- { 0xa438, 0x7c02 }, { 0xa438, 0x027c }, { 0xa438, 0xf9fc },
- { 0xa438, 0xef94 }, { 0xa438, 0xfc04 }, { 0xa438, 0xf8f9 },
- { 0xa438, 0xfbef }, { 0xa438, 0x79fb }, { 0xa438, 0xe080 },
- { 0xa438, 0x15ac }, { 0xa438, 0x2103 }, { 0xa438, 0xaf8b },
- { 0xa438, 0x70ee }, { 0xa438, 0x8888 }, { 0xa438, 0x00ee },
- { 0xa438, 0x888a }, { 0xa438, 0x00ee }, { 0xa438, 0x888b },
- { 0xa438, 0x00bf }, { 0xa438, 0x7bd8 }, { 0xa438, 0x027d },
- { 0xa438, 0x02bf }, { 0xa438, 0x6000 }, { 0xa438, 0xd788 },
- { 0xa438, 0x881f }, { 0xa438, 0x44d4 }, { 0xa438, 0x000c },
- { 0xa438, 0x0273 }, { 0xa438, 0x3b02 }, { 0xa438, 0x7fa9 },
- { 0xa438, 0xac28 }, { 0xa438, 0x05ac }, { 0xa438, 0x290d },
- { 0xa438, 0xae18 }, { 0xa438, 0xe188 }, { 0xa438, 0x98bf },
- { 0xa438, 0x7be1 }, { 0xa438, 0x027d }, { 0xa438, 0x25ae },
- { 0xa438, 0x18e1 }, { 0xa438, 0x8898 }, { 0xa438, 0x0d11 },
- { 0xa438, 0xbf7b }, { 0xa438, 0xe102 }, { 0xa438, 0x7d25 },
- { 0xa438, 0xae0b }, { 0xa438, 0xe188 }, { 0xa438, 0x980d },
- { 0xa438, 0x12bf }, { 0xa438, 0x7be1 }, { 0xa438, 0x027d },
- { 0xa438, 0x25bf }, { 0xa438, 0x88a0 }, { 0xa438, 0xda19 },
- { 0xa438, 0xdb19 }, { 0xa438, 0xd819 }, { 0xa438, 0xd91f },
- { 0xa438, 0x77bf }, { 0xa438, 0x88b1 }, { 0xa438, 0xde19 },
- { 0xa438, 0xdf19 }, { 0xa438, 0xdc19 }, { 0xa438, 0xdd19 },
- { 0xa438, 0x17a7 }, { 0xa438, 0x0004 }, { 0xa438, 0xf302 },
- { 0xa438, 0x63cd }, { 0xa438, 0xee8f }, { 0xa438, 0xea01 },
- { 0xa438, 0xe080 }, { 0xa438, 0x16ad }, { 0xa438, 0x2319 },
- { 0xa438, 0xee88 }, { 0xa438, 0x8800 }, { 0xa438, 0xee88 },
- { 0xa438, 0x8a00 }, { 0xa438, 0xee88 }, { 0xa438, 0x8b00 },
- { 0xa438, 0xbf8e }, { 0xa438, 0x4402 }, { 0xa438, 0x7d02 },
- { 0xa438, 0x0263 }, { 0xa438, 0xcdee }, { 0xa438, 0x8fea },
- { 0xa438, 0x0102 }, { 0xa438, 0x70de }, { 0xa438, 0xbf7c },
- { 0xa438, 0x0202 }, { 0xa438, 0x7d02 }, { 0xa438, 0xffef },
- { 0xa438, 0x97ff }, { 0xa438, 0xfdfc }, { 0xa438, 0x04f8 },
- { 0xa438, 0xf9fa }, { 0xa438, 0xef69 }, { 0xa438, 0xfae0 },
- { 0xa438, 0x888a }, { 0xa438, 0xe188 }, { 0xa438, 0x8b14 },
- { 0xa438, 0xe488 }, { 0xa438, 0x8ae5 }, { 0xa438, 0x888b },
- { 0xa438, 0xbf88 }, { 0xa438, 0x94d8 }, { 0xa438, 0x19d9 },
- { 0xa438, 0xef64 }, { 0xa438, 0xe088 }, { 0xa438, 0x8ae1 },
- { 0xa438, 0x888b }, { 0xa438, 0x1b46 }, { 0xa438, 0x9f30 },
- { 0xa438, 0x1f44 }, { 0xa438, 0xe488 }, { 0xa438, 0x8ae5 },
- { 0xa438, 0x888b }, { 0xa438, 0xe080 }, { 0xa438, 0x15ad },
- { 0xa438, 0x211a }, { 0xa438, 0x0260 }, { 0xa438, 0xece0 },
- { 0xa438, 0x8016 }, { 0xa438, 0xad23 }, { 0xa438, 0x1602 },
- { 0xa438, 0x7c86 }, { 0xa438, 0xef47 }, { 0xa438, 0xe48f },
- { 0xa438, 0xe9e5 }, { 0xa438, 0x8fe8 }, { 0xa438, 0xee8f },
- { 0xa438, 0xea02 }, { 0xa438, 0xae0b }, { 0xa438, 0x028c },
- { 0xa438, 0x2eae }, { 0xa438, 0x0602 }, { 0xa438, 0x8bfe },
- { 0xa438, 0x0270 }, { 0xa438, 0xdefe }, { 0xa438, 0xef96 },
- { 0xa438, 0xfefd }, { 0xa438, 0xfc04 }, { 0xa438, 0xf8e1 },
- { 0xa438, 0x8888 }, { 0xa438, 0x11e5 }, { 0xa438, 0x8888 },
- { 0xa438, 0xad2a }, { 0xa438, 0x04ee }, { 0xa438, 0x8888 },
- { 0xa438, 0x00fc }, { 0xa438, 0x04f8 }, { 0xa438, 0xfafb },
- { 0xa438, 0xe08f }, { 0xa438, 0xe9e1 }, { 0xa438, 0x8fe8 },
- { 0xa438, 0xef64 }, { 0xa438, 0x1f00 }, { 0xa438, 0xe18f },
- { 0xa438, 0xe6ef }, { 0xa438, 0x7402 }, { 0xa438, 0x7ca1 },
- { 0xa438, 0xad50 }, { 0xa438, 0x0302 }, { 0xa438, 0x8c2e },
- { 0xa438, 0xfffe }, { 0xa438, 0xfc04 }, { 0xa438, 0xf8fa },
- { 0xa438, 0xef69 }, { 0xa438, 0xfbbf }, { 0xa438, 0x7bf3 },
- { 0xa438, 0x027d }, { 0xa438, 0x44ac }, { 0xa438, 0x284c },
- { 0xa438, 0x0264 }, { 0xa438, 0x1cbf }, { 0xa438, 0x8e47 },
- { 0xa438, 0x027d }, { 0xa438, 0x02bf }, { 0xa438, 0x8e4a },
- { 0xa438, 0x027d }, { 0xa438, 0x02d1 }, { 0xa438, 0x43b1 },
- { 0xa438, 0xfebf }, { 0xa438, 0x7aa6 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aa3 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aa9 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aac }, { 0xa438, 0x027d },
- { 0xa438, 0x02d1 }, { 0xa438, 0x80e0 }, { 0xa438, 0x8888 },
- { 0xa438, 0x100e }, { 0xa438, 0x11b0 }, { 0xa438, 0xfcbf },
- { 0xa438, 0x7a94 }, { 0xa438, 0x027d }, { 0xa438, 0x2502 },
- { 0xa438, 0x7c86 }, { 0xa438, 0xef47 }, { 0xa438, 0xe48f },
- { 0xa438, 0xe9e5 }, { 0xa438, 0x8fe8 }, { 0xa438, 0xee8f },
- { 0xa438, 0xea03 }, { 0xa438, 0xae07 }, { 0xa438, 0xee8f },
- { 0xa438, 0xea01 }, { 0xa438, 0x0270 }, { 0xa438, 0xdeff },
- { 0xa438, 0xef96 }, { 0xa438, 0xfefc }, { 0xa438, 0x04f8 },
- { 0xa438, 0xf9fa }, { 0xa438, 0xfbef }, { 0xa438, 0x79fb },
- { 0xa438, 0xbf7a }, { 0xa438, 0x9402 }, { 0xa438, 0x7d44 },
- { 0xa438, 0xef21 }, { 0xa438, 0xbf7a }, { 0xa438, 0xb802 },
- { 0xa438, 0x7d44 }, { 0xa438, 0x1f21 }, { 0xa438, 0x9e19 },
- { 0xa438, 0xe08f }, { 0xa438, 0xe9e1 }, { 0xa438, 0x8fe8 },
- { 0xa438, 0xef64 }, { 0xa438, 0x1f00 }, { 0xa438, 0xe18f },
- { 0xa438, 0xe4ef }, { 0xa438, 0x7402 }, { 0xa438, 0x7ca1 },
- { 0xa438, 0xad50 }, { 0xa438, 0x3dee }, { 0xa438, 0x8fe7 },
- { 0xa438, 0x01bf }, { 0xa438, 0x7a94 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aa6 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aa3 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aa9 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x7aac }, { 0xa438, 0x027d },
- { 0xa438, 0x02bf }, { 0xa438, 0x8e47 }, { 0xa438, 0x027c },
- { 0xa438, 0xf9bf }, { 0xa438, 0x8e4a }, { 0xa438, 0x027c },
- { 0xa438, 0xf902 }, { 0xa438, 0x7c86 }, { 0xa438, 0xef47 },
+ { 0xa438, 0x0000 }, { 0xa438, 0x0000 }, { 0xa438, 0x0000 },
+ { 0xa438, 0x0000 }, { 0xa436, 0xa164 }, { 0xa438, 0x143d },
+ { 0xa436, 0xa166 }, { 0xa438, 0x14d7 }, { 0xa436, 0xa168 },
+ { 0xa438, 0x3fff }, { 0xa436, 0xa16a }, { 0xa438, 0x3fff },
+ { 0xa436, 0xa16c }, { 0xa438, 0x3fff }, { 0xa436, 0xa16e },
+ { 0xa438, 0x3fff }, { 0xa436, 0xa170 }, { 0xa438, 0x3fff },
+ { 0xa436, 0xa172 }, { 0xa438, 0x3fff }, { 0xa436, 0xa162 },
+ { 0xa438, 0x0003 }, { 0xa436, 0xb87c }, { 0xa438, 0x8994 },
+ { 0xa436, 0xb87e }, { 0xa438, 0xaf89 }, { 0xa438, 0xacaf },
+ { 0xa438, 0x89e8 }, { 0xa438, 0xaf89 }, { 0xa438, 0xf0af },
+ { 0xa438, 0x8a08 }, { 0xa438, 0xaf8a }, { 0xa438, 0x32af },
+ { 0xa438, 0x8a4e }, { 0xa438, 0xaf8d }, { 0xa438, 0x44af },
+ { 0xa438, 0x8de9 }, { 0xa438, 0x1f55 }, { 0xa438, 0xe18f },
+ { 0xa438, 0xe3a1 }, { 0xa438, 0x000b }, { 0xa438, 0xee8f },
+ { 0xa438, 0xd700 }, { 0xa438, 0xee86 }, { 0xa438, 0xe900 },
+ { 0xa438, 0xaf4f }, { 0xa438, 0x9ead }, { 0xa438, 0x281b },
+ { 0xa438, 0xe18f }, { 0xa438, 0xfcef }, { 0xa438, 0x71bf },
+ { 0xa438, 0x74f6 }, { 0xa438, 0x027e }, { 0xa438, 0xd2ef },
+ { 0xa438, 0x641c }, { 0xa438, 0x670d }, { 0xa438, 0x67ef },
+ { 0xa438, 0x461f }, { 0xa438, 0x00bf }, { 0xa438, 0x74f6 },
+ { 0xa438, 0x027e }, { 0xa438, 0xdee1 }, { 0xa438, 0x8fe3 },
+ { 0xa438, 0x0d11 }, { 0xa438, 0xe58f }, { 0xa438, 0xe313 },
+ { 0xa438, 0xaec6 }, { 0xa438, 0x028d }, { 0xa438, 0xfbd3 },
+ { 0xa438, 0x01af }, { 0xa438, 0x40d1 }, { 0xa438, 0xbf7a },
+ { 0xa438, 0x6102 }, { 0xa438, 0x7d44 }, { 0xa438, 0xa100 },
+ { 0xa438, 0x09e0 }, { 0xa438, 0x8ffa }, { 0xa438, 0xe18f },
+ { 0xa438, 0xfbaf }, { 0xa438, 0x683d }, { 0xa438, 0x027f },
+ { 0xa438, 0xa9af }, { 0xa438, 0x682c }, { 0xa438, 0xbf8e },
+ { 0xa438, 0x6b02 }, { 0xa438, 0x7d44 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xecbf }, { 0xa438, 0x74cc }, { 0xa438, 0x027d },
+ { 0xa438, 0x44e3 }, { 0xa438, 0x8fed }, { 0xa438, 0x0d31 },
+ { 0xa438, 0xf63f }, { 0xa438, 0x0d11 }, { 0xa438, 0xf62f },
+ { 0xa438, 0x1b13 }, { 0xa438, 0xad2f }, { 0xa438, 0x06bf },
+ { 0xa438, 0x8e6b }, { 0xa438, 0x027c }, { 0xa438, 0xf9d1 },
+ { 0xa438, 0x01af }, { 0xa438, 0x5974 }, { 0xa438, 0xee88 },
+ { 0xa438, 0x8600 }, { 0xa438, 0xe08f }, { 0xa438, 0xebad },
+ { 0xa438, 0x200b }, { 0xa438, 0xe18f }, { 0xa438, 0xecbf },
+ { 0xa438, 0x8e6b }, { 0xa438, 0x027d }, { 0xa438, 0x25ae },
+ { 0xa438, 0x04ee }, { 0xa438, 0x8feb }, { 0xa438, 0x01af },
+ { 0xa438, 0x5945 }, { 0xa438, 0xad28 }, { 0xa438, 0x2ce0 },
+ { 0xa438, 0x8fea }, { 0xa438, 0xa000 }, { 0xa438, 0x0502 },
+ { 0xa438, 0x8af4 }, { 0xa438, 0xae1e }, { 0xa438, 0xa001 },
+ { 0xa438, 0x0502 }, { 0xa438, 0x8ba3 }, { 0xa438, 0xae16 },
+ { 0xa438, 0xa002 }, { 0xa438, 0x0502 }, { 0xa438, 0x8c13 },
+ { 0xa438, 0xae0e }, { 0xa438, 0xa003 }, { 0xa438, 0x0502 },
+ { 0xa438, 0x8c9f }, { 0xa438, 0xae06 }, { 0xa438, 0xa004 },
+ { 0xa438, 0x0302 }, { 0xa438, 0x8d1b }, { 0xa438, 0xaf63 },
+ { 0xa438, 0x8902 }, { 0xa438, 0x8a83 }, { 0xa438, 0xaf63 },
+ { 0xa438, 0x81f8 }, { 0xa438, 0xef49 }, { 0xa438, 0xf8e0 },
+ { 0xa438, 0x8015 }, { 0xa438, 0xad21 }, { 0xa438, 0x19bf },
+ { 0xa438, 0x7bd8 }, { 0xa438, 0x027c }, { 0xa438, 0xf9bf },
+ { 0xa438, 0x7bf3 }, { 0xa438, 0x027d }, { 0xa438, 0x44bf },
+ { 0xa438, 0x7bf6 }, { 0xa438, 0x027c }, { 0xa438, 0xf902 },
+ { 0xa438, 0x638e }, { 0xa438, 0xee8f }, { 0xa438, 0xea00 },
+ { 0xa438, 0xe080 }, { 0xa438, 0x16ad }, { 0xa438, 0x233d },
+ { 0xa438, 0xbf7b }, { 0xa438, 0xf302 }, { 0xa438, 0x7d44 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0x9402 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf8e }, { 0xa438, 0x6e02 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa602 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa302 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa902 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xac02 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf8e }, { 0xa438, 0x7102 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf8e }, { 0xa438, 0x7402 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0x0263 }, { 0xa438, 0x8eee }, { 0xa438, 0x8fea },
+ { 0xa438, 0x00bf }, { 0xa438, 0x7c02 }, { 0xa438, 0x027c },
+ { 0xa438, 0xf9fc }, { 0xa438, 0xef94 }, { 0xa438, 0xfc04 },
+ { 0xa438, 0xf8f9 }, { 0xa438, 0xfbef }, { 0xa438, 0x79fb },
+ { 0xa438, 0xe080 }, { 0xa438, 0x15ac }, { 0xa438, 0x2103 },
+ { 0xa438, 0xaf8b }, { 0xa438, 0x74ee }, { 0xa438, 0x8888 },
+ { 0xa438, 0x00ee }, { 0xa438, 0x888a }, { 0xa438, 0x00ee },
+ { 0xa438, 0x888b }, { 0xa438, 0x00bf }, { 0xa438, 0x7bd8 },
+ { 0xa438, 0x027d }, { 0xa438, 0x02bf }, { 0xa438, 0x6000 },
+ { 0xa438, 0xd788 }, { 0xa438, 0x881f }, { 0xa438, 0x44d4 },
+ { 0xa438, 0x000c }, { 0xa438, 0x0273 }, { 0xa438, 0x3b02 },
+ { 0xa438, 0x7fa9 }, { 0xa438, 0xac28 }, { 0xa438, 0x05ac },
+ { 0xa438, 0x290d }, { 0xa438, 0xae18 }, { 0xa438, 0xe188 },
+ { 0xa438, 0x98bf }, { 0xa438, 0x7be1 }, { 0xa438, 0x027d },
+ { 0xa438, 0x25ae }, { 0xa438, 0x18e1 }, { 0xa438, 0x8898 },
+ { 0xa438, 0x0d11 }, { 0xa438, 0xbf7b }, { 0xa438, 0xe102 },
+ { 0xa438, 0x7d25 }, { 0xa438, 0xae0b }, { 0xa438, 0xe188 },
+ { 0xa438, 0x980d }, { 0xa438, 0x12bf }, { 0xa438, 0x7be1 },
+ { 0xa438, 0x027d }, { 0xa438, 0x25bf }, { 0xa438, 0x88a0 },
+ { 0xa438, 0xda19 }, { 0xa438, 0xdb19 }, { 0xa438, 0xd819 },
+ { 0xa438, 0xd91f }, { 0xa438, 0x77bf }, { 0xa438, 0x88b1 },
+ { 0xa438, 0xde19 }, { 0xa438, 0xdf19 }, { 0xa438, 0xdc19 },
+ { 0xa438, 0xdd19 }, { 0xa438, 0x17a7 }, { 0xa438, 0x0004 },
+ { 0xa438, 0xf302 }, { 0xa438, 0x63cd }, { 0xa438, 0xee8f },
+ { 0xa438, 0xea01 }, { 0xa438, 0xe080 }, { 0xa438, 0x16ad },
+ { 0xa438, 0x2319 }, { 0xa438, 0xee88 }, { 0xa438, 0x8800 },
+ { 0xa438, 0xee88 }, { 0xa438, 0x8a00 }, { 0xa438, 0xee88 },
+ { 0xa438, 0x8b00 }, { 0xa438, 0xbf8e }, { 0xa438, 0x6e02 },
+ { 0xa438, 0x7d02 }, { 0xa438, 0x0263 }, { 0xa438, 0xcdee },
+ { 0xa438, 0x8fea }, { 0xa438, 0x0102 }, { 0xa438, 0x70de },
+ { 0xa438, 0xbf7c }, { 0xa438, 0x0202 }, { 0xa438, 0x7d02 },
+ { 0xa438, 0xffef }, { 0xa438, 0x97ff }, { 0xa438, 0xfdfc },
+ { 0xa438, 0x04f8 }, { 0xa438, 0xf9fa }, { 0xa438, 0xef69 },
+ { 0xa438, 0xfae0 }, { 0xa438, 0x888a }, { 0xa438, 0xe188 },
+ { 0xa438, 0x8b14 }, { 0xa438, 0xe488 }, { 0xa438, 0x8ae5 },
+ { 0xa438, 0x888b }, { 0xa438, 0xbf88 }, { 0xa438, 0x94d8 },
+ { 0xa438, 0x19d9 }, { 0xa438, 0xef64 }, { 0xa438, 0xe088 },
+ { 0xa438, 0x8ae1 }, { 0xa438, 0x888b }, { 0xa438, 0x1b46 },
+ { 0xa438, 0x9f30 }, { 0xa438, 0x1f44 }, { 0xa438, 0xe488 },
+ { 0xa438, 0x8ae5 }, { 0xa438, 0x888b }, { 0xa438, 0xe080 },
+ { 0xa438, 0x15ad }, { 0xa438, 0x211a }, { 0xa438, 0x0260 },
+ { 0xa438, 0xece0 }, { 0xa438, 0x8016 }, { 0xa438, 0xad23 },
+ { 0xa438, 0x1602 }, { 0xa438, 0x7c86 }, { 0xa438, 0xef47 },
+ { 0xa438, 0xe48f }, { 0xa438, 0xe9e5 }, { 0xa438, 0x8fe8 },
+ { 0xa438, 0xee8f }, { 0xa438, 0xea02 }, { 0xa438, 0xae0b },
+ { 0xa438, 0x028c }, { 0xa438, 0x32ae }, { 0xa438, 0x0602 },
+ { 0xa438, 0x8c02 }, { 0xa438, 0x0270 }, { 0xa438, 0xdefe },
+ { 0xa438, 0xef96 }, { 0xa438, 0xfefd }, { 0xa438, 0xfc04 },
+ { 0xa438, 0xf8e1 }, { 0xa438, 0x8888 }, { 0xa438, 0x11e5 },
+ { 0xa438, 0x8888 }, { 0xa438, 0xad2a }, { 0xa438, 0x04ee },
+ { 0xa438, 0x8888 }, { 0xa438, 0x00fc }, { 0xa438, 0x04f8 },
+ { 0xa438, 0xfafb }, { 0xa438, 0xe08f }, { 0xa438, 0xe9e1 },
+ { 0xa438, 0x8fe8 }, { 0xa438, 0xef64 }, { 0xa438, 0x1f00 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xe6ef }, { 0xa438, 0x7402 },
+ { 0xa438, 0x7ca1 }, { 0xa438, 0xad50 }, { 0xa438, 0x0302 },
+ { 0xa438, 0x8c32 }, { 0xa438, 0xfffe }, { 0xa438, 0xfc04 },
+ { 0xa438, 0xf8fa }, { 0xa438, 0xef69 }, { 0xa438, 0xfbe0 },
+ { 0xa438, 0x8fd6 }, { 0xa438, 0xac20 }, { 0xa438, 0x55bf },
+ { 0xa438, 0x7bf3 }, { 0xa438, 0x027d }, { 0xa438, 0x44ac },
+ { 0xa438, 0x284c }, { 0xa438, 0x0264 }, { 0xa438, 0x1cbf },
+ { 0xa438, 0x8e71 }, { 0xa438, 0x027d }, { 0xa438, 0x02bf },
+ { 0xa438, 0x8e74 }, { 0xa438, 0x027d }, { 0xa438, 0x02d1 },
+ { 0xa438, 0x43b1 }, { 0xa438, 0xfebf }, { 0xa438, 0x7aa6 },
+ { 0xa438, 0x027c }, { 0xa438, 0xf9bf }, { 0xa438, 0x7aa3 },
+ { 0xa438, 0x027c }, { 0xa438, 0xf9bf }, { 0xa438, 0x7aa9 },
+ { 0xa438, 0x027c }, { 0xa438, 0xf9bf }, { 0xa438, 0x7aac },
+ { 0xa438, 0x027d }, { 0xa438, 0x02d1 }, { 0xa438, 0x80e0 },
+ { 0xa438, 0x8888 }, { 0xa438, 0x100e }, { 0xa438, 0x11b0 },
+ { 0xa438, 0xfcbf }, { 0xa438, 0x7a94 }, { 0xa438, 0x027d },
+ { 0xa438, 0x2502 }, { 0xa438, 0x7c86 }, { 0xa438, 0xef47 },
{ 0xa438, 0xe48f }, { 0xa438, 0xe9e5 }, { 0xa438, 0x8fe8 },
- { 0xa438, 0xee8f }, { 0xa438, 0xea04 }, { 0xa438, 0xffef },
- { 0xa438, 0x97ff }, { 0xa438, 0xfefd }, { 0xa438, 0xfc04 },
- { 0xa438, 0xf8fa }, { 0xa438, 0xfbe0 }, { 0xa438, 0x8fe9 },
- { 0xa438, 0xe18f }, { 0xa438, 0xe8ef }, { 0xa438, 0x641f },
- { 0xa438, 0x00e1 }, { 0xa438, 0x8fe5 }, { 0xa438, 0xef74 },
- { 0xa438, 0x027c }, { 0xa438, 0xa1ad }, { 0xa438, 0x500d },
- { 0xa438, 0x0263 }, { 0xa438, 0x8e02 }, { 0xa438, 0x8bfe },
+ { 0xa438, 0xee8f }, { 0xa438, 0xea03 }, { 0xa438, 0xae07 },
{ 0xa438, 0xee8f }, { 0xa438, 0xea01 }, { 0xa438, 0x0270 },
- { 0xa438, 0xdeff }, { 0xa438, 0xfefc }, { 0xa438, 0x04e3 },
- { 0xa438, 0x8fd8 }, { 0xa438, 0xe787 }, { 0xa438, 0x75e4 },
- { 0xa438, 0x8fe1 }, { 0xa438, 0xe58f }, { 0xa438, 0xe2bf },
- { 0xa438, 0x8fd9 }, { 0xa438, 0xef32 }, { 0xa438, 0x0c31 },
- { 0xa438, 0x1a93 }, { 0xa438, 0xdc19 }, { 0xa438, 0xdd02 },
- { 0xa438, 0x7fa9 }, { 0xa438, 0xac2a }, { 0xa438, 0x18e0 },
- { 0xa438, 0x8fe1 }, { 0xa438, 0xe18f }, { 0xa438, 0xe2ef },
- { 0xa438, 0x74e1 }, { 0xa438, 0x8775 }, { 0xa438, 0x1f00 },
- { 0xa438, 0xef64 }, { 0xa438, 0xe18f }, { 0xa438, 0xd8e5 },
- { 0xa438, 0x8775 }, { 0xa438, 0xaf4d }, { 0xa438, 0x72bf },
- { 0xa438, 0x7b3c }, { 0xa438, 0xef32 }, { 0xa438, 0x4b03 },
- { 0xa438, 0x1a93 }, { 0xa438, 0x027d }, { 0xa438, 0x44ef },
- { 0xa438, 0x64e1 }, { 0xa438, 0x8fff }, { 0xa438, 0x1f00 },
- { 0xa438, 0xef74 }, { 0xa438, 0x1b67 }, { 0xa438, 0xac4f },
- { 0xa438, 0xcee0 }, { 0xa438, 0x8ffd }, { 0xa438, 0xe18f },
- { 0xa438, 0xfeef }, { 0xa438, 0x64e0 }, { 0xa438, 0x8fe1 },
- { 0xa438, 0xe18f }, { 0xa438, 0xe2ef }, { 0xa438, 0x7402 },
- { 0xa438, 0x7c53 }, { 0xa438, 0xac50 }, { 0xa438, 0x02ae },
- { 0xa438, 0xb6e1 }, { 0xa438, 0x8775 }, { 0xa438, 0x1f00 },
- { 0xa438, 0xef64 }, { 0xa438, 0xe18f }, { 0xa438, 0xfcef },
- { 0xa438, 0x711c }, { 0xa438, 0x670d }, { 0xa438, 0x67ef },
- { 0xa438, 0x46e5 }, { 0xa438, 0x8775 }, { 0xa438, 0xef32 },
- { 0xa438, 0xd101 }, { 0xa438, 0xa300 }, { 0xa438, 0x02ae },
- { 0xa438, 0x050c }, { 0xa438, 0x1183 }, { 0xa438, 0xaef6 },
- { 0xa438, 0xe08f }, { 0xa438, 0xe31e }, { 0xa438, 0x10e5 },
- { 0xa438, 0x8fe3 }, { 0xa438, 0xae89 }, { 0xa438, 0xe287 },
- { 0xa438, 0x75e6 }, { 0xa438, 0x8fd8 }, { 0xa438, 0x1f22 },
- { 0xa438, 0xaf4d }, { 0xa438, 0x42f8 }, { 0xa438, 0xf9ef },
- { 0xa438, 0x59fa }, { 0xa438, 0xfbbf }, { 0xa438, 0x8fee },
- { 0xa438, 0x027f }, { 0xa438, 0xa90d }, { 0xa438, 0x1149 },
- { 0xa438, 0x041a }, { 0xa438, 0x91d7 }, { 0xa438, 0x8df3 },
- { 0xa438, 0xd68e }, { 0xa438, 0x2302 }, { 0xa438, 0x72aa },
- { 0xa438, 0xfffe }, { 0xa438, 0xef95 }, { 0xa438, 0xfdfc },
- { 0xa438, 0x0400 }, { 0xa438, 0x7591 }, { 0xa438, 0x0275 },
- { 0xa438, 0x4404 }, { 0xa438, 0x758e }, { 0xa438, 0x2675 },
- { 0xa438, 0x4100 }, { 0xa438, 0x8e26 }, { 0xa438, 0x028e },
- { 0xa438, 0x2304 }, { 0xa438, 0x759d }, { 0xa438, 0x2675 },
- { 0xa438, 0x4700 }, { 0xa438, 0x8e32 }, { 0xa438, 0x028e },
- { 0xa438, 0x2f04 }, { 0xa438, 0x8e2c }, { 0xa438, 0x268e },
- { 0xa438, 0x2900 }, { 0xa438, 0x8e3e }, { 0xa438, 0x028e },
- { 0xa438, 0x3b04 }, { 0xa438, 0x8e38 }, { 0xa438, 0x268e },
- { 0xa438, 0x35fe }, { 0xa438, 0xad96 }, { 0xa438, 0xdcad },
- { 0xa438, 0x96ba }, { 0xa438, 0xad96 }, { 0xa438, 0x98ad },
- { 0xa438, 0x9676 }, { 0xa438, 0xad98 }, { 0xa438, 0x54ad },
- { 0xa438, 0x9876 }, { 0xa438, 0xae38 }, { 0xa438, 0x54ae },
- { 0xa438, 0x38fe }, { 0xa438, 0xae3a }, { 0xa438, 0xdcae },
- { 0xa438, 0x3abb }, { 0xa438, 0xbf14 }, { 0xa438, 0x99bd },
- { 0xa438, 0xe0cc }, { 0xa438, 0xbdc8 }, { 0xa438, 0xddbd },
- { 0xa438, 0xc800 }, { 0xa436, 0xb85e }, { 0xa438, 0x4f9a },
- { 0xa436, 0xb860 }, { 0xa438, 0x40cf }, { 0xa436, 0xb862 },
- { 0xa438, 0x6829 }, { 0xa436, 0xb864 }, { 0xa438, 0x5972 },
- { 0xa436, 0xb886 }, { 0xa438, 0x5941 }, { 0xa436, 0xb888 },
- { 0xa438, 0x636b }, { 0xa436, 0xb88a }, { 0xa438, 0x4d6b },
- { 0xa436, 0xb88c }, { 0xa438, 0x4d40 }, { 0xa436, 0xb838 },
- { 0xa438, 0x00ff }, { 0xb820, 0x0010 }, { 0xa436, 0x8608 },
- { 0xa438, 0xaf86 }, { 0xa438, 0xdaaf }, { 0xa438, 0x894c },
- { 0xa438, 0xaf8a }, { 0xa438, 0xf8af }, { 0xa438, 0x8bf3 },
- { 0xa438, 0xaf8b }, { 0xa438, 0xf3af }, { 0xa438, 0x8bf3 },
- { 0xa438, 0xaf8b }, { 0xa438, 0xf3af }, { 0xa438, 0x8bf3 },
- { 0xa438, 0x006f }, { 0xa438, 0x4a03 }, { 0xa438, 0x6f47 },
- { 0xa438, 0x266f }, { 0xa438, 0x5900 }, { 0xa438, 0x6f4d },
- { 0xa438, 0x016f }, { 0xa438, 0x5004 }, { 0xa438, 0x6f56 },
- { 0xa438, 0x056f }, { 0xa438, 0x5f06 }, { 0xa438, 0x6f5c },
- { 0xa438, 0x2774 }, { 0xa438, 0x7800 }, { 0xa438, 0x6f68 },
- { 0xa438, 0x246f }, { 0xa438, 0x6b20 }, { 0xa438, 0x6f6e },
- { 0xa438, 0x206f }, { 0xa438, 0x7410 }, { 0xa438, 0x7469 },
- { 0xa438, 0x1074 }, { 0xa438, 0x6c10 }, { 0xa438, 0x746f },
- { 0xa438, 0x1074 }, { 0xa438, 0x7225 }, { 0xa438, 0x8bfc },
- { 0xa438, 0x008c }, { 0xa438, 0x0802 }, { 0xa438, 0x8c02 },
- { 0xa438, 0x038b }, { 0xa438, 0xff04 }, { 0xa438, 0x6eed },
- { 0xa438, 0x278c }, { 0xa438, 0x0520 }, { 0xa438, 0x74da },
- { 0xa438, 0x2074 }, { 0xa438, 0xdd20 }, { 0xa438, 0x74e0 },
- { 0xa438, 0x0074 }, { 0xa438, 0xe300 }, { 0xa438, 0x6ef3 },
- { 0xa438, 0x006e }, { 0xa438, 0xf600 }, { 0xa438, 0x6ef9 },
- { 0xa438, 0x006e }, { 0xa438, 0xfc00 }, { 0xa438, 0x6eff },
- { 0xa438, 0x006f }, { 0xa438, 0x0200 }, { 0xa438, 0x6f05 },
- { 0xa438, 0x026f }, { 0xa438, 0x0802 }, { 0xa438, 0x6f0b },
- { 0xa438, 0x026f }, { 0xa438, 0x0e02 }, { 0xa438, 0x6f11 },
- { 0xa438, 0x026f }, { 0xa438, 0x1402 }, { 0xa438, 0x6f17 },
- { 0xa438, 0x226f }, { 0xa438, 0x1a00 }, { 0xa438, 0x723e },
- { 0xa438, 0x016e }, { 0xa438, 0xed24 }, { 0xa438, 0x6f50 },
- { 0xa438, 0x0072 }, { 0xa438, 0x4701 }, { 0xa438, 0x724a },
- { 0xa438, 0x0272 }, { 0xa438, 0x4d23 }, { 0xa438, 0x7250 },
- { 0xa438, 0x1074 }, { 0xa438, 0x6910 }, { 0xa438, 0x746c },
- { 0xa438, 0x1074 }, { 0xa438, 0x6f00 }, { 0xa438, 0x7472 },
- { 0xa438, 0x158c }, { 0xa438, 0x0b15 }, { 0xa438, 0x8c0e },
- { 0xa438, 0x158c }, { 0xa438, 0x1105 }, { 0xa438, 0x8c14 },
- { 0xa438, 0x006f }, { 0xa438, 0x4a03 }, { 0xa438, 0x6f47 },
- { 0xa438, 0x266f }, { 0xa438, 0x5900 }, { 0xa438, 0x731f },
- { 0xa438, 0x0273 }, { 0xa438, 0x2203 }, { 0xa438, 0x8c08 },
- { 0xa438, 0xee84 }, { 0xa438, 0x7100 }, { 0xa438, 0x0286 },
- { 0xa438, 0xece0 }, { 0xa438, 0x8043 }, { 0xa438, 0xf626 },
- { 0xa438, 0xe480 }, { 0xa438, 0x43af }, { 0xa438, 0x6611 },
- { 0xa438, 0xf8e0 }, { 0xa438, 0x8012 }, { 0xa438, 0xac26 },
- { 0xa438, 0x03af }, { 0xa438, 0x86ff }, { 0xa438, 0x0287 },
- { 0xa438, 0x0102 }, { 0xa438, 0x8906 }, { 0xa438, 0x0289 },
- { 0xa438, 0x29fc }, { 0xa438, 0x04f8 }, { 0xa438, 0xf9ef },
- { 0xa438, 0x59f9 }, { 0xa438, 0xfaee }, { 0xa438, 0x8476 },
- { 0xa438, 0x00d6 }, { 0xa438, 0x008f }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8fe7 },
- { 0xa438, 0xe58f }, { 0xa438, 0xe8ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8fe7 }, { 0xa438, 0xe18f }, { 0xa438, 0xe8ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x01d6 }, { 0xa438, 0x00c0 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x00d6 }, { 0xa438, 0x0090 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8fe9 },
- { 0xa438, 0xe58f }, { 0xa438, 0xeaae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8fe9 }, { 0xa438, 0xe18f }, { 0xa438, 0xeaee },
- { 0xa438, 0x8476 }, { 0xa438, 0x01d6 }, { 0xa438, 0x00c1 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x00d6 }, { 0xa438, 0x0091 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8feb },
- { 0xa438, 0xe58f }, { 0xa438, 0xecae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8feb }, { 0xa438, 0xe18f }, { 0xa438, 0xecee },
- { 0xa438, 0x8476 }, { 0xa438, 0x01d6 }, { 0xa438, 0x00c2 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x01d6 }, { 0xa438, 0x008f }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8fed },
- { 0xa438, 0xe58f }, { 0xa438, 0xeeae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8fed }, { 0xa438, 0xe18f }, { 0xa438, 0xeeee },
- { 0xa438, 0x8476 }, { 0xa438, 0x02d6 }, { 0xa438, 0x00c0 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x01d6 }, { 0xa438, 0x0090 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8fef },
- { 0xa438, 0xe58f }, { 0xa438, 0xf0ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8fef }, { 0xa438, 0xe18f }, { 0xa438, 0xf0ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x02d6 }, { 0xa438, 0x00c1 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x01d6 }, { 0xa438, 0x0091 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ff1 },
- { 0xa438, 0xe58f }, { 0xa438, 0xf2ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ff1 }, { 0xa438, 0xe18f }, { 0xa438, 0xf2ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x02d6 }, { 0xa438, 0x00c2 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x02d6 }, { 0xa438, 0x008f }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ff3 },
- { 0xa438, 0xe58f }, { 0xa438, 0xf4ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ff3 }, { 0xa438, 0xe18f }, { 0xa438, 0xf4ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x04d6 }, { 0xa438, 0x00c0 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x02d6 }, { 0xa438, 0x0090 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ff5 },
- { 0xa438, 0xe58f }, { 0xa438, 0xf6ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ff5 }, { 0xa438, 0xe18f }, { 0xa438, 0xf6ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x04d6 }, { 0xa438, 0x00c1 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x02d6 }, { 0xa438, 0x0091 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ff7 },
- { 0xa438, 0xe58f }, { 0xa438, 0xf8ae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ff7 }, { 0xa438, 0xe18f }, { 0xa438, 0xf8ee },
- { 0xa438, 0x8476 }, { 0xa438, 0x04d6 }, { 0xa438, 0x00c2 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x03d6 }, { 0xa438, 0x008f }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ff9 },
- { 0xa438, 0xe58f }, { 0xa438, 0xfaae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ff9 }, { 0xa438, 0xe18f }, { 0xa438, 0xfaee },
- { 0xa438, 0x8476 }, { 0xa438, 0x08d6 }, { 0xa438, 0x00c0 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x03d6 }, { 0xa438, 0x0090 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ffb },
- { 0xa438, 0xe58f }, { 0xa438, 0xfcae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ffb }, { 0xa438, 0xe18f }, { 0xa438, 0xfcee },
- { 0xa438, 0x8476 }, { 0xa438, 0x08d6 }, { 0xa438, 0x00c1 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71ee }, { 0xa438, 0x8476 },
- { 0xa438, 0x03d6 }, { 0xa438, 0x0091 }, { 0xa438, 0x0266 },
- { 0xa438, 0x53ef }, { 0xa438, 0x643e }, { 0xa438, 0x1200 },
- { 0xa438, 0xac4f }, { 0xa438, 0x08e4 }, { 0xa438, 0x8ffd },
- { 0xa438, 0xe58f }, { 0xa438, 0xfeae }, { 0xa438, 0x06e0 },
- { 0xa438, 0x8ffd }, { 0xa438, 0xe18f }, { 0xa438, 0xfeee },
- { 0xa438, 0x8476 }, { 0xa438, 0x08d6 }, { 0xa438, 0x00c2 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71fe }, { 0xa438, 0xfdef },
- { 0xa438, 0x95fd }, { 0xa438, 0xfc04 }, { 0xa438, 0xf8f9 },
- { 0xa438, 0xfad4 }, { 0xa438, 0x0400 }, { 0xa438, 0xd600 },
+ { 0xa438, 0xdeff }, { 0xa438, 0xef96 }, { 0xa438, 0xfefc },
+ { 0xa438, 0x04f8 }, { 0xa438, 0xf9fa }, { 0xa438, 0xfbef },
+ { 0xa438, 0x79fb }, { 0xa438, 0xbf7b }, { 0xa438, 0xf302 },
+ { 0xa438, 0x7d44 }, { 0xa438, 0xac28 }, { 0xa438, 0x2bbf },
+ { 0xa438, 0x7a94 }, { 0xa438, 0x027d }, { 0xa438, 0x44ef },
+ { 0xa438, 0x21bf }, { 0xa438, 0x7ab8 }, { 0xa438, 0x027d },
+ { 0xa438, 0x441f }, { 0xa438, 0x219e }, { 0xa438, 0x19e0 },
+ { 0xa438, 0x8fe9 }, { 0xa438, 0xe18f }, { 0xa438, 0xe8ef },
+ { 0xa438, 0x641f }, { 0xa438, 0x00e1 }, { 0xa438, 0x8fe4 },
+ { 0xa438, 0xef74 }, { 0xa438, 0x027c }, { 0xa438, 0xa1ad },
+ { 0xa438, 0x503d }, { 0xa438, 0xee8f }, { 0xa438, 0xe701 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0x9402 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa602 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa302 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xa902 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf7a }, { 0xa438, 0xac02 }, { 0xa438, 0x7d02 },
+ { 0xa438, 0xbf8e }, { 0xa438, 0x7102 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0xbf8e }, { 0xa438, 0x7402 }, { 0xa438, 0x7cf9 },
+ { 0xa438, 0x027c }, { 0xa438, 0x86ef }, { 0xa438, 0x47e4 },
+ { 0xa438, 0x8fe9 }, { 0xa438, 0xe58f }, { 0xa438, 0xe8ee },
+ { 0xa438, 0x8fea }, { 0xa438, 0x04ff }, { 0xa438, 0xef97 },
+ { 0xa438, 0xfffe }, { 0xa438, 0xfdfc }, { 0xa438, 0x04f8 },
+ { 0xa438, 0xfafb }, { 0xa438, 0xe08f }, { 0xa438, 0xe9e1 },
+ { 0xa438, 0x8fe8 }, { 0xa438, 0xef64 }, { 0xa438, 0x1f00 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xe5ef }, { 0xa438, 0x7402 },
+ { 0xa438, 0x7ca1 }, { 0xa438, 0xad50 }, { 0xa438, 0x0d02 },
+ { 0xa438, 0x638e }, { 0xa438, 0x028c }, { 0xa438, 0x02ee },
+ { 0xa438, 0x8fea }, { 0xa438, 0x0102 }, { 0xa438, 0x70de },
+ { 0xa438, 0xfffe }, { 0xa438, 0xfc04 }, { 0xa438, 0xe38f },
+ { 0xa438, 0xd7a3 }, { 0xa438, 0x000a }, { 0xa438, 0xe387 },
+ { 0xa438, 0x75e7 }, { 0xa438, 0x8fd8 }, { 0xa438, 0xee8f },
+ { 0xa438, 0xd701 }, { 0xa438, 0xe38f }, { 0xa438, 0xd8e7 },
+ { 0xa438, 0x8775 }, { 0xa438, 0xe48f }, { 0xa438, 0xe1e5 },
+ { 0xa438, 0x8fe2 }, { 0xa438, 0xbf8f }, { 0xa438, 0xd9ef },
+ { 0xa438, 0x320c }, { 0xa438, 0x311a }, { 0xa438, 0x93dc },
+ { 0xa438, 0x19dd }, { 0xa438, 0x027f }, { 0xa438, 0xa9ac },
+ { 0xa438, 0x2a18 }, { 0xa438, 0xe08f }, { 0xa438, 0xe1e1 },
+ { 0xa438, 0x8fe2 }, { 0xa438, 0xef74 }, { 0xa438, 0xe187 },
+ { 0xa438, 0x751f }, { 0xa438, 0x00ef }, { 0xa438, 0x64e1 },
+ { 0xa438, 0x8fd8 }, { 0xa438, 0xe587 }, { 0xa438, 0x75af },
+ { 0xa438, 0x4d72 }, { 0xa438, 0xbf7b }, { 0xa438, 0x3cef },
+ { 0xa438, 0x324b }, { 0xa438, 0x031a }, { 0xa438, 0x9302 },
+ { 0xa438, 0x7d44 }, { 0xa438, 0xef64 }, { 0xa438, 0xe18f },
+ { 0xa438, 0xff1f }, { 0xa438, 0x00ef }, { 0xa438, 0x741b },
+ { 0xa438, 0x67ac }, { 0xa438, 0x4fce }, { 0xa438, 0xe08f },
+ { 0xa438, 0xfde1 }, { 0xa438, 0x8ffe }, { 0xa438, 0xef64 },
+ { 0xa438, 0xe08f }, { 0xa438, 0xe1e1 }, { 0xa438, 0x8fe2 },
+ { 0xa438, 0xef74 }, { 0xa438, 0x027c }, { 0xa438, 0x53ac },
+ { 0xa438, 0x5002 }, { 0xa438, 0xaeb6 }, { 0xa438, 0xe187 },
+ { 0xa438, 0x751f }, { 0xa438, 0x00ef }, { 0xa438, 0x64e1 },
+ { 0xa438, 0x8ffc }, { 0xa438, 0xef71 }, { 0xa438, 0x1c67 },
+ { 0xa438, 0x0d67 }, { 0xa438, 0xef46 }, { 0xa438, 0xe587 },
+ { 0xa438, 0x75ef }, { 0xa438, 0x32d1 }, { 0xa438, 0x01a3 },
+ { 0xa438, 0x0002 }, { 0xa438, 0xae05 }, { 0xa438, 0x0c11 },
+ { 0xa438, 0x83ae }, { 0xa438, 0xf6e0 }, { 0xa438, 0x8fe3 },
+ { 0xa438, 0x1e10 }, { 0xa438, 0xe58f }, { 0xa438, 0xe3ae },
+ { 0xa438, 0x89bf }, { 0xa438, 0x7bf3 }, { 0xa438, 0x027d },
+ { 0xa438, 0x44e5 }, { 0xa438, 0x8fd6 }, { 0xa438, 0xad28 },
+ { 0xa438, 0x03af }, { 0xa438, 0x606b }, { 0xa438, 0xaf60 },
+ { 0xa438, 0xa0f8 }, { 0xa438, 0xf9ef }, { 0xa438, 0x59fa },
+ { 0xa438, 0xfbbf }, { 0xa438, 0x8fee }, { 0xa438, 0x027f },
+ { 0xa438, 0xa90d }, { 0xa438, 0x1149 }, { 0xa438, 0x041a },
+ { 0xa438, 0x91d7 }, { 0xa438, 0x8e1d }, { 0xa438, 0xd68e },
+ { 0xa438, 0x4d02 }, { 0xa438, 0x72aa }, { 0xa438, 0xfffe },
+ { 0xa438, 0xef95 }, { 0xa438, 0xfdfc }, { 0xa438, 0x0400 },
+ { 0xa438, 0x7591 }, { 0xa438, 0x0275 }, { 0xa438, 0x4404 },
+ { 0xa438, 0x758e }, { 0xa438, 0x2675 }, { 0xa438, 0x4100 },
+ { 0xa438, 0x8e50 }, { 0xa438, 0x028e }, { 0xa438, 0x4d04 },
+ { 0xa438, 0x759d }, { 0xa438, 0x2675 }, { 0xa438, 0x4700 },
+ { 0xa438, 0x8e5c }, { 0xa438, 0x028e }, { 0xa438, 0x5904 },
+ { 0xa438, 0x8e56 }, { 0xa438, 0x268e }, { 0xa438, 0x5300 },
+ { 0xa438, 0x8e68 }, { 0xa438, 0x028e }, { 0xa438, 0x6504 },
+ { 0xa438, 0x8e62 }, { 0xa438, 0x268e }, { 0xa438, 0x5ffe },
+ { 0xa438, 0xad96 }, { 0xa438, 0xdcad }, { 0xa438, 0x96ba },
+ { 0xa438, 0xad96 }, { 0xa438, 0x98ad }, { 0xa438, 0x9676 },
+ { 0xa438, 0xad98 }, { 0xa438, 0x54ad }, { 0xa438, 0x9876 },
+ { 0xa438, 0xae38 }, { 0xa438, 0x54ae }, { 0xa438, 0x38fe },
+ { 0xa438, 0xae3a }, { 0xa438, 0xdcae }, { 0xa438, 0x3abb },
+ { 0xa438, 0xbf14 }, { 0xa438, 0x99bd }, { 0xa438, 0xe0cc },
+ { 0xa438, 0xbdc8 }, { 0xa438, 0xddbd }, { 0xa438, 0xc800 },
+ { 0xa436, 0xb85e }, { 0xa438, 0x4f9a }, { 0xa436, 0xb860 },
+ { 0xa438, 0x40cf }, { 0xa436, 0xb862 }, { 0xa438, 0x6829 },
+ { 0xa436, 0xb864 }, { 0xa438, 0x5972 }, { 0xa436, 0xb886 },
+ { 0xa438, 0x5941 }, { 0xa436, 0xb888 }, { 0xa438, 0x636b },
+ { 0xa436, 0xb88a }, { 0xa438, 0x4d6b }, { 0xa436, 0xb88c },
+ { 0xa438, 0x6062 }, { 0xa436, 0xb838 }, { 0xa438, 0x00ff },
+ { 0xb820, 0x0010 }, { 0xa436, 0x8608 }, { 0xa438, 0xaf86 },
+ { 0xa438, 0xdaaf }, { 0xa438, 0x894c }, { 0xa438, 0xaf8a },
+ { 0xa438, 0xf8af }, { 0xa438, 0x8bf3 }, { 0xa438, 0xaf8b },
+ { 0xa438, 0xf3af }, { 0xa438, 0x8bf3 }, { 0xa438, 0xaf8b },
+ { 0xa438, 0xf3af }, { 0xa438, 0x8bf3 }, { 0xa438, 0x006f },
+ { 0xa438, 0x4a03 }, { 0xa438, 0x6f47 }, { 0xa438, 0x266f },
+ { 0xa438, 0x5900 }, { 0xa438, 0x6f4d }, { 0xa438, 0x016f },
+ { 0xa438, 0x5004 }, { 0xa438, 0x6f56 }, { 0xa438, 0x056f },
+ { 0xa438, 0x5f06 }, { 0xa438, 0x6f5c }, { 0xa438, 0x2774 },
+ { 0xa438, 0x7800 }, { 0xa438, 0x6f68 }, { 0xa438, 0x246f },
+ { 0xa438, 0x6b20 }, { 0xa438, 0x6f6e }, { 0xa438, 0x206f },
+ { 0xa438, 0x7410 }, { 0xa438, 0x7469 }, { 0xa438, 0x1074 },
+ { 0xa438, 0x6c10 }, { 0xa438, 0x746f }, { 0xa438, 0x1074 },
+ { 0xa438, 0x7225 }, { 0xa438, 0x8bfc }, { 0xa438, 0x008c },
+ { 0xa438, 0x0802 }, { 0xa438, 0x8c02 }, { 0xa438, 0x038b },
+ { 0xa438, 0xff04 }, { 0xa438, 0x6eed }, { 0xa438, 0x278c },
+ { 0xa438, 0x0520 }, { 0xa438, 0x74da }, { 0xa438, 0x2074 },
+ { 0xa438, 0xdd20 }, { 0xa438, 0x74e0 }, { 0xa438, 0x0074 },
+ { 0xa438, 0xe300 }, { 0xa438, 0x6ef3 }, { 0xa438, 0x006e },
+ { 0xa438, 0xf600 }, { 0xa438, 0x6ef9 }, { 0xa438, 0x006e },
+ { 0xa438, 0xfc00 }, { 0xa438, 0x6eff }, { 0xa438, 0x006f },
+ { 0xa438, 0x0200 }, { 0xa438, 0x6f05 }, { 0xa438, 0x026f },
+ { 0xa438, 0x0802 }, { 0xa438, 0x6f0b }, { 0xa438, 0x026f },
+ { 0xa438, 0x0e02 }, { 0xa438, 0x6f11 }, { 0xa438, 0x026f },
+ { 0xa438, 0x1402 }, { 0xa438, 0x6f17 }, { 0xa438, 0x226f },
+ { 0xa438, 0x1a00 }, { 0xa438, 0x723e }, { 0xa438, 0x016e },
+ { 0xa438, 0xed24 }, { 0xa438, 0x6f50 }, { 0xa438, 0x0072 },
+ { 0xa438, 0x4701 }, { 0xa438, 0x724a }, { 0xa438, 0x0272 },
+ { 0xa438, 0x4d23 }, { 0xa438, 0x7250 }, { 0xa438, 0x1074 },
+ { 0xa438, 0x6910 }, { 0xa438, 0x746c }, { 0xa438, 0x1074 },
+ { 0xa438, 0x6f00 }, { 0xa438, 0x7472 }, { 0xa438, 0x158c },
+ { 0xa438, 0x0b15 }, { 0xa438, 0x8c0e }, { 0xa438, 0x158c },
+ { 0xa438, 0x1105 }, { 0xa438, 0x8c14 }, { 0xa438, 0x006f },
+ { 0xa438, 0x4a03 }, { 0xa438, 0x6f47 }, { 0xa438, 0x266f },
+ { 0xa438, 0x5900 }, { 0xa438, 0x731f }, { 0xa438, 0x0273 },
+ { 0xa438, 0x2203 }, { 0xa438, 0x8c08 }, { 0xa438, 0xee84 },
+ { 0xa438, 0x7100 }, { 0xa438, 0x0286 }, { 0xa438, 0xece0 },
+ { 0xa438, 0x8043 }, { 0xa438, 0xf626 }, { 0xa438, 0xe480 },
+ { 0xa438, 0x43af }, { 0xa438, 0x6611 }, { 0xa438, 0xf8e0 },
+ { 0xa438, 0x8012 }, { 0xa438, 0xac26 }, { 0xa438, 0x03af },
+ { 0xa438, 0x86ff }, { 0xa438, 0x0287 }, { 0xa438, 0x0102 },
+ { 0xa438, 0x8906 }, { 0xa438, 0x0289 }, { 0xa438, 0x29fc },
+ { 0xa438, 0x04f8 }, { 0xa438, 0xf9ef }, { 0xa438, 0x59f9 },
+ { 0xa438, 0xfaee }, { 0xa438, 0x8476 }, { 0xa438, 0x00d6 },
+ { 0xa438, 0x008f }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8fe7 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xe8ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8fe7 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xe8ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x01d6 }, { 0xa438, 0x00c0 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x00d6 },
+ { 0xa438, 0x0090 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8fe9 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xeaae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8fe9 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xeaee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x01d6 }, { 0xa438, 0x00c1 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x00d6 },
+ { 0xa438, 0x0091 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8feb }, { 0xa438, 0xe58f },
+ { 0xa438, 0xecae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8feb },
+ { 0xa438, 0xe18f }, { 0xa438, 0xecee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x01d6 }, { 0xa438, 0x00c2 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x01d6 },
+ { 0xa438, 0x008f }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8fed }, { 0xa438, 0xe58f },
+ { 0xa438, 0xeeae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8fed },
+ { 0xa438, 0xe18f }, { 0xa438, 0xeeee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x02d6 }, { 0xa438, 0x00c0 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x01d6 },
+ { 0xa438, 0x0090 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8fef }, { 0xa438, 0xe58f },
+ { 0xa438, 0xf0ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8fef },
+ { 0xa438, 0xe18f }, { 0xa438, 0xf0ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x02d6 }, { 0xa438, 0x00c1 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x01d6 },
+ { 0xa438, 0x0091 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ff1 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xf2ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ff1 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xf2ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x02d6 }, { 0xa438, 0x00c2 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x02d6 },
+ { 0xa438, 0x008f }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ff3 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xf4ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ff3 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xf4ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x04d6 }, { 0xa438, 0x00c0 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x02d6 },
+ { 0xa438, 0x0090 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ff5 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xf6ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ff5 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xf6ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x04d6 }, { 0xa438, 0x00c1 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x02d6 },
+ { 0xa438, 0x0091 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ff7 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xf8ae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ff7 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xf8ee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x04d6 }, { 0xa438, 0x00c2 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x03d6 },
+ { 0xa438, 0x008f }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ff9 }, { 0xa438, 0xe58f },
+ { 0xa438, 0xfaae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ff9 },
+ { 0xa438, 0xe18f }, { 0xa438, 0xfaee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x08d6 }, { 0xa438, 0x00c0 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x03d6 },
+ { 0xa438, 0x0090 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ffb }, { 0xa438, 0xe58f },
+ { 0xa438, 0xfcae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ffb },
+ { 0xa438, 0xe18f }, { 0xa438, 0xfcee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x08d6 }, { 0xa438, 0x00c1 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71ee }, { 0xa438, 0x8476 }, { 0xa438, 0x03d6 },
+ { 0xa438, 0x0091 }, { 0xa438, 0x0266 }, { 0xa438, 0x53ef },
+ { 0xa438, 0x643e }, { 0xa438, 0x1200 }, { 0xa438, 0xac4f },
+ { 0xa438, 0x08e4 }, { 0xa438, 0x8ffd }, { 0xa438, 0xe58f },
+ { 0xa438, 0xfeae }, { 0xa438, 0x06e0 }, { 0xa438, 0x8ffd },
+ { 0xa438, 0xe18f }, { 0xa438, 0xfeee }, { 0xa438, 0x8476 },
+ { 0xa438, 0x08d6 }, { 0xa438, 0x00c2 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71fe }, { 0xa438, 0xfdef }, { 0xa438, 0x95fd },
+ { 0xa438, 0xfc04 }, { 0xa438, 0xf8f9 }, { 0xa438, 0xfad4 },
+ { 0xa438, 0x0400 }, { 0xa438, 0xd600 }, { 0xa438, 0x0dd3 },
+ { 0xa438, 0x0fe7 }, { 0xa438, 0x8476 }, { 0xa438, 0x0266 },
+ { 0xa438, 0x71d4 }, { 0xa438, 0x1400 }, { 0xa438, 0xd600 },
{ 0xa438, 0x0dd3 }, { 0xa438, 0x0fe7 }, { 0xa438, 0x8476 },
- { 0xa438, 0x0266 }, { 0xa438, 0x71d4 }, { 0xa438, 0x1400 },
- { 0xa438, 0xd600 }, { 0xa438, 0x0dd3 }, { 0xa438, 0x0fe7 },
- { 0xa438, 0x8476 }, { 0xa438, 0x0266 }, { 0xa438, 0x71fe },
- { 0xa438, 0xfdfc }, { 0xa438, 0x04f8 }, { 0xa438, 0xf9fa },
- { 0xa438, 0xd410 }, { 0xa438, 0x00d6 }, { 0xa438, 0x000d },
+ { 0xa438, 0x0266 }, { 0xa438, 0x71fe }, { 0xa438, 0xfdfc },
+ { 0xa438, 0x04f8 }, { 0xa438, 0xf9fa }, { 0xa438, 0xd410 },
+ { 0xa438, 0x00d6 }, { 0xa438, 0x000d }, { 0xa438, 0xd30f },
+ { 0xa438, 0xe784 }, { 0xa438, 0x7602 }, { 0xa438, 0x6671 },
+ { 0xa438, 0xd400 }, { 0xa438, 0x00d6 }, { 0xa438, 0x000d },
{ 0xa438, 0xd30f }, { 0xa438, 0xe784 }, { 0xa438, 0x7602 },
- { 0xa438, 0x6671 }, { 0xa438, 0xd400 }, { 0xa438, 0x00d6 },
- { 0xa438, 0x000d }, { 0xa438, 0xd30f }, { 0xa438, 0xe784 },
- { 0xa438, 0x7602 }, { 0xa438, 0x6671 }, { 0xa438, 0xfefd },
- { 0xa438, 0xfc04 }, { 0xa438, 0xe080 }, { 0xa438, 0x4fac },
- { 0xa438, 0x2317 }, { 0xa438, 0xe080 }, { 0xa438, 0x44ad },
- { 0xa438, 0x231a }, { 0xa438, 0x0289 }, { 0xa438, 0x75e0 },
- { 0xa438, 0x8044 }, { 0xa438, 0xac23 }, { 0xa438, 0x11bf },
- { 0xa438, 0x6ecf }, { 0xa438, 0x0276 }, { 0xa438, 0x74ae },
- { 0xa438, 0x0902 }, { 0xa438, 0x8adb }, { 0xa438, 0x021f },
- { 0xa438, 0xe702 }, { 0xa438, 0x1fbb }, { 0xa438, 0xaf1f },
- { 0xa438, 0x95f8 }, { 0xa438, 0xf9ef }, { 0xa438, 0x59f9 },
- { 0xa438, 0xfafb }, { 0xa438, 0xe080 }, { 0xa438, 0x12ac },
- { 0xa438, 0x2303 }, { 0xa438, 0xaf8a }, { 0xa438, 0xd0d4 },
- { 0xa438, 0x0120 }, { 0xa438, 0xd600 }, { 0xa438, 0x10d2 },
- { 0xa438, 0x0fe6 }, { 0xa438, 0x8476 }, { 0xa438, 0x0266 },
- { 0xa438, 0x71ee }, { 0xa438, 0x846f }, { 0xa438, 0x00d4 },
- { 0xa438, 0x000f }, { 0xa438, 0xbf72 }, { 0xa438, 0x9e02 },
- { 0xa438, 0x7697 }, { 0xa438, 0x0275 }, { 0xa438, 0xbeef },
- { 0xa438, 0x47e4 }, { 0xa438, 0x8474 }, { 0xa438, 0xe584 },
- { 0xa438, 0x75bf }, { 0xa438, 0x729b }, { 0xa438, 0x0276 },
- { 0xa438, 0xb6e5 }, { 0xa438, 0x846f }, { 0xa438, 0xef31 },
+ { 0xa438, 0x6671 }, { 0xa438, 0xfefd }, { 0xa438, 0xfc04 },
+ { 0xa438, 0xe080 }, { 0xa438, 0x4fac }, { 0xa438, 0x2317 },
+ { 0xa438, 0xe080 }, { 0xa438, 0x44ad }, { 0xa438, 0x231a },
+ { 0xa438, 0x0289 }, { 0xa438, 0x75e0 }, { 0xa438, 0x8044 },
+ { 0xa438, 0xac23 }, { 0xa438, 0x11bf }, { 0xa438, 0x6ecf },
+ { 0xa438, 0x0276 }, { 0xa438, 0x74ae }, { 0xa438, 0x0902 },
+ { 0xa438, 0x8adb }, { 0xa438, 0x021f }, { 0xa438, 0xe702 },
+ { 0xa438, 0x1fbb }, { 0xa438, 0xaf1f }, { 0xa438, 0x95f8 },
+ { 0xa438, 0xf9ef }, { 0xa438, 0x59f9 }, { 0xa438, 0xfafb },
+ { 0xa438, 0xe080 }, { 0xa438, 0x12ac }, { 0xa438, 0x2303 },
+ { 0xa438, 0xaf8a }, { 0xa438, 0xd0d4 }, { 0xa438, 0x0120 },
+ { 0xa438, 0xd600 }, { 0xa438, 0x10d2 }, { 0xa438, 0x0fe6 },
+ { 0xa438, 0x8476 }, { 0xa438, 0x0266 }, { 0xa438, 0x71ee },
+ { 0xa438, 0x846f }, { 0xa438, 0x00d4 }, { 0xa438, 0x000f },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x9e02 }, { 0xa438, 0x7697 },
+ { 0xa438, 0x0275 }, { 0xa438, 0xbeef }, { 0xa438, 0x47e4 },
+ { 0xa438, 0x8474 }, { 0xa438, 0xe584 }, { 0xa438, 0x75bf },
+ { 0xa438, 0x729b }, { 0xa438, 0x0276 }, { 0xa438, 0xb6e5 },
+ { 0xa438, 0x846f }, { 0xa438, 0xef31 }, { 0xa438, 0xbf6e },
+ { 0xa438, 0x0602 }, { 0xa438, 0x76b6 }, { 0xa438, 0xef64 },
+ { 0xa438, 0xbf6e }, { 0xa438, 0x0902 }, { 0xa438, 0x76b6 },
+ { 0xa438, 0x1e64 }, { 0xa438, 0xbf6e }, { 0xa438, 0x0f02 },
+ { 0xa438, 0x76b6 }, { 0xa438, 0x1e64 }, { 0xa438, 0xac40 },
+ { 0xa438, 0x05a3 }, { 0xa438, 0x0f0c }, { 0xa438, 0xae26 },
+ { 0xa438, 0xa303 }, { 0xa438, 0x02ae }, { 0xa438, 0x21a3 },
+ { 0xa438, 0x0c02 }, { 0xa438, 0xae1c }, { 0xa438, 0xe084 },
+ { 0xa438, 0x74e1 }, { 0xa438, 0x8475 }, { 0xa438, 0xef64 },
+ { 0xa438, 0xd000 }, { 0xa438, 0xd196 }, { 0xa438, 0xef74 },
+ { 0xa438, 0x0275 }, { 0xa438, 0xd9ad }, { 0xa438, 0x50b7 },
+ { 0xa438, 0xe083 }, { 0xa438, 0xecf7 }, { 0xa438, 0x23e4 },
+ { 0xa438, 0x83ec }, { 0xa438, 0xbf72 }, { 0xa438, 0x9e02 },
+ { 0xa438, 0x766b }, { 0xa438, 0x0287 }, { 0xa438, 0x0102 },
+ { 0xa438, 0x8906 }, { 0xa438, 0xee83 }, { 0xa438, 0xe800 },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x6b02 }, { 0xa438, 0x766b },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x6e02 }, { 0xa438, 0x766b },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x7102 }, { 0xa438, 0x766b },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x7402 }, { 0xa438, 0x766b },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x7702 }, { 0xa438, 0x766b },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x7a02 }, { 0xa438, 0x766b },
+ { 0xa438, 0xd400 }, { 0xa438, 0x0fbf }, { 0xa438, 0x7295 },
+ { 0xa438, 0x0276 }, { 0xa438, 0x97d7 }, { 0xa438, 0x0400 },
{ 0xa438, 0xbf6e }, { 0xa438, 0x0602 }, { 0xa438, 0x76b6 },
{ 0xa438, 0xef64 }, { 0xa438, 0xbf6e }, { 0xa438, 0x0902 },
{ 0xa438, 0x76b6 }, { 0xa438, 0x1e64 }, { 0xa438, 0xbf6e },
{ 0xa438, 0x0f02 }, { 0xa438, 0x76b6 }, { 0xa438, 0x1e64 },
- { 0xa438, 0xac40 }, { 0xa438, 0x05a3 }, { 0xa438, 0x0f0c },
- { 0xa438, 0xae26 }, { 0xa438, 0xa303 }, { 0xa438, 0x02ae },
- { 0xa438, 0x21a3 }, { 0xa438, 0x0c02 }, { 0xa438, 0xae1c },
- { 0xa438, 0xe084 }, { 0xa438, 0x74e1 }, { 0xa438, 0x8475 },
- { 0xa438, 0xef64 }, { 0xa438, 0xd000 }, { 0xa438, 0xd196 },
- { 0xa438, 0xef74 }, { 0xa438, 0x0275 }, { 0xa438, 0xd9ad },
- { 0xa438, 0x50b7 }, { 0xa438, 0xe083 }, { 0xa438, 0xecf7 },
- { 0xa438, 0x23e4 }, { 0xa438, 0x83ec }, { 0xa438, 0xbf72 },
- { 0xa438, 0x9e02 }, { 0xa438, 0x766b }, { 0xa438, 0x0287 },
- { 0xa438, 0x0102 }, { 0xa438, 0x8906 }, { 0xa438, 0xee83 },
- { 0xa438, 0xe800 }, { 0xa438, 0xbf72 }, { 0xa438, 0x6b02 },
- { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x6e02 },
- { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x7102 },
- { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x7402 },
- { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x7702 },
- { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x7a02 },
- { 0xa438, 0x766b }, { 0xa438, 0xd400 }, { 0xa438, 0x0fbf },
- { 0xa438, 0x7295 }, { 0xa438, 0x0276 }, { 0xa438, 0x97d7 },
- { 0xa438, 0x0400 }, { 0xa438, 0xbf6e }, { 0xa438, 0x0602 },
+ { 0xa438, 0xac40 }, { 0xa438, 0x0fbf }, { 0xa438, 0x7298 },
+ { 0xa438, 0x0276 }, { 0xa438, 0xb6e5 }, { 0xa438, 0x83e8 },
+ { 0xa438, 0xa10f }, { 0xa438, 0x28af }, { 0xa438, 0x8a95 },
+ { 0xa438, 0xbf8b }, { 0xa438, 0xf302 }, { 0xa438, 0x76b6 },
+ { 0xa438, 0xac28 }, { 0xa438, 0x02ae }, { 0xa438, 0x0bbf },
+ { 0xa438, 0x8bf9 }, { 0xa438, 0x0276 }, { 0xa438, 0xb6e5 },
+ { 0xa438, 0x83e8 }, { 0xa438, 0xae09 }, { 0xa438, 0xbf8b },
+ { 0xa438, 0xf602 }, { 0xa438, 0x76b6 }, { 0xa438, 0xe583 },
+ { 0xa438, 0xe8a1 }, { 0xa438, 0x0303 }, { 0xa438, 0xaf8a },
+ { 0xa438, 0x95b7 }, { 0xa438, 0xafe2 }, { 0xa438, 0x83ec },
+ { 0xa438, 0xf735 }, { 0xa438, 0xe683 }, { 0xa438, 0xecbf },
+ { 0xa438, 0x7295 }, { 0xa438, 0x0276 }, { 0xa438, 0x6bbf },
+ { 0xa438, 0x726b }, { 0xa438, 0x0276 }, { 0xa438, 0x74bf },
+ { 0xa438, 0x726e }, { 0xa438, 0x0276 }, { 0xa438, 0x74bf },
+ { 0xa438, 0x7271 }, { 0xa438, 0x0276 }, { 0xa438, 0x74bf },
+ { 0xa438, 0x7274 }, { 0xa438, 0x0276 }, { 0xa438, 0x74bf },
+ { 0xa438, 0x7277 }, { 0xa438, 0x0276 }, { 0xa438, 0x74bf },
+ { 0xa438, 0x727a }, { 0xa438, 0x0276 }, { 0xa438, 0x7402 },
+ { 0xa438, 0x8929 }, { 0xa438, 0xd401 }, { 0xa438, 0x28d6 },
+ { 0xa438, 0x0010 }, { 0xa438, 0xd20f }, { 0xa438, 0xe684 },
+ { 0xa438, 0x7602 }, { 0xa438, 0x6671 }, { 0xa438, 0x021f },
+ { 0xa438, 0xbbff }, { 0xa438, 0xfefd }, { 0xa438, 0xef95 },
+ { 0xa438, 0xfdfc }, { 0xa438, 0x04f8 }, { 0xa438, 0xf9ef },
+ { 0xa438, 0x59f9 }, { 0xa438, 0xe080 }, { 0xa438, 0x12ad },
+ { 0xa438, 0x230c }, { 0xa438, 0xbf72 }, { 0xa438, 0x9e02 },
+ { 0xa438, 0x766b }, { 0xa438, 0xbf72 }, { 0xa438, 0x9502 },
+ { 0xa438, 0x766b }, { 0xa438, 0xfdef }, { 0xa438, 0x95fd },
+ { 0xa438, 0xfc04 }, { 0xa438, 0xbf6e }, { 0xa438, 0x0602 },
{ 0xa438, 0x76b6 }, { 0xa438, 0xef64 }, { 0xa438, 0xbf6e },
{ 0xa438, 0x0902 }, { 0xa438, 0x76b6 }, { 0xa438, 0x1e64 },
{ 0xa438, 0xbf6e }, { 0xa438, 0x0f02 }, { 0xa438, 0x76b6 },
- { 0xa438, 0x1e64 }, { 0xa438, 0xac40 }, { 0xa438, 0x0fbf },
+ { 0xa438, 0x1e64 }, { 0xa438, 0xac40 }, { 0xa438, 0x0ebf },
{ 0xa438, 0x7298 }, { 0xa438, 0x0276 }, { 0xa438, 0xb6e5 },
- { 0xa438, 0x83e8 }, { 0xa438, 0xa10f }, { 0xa438, 0x28af },
- { 0xa438, 0x8a95 }, { 0xa438, 0xbf8b }, { 0xa438, 0xf302 },
- { 0xa438, 0x76b6 }, { 0xa438, 0xac28 }, { 0xa438, 0x02ae },
- { 0xa438, 0x0bbf }, { 0xa438, 0x8bf9 }, { 0xa438, 0x0276 },
- { 0xa438, 0xb6e5 }, { 0xa438, 0x83e8 }, { 0xa438, 0xae09 },
- { 0xa438, 0xbf8b }, { 0xa438, 0xf602 }, { 0xa438, 0x76b6 },
- { 0xa438, 0xe583 }, { 0xa438, 0xe8a1 }, { 0xa438, 0x0303 },
- { 0xa438, 0xaf8a }, { 0xa438, 0x95b7 }, { 0xa438, 0xafe2 },
- { 0xa438, 0x83ec }, { 0xa438, 0xf735 }, { 0xa438, 0xe683 },
- { 0xa438, 0xecbf }, { 0xa438, 0x7295 }, { 0xa438, 0x0276 },
- { 0xa438, 0x6bbf }, { 0xa438, 0x726b }, { 0xa438, 0x0276 },
- { 0xa438, 0x74bf }, { 0xa438, 0x726e }, { 0xa438, 0x0276 },
- { 0xa438, 0x74bf }, { 0xa438, 0x7271 }, { 0xa438, 0x0276 },
- { 0xa438, 0x74bf }, { 0xa438, 0x7274 }, { 0xa438, 0x0276 },
- { 0xa438, 0x74bf }, { 0xa438, 0x7277 }, { 0xa438, 0x0276 },
- { 0xa438, 0x74bf }, { 0xa438, 0x727a }, { 0xa438, 0x0276 },
- { 0xa438, 0x7402 }, { 0xa438, 0x8929 }, { 0xa438, 0xd401 },
- { 0xa438, 0x28d6 }, { 0xa438, 0x0010 }, { 0xa438, 0xd20f },
- { 0xa438, 0xe684 }, { 0xa438, 0x7602 }, { 0xa438, 0x6671 },
- { 0xa438, 0x021f }, { 0xa438, 0xbbff }, { 0xa438, 0xfefd },
- { 0xa438, 0xef95 }, { 0xa438, 0xfdfc }, { 0xa438, 0x04f8 },
- { 0xa438, 0xf9ef }, { 0xa438, 0x59f9 }, { 0xa438, 0xe080 },
- { 0xa438, 0x12ad }, { 0xa438, 0x230c }, { 0xa438, 0xbf72 },
- { 0xa438, 0x9e02 }, { 0xa438, 0x766b }, { 0xa438, 0xbf72 },
- { 0xa438, 0x9502 }, { 0xa438, 0x766b }, { 0xa438, 0xfdef },
- { 0xa438, 0x95fd }, { 0xa438, 0xfc04 }, { 0xa438, 0xbf6e },
- { 0xa438, 0x0602 }, { 0xa438, 0x76b6 }, { 0xa438, 0xef64 },
- { 0xa438, 0xbf6e }, { 0xa438, 0x0902 }, { 0xa438, 0x76b6 },
- { 0xa438, 0x1e64 }, { 0xa438, 0xbf6e }, { 0xa438, 0x0f02 },
- { 0xa438, 0x76b6 }, { 0xa438, 0x1e64 }, { 0xa438, 0xac40 },
- { 0xa438, 0x0ebf }, { 0xa438, 0x7298 }, { 0xa438, 0x0276 },
- { 0xa438, 0xb6e5 }, { 0xa438, 0x8478 }, { 0xa438, 0xa10f },
- { 0xa438, 0x26ae }, { 0xa438, 0x47bf }, { 0xa438, 0x8bf3 },
- { 0xa438, 0x0276 }, { 0xa438, 0xb6ac }, { 0xa438, 0x2802 },
- { 0xa438, 0xae0b }, { 0xa438, 0xbf8b }, { 0xa438, 0xf902 },
- { 0xa438, 0x76b6 }, { 0xa438, 0xe584 }, { 0xa438, 0x78ae },
- { 0xa438, 0x09bf }, { 0xa438, 0x8bf6 }, { 0xa438, 0x0276 },
- { 0xa438, 0xb6e5 }, { 0xa438, 0x8478 }, { 0xa438, 0xa103 },
- { 0xa438, 0x02ae }, { 0xa438, 0x23e0 }, { 0xa438, 0x8474 },
- { 0xa438, 0xe184 }, { 0xa438, 0x75ef }, { 0xa438, 0x64e0 },
- { 0xa438, 0x83fc }, { 0xa438, 0xe183 }, { 0xa438, 0xfdef },
- { 0xa438, 0x7402 }, { 0xa438, 0x75d9 }, { 0xa438, 0xad50 },
- { 0xa438, 0x0ae0 }, { 0xa438, 0x83ec }, { 0xa438, 0xf721 },
- { 0xa438, 0xe483 }, { 0xa438, 0xecae }, { 0xa438, 0x03af },
- { 0xa438, 0x68e4 }, { 0xa438, 0xbf72 }, { 0xa438, 0x9502 },
- { 0xa438, 0x766b }, { 0xa438, 0xe083 }, { 0xa438, 0xebad },
- { 0xa438, 0x2170 }, { 0xa438, 0xbf73 }, { 0xa438, 0x7f02 },
- { 0xa438, 0x766b }, { 0xa438, 0xd700 }, { 0xa438, 0x64bf },
- { 0xa438, 0x73c4 }, { 0xa438, 0x0276 }, { 0xa438, 0xb6a4 },
- { 0xa438, 0x0000 }, { 0xa438, 0x02ae }, { 0xa438, 0x0d87 },
- { 0xa438, 0xa700 }, { 0xa438, 0x00ef }, { 0xa438, 0xe183 },
- { 0xa438, 0xecf7 }, { 0xa438, 0x2ae5 }, { 0xa438, 0x83ec },
- { 0xa438, 0xbf73 }, { 0xa438, 0xbe02 }, { 0xa438, 0x766b },
- { 0xa438, 0xbf73 }, { 0xa438, 0xb802 }, { 0xa438, 0x766b },
- { 0xa438, 0xbf73 }, { 0xa438, 0xc102 }, { 0xa438, 0x766b },
- { 0xa438, 0xbf73 }, { 0xa438, 0xbb02 }, { 0xa438, 0x766b },
- { 0xa438, 0xe084 }, { 0xa438, 0x9ee1 }, { 0xa438, 0x849f },
- { 0xa438, 0xbf72 }, { 0xa438, 0x7d02 }, { 0xa438, 0x7697 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8002 }, { 0xa438, 0x7697 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8302 }, { 0xa438, 0x7697 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8602 }, { 0xa438, 0x7697 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8902 }, { 0xa438, 0x7674 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8c02 }, { 0xa438, 0x7674 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x8f02 }, { 0xa438, 0x7674 },
- { 0xa438, 0xbf72 }, { 0xa438, 0x9202 }, { 0xa438, 0x7674 },
- { 0xa438, 0xee84 }, { 0xa438, 0x7700 }, { 0xa438, 0xe080 },
- { 0xa438, 0x44f6 }, { 0xa438, 0x21e4 }, { 0xa438, 0x8044 },
- { 0xa438, 0xaf68 }, { 0xa438, 0xe411 }, { 0xa438, 0xd1a4 },
- { 0xa438, 0x10bc }, { 0xa438, 0x7432 }, { 0xa438, 0xbc74 },
- { 0xa438, 0xbbbf }, { 0xa438, 0x14cc }, { 0xa438, 0xbfaa },
- { 0xa438, 0x00bf }, { 0xa438, 0x9055 }, { 0xa438, 0xbf06 },
- { 0xa438, 0x10bf }, { 0xa438, 0xb876 }, { 0xa438, 0xbe02 },
- { 0xa438, 0x54be }, { 0xa438, 0x0232 }, { 0xa438, 0xbe02 },
- { 0xa438, 0x10be }, { 0xa438, 0x0200 }, { 0xa436, 0x8fe7 },
- { 0xa438, 0x1200 }, { 0xa436, 0x8fe9 }, { 0xa438, 0x1200 },
- { 0xa436, 0x8feb }, { 0xa438, 0x1200 }, { 0xa436, 0x8fed },
- { 0xa438, 0x1200 }, { 0xa436, 0x8fef }, { 0xa438, 0x1200 },
- { 0xa436, 0x8ff1 }, { 0xa438, 0x1200 }, { 0xa436, 0x8ff3 },
- { 0xa438, 0x1200 }, { 0xa436, 0x8ff5 }, { 0xa438, 0x1200 },
- { 0xa436, 0x8ff7 }, { 0xa438, 0x1200 }, { 0xa436, 0x8ff9 },
- { 0xa438, 0x1200 }, { 0xa436, 0x8ffb }, { 0xa438, 0x1200 },
- { 0xa436, 0x8ffd }, { 0xa438, 0x1200 }, { 0xa436, 0xb818 },
- { 0xa438, 0x6602 }, { 0xa436, 0xb81a }, { 0xa438, 0x1f75 },
- { 0xa436, 0xb81c }, { 0xa438, 0x67eb }, { 0xa436, 0xb81e },
- { 0xa438, 0xffff }, { 0xa436, 0xb850 }, { 0xa438, 0xffff },
- { 0xa436, 0xb852 }, { 0xa438, 0xffff }, { 0xa436, 0xb878 },
- { 0xa438, 0xffff }, { 0xa436, 0xb884 }, { 0xa438, 0xffff },
- { 0xa436, 0xb832 }, { 0xa438, 0x0007 }, { 0xb82e, 0x0000 },
- { 0xa436, 0x8023 }, { 0xa438, 0x0000 }, { 0xb820, 0x0000 },
- { 0xb892, 0x0000 }, { 0xb88e, 0xc07c }, { 0xb890, 0x0203 },
- { 0xb890, 0x0304 }, { 0xb890, 0x0405 }, { 0xb890, 0x0607 },
- { 0xb890, 0x0809 }, { 0xb890, 0x0b0d }, { 0xb890, 0x0f11 },
- { 0xb890, 0x1418 }, { 0xb890, 0x1b20 }, { 0xb890, 0x252b },
- { 0xb890, 0x343e }, { 0xb890, 0x4854 }, { 0xb890, 0x6203 },
- { 0xb890, 0x0304 }, { 0xb890, 0x0506 }, { 0xb890, 0x080a },
- { 0xb890, 0x0c0e }, { 0xb890, 0x1216 }, { 0xb890, 0x1b22 },
- { 0xb890, 0x2a34 }, { 0xb890, 0x404f }, { 0xb890, 0x6171 },
- { 0xb890, 0x7884 }, { 0xb890, 0x9097 }, { 0xb890, 0x0203 },
- { 0xb890, 0x0406 }, { 0xb890, 0x080b }, { 0xb890, 0x0e13 },
- { 0xb890, 0x1820 }, { 0xb890, 0x2a39 }, { 0xb890, 0x4856 },
- { 0xb890, 0xe060 }, { 0xb890, 0xe050 }, { 0xb890, 0xd080 },
- { 0xb890, 0x8070 }, { 0xb890, 0x70a0 }, { 0xb890, 0x1000 },
- { 0xb890, 0x60d0 }, { 0xb890, 0xb010 }, { 0xb890, 0xe0b0 },
- { 0xb890, 0x80c0 }, { 0xb890, 0xe000 }, { 0xb890, 0x2020 },
- { 0xb890, 0x1020 }, { 0xb890, 0xe090 }, { 0xb890, 0x80c0 },
- { 0xb890, 0x3020 }, { 0xb890, 0x00e0 }, { 0xb890, 0x40a0 },
- { 0xb890, 0xe020 }, { 0xb890, 0x5060 }, { 0xb890, 0xe0d0 },
- { 0xb890, 0xa000 }, { 0xb890, 0x3030 }, { 0xb890, 0x4070 },
- { 0xb890, 0xe0e0 }, { 0xb890, 0xd080 }, { 0xb890, 0xa010 },
- { 0xb890, 0xe040 }, { 0xb890, 0x80b0 }, { 0xb890, 0x50b0 },
- { 0xb890, 0x2090 }, { 0xb820, 0x0000 }
+ { 0xa438, 0x8478 }, { 0xa438, 0xa10f }, { 0xa438, 0x26ae },
+ { 0xa438, 0x47bf }, { 0xa438, 0x8bf3 }, { 0xa438, 0x0276 },
+ { 0xa438, 0xb6ac }, { 0xa438, 0x2802 }, { 0xa438, 0xae0b },
+ { 0xa438, 0xbf8b }, { 0xa438, 0xf902 }, { 0xa438, 0x76b6 },
+ { 0xa438, 0xe584 }, { 0xa438, 0x78ae }, { 0xa438, 0x09bf },
+ { 0xa438, 0x8bf6 }, { 0xa438, 0x0276 }, { 0xa438, 0xb6e5 },
+ { 0xa438, 0x8478 }, { 0xa438, 0xa103 }, { 0xa438, 0x02ae },
+ { 0xa438, 0x23e0 }, { 0xa438, 0x8474 }, { 0xa438, 0xe184 },
+ { 0xa438, 0x75ef }, { 0xa438, 0x64e0 }, { 0xa438, 0x83fc },
+ { 0xa438, 0xe183 }, { 0xa438, 0xfdef }, { 0xa438, 0x7402 },
+ { 0xa438, 0x75d9 }, { 0xa438, 0xad50 }, { 0xa438, 0x0ae0 },
+ { 0xa438, 0x83ec }, { 0xa438, 0xf721 }, { 0xa438, 0xe483 },
+ { 0xa438, 0xecae }, { 0xa438, 0x03af }, { 0xa438, 0x68e4 },
+ { 0xa438, 0xbf72 }, { 0xa438, 0x9502 }, { 0xa438, 0x766b },
+ { 0xa438, 0xe083 }, { 0xa438, 0xebad }, { 0xa438, 0x2170 },
+ { 0xa438, 0xbf73 }, { 0xa438, 0x7f02 }, { 0xa438, 0x766b },
+ { 0xa438, 0xd700 }, { 0xa438, 0x64bf }, { 0xa438, 0x73c4 },
+ { 0xa438, 0x0276 }, { 0xa438, 0xb6a4 }, { 0xa438, 0x0000 },
+ { 0xa438, 0x02ae }, { 0xa438, 0x0d87 }, { 0xa438, 0xa700 },
+ { 0xa438, 0x00ef }, { 0xa438, 0xe183 }, { 0xa438, 0xecf7 },
+ { 0xa438, 0x2ae5 }, { 0xa438, 0x83ec }, { 0xa438, 0xbf73 },
+ { 0xa438, 0xbe02 }, { 0xa438, 0x766b }, { 0xa438, 0xbf73 },
+ { 0xa438, 0xb802 }, { 0xa438, 0x766b }, { 0xa438, 0xbf73 },
+ { 0xa438, 0xc102 }, { 0xa438, 0x766b }, { 0xa438, 0xbf73 },
+ { 0xa438, 0xbb02 }, { 0xa438, 0x766b }, { 0xa438, 0xe084 },
+ { 0xa438, 0x9ee1 }, { 0xa438, 0x849f }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x7d02 }, { 0xa438, 0x7697 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8002 }, { 0xa438, 0x7697 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8302 }, { 0xa438, 0x7697 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8602 }, { 0xa438, 0x7697 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8902 }, { 0xa438, 0x7674 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8c02 }, { 0xa438, 0x7674 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x8f02 }, { 0xa438, 0x7674 }, { 0xa438, 0xbf72 },
+ { 0xa438, 0x9202 }, { 0xa438, 0x7674 }, { 0xa438, 0xee84 },
+ { 0xa438, 0x7700 }, { 0xa438, 0xe080 }, { 0xa438, 0x44f6 },
+ { 0xa438, 0x21e4 }, { 0xa438, 0x8044 }, { 0xa438, 0xaf68 },
+ { 0xa438, 0xe411 }, { 0xa438, 0xd1a4 }, { 0xa438, 0x10bc },
+ { 0xa438, 0x7432 }, { 0xa438, 0xbc74 }, { 0xa438, 0xbbbf },
+ { 0xa438, 0x14cc }, { 0xa438, 0xbfaa }, { 0xa438, 0x00bf },
+ { 0xa438, 0x9055 }, { 0xa438, 0xbf06 }, { 0xa438, 0x10bf },
+ { 0xa438, 0xb876 }, { 0xa438, 0xbe02 }, { 0xa438, 0x54be },
+ { 0xa438, 0x0232 }, { 0xa438, 0xbe02 }, { 0xa438, 0x10be },
+ { 0xa438, 0x0200 }, { 0xa436, 0x8fe7 }, { 0xa438, 0x1200 },
+ { 0xa436, 0x8fe9 }, { 0xa438, 0x1200 }, { 0xa436, 0x8feb },
+ { 0xa438, 0x1200 }, { 0xa436, 0x8fed }, { 0xa438, 0x1200 },
+ { 0xa436, 0x8fef }, { 0xa438, 0x1200 }, { 0xa436, 0x8ff1 },
+ { 0xa438, 0x1200 }, { 0xa436, 0x8ff3 }, { 0xa438, 0x1200 },
+ { 0xa436, 0x8ff5 }, { 0xa438, 0x1200 }, { 0xa436, 0x8ff7 },
+ { 0xa438, 0x1200 }, { 0xa436, 0x8ff9 }, { 0xa438, 0x1200 },
+ { 0xa436, 0x8ffb }, { 0xa438, 0x1200 }, { 0xa436, 0x8ffd },
+ { 0xa438, 0x1200 }, { 0xa436, 0xb818 }, { 0xa438, 0x6602 },
+ { 0xa436, 0xb81a }, { 0xa438, 0x1f75 }, { 0xa436, 0xb81c },
+ { 0xa438, 0x67eb }, { 0xa436, 0xb81e }, { 0xa438, 0xffff },
+ { 0xa436, 0xb850 }, { 0xa438, 0xffff }, { 0xa436, 0xb852 },
+ { 0xa438, 0xffff }, { 0xa436, 0xb878 }, { 0xa438, 0xffff },
+ { 0xa436, 0xb884 }, { 0xa438, 0xffff }, { 0xa436, 0xb832 },
+ { 0xa438, 0x0007 }, { 0xb82e, 0x0000 }, { 0xa436, 0x8023 },
+ { 0xa438, 0x0000 }, { 0xb820, 0x0000 }, { 0xb892, 0x0000 },
+ { 0xb88e, 0xc07c }, { 0xb890, 0x0203 }, { 0xb890, 0x0304 },
+ { 0xb890, 0x0405 }, { 0xb890, 0x0607 }, { 0xb890, 0x0809 },
+ { 0xb890, 0x0b0d }, { 0xb890, 0x0f11 }, { 0xb890, 0x1418 },
+ { 0xb890, 0x1b20 }, { 0xb890, 0x252b }, { 0xb890, 0x343e },
+ { 0xb890, 0x4854 }, { 0xb890, 0x6203 }, { 0xb890, 0x0304 },
+ { 0xb890, 0x0506 }, { 0xb890, 0x080a }, { 0xb890, 0x0c0e },
+ { 0xb890, 0x1216 }, { 0xb890, 0x1b22 }, { 0xb890, 0x2a34 },
+ { 0xb890, 0x404f }, { 0xb890, 0x6171 }, { 0xb890, 0x7884 },
+ { 0xb890, 0x9097 }, { 0xb890, 0x0203 }, { 0xb890, 0x0406 },
+ { 0xb890, 0x080b }, { 0xb890, 0x0e13 }, { 0xb890, 0x1820 },
+ { 0xb890, 0x2a39 }, { 0xb890, 0x4856 }, { 0xb890, 0xe060 },
+ { 0xb890, 0xe050 }, { 0xb890, 0xd080 }, { 0xb890, 0x8070 },
+ { 0xb890, 0x70a0 }, { 0xb890, 0x1000 }, { 0xb890, 0x60d0 },
+ { 0xb890, 0xb010 }, { 0xb890, 0xe0b0 }, { 0xb890, 0x80c0 },
+ { 0xb890, 0xe000 }, { 0xb890, 0x2020 }, { 0xb890, 0x1020 },
+ { 0xb890, 0xe090 }, { 0xb890, 0x80c0 }, { 0xb890, 0x3020 },
+ { 0xb890, 0x00e0 }, { 0xb890, 0x40a0 }, { 0xb890, 0xe020 },
+ { 0xb890, 0x5060 }, { 0xb890, 0xe0d0 }, { 0xb890, 0xa000 },
+ { 0xb890, 0x3030 }, { 0xb890, 0x4070 }, { 0xb890, 0xe0e0 },
+ { 0xb890, 0xd080 }, { 0xb890, 0xa010 }, { 0xb890, 0xe040 },
+ { 0xb890, 0x80b0 }, { 0xb890, 0x50b0 }, { 0xb890, 0x2090 },
+ { 0xb88e, 0xc110 }, { 0xb890, 0xe8f4 }, { 0xb890, 0xf4f4 },
+ { 0xb88e, 0xc14e }, { 0xb890, 0x26ef }, { 0xb890, 0xefef },
+ { 0xb88e, 0xc374 }, { 0xb890, 0x00fa }, { 0xb890, 0x008c },
+ { 0xb890, 0x03d2 }, { 0xb890, 0x0373 }, { 0xb890, 0x03b9 },
+ { 0xb890, 0x0006 }, { 0xb890, 0x0013 }, { 0xb890, 0x03fe },
+ { 0xb890, 0x03de }, { 0xb890, 0x0008 }, { 0xb890, 0x0008 },
+ { 0xb890, 0x000d }, { 0xb890, 0x03f3 }, { 0xb890, 0x0010 },
+ { 0xb890, 0x000a }, { 0xb890, 0x000e }, { 0xb890, 0x03f5 },
+ { 0xb890, 0x0001 }, { 0xb890, 0x03ff }, { 0xb890, 0x0000 },
+ { 0xb890, 0x0005 }, { 0xb890, 0x000a }, { 0xb890, 0x03f3 },
+ { 0xb890, 0x0003 }, { 0xb890, 0x03f1 }, { 0xb890, 0x0003 },
+ { 0xb890, 0x000c }, { 0xb890, 0x000e }, { 0xb890, 0x03fa },
+ { 0xb890, 0x0007 }, { 0xb890, 0x0008 }, { 0xb890, 0x0010 },
+ { 0xb890, 0x03ee }, { 0xb890, 0x000e }, { 0xb890, 0x03f6 },
+ { 0xb890, 0x0007 }, { 0xb890, 0x03fc }, { 0xb890, 0x000b },
+ { 0xb890, 0x03fb }, { 0xb890, 0x000f }, { 0xb890, 0x03f6 },
+ { 0xb890, 0x0016 }, { 0xb890, 0x03f9 }, { 0xb890, 0x03ff },
+ { 0xb890, 0x03ff }, { 0xb890, 0x0007 }, { 0xb890, 0x03fd },
+ { 0xb890, 0x000d }, { 0xb890, 0x03fe }, { 0xb890, 0x0003 },
+ { 0xb890, 0x03f1 }, { 0xb890, 0x000b }, { 0xb890, 0x0000 },
+ { 0xb890, 0x0012 }, { 0xb890, 0x03fd }, { 0xb890, 0x03fc },
+ { 0xb890, 0x0004 }, { 0xb890, 0x000f }, { 0xb890, 0x03ef },
+ { 0xb890, 0x03f9 }, { 0xb890, 0x000d }, { 0xb890, 0x0002 },
+ { 0xb890, 0x000c }, { 0xb890, 0x0003 }, { 0xb890, 0x0069 },
+ { 0xb890, 0x0064 }, { 0xb890, 0x004f }, { 0xb890, 0x001e },
+ { 0xb890, 0x03ed }, { 0xb890, 0x03dc }, { 0xb890, 0x03bc },
+ { 0xb890, 0x03d1 }, { 0xb890, 0x03c5 }, { 0xb890, 0x03e4 },
+ { 0xb890, 0x03ea }, { 0xb890, 0x03ff }, { 0xb890, 0x03fa },
+ { 0xb890, 0x0007 }, { 0xb890, 0x03ff }, { 0xb890, 0x03e5 },
+ { 0xb890, 0x03fa }, { 0xb890, 0x03f1 }, { 0xb890, 0x03f8 },
+ { 0xb890, 0x03ef }, { 0xb890, 0x0007 }, { 0xb890, 0x0002 },
+ { 0xb890, 0x0016 }, { 0xb890, 0x0001 }, { 0xb890, 0x000a },
+ { 0xb890, 0x03f6 }, { 0xb890, 0x0000 }, { 0xb890, 0x03f7 },
+ { 0xb890, 0x0004 }, { 0xb890, 0x0002 }, { 0xb890, 0x0010 },
+ { 0xb890, 0x0004 }, { 0xb890, 0x03fd }, { 0xb890, 0x03f2 },
+ { 0xb890, 0x03ee }, { 0xb890, 0x03fa }, { 0xb890, 0x03f1 },
+ { 0xb890, 0x03fe }, { 0xb890, 0x03fb }, { 0xb890, 0x0008 },
+ { 0xb890, 0x03ee }, { 0xb890, 0x000f }, { 0xb890, 0x03f0 },
+ { 0xb890, 0x000f }, { 0xb890, 0x03f3 }, { 0xb890, 0x0004 },
+ { 0xb890, 0x03f3 }, { 0xb890, 0x0003 }, { 0xb890, 0x03f5 },
+ { 0xb890, 0x03fe }, { 0xb890, 0x03f5 }, { 0xb890, 0x0008 },
+ { 0xb890, 0x03f7 }, { 0xb890, 0x000a }, { 0xb890, 0x03f9 },
+ { 0xb890, 0x0000 }, { 0xb890, 0x03fb }, { 0xb890, 0x000c },
+ { 0xb890, 0x03ec }, { 0xb890, 0x03fb }, { 0xb890, 0x03ee },
+ { 0xb890, 0x000e }, { 0xb890, 0x03f5 }, { 0xb890, 0x0007 },
+ { 0xb88e, 0xc128 }, { 0xb890, 0xf0f0 }, { 0xb890, 0xf0eb },
+ { 0xb88e, 0xc166 }, { 0xb890, 0xeaea }, { 0xb890, 0xea0e },
+ { 0xb820, 0x0000 }
};
#define MAC_R25_MCU \
rge(4): enable rss/rx queues/tso for rtl8127