]> xenbits.xensource.com Git - xenclient/kernel.git/commitdiff
imported patch bnx2x-1.46.8 bnx2-cnic-over-bridge
authort_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:05:58 +0000 (12:05 +0000)
committert_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:05:58 +0000 (12:05 +0000)
14 files changed:
buildconfigs/conf.linux/bnx2x [new file with mode: 0644]
drivers/net/Makefile
drivers/net/bnx2x.c [deleted file]
drivers/net/bnx2x.h
drivers/net/bnx2x_compat.h [new file with mode: 0644]
drivers/net/bnx2x_fw_defs.h
drivers/net/bnx2x_hsi.h
drivers/net/bnx2x_init.h
drivers/net/bnx2x_init_values.h
drivers/net/bnx2x_link.c [new file with mode: 0644]
drivers/net/bnx2x_link.h [new file with mode: 0644]
drivers/net/bnx2x_main.c [new file with mode: 0644]
drivers/net/bnx2x_reg.h
drivers/net/bnx2x_self_test.h [new file with mode: 0644]

diff --git a/buildconfigs/conf.linux/bnx2x b/buildconfigs/conf.linux/bnx2x
new file mode 100644 (file)
index 0000000..d32b377
--- /dev/null
@@ -0,0 +1 @@
+CONFIG_BNX2X=m
index 681faca4658b62350f952c157f94e991736bc1cf..97cabeed9404cdfbff3e3792a48f65bef760c02c 100644 (file)
@@ -71,6 +71,7 @@ CFLAGS_bnx2.o += -DHAVE_LE32 -DHAVE_IP_HDR -DNEW_SKB
 obj-$(CONFIG_CNIC) += cnic.o
 CFLAGS_cnic.o += -DHAVE_LE32 -DHAVE_IP_HDR -DNEW_SKB
 obj-$(CONFIG_BNX2X) += bnx2x.o
+bnx2x-objs := bnx2x_main.o bnx2x_link.o
 spidernet-y += spider_net.o spider_net_ethtool.o
 obj-$(CONFIG_SPIDER_NET) += spidernet.o sungem_phy.o
 obj-$(CONFIG_TC35815) += tc35815.o
diff --git a/drivers/net/bnx2x.c b/drivers/net/bnx2x.c
deleted file mode 100644 (file)
index e0f018f..0000000
+++ /dev/null
@@ -1,10013 +0,0 @@
-/* bnx2x.c: Broadcom Everest network driver.
- *
- * Copyright (c) 2007-2008 Broadcom Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation.
- *
- * Maintained by: Eilon Greenstein <eilong@broadcom.com>
- * Written by: Eliezer Tamir
- * Based on code from Michael Chan's bnx2 driver
- * UDP CSUM errata workaround by Arik Gendelman
- * Slowpath rework by Vladislav Zolotarov
- * Statistics and Link management by Yitchak Gertner
- *
- */
-
-/* define this to make the driver freeze on error
- * to allow getting debug info
- * (you will need to reboot afterwards)
- */
-/*#define BNX2X_STOP_ON_ERROR*/
-
-#include <linux/module.h>
-#include <linux/moduleparam.h>
-#include <linux/kernel.h>
-#include <linux/device.h>  /* for dev_info() */
-#include <linux/timer.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/vmalloc.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/dma-mapping.h>
-#include <linux/bitops.h>
-#include <linux/irq.h>
-#include <linux/delay.h>
-#include <asm/byteorder.h>
-#include <linux/time.h>
-#include <linux/ethtool.h>
-#include <linux/mii.h>
-#ifdef NETIF_F_HW_VLAN_TX
-       #include <linux/if_vlan.h>
-       #define BCM_VLAN 1
-#endif
-#include <net/ip.h>
-#include <net/tcp.h>
-#include <net/checksum.h>
-#include <linux/workqueue.h>
-#include <linux/crc32.h>
-#include <linux/prefetch.h>
-#include <linux/zlib.h>
-#include <linux/version.h>
-#include <linux/io.h>
-
-#include "bnx2x_reg.h"
-#include "bnx2x_fw_defs.h"
-#include "bnx2x_hsi.h"
-#include "bnx2x.h"
-#include "bnx2x_init.h"
-
-#define DRV_MODULE_VERSION      "1.42.4"
-#define DRV_MODULE_RELDATE      "2008/4/9"
-#define BNX2X_BC_VER           0x040200
-
-/* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT             (5*HZ)
-
-static char version[] __devinitdata =
-       "Broadcom NetXtreme II 5771X 10Gigabit Ethernet Driver "
-       DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
-
-MODULE_AUTHOR("Eliezer Tamir");
-MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710 Driver");
-MODULE_LICENSE("GPL");
-MODULE_VERSION(DRV_MODULE_VERSION);
-
-static int use_inta;
-static int poll;
-static int onefunc;
-static int nomcp;
-static int debug;
-static int use_multi;
-
-module_param(use_inta, int, 0);
-module_param(poll, int, 0);
-module_param(onefunc, int, 0);
-module_param(debug, int, 0);
-MODULE_PARM_DESC(use_inta, "use INT#A instead of MSI-X");
-MODULE_PARM_DESC(poll, "use polling (for debug)");
-MODULE_PARM_DESC(onefunc, "enable only first function");
-MODULE_PARM_DESC(nomcp, "ignore management CPU (Implies onefunc)");
-MODULE_PARM_DESC(debug, "default debug msglevel");
-
-#ifdef BNX2X_MULTI
-module_param(use_multi, int, 0);
-MODULE_PARM_DESC(use_multi, "use per-CPU queues");
-#endif
-
-enum bnx2x_board_type {
-       BCM57710 = 0,
-};
-
-/* indexed by board_t, above */
-static struct {
-       char *name;
-} board_info[] __devinitdata = {
-       { "Broadcom NetXtreme II BCM57710 XGb" }
-};
-
-static const struct pci_device_id bnx2x_pci_tbl[] = {
-       { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57710,
-               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM57710 },
-       { 0 }
-};
-
-MODULE_DEVICE_TABLE(pci, bnx2x_pci_tbl);
-
-/****************************************************************************
-* General service functions
-****************************************************************************/
-
-/* used only at init
- * locking is done by mcp
- */
-static void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val)
-{
-       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr);
-       pci_write_config_dword(bp->pdev, PCICFG_GRC_DATA, val);
-       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
-                              PCICFG_VENDOR_ID_OFFSET);
-}
-
-#ifdef BNX2X_IND_RD
-static u32 bnx2x_reg_rd_ind(struct bnx2x *bp, u32 addr)
-{
-       u32 val;
-
-       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr);
-       pci_read_config_dword(bp->pdev, PCICFG_GRC_DATA, &val);
-       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
-                              PCICFG_VENDOR_ID_OFFSET);
-
-       return val;
-}
-#endif
-
-static const u32 dmae_reg_go_c[] = {
-       DMAE_REG_GO_C0, DMAE_REG_GO_C1, DMAE_REG_GO_C2, DMAE_REG_GO_C3,
-       DMAE_REG_GO_C4, DMAE_REG_GO_C5, DMAE_REG_GO_C6, DMAE_REG_GO_C7,
-       DMAE_REG_GO_C8, DMAE_REG_GO_C9, DMAE_REG_GO_C10, DMAE_REG_GO_C11,
-       DMAE_REG_GO_C12, DMAE_REG_GO_C13, DMAE_REG_GO_C14, DMAE_REG_GO_C15
-};
-
-/* copy command into DMAE command memory and set DMAE command go */
-static void bnx2x_post_dmae(struct bnx2x *bp, struct dmae_command *dmae,
-                           int idx)
-{
-       u32 cmd_offset;
-       int i;
-
-       cmd_offset = (DMAE_REG_CMD_MEM + sizeof(struct dmae_command) * idx);
-       for (i = 0; i < (sizeof(struct dmae_command)/4); i++) {
-               REG_WR(bp, cmd_offset + i*4, *(((u32 *)dmae) + i));
-
-/*             DP(NETIF_MSG_DMAE, "DMAE cmd[%d].%d (0x%08x) : 0x%08x\n",
-                  idx, i, cmd_offset + i*4, *(((u32 *)dmae) + i)); */
-       }
-       REG_WR(bp, dmae_reg_go_c[idx], 1);
-}
-
-static void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr,
-                            u32 dst_addr, u32 len32)
-{
-       struct dmae_command *dmae = &bp->dmae;
-       int port = bp->port;
-       u32 *wb_comp = bnx2x_sp(bp, wb_comp);
-       int timeout = 200;
-
-       memset(dmae, 0, sizeof(struct dmae_command));
-
-       dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
-                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
-                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                       DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                       (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-       dmae->src_addr_lo = U64_LO(dma_addr);
-       dmae->src_addr_hi = U64_HI(dma_addr);
-       dmae->dst_addr_lo = dst_addr >> 2;
-       dmae->dst_addr_hi = 0;
-       dmae->len = len32;
-       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp));
-       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp));
-       dmae->comp_val = BNX2X_WB_COMP_VAL;
-
-/*
-       DP(NETIF_MSG_DMAE, "dmae: opcode 0x%08x\n"
-          DP_LEVEL "src_addr  [%x:%08x]  len [%d *4]  "
-                   "dst_addr [%x:%08x (%08x)]\n"
-          DP_LEVEL "comp_addr [%x:%08x]  comp_val 0x%08x\n",
-          dmae->opcode, dmae->src_addr_hi, dmae->src_addr_lo,
-          dmae->len, dmae->dst_addr_hi, dmae->dst_addr_lo, dst_addr,
-          dmae->comp_addr_hi, dmae->comp_addr_lo, dmae->comp_val);
-*/
-/*
-       DP(NETIF_MSG_DMAE, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n",
-          bp->slowpath->wb_data[0], bp->slowpath->wb_data[1],
-          bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]);
-*/
-
-       *wb_comp = 0;
-
-       bnx2x_post_dmae(bp, dmae, port * 8);
-
-       udelay(5);
-       /* adjust timeout for emulation/FPGA */
-       if (CHIP_REV_IS_SLOW(bp))
-               timeout *= 100;
-       while (*wb_comp != BNX2X_WB_COMP_VAL) {
-/*             DP(NETIF_MSG_DMAE, "wb_comp 0x%08x\n", *wb_comp); */
-               udelay(5);
-               if (!timeout) {
-                       BNX2X_ERR("dmae timeout!\n");
-                       break;
-               }
-               timeout--;
-       }
-}
-
-#ifdef BNX2X_DMAE_RD
-static void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32)
-{
-       struct dmae_command *dmae = &bp->dmae;
-       int port = bp->port;
-       u32 *wb_comp = bnx2x_sp(bp, wb_comp);
-       int timeout = 200;
-
-       memset(bnx2x_sp(bp, wb_data[0]), 0, sizeof(u32) * 4);
-       memset(dmae, 0, sizeof(struct dmae_command));
-
-       dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
-                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
-                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                       DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                       (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-       dmae->src_addr_lo = src_addr >> 2;
-       dmae->src_addr_hi = 0;
-       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_data));
-       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_data));
-       dmae->len = len32;
-       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp));
-       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp));
-       dmae->comp_val = BNX2X_WB_COMP_VAL;
-
-/*
-       DP(NETIF_MSG_DMAE, "dmae: opcode 0x%08x\n"
-          DP_LEVEL "src_addr  [%x:%08x]  len [%d *4]  "
-                   "dst_addr [%x:%08x (%08x)]\n"
-          DP_LEVEL "comp_addr [%x:%08x]  comp_val 0x%08x\n",
-          dmae->opcode, dmae->src_addr_hi, dmae->src_addr_lo,
-          dmae->len, dmae->dst_addr_hi, dmae->dst_addr_lo, src_addr,
-          dmae->comp_addr_hi, dmae->comp_addr_lo, dmae->comp_val);
-*/
-
-       *wb_comp = 0;
-
-       bnx2x_post_dmae(bp, dmae, port * 8);
-
-       udelay(5);
-       while (*wb_comp != BNX2X_WB_COMP_VAL) {
-               udelay(5);
-               if (!timeout) {
-                       BNX2X_ERR("dmae timeout!\n");
-                       break;
-               }
-               timeout--;
-       }
-/*
-       DP(NETIF_MSG_DMAE, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n",
-          bp->slowpath->wb_data[0], bp->slowpath->wb_data[1],
-          bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]);
-*/
-}
-#endif
-
-static int bnx2x_mc_assert(struct bnx2x *bp)
-{
-       int i, j, rc = 0;
-       char last_idx;
-       const char storm[] = {"XTCU"};
-       const u32 intmem_base[] = {
-               BAR_XSTRORM_INTMEM,
-               BAR_TSTRORM_INTMEM,
-               BAR_CSTRORM_INTMEM,
-               BAR_USTRORM_INTMEM
-       };
-
-       /* Go through all instances of all SEMIs */
-       for (i = 0; i < 4; i++) {
-               last_idx = REG_RD8(bp, XSTORM_ASSERT_LIST_INDEX_OFFSET +
-                                  intmem_base[i]);
-               if (last_idx)
-                       BNX2X_LOG("DATA %cSTORM_ASSERT_LIST_INDEX 0x%x\n",
-                                 storm[i], last_idx);
-
-               /* print the asserts */
-               for (j = 0; j < STROM_ASSERT_ARRAY_SIZE; j++) {
-                       u32 row0, row1, row2, row3;
-
-                       row0 = REG_RD(bp, XSTORM_ASSERT_LIST_OFFSET(j) +
-                                     intmem_base[i]);
-                       row1 = REG_RD(bp, XSTORM_ASSERT_LIST_OFFSET(j) + 4 +
-                                     intmem_base[i]);
-                       row2 = REG_RD(bp, XSTORM_ASSERT_LIST_OFFSET(j) + 8 +
-                                     intmem_base[i]);
-                       row3 = REG_RD(bp, XSTORM_ASSERT_LIST_OFFSET(j) + 12 +
-                                     intmem_base[i]);
-
-                       if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-                               BNX2X_LOG("DATA %cSTORM_ASSERT_INDEX 0x%x ="
-                                         " 0x%08x 0x%08x 0x%08x 0x%08x\n",
-                                         storm[i], j, row3, row2, row1, row0);
-                               rc++;
-                       } else {
-                               break;
-                       }
-               }
-       }
-       return rc;
-}
-
-static void bnx2x_fw_dump(struct bnx2x *bp)
-{
-       u32 mark, offset;
-       u32 data[9];
-       int word;
-
-       mark = REG_RD(bp, MCP_REG_MCPR_SCRATCH + 0xf104);
-       mark = ((mark + 0x3) & ~0x3);
-       printk(KERN_ERR PFX "begin fw dump (mark 0x%x)\n" KERN_ERR, mark);
-
-       for (offset = mark - 0x08000000; offset <= 0xF900; offset += 0x8*4) {
-               for (word = 0; word < 8; word++)
-                       data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH +
-                                                 offset + 4*word));
-               data[8] = 0x0;
-               printk(KERN_ERR "%s", (char *)data);
-       }
-       for (offset = 0xF108; offset <= mark - 0x08000000; offset += 0x8*4) {
-               for (word = 0; word < 8; word++)
-                       data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH +
-                                                 offset + 4*word));
-               data[8] = 0x0;
-               printk(KERN_ERR "%s", (char *)data);
-       }
-       printk("\n" KERN_ERR PFX "end of fw dump\n");
-}
-
-static void bnx2x_panic_dump(struct bnx2x *bp)
-{
-       int i;
-       u16 j, start, end;
-
-       BNX2X_ERR("begin crash dump -----------------\n");
-
-       for_each_queue(bp, i) {
-               struct bnx2x_fastpath *fp = &bp->fp[i];
-               struct eth_tx_db_data *hw_prods = fp->hw_tx_prods;
-
-               BNX2X_ERR("queue[%d]: tx_pkt_prod(%x)  tx_pkt_cons(%x)"
-                         "  tx_bd_prod(%x)  tx_bd_cons(%x)  *tx_cons_sb(%x)"
-                         "  *rx_cons_sb(%x)  rx_comp_prod(%x)"
-                         "  rx_comp_cons(%x)  fp_c_idx(%x)  fp_u_idx(%x)"
-                         "  bd data(%x,%x)\n",
-                         i, fp->tx_pkt_prod, fp->tx_pkt_cons, fp->tx_bd_prod,
-                         fp->tx_bd_cons, *fp->tx_cons_sb, *fp->rx_cons_sb,
-                         fp->rx_comp_prod, fp->rx_comp_cons, fp->fp_c_idx,
-                         fp->fp_u_idx, hw_prods->packets_prod,
-                         hw_prods->bds_prod);
-
-               start = TX_BD(le16_to_cpu(*fp->tx_cons_sb) - 10);
-               end = TX_BD(le16_to_cpu(*fp->tx_cons_sb) + 245);
-               for (j = start; j < end; j++) {
-                       struct sw_tx_bd *sw_bd = &fp->tx_buf_ring[j];
-
-                       BNX2X_ERR("packet[%x]=[%p,%x]\n", j,
-                                 sw_bd->skb, sw_bd->first_bd);
-               }
-
-               start = TX_BD(fp->tx_bd_cons - 10);
-               end = TX_BD(fp->tx_bd_cons + 254);
-               for (j = start; j < end; j++) {
-                       u32 *tx_bd = (u32 *)&fp->tx_desc_ring[j];
-
-                       BNX2X_ERR("tx_bd[%x]=[%x:%x:%x:%x]\n",
-                                 j, tx_bd[0], tx_bd[1], tx_bd[2], tx_bd[3]);
-               }
-
-               start = RX_BD(le16_to_cpu(*fp->rx_cons_sb) - 10);
-               end = RX_BD(le16_to_cpu(*fp->rx_cons_sb) + 503);
-               for (j = start; j < end; j++) {
-                       u32 *rx_bd = (u32 *)&fp->rx_desc_ring[j];
-                       struct sw_rx_bd *sw_bd = &fp->rx_buf_ring[j];
-
-                       BNX2X_ERR("rx_bd[%x]=[%x:%x]  sw_bd=[%p]\n",
-                                 j, rx_bd[0], rx_bd[1], sw_bd->skb);
-               }
-
-               start = RCQ_BD(fp->rx_comp_cons - 10);
-               end = RCQ_BD(fp->rx_comp_cons + 503);
-               for (j = start; j < end; j++) {
-                       u32 *cqe = (u32 *)&fp->rx_comp_ring[j];
-
-                       BNX2X_ERR("cqe[%x]=[%x:%x:%x:%x]\n",
-                                 j, cqe[0], cqe[1], cqe[2], cqe[3]);
-               }
-       }
-
-       BNX2X_ERR("def_c_idx(%u)  def_u_idx(%u)  def_x_idx(%u)"
-                 "  def_t_idx(%u)  def_att_idx(%u)  attn_state(%u)"
-                 "  spq_prod_idx(%u)\n",
-                 bp->def_c_idx, bp->def_u_idx, bp->def_x_idx, bp->def_t_idx,
-                 bp->def_att_idx, bp->attn_state, bp->spq_prod_idx);
-
-
-       bnx2x_mc_assert(bp);
-       BNX2X_ERR("end crash dump -----------------\n");
-
-       bp->stats_state = STATS_STATE_DISABLE;
-       DP(BNX2X_MSG_STATS, "stats_state - DISABLE\n");
-}
-
-static void bnx2x_int_enable(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0;
-       u32 val = REG_RD(bp, addr);
-       int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0;
-
-       if (msix) {
-               val &= ~HC_CONFIG_0_REG_SINGLE_ISR_EN_0;
-               val |= (HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
-                       HC_CONFIG_0_REG_ATTN_BIT_EN_0);
-       } else {
-               val |= (HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
-                       HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
-                       HC_CONFIG_0_REG_INT_LINE_EN_0 |
-                       HC_CONFIG_0_REG_ATTN_BIT_EN_0);
-
-               /* Errata A0.158 workaround */
-               DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)  MSI-X %d\n",
-                  val, port, addr, msix);
-
-               REG_WR(bp, addr, val);
-
-               val &= ~HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0;
-       }
-
-       DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)  MSI-X %d\n",
-          val, port, addr, msix);
-
-       REG_WR(bp, addr, val);
-}
-
-static void bnx2x_int_disable(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0;
-       u32 val = REG_RD(bp, addr);
-
-       val &= ~(HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
-                HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
-                HC_CONFIG_0_REG_INT_LINE_EN_0 |
-                HC_CONFIG_0_REG_ATTN_BIT_EN_0);
-
-       DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)\n",
-          val, port, addr);
-
-       REG_WR(bp, addr, val);
-       if (REG_RD(bp, addr) != val)
-               BNX2X_ERR("BUG! proper val not read from IGU!\n");
-}
-
-static void bnx2x_int_disable_sync(struct bnx2x *bp)
-{
-
-       int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0;
-       int i;
-
-       atomic_inc(&bp->intr_sem);
-       /* prevent the HW from sending interrupts */
-       bnx2x_int_disable(bp);
-
-       /* make sure all ISRs are done */
-       if (msix) {
-               for_each_queue(bp, i)
-                       synchronize_irq(bp->msix_table[i].vector);
-
-               /* one more for the Slow Path IRQ */
-               synchronize_irq(bp->msix_table[i].vector);
-       } else
-               synchronize_irq(bp->pdev->irq);
-
-       /* make sure sp_task is not running */
-       while (bp->sp_running)
-               msleep(1);
-}
-
-/* fast path code */
-
-/*
- * general service functions
- */
-
-static inline void bnx2x_ack_sb(struct bnx2x *bp, u8 id,
-                               u8 storm, u16 index, u8 op, u8 update)
-{
-       u32 igu_addr = (IGU_ADDR_INT_ACK + IGU_PORT_BASE * bp->port) * 8;
-       struct igu_ack_register igu_ack;
-
-       igu_ack.status_block_index = index;
-       igu_ack.sb_id_and_flags =
-                       ((id << IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT) |
-                        (storm << IGU_ACK_REGISTER_STORM_ID_SHIFT) |
-                        (update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) |
-                        (op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT));
-
-/*      DP(NETIF_MSG_INTR, "write 0x%08x to IGU addr 0x%x\n",
-          (*(u32 *)&igu_ack), BAR_IGU_INTMEM + igu_addr); */
-       REG_WR(bp, BAR_IGU_INTMEM + igu_addr, (*(u32 *)&igu_ack));
-}
-
-static inline u16 bnx2x_update_fpsb_idx(struct bnx2x_fastpath *fp)
-{
-       struct host_status_block *fpsb = fp->status_blk;
-       u16 rc = 0;
-
-       barrier(); /* status block is written to by the chip */
-       if (fp->fp_c_idx != fpsb->c_status_block.status_block_index) {
-               fp->fp_c_idx = fpsb->c_status_block.status_block_index;
-               rc |= 1;
-       }
-       if (fp->fp_u_idx != fpsb->u_status_block.status_block_index) {
-               fp->fp_u_idx = fpsb->u_status_block.status_block_index;
-               rc |= 2;
-       }
-       return rc;
-}
-
-static inline int bnx2x_has_work(struct bnx2x_fastpath *fp)
-{
-       u16 rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb);
-
-       if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
-               rx_cons_sb++;
-
-       if ((rx_cons_sb != fp->rx_comp_cons) ||
-           (le16_to_cpu(*fp->tx_cons_sb) != fp->tx_pkt_cons))
-               return 1;
-
-       return 0;
-}
-
-static u16 bnx2x_ack_int(struct bnx2x *bp)
-{
-       u32 igu_addr = (IGU_ADDR_SIMD_MASK + IGU_PORT_BASE * bp->port) * 8;
-       u32 result = REG_RD(bp, BAR_IGU_INTMEM + igu_addr);
-
-/*      DP(NETIF_MSG_INTR, "read 0x%08x from IGU addr 0x%x\n",
-          result, BAR_IGU_INTMEM + igu_addr); */
-
-#ifdef IGU_DEBUG
-#warning IGU_DEBUG active
-       if (result == 0) {
-               BNX2X_ERR("read %x from IGU\n", result);
-               REG_WR(bp, TM_REG_TIMER_SOFT_RST, 0);
-       }
-#endif
-       return result;
-}
-
-
-/*
- * fast path service functions
- */
-
-/* free skb in the packet ring at pos idx
- * return idx of last bd freed
- */
-static u16 bnx2x_free_tx_pkt(struct bnx2x *bp, struct bnx2x_fastpath *fp,
-                            u16 idx)
-{
-       struct sw_tx_bd *tx_buf = &fp->tx_buf_ring[idx];
-       struct eth_tx_bd *tx_bd;
-       struct sk_buff *skb = tx_buf->skb;
-       u16 bd_idx = tx_buf->first_bd;
-       int nbd;
-
-       DP(BNX2X_MSG_OFF, "pkt_idx %d  buff @(%p)->skb %p\n",
-          idx, tx_buf, skb);
-
-       /* unmap first bd */
-       DP(BNX2X_MSG_OFF, "free bd_idx %d\n", bd_idx);
-       tx_bd = &fp->tx_desc_ring[bd_idx];
-       pci_unmap_single(bp->pdev, BD_UNMAP_ADDR(tx_bd),
-                        BD_UNMAP_LEN(tx_bd), PCI_DMA_TODEVICE);
-
-       nbd = le16_to_cpu(tx_bd->nbd) - 1;
-#ifdef BNX2X_STOP_ON_ERROR
-       if (nbd > (MAX_SKB_FRAGS + 2)) {
-               BNX2X_ERR("bad nbd!\n");
-               bnx2x_panic();
-       }
-#endif
-
-       /* Skip a parse bd and the TSO split header bd
-          since they have no mapping */
-       if (nbd)
-               bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
-
-       if (tx_bd->bd_flags.as_bitfield & (ETH_TX_BD_FLAGS_IP_CSUM |
-                                          ETH_TX_BD_FLAGS_TCP_CSUM |
-                                          ETH_TX_BD_FLAGS_SW_LSO)) {
-               if (--nbd)
-                       bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
-               tx_bd = &fp->tx_desc_ring[bd_idx];
-               /* is this a TSO split header bd? */
-               if (tx_bd->bd_flags.as_bitfield & ETH_TX_BD_FLAGS_SW_LSO) {
-                       if (--nbd)
-                               bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
-               }
-       }
-
-       /* now free frags */
-       while (nbd > 0) {
-
-               DP(BNX2X_MSG_OFF, "free frag bd_idx %d\n", bd_idx);
-               tx_bd = &fp->tx_desc_ring[bd_idx];
-               pci_unmap_page(bp->pdev, BD_UNMAP_ADDR(tx_bd),
-                              BD_UNMAP_LEN(tx_bd), PCI_DMA_TODEVICE);
-               if (--nbd)
-                       bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
-       }
-
-       /* release skb */
-       BUG_TRAP(skb);
-       dev_kfree_skb(skb);
-       tx_buf->first_bd = 0;
-       tx_buf->skb = NULL;
-
-       return bd_idx;
-}
-
-static inline u32 bnx2x_tx_avail(struct bnx2x_fastpath *fp)
-{
-       u16 used;
-       u32 prod;
-       u32 cons;
-
-       /* Tell compiler that prod and cons can change */
-       barrier();
-       prod = fp->tx_bd_prod;
-       cons = fp->tx_bd_cons;
-
-       used = (NUM_TX_BD - NUM_TX_RINGS + prod - cons +
-               (cons / TX_DESC_CNT) - (prod / TX_DESC_CNT));
-
-       if (prod >= cons) {
-               /* used = prod - cons - prod/size + cons/size */
-               used -= NUM_TX_BD - NUM_TX_RINGS;
-       }
-
-       BUG_TRAP(used <= fp->bp->tx_ring_size);
-       BUG_TRAP((fp->bp->tx_ring_size - used) <= MAX_TX_AVAIL);
-
-       return (fp->bp->tx_ring_size - used);
-}
-
-static void bnx2x_tx_int(struct bnx2x_fastpath *fp, int work)
-{
-       struct bnx2x *bp = fp->bp;
-       u16 hw_cons, sw_cons, bd_cons = fp->tx_bd_cons;
-       int done = 0;
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return;
-#endif
-
-       hw_cons = le16_to_cpu(*fp->tx_cons_sb);
-       sw_cons = fp->tx_pkt_cons;
-
-       while (sw_cons != hw_cons) {
-               u16 pkt_cons;
-
-               pkt_cons = TX_BD(sw_cons);
-
-               /* prefetch(bp->tx_buf_ring[pkt_cons].skb); */
-
-               DP(NETIF_MSG_TX_DONE, "hw_cons %u  sw_cons %u  pkt_cons %d\n",
-                  hw_cons, sw_cons, pkt_cons);
-
-/*             if (NEXT_TX_IDX(sw_cons) != hw_cons) {
-                       rmb();
-                       prefetch(fp->tx_buf_ring[NEXT_TX_IDX(sw_cons)].skb);
-               }
-*/
-               bd_cons = bnx2x_free_tx_pkt(bp, fp, pkt_cons);
-               sw_cons++;
-               done++;
-
-               if (done == work)
-                       break;
-       }
-
-       fp->tx_pkt_cons = sw_cons;
-       fp->tx_bd_cons = bd_cons;
-
-       /* Need to make the tx_cons update visible to start_xmit()
-        * before checking for netif_queue_stopped().  Without the
-        * memory barrier, there is a small possibility that start_xmit()
-        * will miss it and cause the queue to be stopped forever.
-        */
-       smp_mb();
-
-       /* TBD need a thresh? */
-       if (unlikely(netif_queue_stopped(bp->dev))) {
-
-               netif_tx_lock(bp->dev);
-
-               if (netif_queue_stopped(bp->dev) &&
-                   (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3))
-                       netif_wake_queue(bp->dev);
-
-               netif_tx_unlock(bp->dev);
-
-       }
-}
-
-static void bnx2x_sp_event(struct bnx2x_fastpath *fp,
-                          union eth_rx_cqe *rr_cqe)
-{
-       struct bnx2x *bp = fp->bp;
-       int cid = SW_CID(rr_cqe->ramrod_cqe.conn_and_cmd_data);
-       int command = CQE_CMD(rr_cqe->ramrod_cqe.conn_and_cmd_data);
-
-       DP(NETIF_MSG_RX_STATUS,
-          "fp %d  cid %d  got ramrod #%d  state is %x  type is %d\n",
-          fp->index, cid, command, bp->state, rr_cqe->ramrod_cqe.type);
-
-       bp->spq_left++;
-
-       if (fp->index) {
-               switch (command | fp->state) {
-               case (RAMROD_CMD_ID_ETH_CLIENT_SETUP |
-                                               BNX2X_FP_STATE_OPENING):
-                       DP(NETIF_MSG_IFUP, "got MULTI[%d] setup ramrod\n",
-                          cid);
-                       fp->state = BNX2X_FP_STATE_OPEN;
-                       break;
-
-               case (RAMROD_CMD_ID_ETH_HALT | BNX2X_FP_STATE_HALTING):
-                       DP(NETIF_MSG_IFDOWN, "got MULTI[%d] halt ramrod\n",
-                          cid);
-                       fp->state = BNX2X_FP_STATE_HALTED;
-                       break;
-
-               default:
-                       BNX2X_ERR("unexpected MC reply(%d)  state is %x\n",
-                                 command, fp->state);
-               }
-               mb(); /* force bnx2x_wait_ramrod to see the change */
-               return;
-       }
-
-       switch (command | bp->state) {
-       case (RAMROD_CMD_ID_ETH_PORT_SETUP | BNX2X_STATE_OPENING_WAIT4_PORT):
-               DP(NETIF_MSG_IFUP, "got setup ramrod\n");
-               bp->state = BNX2X_STATE_OPEN;
-               break;
-
-       case (RAMROD_CMD_ID_ETH_HALT | BNX2X_STATE_CLOSING_WAIT4_HALT):
-               DP(NETIF_MSG_IFDOWN, "got halt ramrod\n");
-               bp->state = BNX2X_STATE_CLOSING_WAIT4_DELETE;
-               fp->state = BNX2X_FP_STATE_HALTED;
-               break;
-
-       case (RAMROD_CMD_ID_ETH_CFC_DEL | BNX2X_STATE_CLOSING_WAIT4_HALT):
-               DP(NETIF_MSG_IFDOWN, "got delete ramrod for MULTI[%d]\n",
-                  cid);
-               bnx2x_fp(bp, cid, state) = BNX2X_FP_STATE_CLOSED;
-               break;
-
-       case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_OPEN):
-               DP(NETIF_MSG_IFUP, "got set mac ramrod\n");
-               break;
-
-       case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_CLOSING_WAIT4_HALT):
-               DP(NETIF_MSG_IFUP, "got (un)set mac ramrod\n");
-               break;
-
-       default:
-               BNX2X_ERR("unexpected ramrod (%d)  state is %x\n",
-                         command, bp->state);
-       }
-
-       mb(); /* force bnx2x_wait_ramrod to see the change */
-}
-
-static inline int bnx2x_alloc_rx_skb(struct bnx2x *bp,
-                                    struct bnx2x_fastpath *fp, u16 index)
-{
-       struct sk_buff *skb;
-       struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[index];
-       struct eth_rx_bd *rx_bd = &fp->rx_desc_ring[index];
-       dma_addr_t mapping;
-
-       skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size);
-       if (unlikely(skb == NULL))
-               return -ENOMEM;
-
-       mapping = pci_map_single(bp->pdev, skb->data, bp->rx_buf_use_size,
-                                PCI_DMA_FROMDEVICE);
-       if (unlikely(dma_mapping_error(mapping))) {
-
-               dev_kfree_skb(skb);
-               return -ENOMEM;
-       }
-
-       rx_buf->skb = skb;
-       pci_unmap_addr_set(rx_buf, mapping, mapping);
-
-       rx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
-       rx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
-
-       return 0;
-}
-
-/* note that we are not allocating a new skb,
- * we are just moving one from cons to prod
- * we are not creating a new mapping,
- * so there is no need to check for dma_mapping_error().
- */
-static void bnx2x_reuse_rx_skb(struct bnx2x_fastpath *fp,
-                              struct sk_buff *skb, u16 cons, u16 prod)
-{
-       struct bnx2x *bp = fp->bp;
-       struct sw_rx_bd *cons_rx_buf = &fp->rx_buf_ring[cons];
-       struct sw_rx_bd *prod_rx_buf = &fp->rx_buf_ring[prod];
-       struct eth_rx_bd *cons_bd = &fp->rx_desc_ring[cons];
-       struct eth_rx_bd *prod_bd = &fp->rx_desc_ring[prod];
-
-       pci_dma_sync_single_for_device(bp->pdev,
-                                      pci_unmap_addr(cons_rx_buf, mapping),
-                                      bp->rx_offset + RX_COPY_THRESH,
-                                      PCI_DMA_FROMDEVICE);
-
-       prod_rx_buf->skb = cons_rx_buf->skb;
-       pci_unmap_addr_set(prod_rx_buf, mapping,
-                          pci_unmap_addr(cons_rx_buf, mapping));
-       *prod_bd = *cons_bd;
-}
-
-static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
-{
-       struct bnx2x *bp = fp->bp;
-       u16 bd_cons, bd_prod, comp_ring_cons;
-       u16 hw_comp_cons, sw_comp_cons, sw_comp_prod;
-       int rx_pkt = 0;
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return 0;
-#endif
-
-       hw_comp_cons = le16_to_cpu(*fp->rx_cons_sb);
-       if ((hw_comp_cons & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
-               hw_comp_cons++;
-
-       bd_cons = fp->rx_bd_cons;
-       bd_prod = fp->rx_bd_prod;
-       sw_comp_cons = fp->rx_comp_cons;
-       sw_comp_prod = fp->rx_comp_prod;
-
-       /* Memory barrier necessary as speculative reads of the rx
-        * buffer can be ahead of the index in the status block
-        */
-       rmb();
-
-       DP(NETIF_MSG_RX_STATUS,
-          "queue[%d]:  hw_comp_cons %u  sw_comp_cons %u\n",
-          fp->index, hw_comp_cons, sw_comp_cons);
-
-       while (sw_comp_cons != hw_comp_cons) {
-               unsigned int len, pad;
-               struct sw_rx_bd *rx_buf;
-               struct sk_buff *skb;
-               union eth_rx_cqe *cqe;
-
-               comp_ring_cons = RCQ_BD(sw_comp_cons);
-               bd_prod = RX_BD(bd_prod);
-               bd_cons = RX_BD(bd_cons);
-
-               cqe = &fp->rx_comp_ring[comp_ring_cons];
-
-               DP(NETIF_MSG_RX_STATUS, "hw_comp_cons %u  sw_comp_cons %u"
-                  "  comp_ring (%u)  bd_ring (%u,%u)\n",
-                  hw_comp_cons, sw_comp_cons,
-                  comp_ring_cons, bd_prod, bd_cons);
-               DP(NETIF_MSG_RX_STATUS, "CQE type %x  err %x  status %x"
-                  "  queue %x  vlan %x  len %x\n",
-                  cqe->fast_path_cqe.type,
-                  cqe->fast_path_cqe.error_type_flags,
-                  cqe->fast_path_cqe.status_flags,
-                  cqe->fast_path_cqe.rss_hash_result,
-                  cqe->fast_path_cqe.vlan_tag, cqe->fast_path_cqe.pkt_len);
-
-               /* is this a slowpath msg? */
-               if (unlikely(cqe->fast_path_cqe.type)) {
-                       bnx2x_sp_event(fp, cqe);
-                       goto next_cqe;
-
-               /* this is an rx packet */
-               } else {
-                       rx_buf = &fp->rx_buf_ring[bd_cons];
-                       skb = rx_buf->skb;
-
-                       len = le16_to_cpu(cqe->fast_path_cqe.pkt_len);
-                       pad = cqe->fast_path_cqe.placement_offset;
-
-                       pci_dma_sync_single_for_device(bp->pdev,
-                                       pci_unmap_addr(rx_buf, mapping),
-                                                      pad + RX_COPY_THRESH,
-                                                      PCI_DMA_FROMDEVICE);
-                       prefetch(skb);
-                       prefetch(((char *)(skb)) + 128);
-
-                       /* is this an error packet? */
-                       if (unlikely(cqe->fast_path_cqe.error_type_flags &
-                                                       ETH_RX_ERROR_FALGS)) {
-                       /* do we sometimes forward error packets anyway? */
-                               DP(NETIF_MSG_RX_ERR,
-                                  "ERROR flags(%u) Rx packet(%u)\n",
-                                  cqe->fast_path_cqe.error_type_flags,
-                                  sw_comp_cons);
-                               /* TBD make sure MC counts this as a drop */
-                               goto reuse_rx;
-                       }
-
-                       /* Since we don't have a jumbo ring
-                        * copy small packets if mtu > 1500
-                        */
-                       if ((bp->dev->mtu > ETH_MAX_PACKET_SIZE) &&
-                           (len <= RX_COPY_THRESH)) {
-                               struct sk_buff *new_skb;
-
-                               new_skb = netdev_alloc_skb(bp->dev,
-                                                          len + pad);
-                               if (new_skb == NULL) {
-                                       DP(NETIF_MSG_RX_ERR,
-                                          "ERROR packet dropped "
-                                          "because of alloc failure\n");
-                                       /* TBD count this as a drop? */
-                                       goto reuse_rx;
-                               }
-
-                               /* aligned copy */
-                               skb_copy_from_linear_data_offset(skb, pad,
-                                                   new_skb->data + pad, len);
-                               skb_reserve(new_skb, pad);
-                               skb_put(new_skb, len);
-
-                               bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod);
-
-                               skb = new_skb;
-
-                       } else if (bnx2x_alloc_rx_skb(bp, fp, bd_prod) == 0) {
-                               pci_unmap_single(bp->pdev,
-                                       pci_unmap_addr(rx_buf, mapping),
-                                                bp->rx_buf_use_size,
-                                                PCI_DMA_FROMDEVICE);
-                               skb_reserve(skb, pad);
-                               skb_put(skb, len);
-
-                       } else {
-                               DP(NETIF_MSG_RX_ERR,
-                                  "ERROR packet dropped because "
-                                  "of alloc failure\n");
-reuse_rx:
-                               bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod);
-                               goto next_rx;
-                       }
-
-                       skb->protocol = eth_type_trans(skb, bp->dev);
-
-                       skb->ip_summed = CHECKSUM_NONE;
-                       if (bp->rx_csum && BNX2X_RX_SUM_OK(cqe))
-                               skb->ip_summed = CHECKSUM_UNNECESSARY;
-
-                       /* TBD do we pass bad csum packets in promisc */
-               }
-
-#ifdef BCM_VLAN
-               if ((le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags)
-                               & PARSING_FLAGS_NUMBER_OF_NESTED_VLANS)
-                   && (bp->vlgrp != NULL))
-                       vlan_hwaccel_receive_skb(skb, bp->vlgrp,
-                               le16_to_cpu(cqe->fast_path_cqe.vlan_tag));
-               else
-#endif
-               netif_receive_skb(skb);
-
-               bp->dev->last_rx = jiffies;
-
-next_rx:
-               rx_buf->skb = NULL;
-
-               bd_cons = NEXT_RX_IDX(bd_cons);
-               bd_prod = NEXT_RX_IDX(bd_prod);
-next_cqe:
-               sw_comp_prod = NEXT_RCQ_IDX(sw_comp_prod);
-               sw_comp_cons = NEXT_RCQ_IDX(sw_comp_cons);
-               rx_pkt++;
-
-               if ((rx_pkt == budget))
-                       break;
-       } /* while */
-
-       fp->rx_bd_cons = bd_cons;
-       fp->rx_bd_prod = bd_prod;
-       fp->rx_comp_cons = sw_comp_cons;
-       fp->rx_comp_prod = sw_comp_prod;
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_RCQ_PROD_OFFSET(bp->port, fp->index), sw_comp_prod);
-
-       mmiowb(); /* keep prod updates ordered */
-
-       fp->rx_pkt += rx_pkt;
-       fp->rx_calls++;
-
-       return rx_pkt;
-}
-
-static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie, struct pt_regs *regs)
-{
-       struct bnx2x_fastpath *fp = fp_cookie;
-       struct bnx2x *bp = fp->bp;
-       struct net_device *dev = bp->dev;
-       int index = fp->index;
-
-       DP(NETIF_MSG_INTR, "got an msix interrupt on [%d]\n", index);
-       bnx2x_ack_sb(bp, index, USTORM_ID, 0, IGU_INT_DISABLE, 0);
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return IRQ_HANDLED;
-#endif
-
-       prefetch(fp->rx_cons_sb);
-       prefetch(fp->tx_cons_sb);
-       prefetch(&fp->status_blk->c_status_block.status_block_index);
-       prefetch(&fp->status_blk->u_status_block.status_block_index);
-
-       netif_rx_schedule(dev);
-       return IRQ_HANDLED;
-}
-
-static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
-{
-       struct net_device *dev = dev_instance;
-       struct bnx2x *bp = netdev_priv(dev);
-       u16 status = bnx2x_ack_int(bp);
-
-       if (unlikely(status == 0)) {
-               DP(NETIF_MSG_INTR, "not our interrupt!\n");
-               return IRQ_NONE;
-       }
-
-       DP(NETIF_MSG_INTR, "got an interrupt status is %u\n", status);
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return IRQ_HANDLED;
-#endif
-
-       /* Return here if interrupt is shared and is disabled */
-       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
-               DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n");
-               return IRQ_HANDLED;
-       }
-
-       if (status & 0x2) {
-               struct bnx2x_fastpath *fp = &bp->fp[0];
-
-               prefetch(fp->rx_cons_sb);
-               prefetch(fp->tx_cons_sb);
-               prefetch(&fp->status_blk->c_status_block.status_block_index);
-               prefetch(&fp->status_blk->u_status_block.status_block_index);
-
-               netif_rx_schedule(dev);
-
-               status &= ~0x2;
-               if (!status)
-                       return IRQ_HANDLED;
-       }
-
-       if (unlikely(status & 0x1)) {
-               bp->sp_running = 1;
-               smp_mb(); /* make sure close can see this */
-
-               schedule_work(&bp->sp_task);
-
-               status &= ~0x1;
-               if (!status)
-                       return IRQ_HANDLED;
-       }
-
-       DP(NETIF_MSG_INTR, "got an unknown interrupt! (status is %u)\n",
-          status);
-
-       return IRQ_HANDLED;
-}
-
-/* end of fast path */
-
-/* PHY/MAC */
-
-/*
- * General service functions
- */
-
-static void bnx2x_leds_set(struct bnx2x *bp, unsigned int speed)
-{
-       int port = bp->port;
-
-       NIG_WR(NIG_REG_LED_MODE_P0 + port*4,
-              ((bp->hw_config & SHARED_HW_CFG_LED_MODE_MASK) >>
-               SHARED_HW_CFG_LED_MODE_SHIFT));
-       NIG_WR(NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 + port*4, 0);
-
-       /* Set blinking rate to ~15.9Hz */
-       NIG_WR(NIG_REG_LED_CONTROL_BLINK_RATE_P0 + port*4,
-              LED_BLINK_RATE_VAL);
-       NIG_WR(NIG_REG_LED_CONTROL_BLINK_RATE_ENA_P0 + port*4, 1);
-
-       /* On Ax chip versions for speeds less than 10G
-          LED scheme is different */
-       if ((CHIP_REV(bp) == CHIP_REV_Ax) && (speed < SPEED_10000)) {
-               NIG_WR(NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 + port*4, 1);
-               NIG_WR(NIG_REG_LED_CONTROL_TRAFFIC_P0 + port*4, 0);
-               NIG_WR(NIG_REG_LED_CONTROL_BLINK_TRAFFIC_P0 + port*4, 1);
-       }
-}
-
-static void bnx2x_leds_unset(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       NIG_WR(NIG_REG_LED_10G_P0 + port*4, 0);
-       NIG_WR(NIG_REG_LED_MODE_P0 + port*4, SHARED_HW_CFG_LED_MAC1);
-}
-
-static u32 bnx2x_bits_en(struct bnx2x *bp, u32 reg, u32 bits)
-{
-       u32 val = REG_RD(bp, reg);
-
-       val |= bits;
-       REG_WR(bp, reg, val);
-       return val;
-}
-
-static u32 bnx2x_bits_dis(struct bnx2x *bp, u32 reg, u32 bits)
-{
-       u32 val = REG_RD(bp, reg);
-
-       val &= ~bits;
-       REG_WR(bp, reg, val);
-       return val;
-}
-
-static int bnx2x_hw_lock(struct bnx2x *bp, u32 resource)
-{
-       u32 cnt;
-       u32 lock_status;
-       u32 resource_bit = (1 << resource);
-       u8 func = bp->port;
-
-       /* Validating that the resource is within range */
-       if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-               DP(NETIF_MSG_HW,
-                  "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n",
-                  resource, HW_LOCK_MAX_RESOURCE_VALUE);
-               return -EINVAL;
-       }
-
-       /* Validating that the resource is not already taken */
-       lock_status = REG_RD(bp, MISC_REG_DRIVER_CONTROL_1 + func*8);
-       if (lock_status & resource_bit) {
-               DP(NETIF_MSG_HW, "lock_status 0x%x  resource_bit 0x%x\n",
-                  lock_status, resource_bit);
-               return -EEXIST;
-       }
-
-       /* Try for 1 second every 5ms */
-       for (cnt = 0; cnt < 200; cnt++) {
-               /* Try to acquire the lock */
-               REG_WR(bp, MISC_REG_DRIVER_CONTROL_1 + func*8 + 4,
-                      resource_bit);
-               lock_status = REG_RD(bp, MISC_REG_DRIVER_CONTROL_1 + func*8);
-               if (lock_status & resource_bit)
-                       return 0;
-
-               msleep(5);
-       }
-       DP(NETIF_MSG_HW, "Timeout\n");
-       return -EAGAIN;
-}
-
-static int bnx2x_hw_unlock(struct bnx2x *bp, u32 resource)
-{
-       u32 lock_status;
-       u32 resource_bit = (1 << resource);
-       u8 func = bp->port;
-
-       /* Validating that the resource is within range */
-       if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-               DP(NETIF_MSG_HW,
-                  "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n",
-                  resource, HW_LOCK_MAX_RESOURCE_VALUE);
-               return -EINVAL;
-       }
-
-       /* Validating that the resource is currently taken */
-       lock_status = REG_RD(bp, MISC_REG_DRIVER_CONTROL_1 + func*8);
-       if (!(lock_status & resource_bit)) {
-               DP(NETIF_MSG_HW, "lock_status 0x%x  resource_bit 0x%x\n",
-                  lock_status, resource_bit);
-               return -EFAULT;
-       }
-
-       REG_WR(bp, MISC_REG_DRIVER_CONTROL_1 + func*8, resource_bit);
-       return 0;
-}
-
-static int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode)
-{
-       /* The GPIO should be swapped if swap register is set and active */
-       int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) &&
-                        REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ bp->port;
-       int gpio_shift = gpio_num +
-                       (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0);
-       u32 gpio_mask = (1 << gpio_shift);
-       u32 gpio_reg;
-
-       if (gpio_num > MISC_REGISTERS_GPIO_3) {
-               BNX2X_ERR("Invalid GPIO %d\n", gpio_num);
-               return -EINVAL;
-       }
-
-       bnx2x_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);
-       /* read GPIO and mask except the float bits */
-       gpio_reg = (REG_RD(bp, MISC_REG_GPIO) & MISC_REGISTERS_GPIO_FLOAT);
-
-       switch (mode) {
-       case MISC_REGISTERS_GPIO_OUTPUT_LOW:
-               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output low\n",
-                  gpio_num, gpio_shift);
-               /* clear FLOAT and set CLR */
-               gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
-               gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_CLR_POS);
-               break;
-
-       case MISC_REGISTERS_GPIO_OUTPUT_HIGH:
-               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output high\n",
-                  gpio_num, gpio_shift);
-               /* clear FLOAT and set SET */
-               gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
-               gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_SET_POS);
-               break;
-
-       case MISC_REGISTERS_GPIO_INPUT_HI_Z :
-               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> input\n",
-                  gpio_num, gpio_shift);
-               /* set FLOAT */
-               gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
-               break;
-
-       default:
-               break;
-       }
-
-       REG_WR(bp, MISC_REG_GPIO, gpio_reg);
-       bnx2x_hw_unlock(bp, HW_LOCK_RESOURCE_GPIO);
-
-       return 0;
-}
-
-static int bnx2x_set_spio(struct bnx2x *bp, int spio_num, u32 mode)
-{
-       u32 spio_mask = (1 << spio_num);
-       u32 spio_reg;
-
-       if ((spio_num < MISC_REGISTERS_SPIO_4) ||
-           (spio_num > MISC_REGISTERS_SPIO_7)) {
-               BNX2X_ERR("Invalid SPIO %d\n", spio_num);
-               return -EINVAL;
-       }
-
-       bnx2x_hw_lock(bp, HW_LOCK_RESOURCE_SPIO);
-       /* read SPIO and mask except the float bits */
-       spio_reg = (REG_RD(bp, MISC_REG_SPIO) & MISC_REGISTERS_SPIO_FLOAT);
-
-       switch (mode) {
-       case MISC_REGISTERS_SPIO_OUTPUT_LOW :
-               DP(NETIF_MSG_LINK, "Set SPIO %d -> output low\n", spio_num);
-               /* clear FLOAT and set CLR */
-               spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
-               spio_reg |=  (spio_mask << MISC_REGISTERS_SPIO_CLR_POS);
-               break;
-
-       case MISC_REGISTERS_SPIO_OUTPUT_HIGH :
-               DP(NETIF_MSG_LINK, "Set SPIO %d -> output high\n", spio_num);
-               /* clear FLOAT and set SET */
-               spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
-               spio_reg |=  (spio_mask << MISC_REGISTERS_SPIO_SET_POS);
-               break;
-
-       case MISC_REGISTERS_SPIO_INPUT_HI_Z:
-               DP(NETIF_MSG_LINK, "Set SPIO %d -> input\n", spio_num);
-               /* set FLOAT */
-               spio_reg |= (spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
-               break;
-
-       default:
-               break;
-       }
-
-       REG_WR(bp, MISC_REG_SPIO, spio_reg);
-       bnx2x_hw_unlock(bp, HW_LOCK_RESOURCE_SPIO);
-
-       return 0;
-}
-
-static int bnx2x_mdio22_write(struct bnx2x *bp, u32 reg, u32 val)
-{
-       int port = bp->port;
-       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-       u32 tmp;
-       int i, rc;
-
-/*      DP(NETIF_MSG_HW, "phy_addr 0x%x  reg 0x%x  val 0x%08x\n",
-          bp->phy_addr, reg, val); */
-
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG) {
-
-               tmp = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               tmp &= ~EMAC_MDIO_MODE_AUTO_POLL;
-               EMAC_WR(EMAC_REG_EMAC_MDIO_MODE, tmp);
-               REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               udelay(40);
-       }
-
-       tmp = ((bp->phy_addr << 21) | (reg << 16) |
-              (val & EMAC_MDIO_COMM_DATA) |
-              EMAC_MDIO_COMM_COMMAND_WRITE_22 |
-              EMAC_MDIO_COMM_START_BUSY);
-       EMAC_WR(EMAC_REG_EMAC_MDIO_COMM, tmp);
-
-       for (i = 0; i < 50; i++) {
-               udelay(10);
-
-               tmp = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_COMM);
-               if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {
-                       udelay(5);
-                       break;
-               }
-       }
-
-       if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-               BNX2X_ERR("write phy register failed\n");
-
-               rc = -EBUSY;
-       } else {
-               rc = 0;
-       }
-
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG) {
-
-               tmp = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               tmp |= EMAC_MDIO_MODE_AUTO_POLL;
-               EMAC_WR(EMAC_REG_EMAC_MDIO_MODE, tmp);
-       }
-
-       return rc;
-}
-
-static int bnx2x_mdio22_read(struct bnx2x *bp, u32 reg, u32 *ret_val)
-{
-       int port = bp->port;
-       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-       u32 val;
-       int i, rc;
-
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG) {
-
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               val &= ~EMAC_MDIO_MODE_AUTO_POLL;
-               EMAC_WR(EMAC_REG_EMAC_MDIO_MODE, val);
-               REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               udelay(40);
-       }
-
-       val = ((bp->phy_addr << 21) | (reg << 16) |
-              EMAC_MDIO_COMM_COMMAND_READ_22 |
-              EMAC_MDIO_COMM_START_BUSY);
-       EMAC_WR(EMAC_REG_EMAC_MDIO_COMM, val);
-
-       for (i = 0; i < 50; i++) {
-               udelay(10);
-
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_COMM);
-               if (!(val & EMAC_MDIO_COMM_START_BUSY)) {
-                       val &= EMAC_MDIO_COMM_DATA;
-                       break;
-               }
-       }
-
-       if (val & EMAC_MDIO_COMM_START_BUSY) {
-               BNX2X_ERR("read phy register failed\n");
-
-               *ret_val = 0x0;
-               rc = -EBUSY;
-       } else {
-               *ret_val = val;
-               rc = 0;
-       }
-
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG) {
-
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MDIO_MODE);
-               val |= EMAC_MDIO_MODE_AUTO_POLL;
-               EMAC_WR(EMAC_REG_EMAC_MDIO_MODE, val);
-       }
-
-/*      DP(NETIF_MSG_HW, "phy_addr 0x%x  reg 0x%x  ret_val 0x%08x\n",
-          bp->phy_addr, reg, *ret_val); */
-
-       return rc;
-}
-
-static int bnx2x_mdio45_ctrl_write(struct bnx2x *bp, u32 mdio_ctrl,
-                                  u32 phy_addr, u32 reg, u32 addr, u32 val)
-{
-       u32 tmp;
-       int i, rc = 0;
-
-       /* set clause 45 mode, slow down the MDIO clock to 2.5MHz
-        * (a value of 49==0x31) and make sure that the AUTO poll is off
-        */
-       tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       tmp &= ~(EMAC_MDIO_MODE_AUTO_POLL | EMAC_MDIO_MODE_CLOCK_CNT);
-       tmp |= (EMAC_MDIO_MODE_CLAUSE_45 |
-               (49 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT));
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, tmp);
-       REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       udelay(40);
-
-       /* address */
-       tmp = ((phy_addr << 21) | (reg << 16) | addr |
-              EMAC_MDIO_COMM_COMMAND_ADDRESS |
-              EMAC_MDIO_COMM_START_BUSY);
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);
-
-       for (i = 0; i < 50; i++) {
-               udelay(10);
-
-               tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
-               if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {
-                       udelay(5);
-                       break;
-               }
-       }
-       if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-               BNX2X_ERR("write phy register failed\n");
-
-               rc = -EBUSY;
-
-       } else {
-               /* data */
-               tmp = ((phy_addr << 21) | (reg << 16) | val |
-                      EMAC_MDIO_COMM_COMMAND_WRITE_45 |
-                      EMAC_MDIO_COMM_START_BUSY);
-               REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);
-
-               for (i = 0; i < 50; i++) {
-                       udelay(10);
-
-                       tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
-                       if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {
-                               udelay(5);
-                               break;
-                       }
-               }
-
-               if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-                       BNX2X_ERR("write phy register failed\n");
-
-                       rc = -EBUSY;
-               }
-       }
-
-       /* unset clause 45 mode, set the MDIO clock to a faster value
-        * (0x13 => 6.25Mhz) and restore the AUTO poll if needed
-        */
-       tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       tmp &= ~(EMAC_MDIO_MODE_CLAUSE_45 | EMAC_MDIO_MODE_CLOCK_CNT);
-       tmp |= (0x13 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT);
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG)
-               tmp |= EMAC_MDIO_MODE_AUTO_POLL;
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, tmp);
-
-       return rc;
-}
-
-static int bnx2x_mdio45_write(struct bnx2x *bp, u32 phy_addr, u32 reg,
-                             u32 addr, u32 val)
-{
-       u32 emac_base = bp->port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-
-       return bnx2x_mdio45_ctrl_write(bp, emac_base, phy_addr,
-                                      reg, addr, val);
-}
-
-static int bnx2x_mdio45_ctrl_read(struct bnx2x *bp, u32 mdio_ctrl,
-                                 u32 phy_addr, u32 reg, u32 addr,
-                                 u32 *ret_val)
-{
-       u32 val;
-       int i, rc = 0;
-
-       /* set clause 45 mode, slow down the MDIO clock to 2.5MHz
-        * (a value of 49==0x31) and make sure that the AUTO poll is off
-        */
-       val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       val &= ~(EMAC_MDIO_MODE_AUTO_POLL | EMAC_MDIO_MODE_CLOCK_CNT);
-       val |= (EMAC_MDIO_MODE_CLAUSE_45 |
-               (49 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT));
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, val);
-       REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       udelay(40);
-
-       /* address */
-       val = ((phy_addr << 21) | (reg << 16) | addr |
-              EMAC_MDIO_COMM_COMMAND_ADDRESS |
-              EMAC_MDIO_COMM_START_BUSY);
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);
-
-       for (i = 0; i < 50; i++) {
-               udelay(10);
-
-               val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
-               if (!(val & EMAC_MDIO_COMM_START_BUSY)) {
-                       udelay(5);
-                       break;
-               }
-       }
-       if (val & EMAC_MDIO_COMM_START_BUSY) {
-               BNX2X_ERR("read phy register failed\n");
-
-               *ret_val = 0;
-               rc = -EBUSY;
-
-       } else {
-               /* data */
-               val = ((phy_addr << 21) | (reg << 16) |
-                      EMAC_MDIO_COMM_COMMAND_READ_45 |
-                      EMAC_MDIO_COMM_START_BUSY);
-               REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);
-
-               for (i = 0; i < 50; i++) {
-                       udelay(10);
-
-                       val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
-                       if (!(val & EMAC_MDIO_COMM_START_BUSY)) {
-                               val &= EMAC_MDIO_COMM_DATA;
-                               break;
-                       }
-               }
-
-               if (val & EMAC_MDIO_COMM_START_BUSY) {
-                       BNX2X_ERR("read phy register failed\n");
-
-                       val = 0;
-                       rc = -EBUSY;
-               }
-
-               *ret_val = val;
-       }
-
-       /* unset clause 45 mode, set the MDIO clock to a faster value
-        * (0x13 => 6.25Mhz) and restore the AUTO poll if needed
-        */
-       val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
-       val &= ~(EMAC_MDIO_MODE_CLAUSE_45 | EMAC_MDIO_MODE_CLOCK_CNT);
-       val |= (0x13 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT);
-       if (bp->phy_flags & PHY_INT_MODE_AUTO_POLLING_FLAG)
-               val |= EMAC_MDIO_MODE_AUTO_POLL;
-       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, val);
-
-       return rc;
-}
-
-static int bnx2x_mdio45_read(struct bnx2x *bp, u32 phy_addr, u32 reg,
-                            u32 addr, u32 *ret_val)
-{
-       u32 emac_base = bp->port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-
-       return bnx2x_mdio45_ctrl_read(bp, emac_base, phy_addr,
-                                     reg, addr, ret_val);
-}
-
-static int bnx2x_mdio45_vwrite(struct bnx2x *bp, u32 phy_addr, u32 reg,
-                              u32 addr, u32 val)
-{
-       int i;
-       u32 rd_val;
-
-       might_sleep();
-       for (i = 0; i < 10; i++) {
-               bnx2x_mdio45_write(bp, phy_addr, reg, addr, val);
-               msleep(5);
-               bnx2x_mdio45_read(bp, phy_addr, reg, addr, &rd_val);
-               /* if the read value is not the same as the value we wrote,
-                  we should write it again */
-               if (rd_val == val)
-                       return 0;
-       }
-       BNX2X_ERR("MDIO write in CL45 failed\n");
-       return -EBUSY;
-}
-
-/*
- * link management
- */
-
-static void bnx2x_pause_resolve(struct bnx2x *bp, u32 pause_result)
-{
-       switch (pause_result) {                 /* ASYM P ASYM P */
-       case 0xb:                               /*   1  0   1  1 */
-               bp->flow_ctrl = FLOW_CTRL_TX;
-               break;
-
-       case 0xe:                               /*   1  1   1  0 */
-               bp->flow_ctrl = FLOW_CTRL_RX;
-               break;
-
-       case 0x5:                               /*   0  1   0  1 */
-       case 0x7:                               /*   0  1   1  1 */
-       case 0xd:                               /*   1  1   0  1 */
-       case 0xf:                               /*   1  1   1  1 */
-               bp->flow_ctrl = FLOW_CTRL_BOTH;
-               break;
-
-       default:
-               break;
-       }
-}
-
-static u8 bnx2x_ext_phy_resove_fc(struct bnx2x *bp)
-{
-       u32 ext_phy_addr;
-       u32 ld_pause;   /* local */
-       u32 lp_pause;   /* link partner */
-       u32 an_complete; /* AN complete */
-       u32 pause_result;
-       u8 ret = 0;
-
-       ext_phy_addr = ((bp->ext_phy_config &
-                        PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                                       PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-
-       /* read twice */
-       bnx2x_mdio45_read(bp, ext_phy_addr,
-                         EXT_PHY_KR_AUTO_NEG_DEVAD,
-                         EXT_PHY_KR_STATUS, &an_complete);
-       bnx2x_mdio45_read(bp, ext_phy_addr,
-                         EXT_PHY_KR_AUTO_NEG_DEVAD,
-                         EXT_PHY_KR_STATUS, &an_complete);
-
-       if (an_complete & EXT_PHY_KR_AUTO_NEG_COMPLETE) {
-               ret = 1;
-               bnx2x_mdio45_read(bp, ext_phy_addr,
-                                 EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                 EXT_PHY_KR_AUTO_NEG_ADVERT, &ld_pause);
-               bnx2x_mdio45_read(bp, ext_phy_addr,
-                                 EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                 EXT_PHY_KR_LP_AUTO_NEG, &lp_pause);
-               pause_result = (ld_pause &
-                               EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_MASK) >> 8;
-               pause_result |= (lp_pause &
-                                EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_MASK) >> 10;
-               DP(NETIF_MSG_LINK, "Ext PHY pause result 0x%x \n",
-                  pause_result);
-               bnx2x_pause_resolve(bp, pause_result);
-       }
-       return ret;
-}
-
-static void bnx2x_flow_ctrl_resolve(struct bnx2x *bp, u32 gp_status)
-{
-       u32 ld_pause;   /* local driver */
-       u32 lp_pause;   /* link partner */
-       u32 pause_result;
-
-       bp->flow_ctrl = 0;
-
-       /* resolve from gp_status in case of AN complete and not sgmii */
-       if ((bp->req_autoneg & AUTONEG_FLOW_CTRL) &&
-           (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) &&
-           (!(bp->phy_flags & PHY_SGMII_FLAG)) &&
-           (XGXS_EXT_PHY_TYPE(bp) == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT)) {
-
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-               bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_AUTO_NEG_ADV,
-                                 &ld_pause);
-               bnx2x_mdio22_read(bp,
-                       MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1,
-                                 &lp_pause);
-               pause_result = (ld_pause &
-                               MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>5;
-               pause_result |= (lp_pause &
-                                MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>7;
-               DP(NETIF_MSG_LINK, "pause_result 0x%x\n", pause_result);
-               bnx2x_pause_resolve(bp, pause_result);
-       } else if (!(bp->req_autoneg & AUTONEG_FLOW_CTRL) ||
-                  !(bnx2x_ext_phy_resove_fc(bp))) {
-               /* forced speed */
-               if (bp->req_autoneg & AUTONEG_FLOW_CTRL) {
-                       switch (bp->req_flow_ctrl) {
-                       case FLOW_CTRL_AUTO:
-                               if (bp->dev->mtu <= 4500)
-                                       bp->flow_ctrl = FLOW_CTRL_BOTH;
-                               else
-                                       bp->flow_ctrl = FLOW_CTRL_TX;
-                               break;
-
-                       case FLOW_CTRL_TX:
-                               bp->flow_ctrl = FLOW_CTRL_TX;
-                               break;
-
-                       case FLOW_CTRL_RX:
-                               if (bp->dev->mtu <= 4500)
-                                       bp->flow_ctrl = FLOW_CTRL_RX;
-                               break;
-
-                       case FLOW_CTRL_BOTH:
-                               if (bp->dev->mtu <= 4500)
-                                       bp->flow_ctrl = FLOW_CTRL_BOTH;
-                               else
-                                       bp->flow_ctrl = FLOW_CTRL_TX;
-                               break;
-
-                       case FLOW_CTRL_NONE:
-                       default:
-                               break;
-                       }
-               } else { /* forced mode */
-                       switch (bp->req_flow_ctrl) {
-                       case FLOW_CTRL_AUTO:
-                               DP(NETIF_MSG_LINK, "req_flow_ctrl 0x%x while"
-                                                  " req_autoneg 0x%x\n",
-                                  bp->req_flow_ctrl, bp->req_autoneg);
-                               break;
-
-                       case FLOW_CTRL_TX:
-                       case FLOW_CTRL_RX:
-                       case FLOW_CTRL_BOTH:
-                               bp->flow_ctrl = bp->req_flow_ctrl;
-                               break;
-
-                       case FLOW_CTRL_NONE:
-                       default:
-                               break;
-                       }
-               }
-       }
-       DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", bp->flow_ctrl);
-}
-
-static void bnx2x_link_settings_status(struct bnx2x *bp, u32 gp_status)
-{
-       bp->link_status = 0;
-
-       if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) {
-               DP(NETIF_MSG_LINK, "phy link up\n");
-
-               bp->phy_link_up = 1;
-               bp->link_status |= LINK_STATUS_LINK_UP;
-
-               if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS)
-                       bp->duplex = DUPLEX_FULL;
-               else
-                       bp->duplex = DUPLEX_HALF;
-
-               bnx2x_flow_ctrl_resolve(bp, gp_status);
-
-               switch (gp_status & GP_STATUS_SPEED_MASK) {
-               case GP_STATUS_10M:
-                       bp->line_speed = SPEED_10;
-                       if (bp->duplex == DUPLEX_FULL)
-                               bp->link_status |= LINK_10TFD;
-                       else
-                               bp->link_status |= LINK_10THD;
-                       break;
-
-               case GP_STATUS_100M:
-                       bp->line_speed = SPEED_100;
-                       if (bp->duplex == DUPLEX_FULL)
-                               bp->link_status |= LINK_100TXFD;
-                       else
-                               bp->link_status |= LINK_100TXHD;
-                       break;
-
-               case GP_STATUS_1G:
-               case GP_STATUS_1G_KX:
-                       bp->line_speed = SPEED_1000;
-                       if (bp->duplex == DUPLEX_FULL)
-                               bp->link_status |= LINK_1000TFD;
-                       else
-                               bp->link_status |= LINK_1000THD;
-                       break;
-
-               case GP_STATUS_2_5G:
-                       bp->line_speed = SPEED_2500;
-                       if (bp->duplex == DUPLEX_FULL)
-                               bp->link_status |= LINK_2500TFD;
-                       else
-                               bp->link_status |= LINK_2500THD;
-                       break;
-
-               case GP_STATUS_5G:
-               case GP_STATUS_6G:
-                       BNX2X_ERR("link speed unsupported  gp_status 0x%x\n",
-                                 gp_status);
-                       break;
-
-               case GP_STATUS_10G_KX4:
-               case GP_STATUS_10G_HIG:
-               case GP_STATUS_10G_CX4:
-                       bp->line_speed = SPEED_10000;
-                       bp->link_status |= LINK_10GTFD;
-                       break;
-
-               case GP_STATUS_12G_HIG:
-                       bp->line_speed = SPEED_12000;
-                       bp->link_status |= LINK_12GTFD;
-                       break;
-
-               case GP_STATUS_12_5G:
-                       bp->line_speed = SPEED_12500;
-                       bp->link_status |= LINK_12_5GTFD;
-                       break;
-
-               case GP_STATUS_13G:
-                       bp->line_speed = SPEED_13000;
-                       bp->link_status |= LINK_13GTFD;
-                       break;
-
-               case GP_STATUS_15G:
-                       bp->line_speed = SPEED_15000;
-                       bp->link_status |= LINK_15GTFD;
-                       break;
-
-               case GP_STATUS_16G:
-                       bp->line_speed = SPEED_16000;
-                       bp->link_status |= LINK_16GTFD;
-                       break;
-
-               default:
-                       BNX2X_ERR("link speed unsupported  gp_status 0x%x\n",
-                                 gp_status);
-                       break;
-               }
-
-               bp->link_status |= LINK_STATUS_SERDES_LINK;
-
-               if (bp->req_autoneg & AUTONEG_SPEED) {
-                       bp->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
-
-                       if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE)
-                               bp->link_status |=
-                                       LINK_STATUS_AUTO_NEGOTIATE_COMPLETE;
-
-                       if (bp->autoneg & AUTONEG_PARALLEL)
-                               bp->link_status |=
-                                       LINK_STATUS_PARALLEL_DETECTION_USED;
-               }
-
-               if (bp->flow_ctrl & FLOW_CTRL_TX)
-                      bp->link_status |= LINK_STATUS_TX_FLOW_CONTROL_ENABLED;
-
-               if (bp->flow_ctrl & FLOW_CTRL_RX)
-                      bp->link_status |= LINK_STATUS_RX_FLOW_CONTROL_ENABLED;
-
-       } else { /* link_down */
-               DP(NETIF_MSG_LINK, "phy link down\n");
-
-               bp->phy_link_up = 0;
-
-               bp->line_speed = 0;
-               bp->duplex = DUPLEX_FULL;
-               bp->flow_ctrl = 0;
-       }
-
-       DP(NETIF_MSG_LINK, "gp_status 0x%x  phy_link_up %d\n"
-          DP_LEVEL "  line_speed %d  duplex %d  flow_ctrl 0x%x"
-                   "  link_status 0x%x\n",
-          gp_status, bp->phy_link_up, bp->line_speed, bp->duplex,
-          bp->flow_ctrl, bp->link_status);
-}
-
-static void bnx2x_link_int_ack(struct bnx2x *bp, int is_10g)
-{
-       int port = bp->port;
-
-       /* first reset all status
-        * we assume only one line will be change at a time */
-       bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
-                      (NIG_STATUS_XGXS0_LINK10G |
-                       NIG_STATUS_XGXS0_LINK_STATUS |
-                       NIG_STATUS_SERDES0_LINK_STATUS));
-       if (bp->phy_link_up) {
-               if (is_10g) {
-                       /* Disable the 10G link interrupt
-                        * by writing 1 to the status register
-                        */
-                       DP(NETIF_MSG_LINK, "10G XGXS phy link up\n");
-                       bnx2x_bits_en(bp,
-                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
-                                     NIG_STATUS_XGXS0_LINK10G);
-
-               } else if (bp->phy_flags & PHY_XGXS_FLAG) {
-                       /* Disable the link interrupt
-                        * by writing 1 to the relevant lane
-                        * in the status register
-                        */
-                       DP(NETIF_MSG_LINK, "1G XGXS phy link up\n");
-                       bnx2x_bits_en(bp,
-                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
-                                     ((1 << bp->ser_lane) <<
-                                      NIG_STATUS_XGXS0_LINK_STATUS_SIZE));
-
-               } else { /* SerDes */
-                       DP(NETIF_MSG_LINK, "SerDes phy link up\n");
-                       /* Disable the link interrupt
-                        * by writing 1 to the status register
-                        */
-                       bnx2x_bits_en(bp,
-                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
-                                     NIG_STATUS_SERDES0_LINK_STATUS);
-               }
-
-       } else { /* link_down */
-       }
-}
-
-static int bnx2x_ext_phy_is_link_up(struct bnx2x *bp)
-{
-       u32 ext_phy_type;
-       u32 ext_phy_addr;
-       u32 val1 = 0, val2;
-       u32 rx_sd, pcs_status;
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               ext_phy_addr = ((bp->ext_phy_config &
-                                PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-
-               ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "XGXS Direct\n");
-                       val1 = 1;
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
-                       DP(NETIF_MSG_LINK, "XGXS 8705\n");
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_WIS_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1);
-
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_WIS_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1);
-
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_PMD_RX_SD, &rx_sd);
-                       DP(NETIF_MSG_LINK, "8705 rx_sd 0x%x\n", rx_sd);
-                       val1 = (rx_sd & 0x1);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
-                       DP(NETIF_MSG_LINK, "XGXS 8706\n");
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK, "8706 LASI status 0x%x\n", val1);
-
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK, "8706 LASI status 0x%x\n", val1);
-
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_PMD_RX_SD, &rx_sd);
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PCS_DEVAD,
-                                         EXT_PHY_OPT_PCS_STATUS, &pcs_status);
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_AUTO_NEG_DEVAD,
-                                         EXT_PHY_OPT_AN_LINK_STATUS, &val2);
-
-                       DP(NETIF_MSG_LINK, "8706 rx_sd 0x%x"
-                          "  pcs_status 0x%x 1Gbps link_status 0x%x 0x%x\n",
-                          rx_sd, pcs_status, val2, (val2 & (1<<1)));
-                       /* link is up if both bit 0 of pmd_rx_sd and
-                        * bit 0 of pcs_status are set, or if the autoneg bit
-                          1 is set
-                        */
-                       val1 = ((rx_sd & pcs_status & 0x1) || (val2 & (1<<1)));
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
-                       bnx2x_hw_lock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-
-                       /* clear the interrupt LASI status register */
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                              ext_phy_addr,
-                                              EXT_PHY_KR_PCS_DEVAD,
-                                              EXT_PHY_KR_LASI_STATUS, &val2);
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                              ext_phy_addr,
-                                              EXT_PHY_KR_PCS_DEVAD,
-                                              EXT_PHY_KR_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK, "KR LASI status 0x%x->0x%x\n",
-                          val2, val1);
-                       /* Check the LASI */
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                              ext_phy_addr,
-                                              EXT_PHY_KR_PMA_PMD_DEVAD,
-                                              0x9003, &val2);
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                              ext_phy_addr,
-                                              EXT_PHY_KR_PMA_PMD_DEVAD,
-                                              0x9003, &val1);
-                       DP(NETIF_MSG_LINK, "KR 0x9003 0x%x->0x%x\n",
-                          val2, val1);
-                       /* Check the link status */
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                              ext_phy_addr,
-                                              EXT_PHY_KR_PCS_DEVAD,
-                                              EXT_PHY_KR_PCS_STATUS, &val2);
-                       DP(NETIF_MSG_LINK, "KR PCS status 0x%x\n", val2);
-                       /* Check the link status on 1.1.2 */
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                         ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_KR_STATUS, &val2);
-                       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                         ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_KR_STATUS, &val1);
-                       DP(NETIF_MSG_LINK,
-                          "KR PMA status 0x%x->0x%x\n", val2, val1);
-                       val1 = ((val1 & 4) == 4);
-                       /* If 1G was requested assume the link is up */
-                       if (!(bp->req_autoneg & AUTONEG_SPEED) &&
-                           (bp->req_line_speed == SPEED_1000))
-                               val1 = 1;
-                       bnx2x_hw_unlock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val2);
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_OPT_LASI_STATUS, &val1);
-                       DP(NETIF_MSG_LINK,
-                          "10G-base-T LASI status 0x%x->0x%x\n", val2, val1);
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_KR_STATUS, &val2);
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                         EXT_PHY_KR_STATUS, &val1);
-                       DP(NETIF_MSG_LINK,
-                          "10G-base-T PMA status 0x%x->0x%x\n", val2, val1);
-                       val1 = ((val1 & 4) == 4);
-                       /* if link is up
-                        * print the AN outcome of the SFX7101 PHY
-                        */
-                       if (val1) {
-                               bnx2x_mdio45_read(bp, ext_phy_addr,
-                                                 EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                                 0x21, &val2);
-                               DP(NETIF_MSG_LINK,
-                                  "SFX7101 AN status 0x%x->%s\n", val2,
-                                  (val2 & (1<<14)) ? "Master" : "Slave");
-                       }
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-                       val1 = 0;
-                       break;
-               }
-
-       } else { /* SerDes */
-               ext_phy_type = SERDES_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
-                       val1 = 1;
-                       break;
-
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
-                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
-                       val1 = 1;
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-                       val1 = 0;
-                       break;
-               }
-       }
-
-       return val1;
-}
-
-static void bnx2x_bmac_enable(struct bnx2x *bp, int is_lb)
-{
-       int port = bp->port;
-       u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM :
-                              NIG_REG_INGRESS_BMAC0_MEM;
-       u32 wb_write[2];
-       u32 val;
-
-       DP(NETIF_MSG_LINK, "enabling BigMAC\n");
-       /* reset and unreset the BigMac */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
-              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
-       msleep(5);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
-              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
-
-       /* enable access for bmac registers */
-       NIG_WR(NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1);
-
-       /* XGXS control */
-       wb_write[0] = 0x3c;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_XGXS_CONTROL,
-                   wb_write, 2);
-
-       /* tx MAC SA */
-       wb_write[0] = ((bp->dev->dev_addr[2] << 24) |
-                      (bp->dev->dev_addr[3] << 16) |
-                      (bp->dev->dev_addr[4] << 8) |
-                       bp->dev->dev_addr[5]);
-       wb_write[1] = ((bp->dev->dev_addr[0] << 8) |
-                       bp->dev->dev_addr[1]);
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_SOURCE_ADDR,
-                   wb_write, 2);
-
-       /* tx control */
-       val = 0xc0;
-       if (bp->flow_ctrl & FLOW_CTRL_TX)
-               val |= 0x800000;
-       wb_write[0] = val;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_CONTROL, wb_write, 2);
-
-       /* set tx mtu */
-       wb_write[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; /* -CRC */
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_MAX_SIZE, wb_write, 2);
-
-       /* mac control */
-       val = 0x3;
-       if (is_lb) {
-               val |= 0x4;
-               DP(NETIF_MSG_LINK, "enable bmac loopback\n");
-       }
-       wb_write[0] = val;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL,
-                   wb_write, 2);
-
-       /* rx control set to don't strip crc */
-       val = 0x14;
-       if (bp->flow_ctrl & FLOW_CTRL_RX)
-               val |= 0x20;
-       wb_write[0] = val;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_CONTROL, wb_write, 2);
-
-       /* set rx mtu */
-       wb_write[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_MAX_SIZE, wb_write, 2);
-
-       /* set cnt max size */
-       wb_write[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD; /* -VLAN */
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_CNT_MAX_SIZE,
-                   wb_write, 2);
-
-       /* configure safc */
-       wb_write[0] = 0x1000200;
-       wb_write[1] = 0;
-       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_LLFC_MSG_FLDS,
-                   wb_write, 2);
-
-       /* fix for emulation */
-       if (CHIP_REV(bp) == CHIP_REV_EMUL) {
-               wb_write[0] = 0xf000;
-               wb_write[1] = 0;
-               REG_WR_DMAE(bp,
-                           bmac_addr + BIGMAC_REGISTER_TX_PAUSE_THRESHOLD,
-                           wb_write, 2);
-       }
-
-       /* reset old bmac stats */
-       memset(&bp->old_bmac, 0, sizeof(struct bmac_stats));
-
-       NIG_WR(NIG_REG_XCM0_OUT_EN + port*4, 0x0);
-
-       /* select XGXS */
-       NIG_WR(NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 0x1);
-       NIG_WR(NIG_REG_XGXS_LANE_SEL_P0 + port*4, 0x0);
-
-       /* disable the NIG in/out to the emac */
-       NIG_WR(NIG_REG_EMAC0_IN_EN + port*4, 0x0);
-       NIG_WR(NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, 0x0);
-       NIG_WR(NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x0);
-
-       /* enable the NIG in/out to the bmac */
-       NIG_WR(NIG_REG_EGRESS_EMAC0_PORT + port*4, 0x0);
-
-       NIG_WR(NIG_REG_BMAC0_IN_EN + port*4, 0x1);
-       val = 0;
-       if (bp->flow_ctrl & FLOW_CTRL_TX)
-               val = 1;
-       NIG_WR(NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, val);
-       NIG_WR(NIG_REG_BMAC0_OUT_EN + port*4, 0x1);
-
-       bp->phy_flags |= PHY_BMAC_FLAG;
-
-       bp->stats_state = STATS_STATE_ENABLE;
-}
-
-static void bnx2x_bmac_rx_disable(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM :
-                              NIG_REG_INGRESS_BMAC0_MEM;
-       u32 wb_write[2];
-
-       /* Only if the bmac is out of reset */
-       if (REG_RD(bp, MISC_REG_RESET_REG_2) &
-                       (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port)) {
-               /* Clear Rx Enable bit in BMAC_CONTROL register */
-#ifdef BNX2X_DMAE_RD
-               bnx2x_read_dmae(bp, bmac_addr +
-                               BIGMAC_REGISTER_BMAC_CONTROL, 2);
-               wb_write[0] = *bnx2x_sp(bp, wb_data[0]);
-               wb_write[1] = *bnx2x_sp(bp, wb_data[1]);
-#else
-               wb_write[0] = REG_RD(bp,
-                               bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL);
-               wb_write[1] = REG_RD(bp,
-                               bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL + 4);
-#endif
-               wb_write[0] &= ~BMAC_CONTROL_RX_ENABLE;
-               REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL,
-                           wb_write, 2);
-               msleep(1);
-       }
-}
-
-static void bnx2x_emac_enable(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
-       u32 val;
-       int timeout;
-
-       DP(NETIF_MSG_LINK, "enabling EMAC\n");
-       /* reset and unreset the emac core */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
-              (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port));
-       msleep(5);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
-              (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port));
-
-       /* enable emac and not bmac */
-       NIG_WR(NIG_REG_EGRESS_EMAC0_PORT + port*4, 1);
-
-       /* for paladium */
-       if (CHIP_REV(bp) == CHIP_REV_EMUL) {
-               /* Use lane 1 (of lanes 0-3) */
-               NIG_WR(NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1);
-               NIG_WR(NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 1);
-       }
-       /* for fpga */
-       else if (CHIP_REV(bp) == CHIP_REV_FPGA) {
-               /* Use lane 1 (of lanes 0-3) */
-               NIG_WR(NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1);
-               NIG_WR(NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 0);
-       }
-       /* ASIC */
-       else {
-               if (bp->phy_flags & PHY_XGXS_FLAG) {
-                       DP(NETIF_MSG_LINK, "XGXS\n");
-                       /* select the master lanes (out of 0-3) */
-                       NIG_WR(NIG_REG_XGXS_LANE_SEL_P0 + port*4,
-                              bp->ser_lane);
-                       /* select XGXS */
-                       NIG_WR(NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 1);
-
-               } else { /* SerDes */
-                       DP(NETIF_MSG_LINK, "SerDes\n");
-                       /* select SerDes */
-                       NIG_WR(NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 0);
-               }
-       }
-
-       /* enable emac */
-       NIG_WR(NIG_REG_NIG_EMAC0_EN + port*4, 1);
-
-       /* init emac - use read-modify-write */
-       /* self clear reset */
-       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
-       EMAC_WR(EMAC_REG_EMAC_MODE, (val | EMAC_MODE_RESET));
-
-       timeout = 200;
-       while (val & EMAC_MODE_RESET) {
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
-               DP(NETIF_MSG_LINK, "EMAC reset reg is %u\n", val);
-               if (!timeout) {
-                       BNX2X_ERR("EMAC timeout!\n");
-                       break;
-               }
-               timeout--;
-       }
-
-       /* reset tx part */
-       EMAC_WR(EMAC_REG_EMAC_TX_MODE, EMAC_TX_MODE_RESET);
-
-       timeout = 200;
-       while (val & EMAC_TX_MODE_RESET) {
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_TX_MODE);
-               DP(NETIF_MSG_LINK, "EMAC reset reg is %u\n", val);
-               if (!timeout) {
-                       BNX2X_ERR("EMAC timeout!\n");
-                       break;
-               }
-               timeout--;
-       }
-
-       if (CHIP_REV_IS_SLOW(bp)) {
-               /* config GMII mode */
-               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
-               EMAC_WR(EMAC_REG_EMAC_MODE, (val | EMAC_MODE_PORT_GMII));
-
-       } else { /* ASIC */
-               /* pause enable/disable */
-               bnx2x_bits_dis(bp, emac_base + EMAC_REG_EMAC_RX_MODE,
-                              EMAC_RX_MODE_FLOW_EN);
-               if (bp->flow_ctrl & FLOW_CTRL_RX)
-                       bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_RX_MODE,
-                                     EMAC_RX_MODE_FLOW_EN);
-
-               bnx2x_bits_dis(bp, emac_base + EMAC_REG_EMAC_TX_MODE,
-                              EMAC_TX_MODE_EXT_PAUSE_EN);
-               if (bp->flow_ctrl & FLOW_CTRL_TX)
-                       bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_TX_MODE,
-                                     EMAC_TX_MODE_EXT_PAUSE_EN);
-       }
-
-       /* KEEP_VLAN_TAG, promiscuous */
-       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_RX_MODE);
-       val |= EMAC_RX_MODE_KEEP_VLAN_TAG | EMAC_RX_MODE_PROMISCUOUS;
-       EMAC_WR(EMAC_REG_EMAC_RX_MODE, val);
-
-       /* identify magic packets */
-       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
-       EMAC_WR(EMAC_REG_EMAC_MODE, (val | EMAC_MODE_MPKT));
-
-       /* enable emac for jumbo packets */
-       EMAC_WR(EMAC_REG_EMAC_RX_MTU_SIZE,
-               (EMAC_RX_MTU_SIZE_JUMBO_ENA |
-                (ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD))); /* -VLAN */
-
-       /* strip CRC */
-       NIG_WR(NIG_REG_NIG_INGRESS_EMAC0_NO_CRC + port*4, 0x1);
-
-       val = ((bp->dev->dev_addr[0] << 8) |
-               bp->dev->dev_addr[1]);
-       EMAC_WR(EMAC_REG_EMAC_MAC_MATCH, val);
-
-       val = ((bp->dev->dev_addr[2] << 24) |
-              (bp->dev->dev_addr[3] << 16) |
-              (bp->dev->dev_addr[4] << 8) |
-               bp->dev->dev_addr[5]);
-       EMAC_WR(EMAC_REG_EMAC_MAC_MATCH + 4, val);
-
-       /* disable the NIG in/out to the bmac */
-       NIG_WR(NIG_REG_BMAC0_IN_EN + port*4, 0x0);
-       NIG_WR(NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, 0x0);
-       NIG_WR(NIG_REG_BMAC0_OUT_EN + port*4, 0x0);
-
-       /* enable the NIG in/out to the emac */
-       NIG_WR(NIG_REG_EMAC0_IN_EN + port*4, 0x1);
-       val = 0;
-       if (bp->flow_ctrl & FLOW_CTRL_TX)
-               val = 1;
-       NIG_WR(NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, val);
-       NIG_WR(NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x1);
-
-       if (CHIP_REV(bp) == CHIP_REV_FPGA) {
-               /* take the BigMac out of reset */
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
-                      (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
-
-               /* enable access for bmac registers */
-               NIG_WR(NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1);
-       }
-
-       bp->phy_flags |= PHY_EMAC_FLAG;
-
-       bp->stats_state = STATS_STATE_ENABLE;
-}
-
-static void bnx2x_emac_program(struct bnx2x *bp)
-{
-       u16 mode = 0;
-       int port = bp->port;
-
-       DP(NETIF_MSG_LINK, "setting link speed & duplex\n");
-       bnx2x_bits_dis(bp, GRCBASE_EMAC0 + port*0x400 + EMAC_REG_EMAC_MODE,
-                      (EMAC_MODE_25G_MODE |
-                       EMAC_MODE_PORT_MII_10M |
-                       EMAC_MODE_HALF_DUPLEX));
-       switch (bp->line_speed) {
-       case SPEED_10:
-               mode |= EMAC_MODE_PORT_MII_10M;
-               break;
-
-       case SPEED_100:
-               mode |= EMAC_MODE_PORT_MII;
-               break;
-
-       case SPEED_1000:
-               mode |= EMAC_MODE_PORT_GMII;
-               break;
-
-       case SPEED_2500:
-               mode |= (EMAC_MODE_25G_MODE | EMAC_MODE_PORT_GMII);
-               break;
-
-       default:
-               /* 10G not valid for EMAC */
-               BNX2X_ERR("Invalid line_speed 0x%x\n", bp->line_speed);
-               break;
-       }
-
-       if (bp->duplex == DUPLEX_HALF)
-               mode |= EMAC_MODE_HALF_DUPLEX;
-       bnx2x_bits_en(bp, GRCBASE_EMAC0 + port*0x400 + EMAC_REG_EMAC_MODE,
-                     mode);
-
-       bnx2x_leds_set(bp, bp->line_speed);
-}
-
-static void bnx2x_set_sgmii_tx_driver(struct bnx2x *bp)
-{
-       u32 lp_up2;
-       u32 tx_driver;
-
-       /* read precomp */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_OVER_1G);
-       bnx2x_mdio22_read(bp, MDIO_OVER_1G_LP_UP2, &lp_up2);
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_TX0);
-       bnx2x_mdio22_read(bp, MDIO_TX0_TX_DRIVER, &tx_driver);
-
-       /* bits [10:7] at lp_up2, positioned at [15:12] */
-       lp_up2 = (((lp_up2 & MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK) >>
-                  MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT) <<
-                 MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT);
-
-       if ((lp_up2 != 0) &&
-           (lp_up2 != (tx_driver & MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK))) {
-               /* replace tx_driver bits [15:12] */
-               tx_driver &= ~MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK;
-               tx_driver |= lp_up2;
-               bnx2x_mdio22_write(bp, MDIO_TX0_TX_DRIVER, tx_driver);
-       }
-}
-
-static void bnx2x_pbf_update(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 init_crd, crd;
-       u32 count = 1000;
-       u32 pause = 0;
-
-       /* disable port */
-       REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x1);
-
-       /* wait for init credit */
-       init_crd = REG_RD(bp, PBF_REG_P0_INIT_CRD + port*4);
-       crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
-       DP(NETIF_MSG_LINK, "init_crd 0x%x  crd 0x%x\n", init_crd, crd);
-
-       while ((init_crd != crd) && count) {
-               msleep(5);
-
-               crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
-               count--;
-       }
-       crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
-       if (init_crd != crd)
-               BNX2X_ERR("BUG! init_crd 0x%x != crd 0x%x\n", init_crd, crd);
-
-       if (bp->flow_ctrl & FLOW_CTRL_RX)
-               pause = 1;
-       REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, pause);
-       if (pause) {
-               /* update threshold */
-               REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, 0);
-               /* update init credit */
-               init_crd = 778;         /* (800-18-4) */
-
-       } else {
-               u32 thresh = (ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD)/16;
-
-               /* update threshold */
-               REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, thresh);
-               /* update init credit */
-               switch (bp->line_speed) {
-               case SPEED_10:
-               case SPEED_100:
-               case SPEED_1000:
-                       init_crd = thresh + 55 - 22;
-                       break;
-
-               case SPEED_2500:
-                       init_crd = thresh + 138 - 22;
-                       break;
-
-               case SPEED_10000:
-                       init_crd = thresh + 553 - 22;
-                       break;
-
-               default:
-                       BNX2X_ERR("Invalid line_speed 0x%x\n",
-                                 bp->line_speed);
-                       break;
-               }
-       }
-       REG_WR(bp, PBF_REG_P0_INIT_CRD + port*4, init_crd);
-       DP(NETIF_MSG_LINK, "PBF updated to speed %d credit %d\n",
-          bp->line_speed, init_crd);
-
-       /* probe the credit changes */
-       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x1);
-       msleep(5);
-       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x0);
-
-       /* enable port */
-       REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x0);
-}
-
-static void bnx2x_update_mng(struct bnx2x *bp)
-{
-       if (!nomcp)
-               SHMEM_WR(bp, port_mb[bp->port].link_status,
-                        bp->link_status);
-}
-
-static void bnx2x_link_report(struct bnx2x *bp)
-{
-       if (bp->link_up) {
-               netif_carrier_on(bp->dev);
-               printk(KERN_INFO PFX "%s NIC Link is Up, ", bp->dev->name);
-
-               printk("%d Mbps ", bp->line_speed);
-
-               if (bp->duplex == DUPLEX_FULL)
-                       printk("full duplex");
-               else
-                       printk("half duplex");
-
-               if (bp->flow_ctrl) {
-                       if (bp->flow_ctrl & FLOW_CTRL_RX) {
-                               printk(", receive ");
-                               if (bp->flow_ctrl & FLOW_CTRL_TX)
-                                       printk("& transmit ");
-                       } else {
-                               printk(", transmit ");
-                       }
-                       printk("flow control ON");
-               }
-               printk("\n");
-
-       } else { /* link_down */
-               netif_carrier_off(bp->dev);
-               printk(KERN_INFO PFX "%s NIC Link is Down\n", bp->dev->name);
-       }
-}
-
-static void bnx2x_link_up(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       /* PBF - link up */
-       bnx2x_pbf_update(bp);
-
-       /* disable drain */
-       NIG_WR(NIG_REG_EGRESS_DRAIN0_MODE + port*4, 0);
-
-       /* update shared memory */
-       bnx2x_update_mng(bp);
-
-       /* indicate link up */
-       bnx2x_link_report(bp);
-}
-
-static void bnx2x_link_down(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       /* notify stats */
-       if (bp->stats_state != STATS_STATE_DISABLE) {
-               bp->stats_state = STATS_STATE_STOP;
-               DP(BNX2X_MSG_STATS, "stats_state - STOP\n");
-       }
-
-       /* indicate no mac active */
-       bp->phy_flags &= ~(PHY_BMAC_FLAG | PHY_EMAC_FLAG);
-
-       /* update shared memory */
-       bnx2x_update_mng(bp);
-
-       /* activate nig drain */
-       NIG_WR(NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
-
-       /* reset BigMac */
-       bnx2x_bmac_rx_disable(bp);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
-              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
-
-       /* indicate link down */
-       bnx2x_link_report(bp);
-}
-
-static void bnx2x_init_mac_stats(struct bnx2x *bp);
-
-/* This function is called upon link interrupt */
-static void bnx2x_link_update(struct bnx2x *bp)
-{
-       int port = bp->port;
-       int i;
-       u32 gp_status;
-       int link_10g;
-
-       DP(NETIF_MSG_LINK, "port %x, %s, int_status 0x%x,"
-          " int_mask 0x%x, saved_mask 0x%x, MI_INT %x, SERDES_LINK %x,"
-          " 10G %x, XGXS_LINK %x\n", port,
-          (bp->phy_flags & PHY_XGXS_FLAG)? "XGXS":"SerDes",
-          REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4),
-          REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4), bp->nig_mask,
-          REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port*0x18),
-          REG_RD(bp, NIG_REG_SERDES0_STATUS_LINK_STATUS + port*0x3c),
-          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68),
-          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)
-       );
-
-       might_sleep();
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_GP_STATUS);
-       /* avoid fast toggling */
-       for (i = 0; i < 10; i++) {
-               msleep(10);
-               bnx2x_mdio22_read(bp, MDIO_GP_STATUS_TOP_AN_STATUS1,
-                                 &gp_status);
-       }
-
-       bnx2x_link_settings_status(bp, gp_status);
-
-       /* anything 10 and over uses the bmac */
-       link_10g = ((bp->line_speed >= SPEED_10000) &&
-                   (bp->line_speed <= SPEED_16000));
-
-       bnx2x_link_int_ack(bp, link_10g);
-
-       /* link is up only if both local phy and external phy are up */
-       bp->link_up = (bp->phy_link_up && bnx2x_ext_phy_is_link_up(bp));
-       if (bp->link_up) {
-               if (link_10g) {
-                       bnx2x_bmac_enable(bp, 0);
-                       bnx2x_leds_set(bp, SPEED_10000);
-
-               } else {
-                       bnx2x_emac_enable(bp);
-                       bnx2x_emac_program(bp);
-
-                       /* AN complete? */
-                       if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) {
-                               if (!(bp->phy_flags & PHY_SGMII_FLAG))
-                                       bnx2x_set_sgmii_tx_driver(bp);
-                       }
-               }
-               bnx2x_link_up(bp);
-
-       } else { /* link down */
-               bnx2x_leds_unset(bp);
-               bnx2x_link_down(bp);
-       }
-
-       bnx2x_init_mac_stats(bp);
-}
-
-/*
- * Init service functions
- */
-
-static void bnx2x_set_aer_mmd(struct bnx2x *bp)
-{
-       u16 offset = (bp->phy_flags & PHY_XGXS_FLAG) ?
-                                       (bp->phy_addr + bp->ser_lane) : 0;
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_AER_BLOCK);
-       bnx2x_mdio22_write(bp, MDIO_AER_BLOCK_AER_REG, 0x3800 + offset);
-}
-
-static void bnx2x_set_master_ln(struct bnx2x *bp)
-{
-       u32 new_master_ln;
-
-       /* set the master_ln for AN */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_XGXS_BLOCK2);
-       bnx2x_mdio22_read(bp, MDIO_XGXS_BLOCK2_TEST_MODE_LANE,
-                         &new_master_ln);
-       bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_TEST_MODE_LANE,
-                          (new_master_ln | bp->ser_lane));
-}
-
-static void bnx2x_reset_unicore(struct bnx2x *bp)
-{
-       u32 mii_control;
-       int i;
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-       bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control);
-       /* reset the unicore */
-       bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                          (mii_control | MDIO_COMBO_IEEO_MII_CONTROL_RESET));
-
-       /* wait for the reset to self clear */
-       for (i = 0; i < MDIO_ACCESS_TIMEOUT; i++) {
-               udelay(5);
-
-               /* the reset erased the previous bank value */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-               bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                 &mii_control);
-
-               if (!(mii_control & MDIO_COMBO_IEEO_MII_CONTROL_RESET)) {
-                       udelay(5);
-                       return;
-               }
-       }
-
-       BNX2X_ERR("BUG! %s (0x%x) is still in reset!\n",
-                 (bp->phy_flags & PHY_XGXS_FLAG)? "XGXS":"SerDes",
-                 bp->phy_addr);
-}
-
-static void bnx2x_set_swap_lanes(struct bnx2x *bp)
-{
-       /* Each two bits represents a lane number:
-          No swap is 0123 => 0x1b no need to enable the swap */
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_XGXS_BLOCK2);
-       if (bp->rx_lane_swap != 0x1b) {
-               bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_RX_LN_SWAP,
-                                  (bp->rx_lane_swap |
-                                   MDIO_XGXS_BLOCK2_RX_LN_SWAP_ENABLE |
-                                  MDIO_XGXS_BLOCK2_RX_LN_SWAP_FORCE_ENABLE));
-       } else {
-               bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_RX_LN_SWAP, 0);
-       }
-
-       if (bp->tx_lane_swap != 0x1b) {
-               bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_TX_LN_SWAP,
-                                  (bp->tx_lane_swap |
-                                   MDIO_XGXS_BLOCK2_TX_LN_SWAP_ENABLE));
-       } else {
-               bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_TX_LN_SWAP, 0);
-       }
-}
-
-static void bnx2x_set_parallel_detection(struct bnx2x *bp)
-{
-       u32 control2;
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_SERDES_DIGITAL);
-       bnx2x_mdio22_read(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
-                         &control2);
-
-       if (bp->autoneg & AUTONEG_PARALLEL) {
-               control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
-       } else {
-               control2 &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
-       }
-       bnx2x_mdio22_write(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
-                          control2);
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               DP(NETIF_MSG_LINK, "XGXS\n");
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_10G_PARALLEL_DETECT);
-
-               bnx2x_mdio22_write(bp,
-                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK,
-                              MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT);
-
-               bnx2x_mdio22_read(bp,
-                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL,
-                               &control2);
-
-               if (bp->autoneg & AUTONEG_PARALLEL) {
-                       control2 |=
-                   MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN;
-               } else {
-                       control2 &=
-                  ~MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN;
-               }
-               bnx2x_mdio22_write(bp,
-                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL,
-                               control2);
-
-               /* Disable parallel detection of HiG */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_XGXS_BLOCK2);
-               bnx2x_mdio22_write(bp, MDIO_XGXS_BLOCK2_UNICORE_MODE_10G,
-                               MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_CX4_XGXS |
-                               MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_HIGIG_XGXS);
-       }
-}
-
-static void bnx2x_set_autoneg(struct bnx2x *bp)
-{
-       u32 reg_val;
-
-       /* CL37 Autoneg */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-       bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL, &reg_val);
-       if ((bp->req_autoneg & AUTONEG_SPEED) &&
-           (bp->autoneg & AUTONEG_CL37)) {
-               /* CL37 Autoneg Enabled */
-               reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_AN_EN;
-       } else {
-               /* CL37 Autoneg Disabled */
-               reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
-                            MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN);
-       }
-       bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL, reg_val);
-
-       /* Enable/Disable Autodetection */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_SERDES_DIGITAL);
-       bnx2x_mdio22_read(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, &reg_val);
-       reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN;
-
-       if ((bp->req_autoneg & AUTONEG_SPEED) &&
-           (bp->autoneg & AUTONEG_SGMII_FIBER_AUTODET)) {
-               reg_val |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET;
-       } else {
-               reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET;
-       }
-       bnx2x_mdio22_write(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, reg_val);
-
-       /* Enable TetonII and BAM autoneg */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_BAM_NEXT_PAGE);
-       bnx2x_mdio22_read(bp, MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL,
-                         &reg_val);
-       if ((bp->req_autoneg & AUTONEG_SPEED) &&
-           (bp->autoneg & AUTONEG_CL37) && (bp->autoneg & AUTONEG_BAM)) {
-               /* Enable BAM aneg Mode and TetonII aneg Mode */
-               reg_val |= (MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE |
-                           MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN);
-       } else {
-               /* TetonII and BAM Autoneg Disabled */
-               reg_val &= ~(MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE |
-                            MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN);
-       }
-       bnx2x_mdio22_write(bp, MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL,
-                          reg_val);
-
-       /* Enable Clause 73 Aneg */
-       if ((bp->req_autoneg & AUTONEG_SPEED) &&
-           (bp->autoneg & AUTONEG_CL73)) {
-               /* Enable BAM Station Manager */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_CL73_USERB0);
-               bnx2x_mdio22_write(bp, MDIO_CL73_USERB0_CL73_BAM_CTRL1,
-                                  (MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_EN |
-                       MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_STATION_MNGR_EN |
-                       MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_NP_AFTER_BP_EN));
-
-               /* Merge CL73 and CL37 aneg resolution */
-               bnx2x_mdio22_read(bp, MDIO_CL73_USERB0_CL73_BAM_CTRL3,
-                                 &reg_val);
-               bnx2x_mdio22_write(bp, MDIO_CL73_USERB0_CL73_BAM_CTRL3,
-                                  (reg_val |
-                       MDIO_CL73_USERB0_CL73_BAM_CTRL3_USE_CL73_HCD_MR));
-
-               /* Set the CL73 AN speed */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_CL73_IEEEB1);
-               bnx2x_mdio22_read(bp, MDIO_CL73_IEEEB1_AN_ADV2, &reg_val);
-               /* In the SerDes we support only the 1G.
-                  In the XGXS we support the 10G KX4
-                  but we currently do not support the KR */
-               if (bp->phy_flags & PHY_XGXS_FLAG) {
-                       DP(NETIF_MSG_LINK, "XGXS\n");
-                       /* 10G KX4 */
-                       reg_val |= MDIO_CL73_IEEEB1_AN_ADV2_ADVR_10G_KX4;
-               } else {
-                       DP(NETIF_MSG_LINK, "SerDes\n");
-                       /* 1000M KX */
-                       reg_val |= MDIO_CL73_IEEEB1_AN_ADV2_ADVR_1000M_KX;
-               }
-               bnx2x_mdio22_write(bp, MDIO_CL73_IEEEB1_AN_ADV2, reg_val);
-
-               /* CL73 Autoneg Enabled */
-               reg_val = MDIO_CL73_IEEEB0_CL73_AN_CONTROL_AN_EN;
-       } else {
-               /* CL73 Autoneg Disabled */
-               reg_val = 0;
-       }
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_CL73_IEEEB0);
-       bnx2x_mdio22_write(bp, MDIO_CL73_IEEEB0_CL73_AN_CONTROL, reg_val);
-}
-
-/* program SerDes, forced speed */
-static void bnx2x_program_serdes(struct bnx2x *bp)
-{
-       u32 reg_val;
-
-       /* program duplex, disable autoneg */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-       bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL, &reg_val);
-       reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX |
-                    MDIO_COMBO_IEEO_MII_CONTROL_AN_EN);
-       if (bp->req_duplex == DUPLEX_FULL)
-               reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX;
-       bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL, reg_val);
-
-       /* program speed
-          - needed only if the speed is greater than 1G (2.5G or 10G) */
-       if (bp->req_line_speed > SPEED_1000) {
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_SERDES_DIGITAL);
-               bnx2x_mdio22_read(bp, MDIO_SERDES_DIGITAL_MISC1, &reg_val);
-               /* clearing the speed value before setting the right speed */
-               reg_val &= ~MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK;
-               reg_val |= (MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M |
-                           MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL);
-               if (bp->req_line_speed == SPEED_10000)
-                       reg_val |=
-                               MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4;
-               bnx2x_mdio22_write(bp, MDIO_SERDES_DIGITAL_MISC1, reg_val);
-       }
-}
-
-static void bnx2x_set_brcm_cl37_advertisment(struct bnx2x *bp)
-{
-       u32 val = 0;
-
-       /* configure the 48 bits for BAM AN */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_OVER_1G);
-
-       /* set extended capabilities */
-       if (bp->advertising & ADVERTISED_2500baseX_Full)
-               val |= MDIO_OVER_1G_UP1_2_5G;
-       if (bp->advertising & ADVERTISED_10000baseT_Full)
-               val |= MDIO_OVER_1G_UP1_10G;
-       bnx2x_mdio22_write(bp, MDIO_OVER_1G_UP1, val);
-
-       bnx2x_mdio22_write(bp, MDIO_OVER_1G_UP3, 0);
-}
-
-static void bnx2x_set_ieee_aneg_advertisment(struct bnx2x *bp)
-{
-       u32 an_adv;
-
-       /* for AN, we are always publishing full duplex */
-       an_adv = MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX;
-
-       /* resolve pause mode and advertisement
-        * Please refer to Table 28B-3 of the 802.3ab-1999 spec */
-       if (bp->req_autoneg & AUTONEG_FLOW_CTRL) {
-               switch (bp->req_flow_ctrl) {
-               case FLOW_CTRL_AUTO:
-                       if (bp->dev->mtu <= 4500) {
-                               an_adv |=
-                                    MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
-                               bp->advertising |= (ADVERTISED_Pause |
-                                                   ADVERTISED_Asym_Pause);
-                       } else {
-                               an_adv |=
-                              MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
-                               bp->advertising |= ADVERTISED_Asym_Pause;
-                       }
-                       break;
-
-               case FLOW_CTRL_TX:
-                       an_adv |=
-                              MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
-                       bp->advertising |= ADVERTISED_Asym_Pause;
-                       break;
-
-               case FLOW_CTRL_RX:
-                       if (bp->dev->mtu <= 4500) {
-                               an_adv |=
-                                    MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
-                               bp->advertising |= (ADVERTISED_Pause |
-                                                   ADVERTISED_Asym_Pause);
-                       } else {
-                               an_adv |=
-                                    MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
-                               bp->advertising &= ~(ADVERTISED_Pause |
-                                                    ADVERTISED_Asym_Pause);
-                       }
-                       break;
-
-               case FLOW_CTRL_BOTH:
-                       if (bp->dev->mtu <= 4500) {
-                               an_adv |=
-                                    MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
-                               bp->advertising |= (ADVERTISED_Pause |
-                                                   ADVERTISED_Asym_Pause);
-                       } else {
-                               an_adv |=
-                              MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
-                               bp->advertising |= ADVERTISED_Asym_Pause;
-                       }
-                       break;
-
-               case FLOW_CTRL_NONE:
-               default:
-                       an_adv |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
-                       bp->advertising &= ~(ADVERTISED_Pause |
-                                            ADVERTISED_Asym_Pause);
-                       break;
-               }
-       } else { /* forced mode */
-               switch (bp->req_flow_ctrl) {
-               case FLOW_CTRL_AUTO:
-                       DP(NETIF_MSG_LINK, "req_flow_ctrl 0x%x while"
-                                          " req_autoneg 0x%x\n",
-                          bp->req_flow_ctrl, bp->req_autoneg);
-                       break;
-
-               case FLOW_CTRL_TX:
-                       an_adv |=
-                              MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
-                       bp->advertising |= ADVERTISED_Asym_Pause;
-                       break;
-
-               case FLOW_CTRL_RX:
-               case FLOW_CTRL_BOTH:
-                       an_adv |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
-                       bp->advertising |= (ADVERTISED_Pause |
-                                           ADVERTISED_Asym_Pause);
-                       break;
-
-               case FLOW_CTRL_NONE:
-               default:
-                       an_adv |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
-                       bp->advertising &= ~(ADVERTISED_Pause |
-                                            ADVERTISED_Asym_Pause);
-                       break;
-               }
-       }
-
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-       bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_AUTO_NEG_ADV, an_adv);
-}
-
-static void bnx2x_restart_autoneg(struct bnx2x *bp)
-{
-       if (bp->autoneg & AUTONEG_CL73) {
-               /* enable and restart clause 73 aneg */
-               u32 an_ctrl;
-
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_CL73_IEEEB0);
-               bnx2x_mdio22_read(bp, MDIO_CL73_IEEEB0_CL73_AN_CONTROL,
-                                 &an_ctrl);
-               bnx2x_mdio22_write(bp, MDIO_CL73_IEEEB0_CL73_AN_CONTROL,
-                                  (an_ctrl |
-                                   MDIO_CL73_IEEEB0_CL73_AN_CONTROL_AN_EN |
-                               MDIO_CL73_IEEEB0_CL73_AN_CONTROL_RESTART_AN));
-
-       } else {
-               /* Enable and restart BAM/CL37 aneg */
-               u32 mii_control;
-
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-               bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                 &mii_control);
-               bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                  (mii_control |
-                                   MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
-                                   MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN));
-       }
-}
-
-static void bnx2x_initialize_sgmii_process(struct bnx2x *bp)
-{
-       u32 control1;
-
-       /* in SGMII mode, the unicore is always slave */
-       MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_SERDES_DIGITAL);
-       bnx2x_mdio22_read(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL1,
-                         &control1);
-       control1 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT;
-       /* set sgmii mode (and not fiber) */
-       control1 &= ~(MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE |
-                     MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET |
-                     MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE);
-       bnx2x_mdio22_write(bp, MDIO_SERDES_DIGITAL_A_1000X_CONTROL1,
-                          control1);
-
-       /* if forced speed */
-       if (!(bp->req_autoneg & AUTONEG_SPEED)) {
-               /* set speed, disable autoneg */
-               u32 mii_control;
-
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-               bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                 &mii_control);
-               mii_control &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
-                              MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK |
-                                MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX);
-
-               switch (bp->req_line_speed) {
-               case SPEED_100:
-                       mii_control |=
-                               MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100;
-                       break;
-               case SPEED_1000:
-                       mii_control |=
-                               MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000;
-                       break;
-               case SPEED_10:
-                       /* there is nothing to set for 10M */
-                       break;
-               default:
-                       /* invalid speed for SGMII */
-                       DP(NETIF_MSG_LINK, "Invalid req_line_speed 0x%x\n",
-                          bp->req_line_speed);
-                       break;
-               }
-
-               /* setting the full duplex */
-               if (bp->req_duplex == DUPLEX_FULL)
-                       mii_control |=
-                               MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX;
-               bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                  mii_control);
-
-       } else { /* AN mode */
-               /* enable and restart AN */
-               bnx2x_restart_autoneg(bp);
-       }
-}
-
-static void bnx2x_link_int_enable(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 ext_phy_type;
-       u32 mask;
-
-       /* setting the status to report on link up
-          for either XGXS or SerDes */
-       bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
-                      (NIG_STATUS_XGXS0_LINK10G |
-                       NIG_STATUS_XGXS0_LINK_STATUS |
-                       NIG_STATUS_SERDES0_LINK_STATUS));
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               mask = (NIG_MASK_XGXS0_LINK10G |
-                       NIG_MASK_XGXS0_LINK_STATUS);
-               DP(NETIF_MSG_LINK, "enabled XGXS interrupt\n");
-               ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-               if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
-                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) &&
-                   (ext_phy_type !=
-                               PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN)) {
-                       mask |= NIG_MASK_MI_INT;
-                       DP(NETIF_MSG_LINK, "enabled external phy int\n");
-               }
-
-       } else { /* SerDes */
-               mask = NIG_MASK_SERDES0_LINK_STATUS;
-               DP(NETIF_MSG_LINK, "enabled SerDes interrupt\n");
-               ext_phy_type = SERDES_EXT_PHY_TYPE(bp);
-               if ((ext_phy_type !=
-                               PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT) &&
-                   (ext_phy_type !=
-                               PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN)) {
-                       mask |= NIG_MASK_MI_INT;
-                       DP(NETIF_MSG_LINK, "enabled external phy int\n");
-               }
-       }
-       bnx2x_bits_en(bp,
-                     NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
-                     mask);
-       DP(NETIF_MSG_LINK, "port %x, %s, int_status 0x%x,"
-          " int_mask 0x%x, MI_INT %x, SERDES_LINK %x,"
-          " 10G %x, XGXS_LINK %x\n", port,
-          (bp->phy_flags & PHY_XGXS_FLAG)? "XGXS":"SerDes",
-          REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4),
-          REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4),
-          REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port*0x18),
-          REG_RD(bp, NIG_REG_SERDES0_STATUS_LINK_STATUS + port*0x3c),
-          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68),
-          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)
-       );
-}
-
-static void bnx2x_bcm8072_external_rom_boot(struct bnx2x *bp)
-{
-       u32 ext_phy_addr = ((bp->ext_phy_config &
-                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-       u32 fw_ver1, fw_ver2;
-
-       /* Need to wait 200ms after reset */
-       msleep(200);
-       /* Boot port from external ROM
-        * Set ser_boot_ctl bit in the MISC_CTRL1 register
-        */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD,
-                               EXT_PHY_KR_MISC_CTRL1, 0x0001);
-
-       /* Reset internal microprocessor */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_GEN_CTRL,
-                               EXT_PHY_KR_ROM_RESET_INTERNAL_MP);
-       /* set micro reset = 0 */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_GEN_CTRL,
-                               EXT_PHY_KR_ROM_MICRO_RESET);
-       /* Reset internal microprocessor */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_GEN_CTRL,
-                               EXT_PHY_KR_ROM_RESET_INTERNAL_MP);
-       /* wait for 100ms for code download via SPI port */
-       msleep(100);
-
-       /* Clear ser_boot_ctl bit */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD,
-                               EXT_PHY_KR_MISC_CTRL1, 0x0000);
-       /* Wait 100ms */
-       msleep(100);
-
-       /* Print the PHY FW version */
-       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0, ext_phy_addr,
-                              EXT_PHY_KR_PMA_PMD_DEVAD,
-                              0xca19, &fw_ver1);
-       bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0, ext_phy_addr,
-                              EXT_PHY_KR_PMA_PMD_DEVAD,
-                              0xca1a, &fw_ver2);
-       DP(NETIF_MSG_LINK,
-          "8072 FW version 0x%x:0x%x\n", fw_ver1, fw_ver2);
-}
-
-static void bnx2x_bcm8072_force_10G(struct bnx2x *bp)
-{
-       u32 ext_phy_addr = ((bp->ext_phy_config &
-                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-
-       /* Force KR or KX */
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_CTRL,
-                               0x2040);
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_CTRL2,
-                               0x000b);
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_PMA_PMD_DEVAD, EXT_PHY_KR_PMD_CTRL,
-                               0x0000);
-       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0, ext_phy_addr,
-                               EXT_PHY_KR_AUTO_NEG_DEVAD, EXT_PHY_KR_CTRL,
-                               0x0000);
-}
-
-static void bnx2x_ext_phy_init(struct bnx2x *bp)
-{
-       u32 ext_phy_type;
-       u32 ext_phy_addr;
-       u32 cnt;
-       u32 ctrl;
-       u32 val = 0;
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               ext_phy_addr = ((bp->ext_phy_config &
-                                PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-
-               ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-               /* Make sure that the soft reset is off (expect for the 8072:
-                * due to the lock, it will be done inside the specific
-                * handling)
-                */
-               if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
-                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) &&
-                  (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN) &&
-                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072)) {
-                       /* Wait for soft reset to get cleared upto 1 sec */
-                       for (cnt = 0; cnt < 1000; cnt++) {
-                               bnx2x_mdio45_read(bp, ext_phy_addr,
-                                                 EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                                 EXT_PHY_OPT_CNTL, &ctrl);
-                               if (!(ctrl & (1<<15)))
-                                       break;
-                               msleep(1);
-                       }
-                       DP(NETIF_MSG_LINK,
-                          "control reg 0x%x (after %d ms)\n", ctrl, cnt);
-               }
-
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "XGXS Direct\n");
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
-                       DP(NETIF_MSG_LINK, "XGXS 8705\n");
-
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                           EXT_PHY_OPT_PMD_MISC_CNTL,
-                                           0x8288);
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                           EXT_PHY_OPT_PHY_IDENTIFIER,
-                                           0x7fbf);
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                           EXT_PHY_OPT_CMU_PLL_BYPASS,
-                                           0x0100);
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_WIS_DEVAD,
-                                           EXT_PHY_OPT_LASI_CNTL, 0x1);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
-                       DP(NETIF_MSG_LINK, "XGXS 8706\n");
-
-                       if (!(bp->req_autoneg & AUTONEG_SPEED)) {
-                               /* Force speed */
-                               if (bp->req_line_speed == SPEED_10000) {
-                                       DP(NETIF_MSG_LINK,
-                                          "XGXS 8706 force 10Gbps\n");
-                                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                               EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                               EXT_PHY_OPT_PMD_DIGITAL_CNT,
-                                               0x400);
-                               } else {
-                                       /* Force 1Gbps */
-                                       DP(NETIF_MSG_LINK,
-                                          "XGXS 8706 force 1Gbps\n");
-
-                                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                               EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                               EXT_PHY_OPT_CNTL,
-                                               0x0040);
-
-                                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                               EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                               EXT_PHY_OPT_CNTL2,
-                                               0x000D);
-                               }
-
-                               /* Enable LASI */
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                                   EXT_PHY_OPT_LASI_CNTL,
-                                                   0x1);
-                       } else {
-                               /* AUTONEG */
-                               /* Allow CL37 through CL73 */
-                               DP(NETIF_MSG_LINK, "XGXS 8706 AutoNeg\n");
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_AUTO_NEG_DEVAD,
-                                                   EXT_PHY_OPT_AN_CL37_CL73,
-                                                   0x040c);
-
-                               /* Enable Full-Duplex advertisment on CL37 */
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_AUTO_NEG_DEVAD,
-                                                   EXT_PHY_OPT_AN_CL37_FD,
-                                                   0x0020);
-                               /* Enable CL37 AN */
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_AUTO_NEG_DEVAD,
-                                                   EXT_PHY_OPT_AN_CL37_AN,
-                                                   0x1000);
-                               /* Advertise 10G/1G support */
-                               if (bp->advertising &
-                                   ADVERTISED_1000baseT_Full)
-                                       val = (1<<5);
-                               if (bp->advertising &
-                                   ADVERTISED_10000baseT_Full)
-                                       val |= (1<<7);
-
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_AUTO_NEG_DEVAD,
-                                                   EXT_PHY_OPT_AN_ADV, val);
-                               /* Enable LASI */
-                               bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                                   EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                                   EXT_PHY_OPT_LASI_CNTL,
-                                                   0x1);
-
-                               /* Enable clause 73 AN */
-                               bnx2x_mdio45_write(bp, ext_phy_addr,
-                                                  EXT_PHY_AUTO_NEG_DEVAD,
-                                                  EXT_PHY_OPT_CNTL,
-                                                  0x1200);
-                       }
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
-                       bnx2x_hw_lock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-                       /* Wait for soft reset to get cleared upto 1 sec */
-                       for (cnt = 0; cnt < 1000; cnt++) {
-                               bnx2x_mdio45_ctrl_read(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                               EXT_PHY_OPT_CNTL, &ctrl);
-                               if (!(ctrl & (1<<15)))
-                                       break;
-                               msleep(1);
-                       }
-                       DP(NETIF_MSG_LINK,
-                          "8072 control reg 0x%x (after %d ms)\n",
-                          ctrl, cnt);
-
-                       bnx2x_bcm8072_external_rom_boot(bp);
-                       DP(NETIF_MSG_LINK, "Finshed loading 8072 KR ROM\n");
-
-                       /* enable LASI */
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_PMA_PMD_DEVAD,
-                                               0x9000, 0x0400);
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_PMA_PMD_DEVAD,
-                                               EXT_PHY_KR_LASI_CNTL, 0x0004);
-
-                       /* If this is forced speed, set to KR or KX
-                        * (all other are not supported)
-                        */
-                       if (!(bp->req_autoneg & AUTONEG_SPEED)) {
-                               if (bp->req_line_speed == SPEED_10000) {
-                                       bnx2x_bcm8072_force_10G(bp);
-                                       DP(NETIF_MSG_LINK,
-                                          "Forced speed 10G on 8072\n");
-                                       /* unlock */
-                                       bnx2x_hw_unlock(bp,
-                                               HW_LOCK_RESOURCE_8072_MDIO);
-                                       break;
-                               } else
-                                       val = (1<<5);
-                       } else {
-
-                               /* Advertise 10G/1G support */
-                               if (bp->advertising &
-                                               ADVERTISED_1000baseT_Full)
-                                       val = (1<<5);
-                               if (bp->advertising &
-                                               ADVERTISED_10000baseT_Full)
-                                       val |= (1<<7);
-                       }
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                       ext_phy_addr,
-                                       EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                       0x11, val);
-                       /* Add support for CL37 ( passive mode ) I */
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                               0x8370, 0x040c);
-                       /* Add support for CL37 ( passive mode ) II */
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                               0xffe4, 0x20);
-                       /* Add support for CL37 ( passive mode ) III */
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                               0xffe0, 0x1000);
-                       /* Restart autoneg */
-                       msleep(500);
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                       ext_phy_addr,
-                                       EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                       EXT_PHY_KR_CTRL, 0x1200);
-                       DP(NETIF_MSG_LINK, "8072 Autoneg Restart: "
-                          "1G %ssupported  10G %ssupported\n",
-                          (val & (1<<5)) ? "" : "not ",
-                          (val & (1<<7)) ? "" : "not ");
-
-                       /* unlock */
-                       bnx2x_hw_unlock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
-                       DP(NETIF_MSG_LINK,
-                          "Setting the SFX7101 LASI indication\n");
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                           EXT_PHY_OPT_LASI_CNTL, 0x1);
-                       DP(NETIF_MSG_LINK,
-                          "Setting the SFX7101 LED to blink on traffic\n");
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                           0xC007, (1<<3));
-
-                       /* read modify write pause advertizing */
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                         EXT_PHY_KR_AUTO_NEG_ADVERT, &val);
-                       val &= ~EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_BOTH;
-                       /* Please refer to Table 28B-3 of 802.3ab-1999 spec. */
-                       if (bp->advertising & ADVERTISED_Pause)
-                               val |= EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE;
-
-                       if (bp->advertising & ADVERTISED_Asym_Pause) {
-                               val |=
-                                EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_ASYMMETRIC;
-                       }
-                       DP(NETIF_MSG_LINK, "SFX7101 AN advertize 0x%x\n", val);
-                       bnx2x_mdio45_vwrite(bp, ext_phy_addr,
-                                           EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                           EXT_PHY_KR_AUTO_NEG_ADVERT, val);
-                       /* Restart autoneg */
-                       bnx2x_mdio45_read(bp, ext_phy_addr,
-                                         EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                         EXT_PHY_KR_CTRL, &val);
-                       val |= 0x200;
-                       bnx2x_mdio45_write(bp, ext_phy_addr,
-                                           EXT_PHY_KR_AUTO_NEG_DEVAD,
-                                           EXT_PHY_KR_CTRL, val);
-                       break;
-
-               default:
-                       BNX2X_ERR("BAD XGXS ext_phy_config 0x%x\n",
-                                 bp->ext_phy_config);
-                       break;
-               }
-
-       } else { /* SerDes */
-/*             ext_phy_addr = ((bp->ext_phy_config &
-                                PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK) >>
-                               PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT);
-*/
-               ext_phy_type = SERDES_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
-                       break;
-
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
-                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-                       break;
-               }
-       }
-}
-
-static void bnx2x_ext_phy_reset(struct bnx2x *bp)
-{
-       u32 ext_phy_type;
-       u32 ext_phy_addr = ((bp->ext_phy_config &
-                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
-                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
-       u32 board = (bp->board & SHARED_HW_CFG_BOARD_TYPE_MASK);
-
-       /* The PHY reset is controled by GPIO 1
-        * Give it 1ms of reset pulse
-        */
-       if ((board != SHARED_HW_CFG_BOARD_TYPE_BCM957710T1002G) &&
-           (board != SHARED_HW_CFG_BOARD_TYPE_BCM957710T1003G)) {
-               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
-                              MISC_REGISTERS_GPIO_OUTPUT_LOW);
-               msleep(1);
-               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
-                              MISC_REGISTERS_GPIO_OUTPUT_HIGH);
-       }
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "XGXS Direct\n");
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
-                       DP(NETIF_MSG_LINK, "XGXS 8705/8706\n");
-                       bnx2x_mdio45_write(bp, ext_phy_addr,
-                                          EXT_PHY_OPT_PMA_PMD_DEVAD,
-                                          EXT_PHY_OPT_CNTL, 0xa040);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
-                       DP(NETIF_MSG_LINK, "XGXS 8072\n");
-                       bnx2x_hw_lock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-                       bnx2x_mdio45_ctrl_write(bp, GRCBASE_EMAC0,
-                                               ext_phy_addr,
-                                               EXT_PHY_KR_PMA_PMD_DEVAD,
-                                               0, 1<<15);
-                       bnx2x_hw_unlock(bp, HW_LOCK_RESOURCE_8072_MDIO);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
-                       DP(NETIF_MSG_LINK, "XGXS SFX7101\n");
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-                       break;
-               }
-
-       } else { /* SerDes */
-               ext_phy_type = SERDES_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
-                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
-                       break;
-
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
-                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-                       break;
-               }
-       }
-}
-
-static void bnx2x_link_initialize(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       /* disable attentions */
-       bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
-                      (NIG_MASK_XGXS0_LINK_STATUS |
-                       NIG_MASK_XGXS0_LINK10G |
-                       NIG_MASK_SERDES0_LINK_STATUS |
-                       NIG_MASK_MI_INT));
-
-       /* Activate the external PHY */
-       bnx2x_ext_phy_reset(bp);
-
-       bnx2x_set_aer_mmd(bp);
-
-       if (bp->phy_flags & PHY_XGXS_FLAG)
-               bnx2x_set_master_ln(bp);
-
-       /* reset the SerDes and wait for reset bit return low */
-       bnx2x_reset_unicore(bp);
-
-       bnx2x_set_aer_mmd(bp);
-
-       /* setting the masterLn_def again after the reset */
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               bnx2x_set_master_ln(bp);
-               bnx2x_set_swap_lanes(bp);
-       }
-
-       /* Set Parallel Detect */
-       if (bp->req_autoneg & AUTONEG_SPEED)
-               bnx2x_set_parallel_detection(bp);
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               if (bp->req_line_speed &&
-                   bp->req_line_speed < SPEED_1000) {
-                       bp->phy_flags |= PHY_SGMII_FLAG;
-               } else {
-                       bp->phy_flags &= ~PHY_SGMII_FLAG;
-               }
-       }
-
-       if (!(bp->phy_flags & PHY_SGMII_FLAG)) {
-               u16 bank, rx_eq;
-
-               rx_eq = ((bp->serdes_config &
-                         PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK) >>
-                        PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT);
-
-               DP(NETIF_MSG_LINK, "setting rx eq to %d\n", rx_eq);
-               for (bank = MDIO_REG_BANK_RX0; bank <= MDIO_REG_BANK_RX_ALL;
-                           bank += (MDIO_REG_BANK_RX1 - MDIO_REG_BANK_RX0)) {
-                       MDIO_SET_REG_BANK(bp, bank);
-                       bnx2x_mdio22_write(bp, MDIO_RX0_RX_EQ_BOOST,
-                                          ((rx_eq &
-                               MDIO_RX0_RX_EQ_BOOST_EQUALIZER_CTRL_MASK) |
-                               MDIO_RX0_RX_EQ_BOOST_OFFSET_CTRL));
-               }
-
-               /* forced speed requested? */
-               if (!(bp->req_autoneg & AUTONEG_SPEED)) {
-                       DP(NETIF_MSG_LINK, "not SGMII, no AN\n");
-
-                       /* disable autoneg */
-                       bnx2x_set_autoneg(bp);
-
-                       /* program speed and duplex */
-                       bnx2x_program_serdes(bp);
-
-               } else { /* AN_mode */
-                       DP(NETIF_MSG_LINK, "not SGMII, AN\n");
-
-                       /* AN enabled */
-                       bnx2x_set_brcm_cl37_advertisment(bp);
-
-                       /* program duplex & pause advertisement (for aneg) */
-                       bnx2x_set_ieee_aneg_advertisment(bp);
-
-                       /* enable autoneg */
-                       bnx2x_set_autoneg(bp);
-
-                       /* enable and restart AN */
-                       bnx2x_restart_autoneg(bp);
-               }
-
-       } else { /* SGMII mode */
-               DP(NETIF_MSG_LINK, "SGMII\n");
-
-               bnx2x_initialize_sgmii_process(bp);
-       }
-
-       /* init ext phy and enable link state int */
-       bnx2x_ext_phy_init(bp);
-
-       /* enable the interrupt */
-       bnx2x_link_int_enable(bp);
-}
-
-static void bnx2x_phy_deassert(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 val;
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               DP(NETIF_MSG_LINK, "XGXS\n");
-               val = XGXS_RESET_BITS;
-
-       } else { /* SerDes */
-               DP(NETIF_MSG_LINK, "SerDes\n");
-               val = SERDES_RESET_BITS;
-       }
-
-       val = val << (port*16);
-
-       /* reset and unreset the SerDes/XGXS */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR, val);
-       msleep(5);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_SET, val);
-}
-
-static int bnx2x_phy_init(struct bnx2x *bp)
-{
-       DP(NETIF_MSG_LINK, "started\n");
-       if (CHIP_REV(bp) == CHIP_REV_FPGA) {
-               bp->phy_flags |= PHY_EMAC_FLAG;
-               bp->link_up = 1;
-               bp->line_speed = SPEED_10000;
-               bp->duplex = DUPLEX_FULL;
-               NIG_WR(NIG_REG_EGRESS_DRAIN0_MODE + bp->port*4, 0);
-               bnx2x_emac_enable(bp);
-               bnx2x_link_report(bp);
-               return 0;
-
-       } else if (CHIP_REV(bp) == CHIP_REV_EMUL) {
-               bp->phy_flags |= PHY_BMAC_FLAG;
-               bp->link_up = 1;
-               bp->line_speed = SPEED_10000;
-               bp->duplex = DUPLEX_FULL;
-               NIG_WR(NIG_REG_EGRESS_DRAIN0_MODE + bp->port*4, 0);
-               bnx2x_bmac_enable(bp, 0);
-               bnx2x_link_report(bp);
-               return 0;
-
-       } else {
-               bnx2x_phy_deassert(bp);
-               bnx2x_link_initialize(bp);
-       }
-
-       return 0;
-}
-
-static void bnx2x_link_reset(struct bnx2x *bp)
-{
-       int port = bp->port;
-       u32 board = (bp->board & SHARED_HW_CFG_BOARD_TYPE_MASK);
-
-       /* update shared memory */
-       bp->link_status = 0;
-       bnx2x_update_mng(bp);
-
-       /* disable attentions */
-       bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
-                      (NIG_MASK_XGXS0_LINK_STATUS |
-                       NIG_MASK_XGXS0_LINK10G |
-                       NIG_MASK_SERDES0_LINK_STATUS |
-                       NIG_MASK_MI_INT));
-
-       /* activate nig drain */
-       NIG_WR(NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
-
-       /* disable nig egress interface */
-       NIG_WR(NIG_REG_BMAC0_OUT_EN + port*4, 0);
-       NIG_WR(NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0);
-
-       /* Stop BigMac rx */
-       bnx2x_bmac_rx_disable(bp);
-
-       /* disable emac */
-       NIG_WR(NIG_REG_NIG_EMAC0_EN + port*4, 0);
-
-       msleep(10);
-
-       /* The PHY reset is controled by GPIO 1
-        * Hold it as output low
-        */
-       if ((board != SHARED_HW_CFG_BOARD_TYPE_BCM957710T1002G) &&
-           (board != SHARED_HW_CFG_BOARD_TYPE_BCM957710T1003G)) {
-               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
-                              MISC_REGISTERS_GPIO_OUTPUT_LOW);
-               DP(NETIF_MSG_LINK, "reset external PHY\n");
-       }
-
-       /* reset the SerDes/XGXS */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR,
-              (0x1ff << (port*16)));
-
-       /* reset BigMac */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
-              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
-
-       /* disable nig ingress interface */
-       NIG_WR(NIG_REG_BMAC0_IN_EN + port*4, 0);
-       NIG_WR(NIG_REG_EMAC0_IN_EN + port*4, 0);
-
-       /* set link down */
-       bp->link_up = 0;
-}
-
-#ifdef BNX2X_XGXS_LB
-static void bnx2x_set_xgxs_loopback(struct bnx2x *bp, int is_10g)
-{
-       int port = bp->port;
-
-       if (is_10g) {
-               u32 md_devad;
-
-               DP(NETIF_MSG_LINK, "XGXS 10G loopback enable\n");
-
-               /* change the uni_phy_addr in the nig */
-               REG_RD(bp, (NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18),
-                      &md_devad);
-               NIG_WR(NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18, 0x5);
-
-               /* change the aer mmd */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_AER_BLOCK);
-               bnx2x_mdio22_write(bp, MDIO_AER_BLOCK_AER_REG, 0x2800);
-
-               /* config combo IEEE0 control reg for loopback */
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_CL73_IEEEB0);
-               bnx2x_mdio22_write(bp, MDIO_CL73_IEEEB0_CL73_AN_CONTROL,
-                                  0x6041);
-
-               /* set aer mmd back */
-               bnx2x_set_aer_mmd(bp);
-
-               /* and md_devad */
-               NIG_WR(NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18, md_devad);
-
-       } else {
-               u32 mii_control;
-
-               DP(NETIF_MSG_LINK, "XGXS 1G loopback enable\n");
-
-               MDIO_SET_REG_BANK(bp, MDIO_REG_BANK_COMBO_IEEE0);
-               bnx2x_mdio22_read(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                 &mii_control);
-               bnx2x_mdio22_write(bp, MDIO_COMBO_IEEE0_MII_CONTROL,
-                                  (mii_control |
-                                   MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK));
-       }
-}
-#endif
-
-/* end of PHY/MAC */
-
-/* slow path */
-
-/*
- * General service functions
- */
-
-/* the slow path queue is odd since completions arrive on the fastpath ring */
-static int bnx2x_sp_post(struct bnx2x *bp, int command, int cid,
-                        u32 data_hi, u32 data_lo, int common)
-{
-       int port = bp->port;
-
-       DP(NETIF_MSG_TIMER,
-          "spe (%x:%x)  command %d  hw_cid %x  data (%x:%x)  left %x\n",
-          (u32)U64_HI(bp->spq_mapping), (u32)(U64_LO(bp->spq_mapping) +
-          (void *)bp->spq_prod_bd - (void *)bp->spq), command,
-          HW_CID(bp, cid), data_hi, data_lo, bp->spq_left);
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return -EIO;
-#endif
-
-       spin_lock(&bp->spq_lock);
-
-       if (!bp->spq_left) {
-               BNX2X_ERR("BUG! SPQ ring full!\n");
-               spin_unlock(&bp->spq_lock);
-               bnx2x_panic();
-               return -EBUSY;
-       }
-
-       /* CID needs port number to be encoded int it */
-       bp->spq_prod_bd->hdr.conn_and_cmd_data =
-                       cpu_to_le32(((command << SPE_HDR_CMD_ID_SHIFT) |
-                                    HW_CID(bp, cid)));
-       bp->spq_prod_bd->hdr.type = cpu_to_le16(ETH_CONNECTION_TYPE);
-       if (common)
-               bp->spq_prod_bd->hdr.type |=
-                       cpu_to_le16((1 << SPE_HDR_COMMON_RAMROD_SHIFT));
-
-       bp->spq_prod_bd->data.mac_config_addr.hi = cpu_to_le32(data_hi);
-       bp->spq_prod_bd->data.mac_config_addr.lo = cpu_to_le32(data_lo);
-
-       bp->spq_left--;
-
-       if (bp->spq_prod_bd == bp->spq_last_bd) {
-               bp->spq_prod_bd = bp->spq;
-               bp->spq_prod_idx = 0;
-               DP(NETIF_MSG_TIMER, "end of spq\n");
-
-       } else {
-               bp->spq_prod_bd++;
-               bp->spq_prod_idx++;
-       }
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(port),
-              bp->spq_prod_idx);
-
-       spin_unlock(&bp->spq_lock);
-       return 0;
-}
-
-/* acquire split MCP access lock register */
-static int bnx2x_lock_alr(struct bnx2x *bp)
-{
-       int rc = 0;
-       u32 i, j, val;
-
-       might_sleep();
-       i = 100;
-       for (j = 0; j < i*10; j++) {
-               val = (1UL << 31);
-               REG_WR(bp, GRCBASE_MCP + 0x9c, val);
-               val = REG_RD(bp, GRCBASE_MCP + 0x9c);
-               if (val & (1L << 31))
-                       break;
-
-               msleep(5);
-       }
-
-       if (!(val & (1L << 31))) {
-               BNX2X_ERR("Cannot acquire nvram interface\n");
-
-               rc = -EBUSY;
-       }
-
-       return rc;
-}
-
-/* Release split MCP access lock register */
-static void bnx2x_unlock_alr(struct bnx2x *bp)
-{
-       u32 val = 0;
-
-       REG_WR(bp, GRCBASE_MCP + 0x9c, val);
-}
-
-static inline u16 bnx2x_update_dsb_idx(struct bnx2x *bp)
-{
-       struct host_def_status_block *def_sb = bp->def_status_blk;
-       u16 rc = 0;
-
-       barrier(); /* status block is written to by the chip */
-
-       if (bp->def_att_idx != def_sb->atten_status_block.attn_bits_index) {
-               bp->def_att_idx = def_sb->atten_status_block.attn_bits_index;
-               rc |= 1;
-       }
-       if (bp->def_c_idx != def_sb->c_def_status_block.status_block_index) {
-               bp->def_c_idx = def_sb->c_def_status_block.status_block_index;
-               rc |= 2;
-       }
-       if (bp->def_u_idx != def_sb->u_def_status_block.status_block_index) {
-               bp->def_u_idx = def_sb->u_def_status_block.status_block_index;
-               rc |= 4;
-       }
-       if (bp->def_x_idx != def_sb->x_def_status_block.status_block_index) {
-               bp->def_x_idx = def_sb->x_def_status_block.status_block_index;
-               rc |= 8;
-       }
-       if (bp->def_t_idx != def_sb->t_def_status_block.status_block_index) {
-               bp->def_t_idx = def_sb->t_def_status_block.status_block_index;
-               rc |= 16;
-       }
-       return rc;
-}
-
-/*
- * slow path service functions
- */
-
-static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted)
-{
-       int port = bp->port;
-       u32 igu_addr = (IGU_ADDR_ATTN_BITS_SET + IGU_PORT_BASE * port) * 8;
-       u32 aeu_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
-                             MISC_REG_AEU_MASK_ATTN_FUNC_0;
-       u32 nig_int_mask_addr = port ? NIG_REG_MASK_INTERRUPT_PORT1 :
-                                      NIG_REG_MASK_INTERRUPT_PORT0;
-
-       if (~bp->aeu_mask & (asserted & 0xff))
-               BNX2X_ERR("IGU ERROR\n");
-       if (bp->attn_state & asserted)
-               BNX2X_ERR("IGU ERROR\n");
-
-       DP(NETIF_MSG_HW, "aeu_mask %x  newly asserted %x\n",
-          bp->aeu_mask, asserted);
-       bp->aeu_mask &= ~(asserted & 0xff);
-       DP(NETIF_MSG_HW, "after masking: aeu_mask %x\n", bp->aeu_mask);
-
-       REG_WR(bp, aeu_addr, bp->aeu_mask);
-
-       bp->attn_state |= asserted;
-
-       if (asserted & ATTN_HARD_WIRED_MASK) {
-               if (asserted & ATTN_NIG_FOR_FUNC) {
-
-                       /* save nig interrupt mask */
-                       bp->nig_mask = REG_RD(bp, nig_int_mask_addr);
-                       REG_WR(bp, nig_int_mask_addr, 0);
-
-                       bnx2x_link_update(bp);
-
-                       /* handle unicore attn? */
-               }
-               if (asserted & ATTN_SW_TIMER_4_FUNC)
-                       DP(NETIF_MSG_HW, "ATTN_SW_TIMER_4_FUNC!\n");
-
-               if (asserted & GPIO_2_FUNC)
-                       DP(NETIF_MSG_HW, "GPIO_2_FUNC!\n");
-
-               if (asserted & GPIO_3_FUNC)
-                       DP(NETIF_MSG_HW, "GPIO_3_FUNC!\n");
-
-               if (asserted & GPIO_4_FUNC)
-                       DP(NETIF_MSG_HW, "GPIO_4_FUNC!\n");
-
-               if (port == 0) {
-                       if (asserted & ATTN_GENERAL_ATTN_1) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_1!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_1, 0x0);
-                       }
-                       if (asserted & ATTN_GENERAL_ATTN_2) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_2!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_2, 0x0);
-                       }
-                       if (asserted & ATTN_GENERAL_ATTN_3) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_3!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_3, 0x0);
-                       }
-               } else {
-                       if (asserted & ATTN_GENERAL_ATTN_4) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_4!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_4, 0x0);
-                       }
-                       if (asserted & ATTN_GENERAL_ATTN_5) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_5!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_5, 0x0);
-                       }
-                       if (asserted & ATTN_GENERAL_ATTN_6) {
-                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_6!\n");
-                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_6, 0x0);
-                       }
-               }
-
-       } /* if hardwired */
-
-       DP(NETIF_MSG_HW, "about to mask 0x%08x at IGU addr 0x%x\n",
-          asserted, BAR_IGU_INTMEM + igu_addr);
-       REG_WR(bp, BAR_IGU_INTMEM + igu_addr, asserted);
-
-       /* now set back the mask */
-       if (asserted & ATTN_NIG_FOR_FUNC)
-               REG_WR(bp, nig_int_mask_addr, bp->nig_mask);
-}
-
-static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn)
-{
-       int port = bp->port;
-       int reg_offset;
-       u32 val;
-
-       if (attn & AEU_INPUTS_ATTN_BITS_SPIO5) {
-
-               reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :
-                                    MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
-
-               val = REG_RD(bp, reg_offset);
-               val &= ~AEU_INPUTS_ATTN_BITS_SPIO5;
-               REG_WR(bp, reg_offset, val);
-
-               BNX2X_ERR("SPIO5 hw attention\n");
-
-               switch (bp->board & SHARED_HW_CFG_BOARD_TYPE_MASK) {
-               case SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G:
-                       /* Fan failure attention */
-
-                       /* The PHY reset is controled by GPIO 1 */
-                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
-                                      MISC_REGISTERS_GPIO_OUTPUT_LOW);
-                       /* Low power mode is controled by GPIO 2 */
-                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
-                                      MISC_REGISTERS_GPIO_OUTPUT_LOW);
-                       /* mark the failure */
-                       bp->ext_phy_config &=
-                                       ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK;
-                       bp->ext_phy_config |=
-                                       PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE;
-                       SHMEM_WR(bp,
-                                dev_info.port_hw_config[port].
-                                                       external_phy_config,
-                                bp->ext_phy_config);
-                       /* log the failure */
-                       printk(KERN_ERR PFX "Fan Failure on Network"
-                              " Controller %s has caused the driver to"
-                              " shutdown the card to prevent permanent"
-                              " damage.  Please contact Dell Support for"
-                              " assistance\n", bp->dev->name);
-                       break;
-
-               default:
-                       break;
-               }
-       }
-}
-
-static inline void bnx2x_attn_int_deasserted1(struct bnx2x *bp, u32 attn)
-{
-       u32 val;
-
-       if (attn & BNX2X_DOORQ_ASSERT) {
-
-               val = REG_RD(bp, DORQ_REG_DORQ_INT_STS_CLR);
-               BNX2X_ERR("DB hw attention 0x%x\n", val);
-               /* DORQ discard attention */
-               if (val & 0x2)
-                       BNX2X_ERR("FATAL error from DORQ\n");
-       }
-}
-
-static inline void bnx2x_attn_int_deasserted2(struct bnx2x *bp, u32 attn)
-{
-       u32 val;
-
-       if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) {
-
-               val = REG_RD(bp, CFC_REG_CFC_INT_STS_CLR);
-               BNX2X_ERR("CFC hw attention 0x%x\n", val);
-               /* CFC error attention */
-               if (val & 0x2)
-                       BNX2X_ERR("FATAL error from CFC\n");
-       }
-
-       if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) {
-
-               val = REG_RD(bp, PXP_REG_PXP_INT_STS_CLR_0);
-               BNX2X_ERR("PXP hw attention 0x%x\n", val);
-               /* RQ_USDMDP_FIFO_OVERFLOW */
-               if (val & 0x18000)
-                       BNX2X_ERR("FATAL error from PXP\n");
-       }
-}
-
-static inline void bnx2x_attn_int_deasserted3(struct bnx2x *bp, u32 attn)
-{
-       if (attn & EVEREST_GEN_ATTN_IN_USE_MASK) {
-
-               if (attn & BNX2X_MC_ASSERT_BITS) {
-
-                       BNX2X_ERR("MC assert!\n");
-                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_10, 0);
-                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_9, 0);
-                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_8, 0);
-                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_7, 0);
-                       bnx2x_panic();
-
-               } else if (attn & BNX2X_MCP_ASSERT) {
-
-                       BNX2X_ERR("MCP assert!\n");
-                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_11, 0);
-                       bnx2x_mc_assert(bp);
-
-               } else
-                       BNX2X_ERR("Unknown HW assert! (attn 0x%x)\n", attn);
-       }
-
-       if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) {
-
-               REG_WR(bp, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff);
-               BNX2X_ERR("LATCHED attention 0x%x (masked)\n", attn);
-       }
-}
-
-static void bnx2x_attn_int_deasserted(struct bnx2x *bp, u32 deasserted)
-{
-       struct attn_route attn;
-       struct attn_route group_mask;
-       int port = bp->port;
-       int index;
-       u32 reg_addr;
-       u32 val;
-
-       /* need to take HW lock because MCP or other port might also
-          try to handle this event */
-       bnx2x_lock_alr(bp);
-
-       attn.sig[0] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0 + port*4);
-       attn.sig[1] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0 + port*4);
-       attn.sig[2] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0 + port*4);
-       attn.sig[3] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0 + port*4);
-       DP(NETIF_MSG_HW, "attn %llx\n", (unsigned long long)attn.sig[0]);
-
-       for (index = 0; index < MAX_DYNAMIC_ATTN_GRPS; index++) {
-               if (deasserted & (1 << index)) {
-                       group_mask = bp->attn_group[index];
-
-                       DP(NETIF_MSG_HW, "group[%d]: %llx\n", index,
-                          (unsigned long long)group_mask.sig[0]);
-
-                       bnx2x_attn_int_deasserted3(bp,
-                                       attn.sig[3] & group_mask.sig[3]);
-                       bnx2x_attn_int_deasserted1(bp,
-                                       attn.sig[1] & group_mask.sig[1]);
-                       bnx2x_attn_int_deasserted2(bp,
-                                       attn.sig[2] & group_mask.sig[2]);
-                       bnx2x_attn_int_deasserted0(bp,
-                                       attn.sig[0] & group_mask.sig[0]);
-
-                       if ((attn.sig[0] & group_mask.sig[0] &
-                                               HW_INTERRUT_ASSERT_SET_0) ||
-                           (attn.sig[1] & group_mask.sig[1] &
-                                               HW_INTERRUT_ASSERT_SET_1) ||
-                           (attn.sig[2] & group_mask.sig[2] &
-                                               HW_INTERRUT_ASSERT_SET_2))
-                               BNX2X_ERR("FATAL HW block attention"
-                                         "  set0 0x%x  set1 0x%x"
-                                         "  set2 0x%x\n",
-                                         (attn.sig[0] & group_mask.sig[0] &
-                                          HW_INTERRUT_ASSERT_SET_0),
-                                         (attn.sig[1] & group_mask.sig[1] &
-                                          HW_INTERRUT_ASSERT_SET_1),
-                                         (attn.sig[2] & group_mask.sig[2] &
-                                          HW_INTERRUT_ASSERT_SET_2));
-
-                       if ((attn.sig[0] & group_mask.sig[0] &
-                                               HW_PRTY_ASSERT_SET_0) ||
-                           (attn.sig[1] & group_mask.sig[1] &
-                                               HW_PRTY_ASSERT_SET_1) ||
-                           (attn.sig[2] & group_mask.sig[2] &
-                                               HW_PRTY_ASSERT_SET_2))
-                              BNX2X_ERR("FATAL HW block parity attention\n");
-               }
-       }
-
-       bnx2x_unlock_alr(bp);
-
-       reg_addr = (IGU_ADDR_ATTN_BITS_CLR + IGU_PORT_BASE * port) * 8;
-
-       val = ~deasserted;
-/*      DP(NETIF_MSG_INTR, "write 0x%08x to IGU addr 0x%x\n",
-          val, BAR_IGU_INTMEM + reg_addr); */
-       REG_WR(bp, BAR_IGU_INTMEM + reg_addr, val);
-
-       if (bp->aeu_mask & (deasserted & 0xff))
-               BNX2X_ERR("IGU BUG\n");
-       if (~bp->attn_state & deasserted)
-               BNX2X_ERR("IGU BUG\n");
-
-       reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
-                         MISC_REG_AEU_MASK_ATTN_FUNC_0;
-
-       DP(NETIF_MSG_HW, "aeu_mask %x\n", bp->aeu_mask);
-       bp->aeu_mask |= (deasserted & 0xff);
-
-       DP(NETIF_MSG_HW, "new mask %x\n", bp->aeu_mask);
-       REG_WR(bp, reg_addr, bp->aeu_mask);
-
-       DP(NETIF_MSG_HW, "attn_state %x\n", bp->attn_state);
-       bp->attn_state &= ~deasserted;
-       DP(NETIF_MSG_HW, "new state %x\n", bp->attn_state);
-}
-
-static void bnx2x_attn_int(struct bnx2x *bp)
-{
-       /* read local copy of bits */
-       u32 attn_bits = bp->def_status_blk->atten_status_block.attn_bits;
-       u32 attn_ack = bp->def_status_blk->atten_status_block.attn_bits_ack;
-       u32 attn_state = bp->attn_state;
-
-       /* look for changed bits */
-       u32 asserted   =  attn_bits & ~attn_ack & ~attn_state;
-       u32 deasserted = ~attn_bits &  attn_ack &  attn_state;
-
-       DP(NETIF_MSG_HW,
-          "attn_bits %x  attn_ack %x  asserted %x  deasserted %x\n",
-          attn_bits, attn_ack, asserted, deasserted);
-
-       if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state))
-               BNX2X_ERR("bad attention state\n");
-
-       /* handle bits that were raised */
-       if (asserted)
-               bnx2x_attn_int_asserted(bp, asserted);
-
-       if (deasserted)
-               bnx2x_attn_int_deasserted(bp, deasserted);
-}
-
-static void bnx2x_sp_task(void *data)
-{
-       struct bnx2x *bp = data;
-       u16 status;
-
-       /* Return here if interrupt is disabled */
-       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
-               DP(BNX2X_MSG_SP, "called but intr_sem not 0, returning\n");
-               return;
-       }
-
-       status = bnx2x_update_dsb_idx(bp);
-       if (status == 0)
-               BNX2X_ERR("spurious slowpath interrupt!\n");
-
-       DP(NETIF_MSG_INTR, "got a slowpath interrupt (updated %x)\n", status);
-
-       /* HW attentions */
-       if (status & 0x1)
-               bnx2x_attn_int(bp);
-
-       /* CStorm events: query_stats, port delete ramrod */
-       if (status & 0x2)
-               bp->stat_pending = 0;
-
-       bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, bp->def_att_idx,
-                    IGU_INT_NOP, 1);
-       bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx),
-                    IGU_INT_NOP, 1);
-       bnx2x_ack_sb(bp, DEF_SB_ID, CSTORM_ID, le16_to_cpu(bp->def_c_idx),
-                    IGU_INT_NOP, 1);
-       bnx2x_ack_sb(bp, DEF_SB_ID, XSTORM_ID, le16_to_cpu(bp->def_x_idx),
-                    IGU_INT_NOP, 1);
-       bnx2x_ack_sb(bp, DEF_SB_ID, TSTORM_ID, le16_to_cpu(bp->def_t_idx),
-                    IGU_INT_ENABLE, 1);
-
-       bp->sp_running = 0;
-}
-
-static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance, struct pt_regs *regs)
-{
-       struct net_device *dev = dev_instance;
-       struct bnx2x *bp = netdev_priv(dev);
-
-       /* Return here if interrupt is disabled */
-       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
-               DP(BNX2X_MSG_SP, "called but intr_sem not 0, returning\n");
-               return IRQ_HANDLED;
-       }
-
-       bnx2x_ack_sb(bp, DEF_SB_ID, XSTORM_ID, 0, IGU_INT_DISABLE, 0);
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return IRQ_HANDLED;
-#endif
-
-       schedule_work(&bp->sp_task);
-
-       return IRQ_HANDLED;
-}
-
-/* end of slow path */
-
-/* Statistics */
-
-/****************************************************************************
-* Macros
-****************************************************************************/
-
-#define UPDATE_STAT(s, t) \
-       do { \
-               estats->t += new->s - old->s; \
-               old->s = new->s; \
-       } while (0)
-
-/* sum[hi:lo] += add[hi:lo] */
-#define ADD_64(s_hi, a_hi, s_lo, a_lo) \
-       do { \
-               s_lo += a_lo; \
-               s_hi += a_hi + (s_lo < a_lo) ? 1 : 0; \
-       } while (0)
-
-/* difference = minuend - subtrahend */
-#define DIFF_64(d_hi, m_hi, s_hi, d_lo, m_lo, s_lo) \
-       do { \
-               if (m_lo < s_lo) {      /* underflow */ \
-                       d_hi = m_hi - s_hi; \
-                       if (d_hi > 0) { /* we can 'loan' 1 */ \
-                               d_hi--; \
-                               d_lo = m_lo + (UINT_MAX - s_lo) + 1; \
-                       } else {        /* m_hi <= s_hi */ \
-                               d_hi = 0; \
-                               d_lo = 0; \
-                       } \
-               } else {                /* m_lo >= s_lo */ \
-                       if (m_hi < s_hi) { \
-                           d_hi = 0; \
-                           d_lo = 0; \
-                       } else {        /* m_hi >= s_hi */ \
-                           d_hi = m_hi - s_hi; \
-                           d_lo = m_lo - s_lo; \
-                       } \
-               } \
-       } while (0)
-
-/* minuend -= subtrahend */
-#define SUB_64(m_hi, s_hi, m_lo, s_lo) \
-       do { \
-               DIFF_64(m_hi, m_hi, s_hi, m_lo, m_lo, s_lo); \
-       } while (0)
-
-#define UPDATE_STAT64(s_hi, t_hi, s_lo, t_lo) \
-       do { \
-               DIFF_64(diff.hi, new->s_hi, old->s_hi, \
-                       diff.lo, new->s_lo, old->s_lo); \
-               old->s_hi = new->s_hi; \
-               old->s_lo = new->s_lo; \
-               ADD_64(estats->t_hi, diff.hi, \
-                      estats->t_lo, diff.lo); \
-       } while (0)
-
-/* sum[hi:lo] += add */
-#define ADD_EXTEND_64(s_hi, s_lo, a) \
-       do { \
-               s_lo += a; \
-               s_hi += (s_lo < a) ? 1 : 0; \
-       } while (0)
-
-#define UPDATE_EXTEND_STAT(s, t_hi, t_lo) \
-       do { \
-               ADD_EXTEND_64(estats->t_hi, estats->t_lo, new->s); \
-       } while (0)
-
-#define UPDATE_EXTEND_TSTAT(s, t_hi, t_lo) \
-       do { \
-               diff = le32_to_cpu(tclient->s) - old_tclient->s; \
-               old_tclient->s = le32_to_cpu(tclient->s); \
-               ADD_EXTEND_64(estats->t_hi, estats->t_lo, diff); \
-       } while (0)
-
-/*
- * General service functions
- */
-
-static inline long bnx2x_hilo(u32 *hiref)
-{
-       u32 lo = *(hiref + 1);
-#if (BITS_PER_LONG == 64)
-       u32 hi = *hiref;
-
-       return HILO_U64(hi, lo);
-#else
-       return lo;
-#endif
-}
-
-/*
- * Init service functions
- */
-
-static void bnx2x_init_mac_stats(struct bnx2x *bp)
-{
-       struct dmae_command *dmae;
-       int port = bp->port;
-       int loader_idx = port * 8;
-       u32 opcode;
-       u32 mac_addr;
-
-       bp->executer_idx = 0;
-       if (bp->fw_mb) {
-               /* MCP */
-               opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
-                         DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                         DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                         DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                         (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-
-               if (bp->link_up)
-                       opcode |= (DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE);
-
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, eth_stats) +
-                                          sizeof(u32));
-               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, eth_stats) +
-                                          sizeof(u32));
-               dmae->dst_addr_lo = bp->fw_mb >> 2;
-               dmae->dst_addr_hi = 0;
-               dmae->len = (offsetof(struct bnx2x_eth_stats, mac_stx_end) -
-                            sizeof(u32)) >> 2;
-               if (bp->link_up) {
-                       dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-                       dmae->comp_addr_hi = 0;
-                       dmae->comp_val = 1;
-               } else {
-                       dmae->comp_addr_lo = 0;
-                       dmae->comp_addr_hi = 0;
-                       dmae->comp_val = 0;
-               }
-       }
-
-       if (!bp->link_up) {
-               /* no need to collect statistics in link down */
-               return;
-       }
-
-       opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
-                 DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE |
-                 DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                 DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                 DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                 (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-
-       if (bp->phy_flags & PHY_BMAC_FLAG) {
-
-               mac_addr = (port ? NIG_REG_INGRESS_BMAC1_MEM :
-                                  NIG_REG_INGRESS_BMAC0_MEM);
-
-               /* BIGMAC_REGISTER_TX_STAT_GTPKT ..
-                  BIGMAC_REGISTER_TX_STAT_GTBYT */
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = (mac_addr +
-                                    BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2;
-               dmae->src_addr_hi = 0;
-               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats));
-               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats));
-               dmae->len = (8 + BIGMAC_REGISTER_TX_STAT_GTBYT -
-                            BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2;
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-
-               /* BIGMAC_REGISTER_RX_STAT_GR64 ..
-                  BIGMAC_REGISTER_RX_STAT_GRIPJ */
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = (mac_addr +
-                                    BIGMAC_REGISTER_RX_STAT_GR64) >> 2;
-               dmae->src_addr_hi = 0;
-               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
-                                       offsetof(struct bmac_stats, rx_gr64));
-               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
-                                       offsetof(struct bmac_stats, rx_gr64));
-               dmae->len = (8 + BIGMAC_REGISTER_RX_STAT_GRIPJ -
-                            BIGMAC_REGISTER_RX_STAT_GR64) >> 2;
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-
-       } else if (bp->phy_flags & PHY_EMAC_FLAG) {
-
-               mac_addr = (port ? GRCBASE_EMAC1 : GRCBASE_EMAC0);
-
-               /* EMAC_REG_EMAC_RX_STAT_AC (EMAC_REG_EMAC_RX_STAT_AC_COUNT)*/
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = (mac_addr +
-                                    EMAC_REG_EMAC_RX_STAT_AC) >> 2;
-               dmae->src_addr_hi = 0;
-               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats));
-               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats));
-               dmae->len = EMAC_REG_EMAC_RX_STAT_AC_COUNT;
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-
-               /* EMAC_REG_EMAC_RX_STAT_AC_28 */
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = (mac_addr +
-                                    EMAC_REG_EMAC_RX_STAT_AC_28) >> 2;
-               dmae->src_addr_hi = 0;
-               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
-                                          offsetof(struct emac_stats,
-                                                   rx_falsecarriererrors));
-               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
-                                          offsetof(struct emac_stats,
-                                                   rx_falsecarriererrors));
-               dmae->len = 1;
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-
-               /* EMAC_REG_EMAC_TX_STAT_AC (EMAC_REG_EMAC_TX_STAT_AC_COUNT)*/
-               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-               dmae->opcode = opcode;
-               dmae->src_addr_lo = (mac_addr +
-                                    EMAC_REG_EMAC_TX_STAT_AC) >> 2;
-               dmae->src_addr_hi = 0;
-               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
-                                          offsetof(struct emac_stats,
-                                                   tx_ifhcoutoctets));
-               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
-                                          offsetof(struct emac_stats,
-                                                   tx_ifhcoutoctets));
-               dmae->len = EMAC_REG_EMAC_TX_STAT_AC_COUNT;
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-       }
-
-       /* NIG */
-       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
-       dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
-                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
-                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                       DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                       (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-       dmae->src_addr_lo = (port ? NIG_REG_STAT1_BRB_DISCARD :
-                                   NIG_REG_STAT0_BRB_DISCARD) >> 2;
-       dmae->src_addr_hi = 0;
-       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig));
-       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig));
-       dmae->len = (sizeof(struct nig_stats) - 2*sizeof(u32)) >> 2;
-       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig) +
-                                   offsetof(struct nig_stats, done));
-       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig) +
-                                   offsetof(struct nig_stats, done));
-       dmae->comp_val = 0xffffffff;
-}
-
-static void bnx2x_init_stats(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       bp->stats_state = STATS_STATE_DISABLE;
-       bp->executer_idx = 0;
-
-       bp->old_brb_discard = REG_RD(bp,
-                                    NIG_REG_STAT0_BRB_DISCARD + port*0x38);
-
-       memset(&bp->old_bmac, 0, sizeof(struct bmac_stats));
-       memset(&bp->old_tclient, 0, sizeof(struct tstorm_per_client_stats));
-       memset(&bp->net_stats, 0, sizeof(struct net_device_stats));
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(port), 1);
-       REG_WR(bp, BAR_XSTRORM_INTMEM +
-              XSTORM_STATS_FLAGS_OFFSET(port) + 4, 0);
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(port), 1);
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_STATS_FLAGS_OFFSET(port) + 4, 0);
-
-       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(port), 0);
-       REG_WR(bp, BAR_CSTRORM_INTMEM +
-              CSTORM_STATS_FLAGS_OFFSET(port) + 4, 0);
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM +
-              XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port),
-              U64_LO(bnx2x_sp_mapping(bp, fw_stats)));
-       REG_WR(bp, BAR_XSTRORM_INTMEM +
-              XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port) + 4,
-              U64_HI(bnx2x_sp_mapping(bp, fw_stats)));
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port),
-              U64_LO(bnx2x_sp_mapping(bp, fw_stats)));
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port) + 4,
-              U64_HI(bnx2x_sp_mapping(bp, fw_stats)));
-}
-
-static void bnx2x_stop_stats(struct bnx2x *bp)
-{
-       might_sleep();
-       if (bp->stats_state != STATS_STATE_DISABLE) {
-               int timeout = 10;
-
-               bp->stats_state = STATS_STATE_STOP;
-               DP(BNX2X_MSG_STATS, "stats_state - STOP\n");
-
-               while (bp->stats_state != STATS_STATE_DISABLE) {
-                       if (!timeout) {
-                               BNX2X_ERR("timeout waiting for stats stop\n");
-                               break;
-                       }
-                       timeout--;
-                       msleep(100);
-               }
-       }
-       DP(BNX2X_MSG_STATS, "stats_state - DISABLE\n");
-}
-
-/*
- * Statistics service functions
- */
-
-static void bnx2x_update_bmac_stats(struct bnx2x *bp)
-{
-       struct regp diff;
-       struct regp sum;
-       struct bmac_stats *new = bnx2x_sp(bp, mac_stats.bmac);
-       struct bmac_stats *old = &bp->old_bmac;
-       struct bnx2x_eth_stats *estats = bnx2x_sp(bp, eth_stats);
-
-       sum.hi = 0;
-       sum.lo = 0;
-
-       UPDATE_STAT64(tx_gtbyt.hi, total_bytes_transmitted_hi,
-                     tx_gtbyt.lo, total_bytes_transmitted_lo);
-
-       UPDATE_STAT64(tx_gtmca.hi, total_multicast_packets_transmitted_hi,
-                     tx_gtmca.lo, total_multicast_packets_transmitted_lo);
-       ADD_64(sum.hi, diff.hi, sum.lo, diff.lo);
-
-       UPDATE_STAT64(tx_gtgca.hi, total_broadcast_packets_transmitted_hi,
-                     tx_gtgca.lo, total_broadcast_packets_transmitted_lo);
-       ADD_64(sum.hi, diff.hi, sum.lo, diff.lo);
-
-       UPDATE_STAT64(tx_gtpkt.hi, total_unicast_packets_transmitted_hi,
-                     tx_gtpkt.lo, total_unicast_packets_transmitted_lo);
-       SUB_64(estats->total_unicast_packets_transmitted_hi, sum.hi,
-              estats->total_unicast_packets_transmitted_lo, sum.lo);
-
-       UPDATE_STAT(tx_gtxpf.lo, pause_xoff_frames_transmitted);
-       UPDATE_STAT(tx_gt64.lo, frames_transmitted_64_bytes);
-       UPDATE_STAT(tx_gt127.lo, frames_transmitted_65_127_bytes);
-       UPDATE_STAT(tx_gt255.lo, frames_transmitted_128_255_bytes);
-       UPDATE_STAT(tx_gt511.lo, frames_transmitted_256_511_bytes);
-       UPDATE_STAT(tx_gt1023.lo, frames_transmitted_512_1023_bytes);
-       UPDATE_STAT(tx_gt1518.lo, frames_transmitted_1024_1522_bytes);
-       UPDATE_STAT(tx_gt2047.lo, frames_transmitted_1523_9022_bytes);
-       UPDATE_STAT(tx_gt4095.lo, frames_transmitted_1523_9022_bytes);
-       UPDATE_STAT(tx_gt9216.lo, frames_transmitted_1523_9022_bytes);
-       UPDATE_STAT(tx_gt16383.lo, frames_transmitted_1523_9022_bytes);
-
-       UPDATE_STAT(rx_grfcs.lo, crc_receive_errors);
-       UPDATE_STAT(rx_grund.lo, runt_packets_received);
-       UPDATE_STAT(rx_grovr.lo, stat_Dot3statsFramesTooLong);
-       UPDATE_STAT(rx_grxpf.lo, pause_xoff_frames_received);
-       UPDATE_STAT(rx_grxcf.lo, control_frames_received);
-       /* UPDATE_STAT(rx_grxpf.lo, control_frames_received); */
-       UPDATE_STAT(rx_grfrg.lo, error_runt_packets_received);
-       UPDATE_STAT(rx_grjbr.lo, error_jabber_packets_received);
-
-       UPDATE_STAT64(rx_grerb.hi, stat_IfHCInBadOctets_hi,
-                     rx_grerb.lo, stat_IfHCInBadOctets_lo);
-       UPDATE_STAT64(tx_gtufl.hi, stat_IfHCOutBadOctets_hi,
-                     tx_gtufl.lo, stat_IfHCOutBadOctets_lo);
-       UPDATE_STAT(tx_gterr.lo, stat_Dot3statsInternalMacTransmitErrors);
-       /* UPDATE_STAT(rx_grxpf.lo, stat_XoffStateEntered); */
-       estats->stat_XoffStateEntered = estats->pause_xoff_frames_received;
-}
-
-static void bnx2x_update_emac_stats(struct bnx2x *bp)
-{
-       struct emac_stats *new = bnx2x_sp(bp, mac_stats.emac);
-       struct bnx2x_eth_stats *estats = bnx2x_sp(bp, eth_stats);
-
-       UPDATE_EXTEND_STAT(tx_ifhcoutoctets, total_bytes_transmitted_hi,
-                                            total_bytes_transmitted_lo);
-       UPDATE_EXTEND_STAT(tx_ifhcoutucastpkts,
-                                       total_unicast_packets_transmitted_hi,
-                                       total_unicast_packets_transmitted_lo);
-       UPDATE_EXTEND_STAT(tx_ifhcoutmulticastpkts,
-                                     total_multicast_packets_transmitted_hi,
-                                     total_multicast_packets_transmitted_lo);
-       UPDATE_EXTEND_STAT(tx_ifhcoutbroadcastpkts,
-                                     total_broadcast_packets_transmitted_hi,
-                                     total_broadcast_packets_transmitted_lo);
-
-       estats->pause_xon_frames_transmitted += new->tx_outxonsent;
-       estats->pause_xoff_frames_transmitted += new->tx_outxoffsent;
-       estats->single_collision_transmit_frames +=
-                               new->tx_dot3statssinglecollisionframes;
-       estats->multiple_collision_transmit_frames +=
-                               new->tx_dot3statsmultiplecollisionframes;
-       estats->late_collision_frames += new->tx_dot3statslatecollisions;
-       estats->excessive_collision_frames +=
-                               new->tx_dot3statsexcessivecollisions;
-       estats->frames_transmitted_64_bytes += new->tx_etherstatspkts64octets;
-       estats->frames_transmitted_65_127_bytes +=
-                               new->tx_etherstatspkts65octetsto127octets;
-       estats->frames_transmitted_128_255_bytes +=
-                               new->tx_etherstatspkts128octetsto255octets;
-       estats->frames_transmitted_256_511_bytes +=
-                               new->tx_etherstatspkts256octetsto511octets;
-       estats->frames_transmitted_512_1023_bytes +=
-                               new->tx_etherstatspkts512octetsto1023octets;
-       estats->frames_transmitted_1024_1522_bytes +=
-                               new->tx_etherstatspkts1024octetsto1522octet;
-       estats->frames_transmitted_1523_9022_bytes +=
-                               new->tx_etherstatspktsover1522octets;
-
-       estats->crc_receive_errors += new->rx_dot3statsfcserrors;
-       estats->alignment_errors += new->rx_dot3statsalignmenterrors;
-       estats->false_carrier_detections += new->rx_falsecarriererrors;
-       estats->runt_packets_received += new->rx_etherstatsundersizepkts;
-       estats->stat_Dot3statsFramesTooLong += new->rx_dot3statsframestoolong;
-       estats->pause_xon_frames_received += new->rx_xonpauseframesreceived;
-       estats->pause_xoff_frames_received += new->rx_xoffpauseframesreceived;
-       estats->control_frames_received += new->rx_maccontrolframesreceived;
-       estats->error_runt_packets_received += new->rx_etherstatsfragments;
-       estats->error_jabber_packets_received += new->rx_etherstatsjabbers;
-
-       UPDATE_EXTEND_STAT(rx_ifhcinbadoctets, stat_IfHCInBadOctets_hi,
-                                              stat_IfHCInBadOctets_lo);
-       UPDATE_EXTEND_STAT(tx_ifhcoutbadoctets, stat_IfHCOutBadOctets_hi,
-                                               stat_IfHCOutBadOctets_lo);
-       estats->stat_Dot3statsInternalMacTransmitErrors +=
-                               new->tx_dot3statsinternalmactransmiterrors;
-       estats->stat_Dot3StatsCarrierSenseErrors +=
-                               new->rx_dot3statscarriersenseerrors;
-       estats->stat_Dot3StatsDeferredTransmissions +=
-                               new->tx_dot3statsdeferredtransmissions;
-       estats->stat_FlowControlDone += new->tx_flowcontroldone;
-       estats->stat_XoffStateEntered += new->rx_xoffstateentered;
-}
-
-static int bnx2x_update_storm_stats(struct bnx2x *bp)
-{
-       struct eth_stats_query *stats = bnx2x_sp(bp, fw_stats);
-       struct tstorm_common_stats *tstats = &stats->tstorm_common;
-       struct tstorm_per_client_stats *tclient =
-                                               &tstats->client_statistics[0];
-       struct tstorm_per_client_stats *old_tclient = &bp->old_tclient;
-       struct xstorm_common_stats *xstats = &stats->xstorm_common;
-       struct nig_stats *nstats = bnx2x_sp(bp, nig);
-       struct bnx2x_eth_stats *estats = bnx2x_sp(bp, eth_stats);
-       u32 diff;
-
-       /* are DMAE stats valid? */
-       if (nstats->done != 0xffffffff) {
-               DP(BNX2X_MSG_STATS, "stats not updated by dmae\n");
-               return -1;
-       }
-
-       /* are storm stats valid? */
-       if (tstats->done.hi != 0xffffffff) {
-               DP(BNX2X_MSG_STATS, "stats not updated by tstorm\n");
-               return -2;
-       }
-       if (xstats->done.hi != 0xffffffff) {
-               DP(BNX2X_MSG_STATS, "stats not updated by xstorm\n");
-               return -3;
-       }
-
-       estats->total_bytes_received_hi =
-       estats->valid_bytes_received_hi =
-                               le32_to_cpu(tclient->total_rcv_bytes.hi);
-       estats->total_bytes_received_lo =
-       estats->valid_bytes_received_lo =
-                               le32_to_cpu(tclient->total_rcv_bytes.lo);
-       ADD_64(estats->total_bytes_received_hi,
-              le32_to_cpu(tclient->rcv_error_bytes.hi),
-              estats->total_bytes_received_lo,
-              le32_to_cpu(tclient->rcv_error_bytes.lo));
-
-       UPDATE_EXTEND_TSTAT(rcv_unicast_pkts,
-                                       total_unicast_packets_received_hi,
-                                       total_unicast_packets_received_lo);
-       UPDATE_EXTEND_TSTAT(rcv_multicast_pkts,
-                                       total_multicast_packets_received_hi,
-                                       total_multicast_packets_received_lo);
-       UPDATE_EXTEND_TSTAT(rcv_broadcast_pkts,
-                                       total_broadcast_packets_received_hi,
-                                       total_broadcast_packets_received_lo);
-
-       estats->frames_received_64_bytes = MAC_STX_NA;
-       estats->frames_received_65_127_bytes = MAC_STX_NA;
-       estats->frames_received_128_255_bytes = MAC_STX_NA;
-       estats->frames_received_256_511_bytes = MAC_STX_NA;
-       estats->frames_received_512_1023_bytes = MAC_STX_NA;
-       estats->frames_received_1024_1522_bytes = MAC_STX_NA;
-       estats->frames_received_1523_9022_bytes = MAC_STX_NA;
-
-       estats->x_total_sent_bytes_hi =
-                               le32_to_cpu(xstats->total_sent_bytes.hi);
-       estats->x_total_sent_bytes_lo =
-                               le32_to_cpu(xstats->total_sent_bytes.lo);
-       estats->x_total_sent_pkts = le32_to_cpu(xstats->total_sent_pkts);
-
-       estats->t_rcv_unicast_bytes_hi =
-                               le32_to_cpu(tclient->rcv_unicast_bytes.hi);
-       estats->t_rcv_unicast_bytes_lo =
-                               le32_to_cpu(tclient->rcv_unicast_bytes.lo);
-       estats->t_rcv_broadcast_bytes_hi =
-                               le32_to_cpu(tclient->rcv_broadcast_bytes.hi);
-       estats->t_rcv_broadcast_bytes_lo =
-                               le32_to_cpu(tclient->rcv_broadcast_bytes.lo);
-       estats->t_rcv_multicast_bytes_hi =
-                               le32_to_cpu(tclient->rcv_multicast_bytes.hi);
-       estats->t_rcv_multicast_bytes_lo =
-                               le32_to_cpu(tclient->rcv_multicast_bytes.lo);
-       estats->t_total_rcv_pkt = le32_to_cpu(tclient->total_rcv_pkts);
-
-       estats->checksum_discard = le32_to_cpu(tclient->checksum_discard);
-       estats->packets_too_big_discard =
-                               le32_to_cpu(tclient->packets_too_big_discard);
-       estats->jabber_packets_received = estats->packets_too_big_discard +
-                                         estats->stat_Dot3statsFramesTooLong;
-       estats->no_buff_discard = le32_to_cpu(tclient->no_buff_discard);
-       estats->ttl0_discard = le32_to_cpu(tclient->ttl0_discard);
-       estats->mac_discard = le32_to_cpu(tclient->mac_discard);
-       estats->mac_filter_discard = le32_to_cpu(tstats->mac_filter_discard);
-       estats->xxoverflow_discard = le32_to_cpu(tstats->xxoverflow_discard);
-       estats->brb_truncate_discard =
-                               le32_to_cpu(tstats->brb_truncate_discard);
-
-       estats->brb_discard += nstats->brb_discard - bp->old_brb_discard;
-       bp->old_brb_discard = nstats->brb_discard;
-
-       estats->brb_packet = nstats->brb_packet;
-       estats->brb_truncate = nstats->brb_truncate;
-       estats->flow_ctrl_discard = nstats->flow_ctrl_discard;
-       estats->flow_ctrl_octets = nstats->flow_ctrl_octets;
-       estats->flow_ctrl_packet = nstats->flow_ctrl_packet;
-       estats->mng_discard = nstats->mng_discard;
-       estats->mng_octet_inp = nstats->mng_octet_inp;
-       estats->mng_octet_out = nstats->mng_octet_out;
-       estats->mng_packet_inp = nstats->mng_packet_inp;
-       estats->mng_packet_out = nstats->mng_packet_out;
-       estats->pbf_octets = nstats->pbf_octets;
-       estats->pbf_packet = nstats->pbf_packet;
-       estats->safc_inp = nstats->safc_inp;
-
-       xstats->done.hi = 0;
-       tstats->done.hi = 0;
-       nstats->done = 0;
-
-       return 0;
-}
-
-static void bnx2x_update_net_stats(struct bnx2x *bp)
-{
-       struct bnx2x_eth_stats *estats = bnx2x_sp(bp, eth_stats);
-       struct net_device_stats *nstats = &bp->net_stats;
-
-       nstats->rx_packets =
-               bnx2x_hilo(&estats->total_unicast_packets_received_hi) +
-               bnx2x_hilo(&estats->total_multicast_packets_received_hi) +
-               bnx2x_hilo(&estats->total_broadcast_packets_received_hi);
-
-       nstats->tx_packets =
-               bnx2x_hilo(&estats->total_unicast_packets_transmitted_hi) +
-               bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi) +
-               bnx2x_hilo(&estats->total_broadcast_packets_transmitted_hi);
-
-       nstats->rx_bytes = bnx2x_hilo(&estats->total_bytes_received_hi);
-
-       nstats->tx_bytes = bnx2x_hilo(&estats->total_bytes_transmitted_hi);
-
-       nstats->rx_dropped = estats->checksum_discard + estats->mac_discard;
-       nstats->tx_dropped = 0;
-
-       nstats->multicast =
-               bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi);
-
-       nstats->collisions = estats->single_collision_transmit_frames +
-                            estats->multiple_collision_transmit_frames +
-                            estats->late_collision_frames +
-                            estats->excessive_collision_frames;
-
-       nstats->rx_length_errors = estats->runt_packets_received +
-                                  estats->jabber_packets_received;
-       nstats->rx_over_errors = estats->brb_discard +
-                                estats->brb_truncate_discard;
-       nstats->rx_crc_errors = estats->crc_receive_errors;
-       nstats->rx_frame_errors = estats->alignment_errors;
-       nstats->rx_fifo_errors = estats->no_buff_discard;
-       nstats->rx_missed_errors = estats->xxoverflow_discard;
-
-       nstats->rx_errors = nstats->rx_length_errors +
-                           nstats->rx_over_errors +
-                           nstats->rx_crc_errors +
-                           nstats->rx_frame_errors +
-                           nstats->rx_fifo_errors +
-                           nstats->rx_missed_errors;
-
-       nstats->tx_aborted_errors = estats->late_collision_frames +
-                                   estats->excessive_collision_frames;
-       nstats->tx_carrier_errors = estats->false_carrier_detections;
-       nstats->tx_fifo_errors = 0;
-       nstats->tx_heartbeat_errors = 0;
-       nstats->tx_window_errors = 0;
-
-       nstats->tx_errors = nstats->tx_aborted_errors +
-                           nstats->tx_carrier_errors;
-
-       estats->mac_stx_start = ++estats->mac_stx_end;
-}
-
-static void bnx2x_update_stats(struct bnx2x *bp)
-{
-       int i;
-
-       if (!bnx2x_update_storm_stats(bp)) {
-
-               if (bp->phy_flags & PHY_BMAC_FLAG) {
-                       bnx2x_update_bmac_stats(bp);
-
-               } else if (bp->phy_flags & PHY_EMAC_FLAG) {
-                       bnx2x_update_emac_stats(bp);
-
-               } else { /* unreached */
-                       BNX2X_ERR("no MAC active\n");
-                       return;
-               }
-
-               bnx2x_update_net_stats(bp);
-       }
-
-       if (bp->msglevel & NETIF_MSG_TIMER) {
-               struct bnx2x_eth_stats *estats = bnx2x_sp(bp, eth_stats);
-               struct net_device_stats *nstats = &bp->net_stats;
-
-               printk(KERN_DEBUG "%s:\n", bp->dev->name);
-               printk(KERN_DEBUG "  tx avail (%4x)  tx hc idx (%x)"
-                                 "  tx pkt (%lx)\n",
-                      bnx2x_tx_avail(bp->fp),
-                      *bp->fp->tx_cons_sb, nstats->tx_packets);
-               printk(KERN_DEBUG "  rx usage (%4x)  rx hc idx (%x)"
-                                 "  rx pkt (%lx)\n",
-                      (u16)(*bp->fp->rx_cons_sb - bp->fp->rx_comp_cons),
-                      *bp->fp->rx_cons_sb, nstats->rx_packets);
-               printk(KERN_DEBUG "  %s (Xoff events %u)  brb drops %u\n",
-                      netif_queue_stopped(bp->dev)? "Xoff" : "Xon",
-                      estats->driver_xoff, estats->brb_discard);
-               printk(KERN_DEBUG "tstats: checksum_discard %u  "
-                       "packets_too_big_discard %u  no_buff_discard %u  "
-                       "mac_discard %u  mac_filter_discard %u  "
-                       "xxovrflow_discard %u  brb_truncate_discard %u  "
-                       "ttl0_discard %u\n",
-                      estats->checksum_discard,
-                      estats->packets_too_big_discard,
-                      estats->no_buff_discard, estats->mac_discard,
-                      estats->mac_filter_discard, estats->xxoverflow_discard,
-                      estats->brb_truncate_discard, estats->ttl0_discard);
-
-               for_each_queue(bp, i) {
-                       printk(KERN_DEBUG "[%d]: %lu\t%lu\t%lu\n", i,
-                              bnx2x_fp(bp, i, tx_pkt),
-                              bnx2x_fp(bp, i, rx_pkt),
-                              bnx2x_fp(bp, i, rx_calls));
-               }
-       }
-
-       if (bp->state != BNX2X_STATE_OPEN) {
-               DP(BNX2X_MSG_STATS, "state is %x, returning\n", bp->state);
-               return;
-       }
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return;
-#endif
-
-       /* loader */
-       if (bp->executer_idx) {
-               struct dmae_command *dmae = &bp->dmae;
-               int port = bp->port;
-               int loader_idx = port * 8;
-
-               memset(dmae, 0, sizeof(struct dmae_command));
-
-               dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
-                               DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE |
-                               DMAE_CMD_DST_RESET |
-#ifdef __BIG_ENDIAN
-                               DMAE_CMD_ENDIANITY_B_DW_SWAP |
-#else
-                               DMAE_CMD_ENDIANITY_DW_SWAP |
-#endif
-                               (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0));
-               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, dmae[0]));
-               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, dmae[0]));
-               dmae->dst_addr_lo = (DMAE_REG_CMD_MEM +
-                                    sizeof(struct dmae_command) *
-                                    (loader_idx + 1)) >> 2;
-               dmae->dst_addr_hi = 0;
-               dmae->len = sizeof(struct dmae_command) >> 2;
-               dmae->len--;    /* !!! for A0/1 only */
-               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx + 1] >> 2;
-               dmae->comp_addr_hi = 0;
-               dmae->comp_val = 1;
-
-               bnx2x_post_dmae(bp, dmae, loader_idx);
-       }
-
-       if (bp->stats_state != STATS_STATE_ENABLE) {
-               bp->stats_state = STATS_STATE_DISABLE;
-               return;
-       }
-
-       if (bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_STAT_QUERY, 0, 0, 0, 0) == 0) {
-               /* stats ramrod has it's own slot on the spe */
-               bp->spq_left++;
-               bp->stat_pending = 1;
-       }
-}
-
-static void bnx2x_timer(unsigned long data)
-{
-       struct bnx2x *bp = (struct bnx2x *) data;
-
-       if (!netif_running(bp->dev))
-               return;
-
-       if (atomic_read(&bp->intr_sem) != 0)
-               goto timer_restart;
-
-       if (poll) {
-               struct bnx2x_fastpath *fp = &bp->fp[0];
-               int rc;
-
-               bnx2x_tx_int(fp, 1000);
-               rc = bnx2x_rx_int(fp, 1000);
-       }
-
-       if (!nomcp) {
-               int port = bp->port;
-               u32 drv_pulse;
-               u32 mcp_pulse;
-
-               ++bp->fw_drv_pulse_wr_seq;
-               bp->fw_drv_pulse_wr_seq &= DRV_PULSE_SEQ_MASK;
-               /* TBD - add SYSTEM_TIME */
-               drv_pulse = bp->fw_drv_pulse_wr_seq;
-               SHMEM_WR(bp, func_mb[port].drv_pulse_mb, drv_pulse);
-
-               mcp_pulse = (SHMEM_RD(bp, func_mb[port].mcp_pulse_mb) &
-                            MCP_PULSE_SEQ_MASK);
-               /* The delta between driver pulse and mcp response
-                * should be 1 (before mcp response) or 0 (after mcp response)
-                */
-               if ((drv_pulse != mcp_pulse) &&
-                   (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
-                       /* someone lost a heartbeat... */
-                       BNX2X_ERR("drv_pulse (0x%x) != mcp_pulse (0x%x)\n",
-                                 drv_pulse, mcp_pulse);
-               }
-       }
-
-       if (bp->stats_state == STATS_STATE_DISABLE)
-               goto timer_restart;
-
-       bnx2x_update_stats(bp);
-
-timer_restart:
-       mod_timer(&bp->timer, jiffies + bp->current_interval);
-}
-
-/* end of Statistics */
-
-/* nic init */
-
-/*
- * nic init service functions
- */
-
-static void bnx2x_init_sb(struct bnx2x *bp, struct host_status_block *sb,
-                         dma_addr_t mapping, int id)
-{
-       int port = bp->port;
-       u64 section;
-       int index;
-
-       /* USTORM */
-       section = ((u64)mapping) + offsetof(struct host_status_block,
-                                           u_status_block);
-       sb->u_status_block.status_block_id = id;
-
-       REG_WR(bp, BAR_USTRORM_INTMEM +
-              USTORM_SB_HOST_SB_ADDR_OFFSET(port, id), U64_LO(section));
-       REG_WR(bp, BAR_USTRORM_INTMEM +
-              ((USTORM_SB_HOST_SB_ADDR_OFFSET(port, id)) + 4),
-              U64_HI(section));
-
-       for (index = 0; index < HC_USTORM_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_USTRORM_INTMEM +
-                        USTORM_SB_HC_DISABLE_OFFSET(port, id, index), 0x1);
-
-       /* CSTORM */
-       section = ((u64)mapping) + offsetof(struct host_status_block,
-                                           c_status_block);
-       sb->c_status_block.status_block_id = id;
-
-       REG_WR(bp, BAR_CSTRORM_INTMEM +
-              CSTORM_SB_HOST_SB_ADDR_OFFSET(port, id), U64_LO(section));
-       REG_WR(bp, BAR_CSTRORM_INTMEM +
-              ((CSTORM_SB_HOST_SB_ADDR_OFFSET(port, id)) + 4),
-              U64_HI(section));
-
-       for (index = 0; index < HC_CSTORM_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_CSTRORM_INTMEM +
-                        CSTORM_SB_HC_DISABLE_OFFSET(port, id, index), 0x1);
-
-       bnx2x_ack_sb(bp, id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
-}
-
-static void bnx2x_init_def_sb(struct bnx2x *bp,
-                             struct host_def_status_block *def_sb,
-                             dma_addr_t mapping, int id)
-{
-       int port = bp->port;
-       int index, val, reg_offset;
-       u64 section;
-
-       /* ATTN */
-       section = ((u64)mapping) + offsetof(struct host_def_status_block,
-                                           atten_status_block);
-       def_sb->atten_status_block.status_block_id = id;
-
-       bp->def_att_idx = 0;
-       bp->attn_state = 0;
-
-       reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :
-                            MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
-
-       for (index = 0; index < 3; index++) {
-               bp->attn_group[index].sig[0] = REG_RD(bp,
-                                                    reg_offset + 0x10*index);
-               bp->attn_group[index].sig[1] = REG_RD(bp,
-                                              reg_offset + 0x4 + 0x10*index);
-               bp->attn_group[index].sig[2] = REG_RD(bp,
-                                              reg_offset + 0x8 + 0x10*index);
-               bp->attn_group[index].sig[3] = REG_RD(bp,
-                                              reg_offset + 0xc + 0x10*index);
-       }
-
-       bp->aeu_mask = REG_RD(bp, (port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
-                                         MISC_REG_AEU_MASK_ATTN_FUNC_0));
-
-       reg_offset = (port ? HC_REG_ATTN_MSG1_ADDR_L :
-                            HC_REG_ATTN_MSG0_ADDR_L);
-
-       REG_WR(bp, reg_offset, U64_LO(section));
-       REG_WR(bp, reg_offset + 4, U64_HI(section));
-
-       reg_offset = (port ? HC_REG_ATTN_NUM_P1 : HC_REG_ATTN_NUM_P0);
-
-       val = REG_RD(bp, reg_offset);
-       val |= id;
-       REG_WR(bp, reg_offset, val);
-
-       /* USTORM */
-       section = ((u64)mapping) + offsetof(struct host_def_status_block,
-                                           u_def_status_block);
-       def_sb->u_def_status_block.status_block_id = id;
-
-       bp->def_u_idx = 0;
-
-       REG_WR(bp, BAR_USTRORM_INTMEM +
-              USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port), U64_LO(section));
-       REG_WR(bp, BAR_USTRORM_INTMEM +
-              ((USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)) + 4),
-              U64_HI(section));
-       REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_HC_BTR_OFFSET(port),
-              BNX2X_BTR);
-
-       for (index = 0; index < HC_USTORM_DEF_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_USTRORM_INTMEM +
-                        USTORM_DEF_SB_HC_DISABLE_OFFSET(port, index), 0x1);
-
-       /* CSTORM */
-       section = ((u64)mapping) + offsetof(struct host_def_status_block,
-                                           c_def_status_block);
-       def_sb->c_def_status_block.status_block_id = id;
-
-       bp->def_c_idx = 0;
-
-       REG_WR(bp, BAR_CSTRORM_INTMEM +
-              CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port), U64_LO(section));
-       REG_WR(bp, BAR_CSTRORM_INTMEM +
-              ((CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)) + 4),
-              U64_HI(section));
-       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_HC_BTR_OFFSET(port),
-              BNX2X_BTR);
-
-       for (index = 0; index < HC_CSTORM_DEF_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_CSTRORM_INTMEM +
-                        CSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index), 0x1);
-
-       /* TSTORM */
-       section = ((u64)mapping) + offsetof(struct host_def_status_block,
-                                           t_def_status_block);
-       def_sb->t_def_status_block.status_block_id = id;
-
-       bp->def_t_idx = 0;
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port), U64_LO(section));
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              ((TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)) + 4),
-              U64_HI(section));
-       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_HC_BTR_OFFSET(port),
-              BNX2X_BTR);
-
-       for (index = 0; index < HC_TSTORM_DEF_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_TSTRORM_INTMEM +
-                        TSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index), 0x1);
-
-       /* XSTORM */
-       section = ((u64)mapping) + offsetof(struct host_def_status_block,
-                                           x_def_status_block);
-       def_sb->x_def_status_block.status_block_id = id;
-
-       bp->def_x_idx = 0;
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM +
-              XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port), U64_LO(section));
-       REG_WR(bp, BAR_XSTRORM_INTMEM +
-              ((XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)) + 4),
-              U64_HI(section));
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_HC_BTR_OFFSET(port),
-              BNX2X_BTR);
-
-       for (index = 0; index < HC_XSTORM_DEF_SB_NUM_INDICES; index++)
-               REG_WR16(bp, BAR_XSTRORM_INTMEM +
-                        XSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index), 0x1);
-
-       bp->stat_pending = 0;
-
-       bnx2x_ack_sb(bp, id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
-}
-
-static void bnx2x_update_coalesce(struct bnx2x *bp)
-{
-       int port = bp->port;
-       int i;
-
-       for_each_queue(bp, i) {
-
-               /* HC_INDEX_U_ETH_RX_CQ_CONS */
-               REG_WR8(bp, BAR_USTRORM_INTMEM +
-                       USTORM_SB_HC_TIMEOUT_OFFSET(port, i,
-                                                  HC_INDEX_U_ETH_RX_CQ_CONS),
-                       bp->rx_ticks_int/12);
-               REG_WR16(bp, BAR_USTRORM_INTMEM +
-                        USTORM_SB_HC_DISABLE_OFFSET(port, i,
-                                                  HC_INDEX_U_ETH_RX_CQ_CONS),
-                        bp->rx_ticks_int ? 0 : 1);
-
-               /* HC_INDEX_C_ETH_TX_CQ_CONS */
-               REG_WR8(bp, BAR_CSTRORM_INTMEM +
-                       CSTORM_SB_HC_TIMEOUT_OFFSET(port, i,
-                                                  HC_INDEX_C_ETH_TX_CQ_CONS),
-                       bp->tx_ticks_int/12);
-               REG_WR16(bp, BAR_CSTRORM_INTMEM +
-                        CSTORM_SB_HC_DISABLE_OFFSET(port, i,
-                                                  HC_INDEX_C_ETH_TX_CQ_CONS),
-                        bp->tx_ticks_int ? 0 : 1);
-       }
-}
-
-static void bnx2x_init_rx_rings(struct bnx2x *bp)
-{
-       u16 ring_prod;
-       int i, j;
-       int port = bp->port;
-
-       bp->rx_buf_use_size = bp->dev->mtu;
-
-       bp->rx_buf_use_size += bp->rx_offset + ETH_OVREHEAD;
-       bp->rx_buf_size = bp->rx_buf_use_size + 64;
-
-       for_each_queue(bp, j) {
-               struct bnx2x_fastpath *fp = &bp->fp[j];
-
-               fp->rx_bd_cons = 0;
-               fp->rx_cons_sb = BNX2X_RX_SB_INDEX;
-
-               for (i = 1; i <= NUM_RX_RINGS; i++) {
-                       struct eth_rx_bd *rx_bd;
-
-                       rx_bd = &fp->rx_desc_ring[RX_DESC_CNT * i - 2];
-                       rx_bd->addr_hi =
-                               cpu_to_le32(U64_HI(fp->rx_desc_mapping +
-                                          BCM_PAGE_SIZE*(i % NUM_RX_RINGS)));
-                       rx_bd->addr_lo =
-                               cpu_to_le32(U64_LO(fp->rx_desc_mapping +
-                                          BCM_PAGE_SIZE*(i % NUM_RX_RINGS)));
-
-               }
-
-               for (i = 1; i <= NUM_RCQ_RINGS; i++) {
-                       struct eth_rx_cqe_next_page *nextpg;
-
-                       nextpg = (struct eth_rx_cqe_next_page *)
-                               &fp->rx_comp_ring[RCQ_DESC_CNT * i - 1];
-                       nextpg->addr_hi =
-                               cpu_to_le32(U64_HI(fp->rx_comp_mapping +
-                                         BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS)));
-                       nextpg->addr_lo =
-                               cpu_to_le32(U64_LO(fp->rx_comp_mapping +
-                                         BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS)));
-               }
-
-               /* rx completion queue */
-               fp->rx_comp_cons = ring_prod = 0;
-
-               for (i = 0; i < bp->rx_ring_size; i++) {
-                       if (bnx2x_alloc_rx_skb(bp, fp, ring_prod) < 0) {
-                               BNX2X_ERR("was only able to allocate "
-                                         "%d rx skbs\n", i);
-                               break;
-                       }
-                       ring_prod = NEXT_RX_IDX(ring_prod);
-                       BUG_TRAP(ring_prod > i);
-               }
-
-               fp->rx_bd_prod = fp->rx_comp_prod = ring_prod;
-               fp->rx_pkt = fp->rx_calls = 0;
-
-               /* Warning! this will generate an interrupt (to the TSTORM) */
-               /* must only be done when chip is initialized */
-               REG_WR(bp, BAR_TSTRORM_INTMEM +
-                      TSTORM_RCQ_PROD_OFFSET(port, j), ring_prod);
-               if (j != 0)
-                       continue;
-
-               REG_WR(bp, BAR_USTRORM_INTMEM +
-                      USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(port),
-                      U64_LO(fp->rx_comp_mapping));
-               REG_WR(bp, BAR_USTRORM_INTMEM +
-                      USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(port) + 4,
-                      U64_HI(fp->rx_comp_mapping));
-       }
-}
-
-static void bnx2x_init_tx_ring(struct bnx2x *bp)
-{
-       int i, j;
-
-       for_each_queue(bp, j) {
-               struct bnx2x_fastpath *fp = &bp->fp[j];
-
-               for (i = 1; i <= NUM_TX_RINGS; i++) {
-                       struct eth_tx_bd *tx_bd =
-                               &fp->tx_desc_ring[TX_DESC_CNT * i - 1];
-
-                       tx_bd->addr_hi =
-                               cpu_to_le32(U64_HI(fp->tx_desc_mapping +
-                                          BCM_PAGE_SIZE*(i % NUM_TX_RINGS)));
-                       tx_bd->addr_lo =
-                               cpu_to_le32(U64_LO(fp->tx_desc_mapping +
-                                          BCM_PAGE_SIZE*(i % NUM_TX_RINGS)));
-               }
-
-               fp->tx_pkt_prod = 0;
-               fp->tx_pkt_cons = 0;
-               fp->tx_bd_prod = 0;
-               fp->tx_bd_cons = 0;
-               fp->tx_cons_sb = BNX2X_TX_SB_INDEX;
-               fp->tx_pkt = 0;
-       }
-}
-
-static void bnx2x_init_sp_ring(struct bnx2x *bp)
-{
-       int port = bp->port;
-
-       spin_lock_init(&bp->spq_lock);
-
-       bp->spq_left = MAX_SPQ_PENDING;
-       bp->spq_prod_idx = 0;
-       bp->dsb_sp_prod = BNX2X_SP_DSB_INDEX;
-       bp->spq_prod_bd = bp->spq;
-       bp->spq_last_bd = bp->spq_prod_bd + MAX_SP_DESC_CNT;
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PAGE_BASE_OFFSET(port),
-              U64_LO(bp->spq_mapping));
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PAGE_BASE_OFFSET(port) + 4,
-              U64_HI(bp->spq_mapping));
-
-       REG_WR(bp, XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PROD_OFFSET(port),
-              bp->spq_prod_idx);
-}
-
-static void bnx2x_init_context(struct bnx2x *bp)
-{
-       int i;
-
-       for_each_queue(bp, i) {
-               struct eth_context *context = bnx2x_sp(bp, context[i].eth);
-               struct bnx2x_fastpath *fp = &bp->fp[i];
-
-               context->xstorm_st_context.tx_bd_page_base_hi =
-                                               U64_HI(fp->tx_desc_mapping);
-               context->xstorm_st_context.tx_bd_page_base_lo =
-                                               U64_LO(fp->tx_desc_mapping);
-               context->xstorm_st_context.db_data_addr_hi =
-                                               U64_HI(fp->tx_prods_mapping);
-               context->xstorm_st_context.db_data_addr_lo =
-                                               U64_LO(fp->tx_prods_mapping);
-
-               context->ustorm_st_context.rx_bd_page_base_hi =
-                                               U64_HI(fp->rx_desc_mapping);
-               context->ustorm_st_context.rx_bd_page_base_lo =
-                                               U64_LO(fp->rx_desc_mapping);
-               context->ustorm_st_context.status_block_id = i;
-               context->ustorm_st_context.sb_index_number =
-                                               HC_INDEX_U_ETH_RX_CQ_CONS;
-               context->ustorm_st_context.rcq_base_address_hi =
-                                               U64_HI(fp->rx_comp_mapping);
-               context->ustorm_st_context.rcq_base_address_lo =
-                                               U64_LO(fp->rx_comp_mapping);
-               context->ustorm_st_context.flags =
-                               USTORM_ETH_ST_CONTEXT_ENABLE_MC_ALIGNMENT;
-               context->ustorm_st_context.mc_alignment_size = 64;
-               context->ustorm_st_context.num_rss = bp->num_queues;
-
-               context->cstorm_st_context.sb_index_number =
-                                               HC_INDEX_C_ETH_TX_CQ_CONS;
-               context->cstorm_st_context.status_block_id = i;
-
-               context->xstorm_ag_context.cdu_reserved =
-                       CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i),
-                                              CDU_REGION_NUMBER_XCM_AG,
-                                              ETH_CONNECTION_TYPE);
-               context->ustorm_ag_context.cdu_usage =
-                       CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i),
-                                              CDU_REGION_NUMBER_UCM_AG,
-                                              ETH_CONNECTION_TYPE);
-       }
-}
-
-static void bnx2x_init_ind_table(struct bnx2x *bp)
-{
-       int port = bp->port;
-       int i;
-
-       if (!is_multi(bp))
-               return;
-
-       for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++)
-               REG_WR8(bp, TSTORM_INDIRECTION_TABLE_OFFSET(port) + i,
-                       i % bp->num_queues);
-
-       REG_WR(bp, PRS_REG_A_PRSU_20, 0xf);
-}
-
-static void bnx2x_set_client_config(struct bnx2x *bp)
-{
-#ifdef BCM_VLAN
-       int mode = bp->rx_mode;
-#endif
-       int i, port = bp->port;
-       struct tstorm_eth_client_config tstorm_client = {0};
-
-       tstorm_client.mtu = bp->dev->mtu;
-       tstorm_client.statistics_counter_id = 0;
-       tstorm_client.config_flags =
-                               TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE;
-#ifdef BCM_VLAN
-       if (mode && bp->vlgrp) {
-               tstorm_client.config_flags |=
-                               TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE;
-               DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
-       }
-#endif
-       if (mode != BNX2X_RX_MODE_PROMISC)
-               tstorm_client.drop_flags =
-                               TSTORM_ETH_CLIENT_CONFIG_DROP_MAC_ERR;
-
-       for_each_queue(bp, i) {
-               REG_WR(bp, BAR_TSTRORM_INTMEM +
-                      TSTORM_CLIENT_CONFIG_OFFSET(port, i),
-                      ((u32 *)&tstorm_client)[0]);
-               REG_WR(bp, BAR_TSTRORM_INTMEM +
-                      TSTORM_CLIENT_CONFIG_OFFSET(port, i) + 4,
-                      ((u32 *)&tstorm_client)[1]);
-       }
-
-/*     DP(NETIF_MSG_IFUP, "tstorm_client: 0x%08x 0x%08x\n",
-          ((u32 *)&tstorm_client)[0], ((u32 *)&tstorm_client)[1]); */
-}
-
-static void bnx2x_set_storm_rx_mode(struct bnx2x *bp)
-{
-       int mode = bp->rx_mode;
-       int port = bp->port;
-       struct tstorm_eth_mac_filter_config tstorm_mac_filter = {0};
-       int i;
-
-       DP(NETIF_MSG_RX_STATUS, "rx mode is %d\n", mode);
-
-       switch (mode) {
-       case BNX2X_RX_MODE_NONE: /* no Rx */
-               tstorm_mac_filter.ucast_drop_all = 1;
-               tstorm_mac_filter.mcast_drop_all = 1;
-               tstorm_mac_filter.bcast_drop_all = 1;
-               break;
-       case BNX2X_RX_MODE_NORMAL:
-               tstorm_mac_filter.bcast_accept_all = 1;
-               break;
-       case BNX2X_RX_MODE_ALLMULTI:
-               tstorm_mac_filter.mcast_accept_all = 1;
-               tstorm_mac_filter.bcast_accept_all = 1;
-               break;
-       case BNX2X_RX_MODE_PROMISC:
-               tstorm_mac_filter.ucast_accept_all = 1;
-               tstorm_mac_filter.mcast_accept_all = 1;
-               tstorm_mac_filter.bcast_accept_all = 1;
-               break;
-       default:
-               BNX2X_ERR("bad rx mode (%d)\n", mode);
-       }
-
-       for (i = 0; i < sizeof(struct tstorm_eth_mac_filter_config)/4; i++) {
-               REG_WR(bp, BAR_TSTRORM_INTMEM +
-                      TSTORM_MAC_FILTER_CONFIG_OFFSET(port) + i * 4,
-                      ((u32 *)&tstorm_mac_filter)[i]);
-
-/*             DP(NETIF_MSG_IFUP, "tstorm_mac_filter[%d]: 0x%08x\n", i,
-                  ((u32 *)&tstorm_mac_filter)[i]); */
-       }
-
-       if (mode != BNX2X_RX_MODE_NONE)
-               bnx2x_set_client_config(bp);
-}
-
-static void bnx2x_init_internal(struct bnx2x *bp)
-{
-       int port = bp->port;
-       struct tstorm_eth_function_common_config tstorm_config = {0};
-       struct stats_indication_flags stats_flags = {0};
-
-       if (is_multi(bp)) {
-               tstorm_config.config_flags = MULTI_FLAGS;
-               tstorm_config.rss_result_mask = MULTI_MASK;
-       }
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM +
-              TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(port),
-              (*(u32 *)&tstorm_config));
-
-/*      DP(NETIF_MSG_IFUP, "tstorm_config: 0x%08x\n",
-          (*(u32 *)&tstorm_config)); */
-
-       bp->rx_mode = BNX2X_RX_MODE_NONE; /* no rx until link is up */
-       bnx2x_set_storm_rx_mode(bp);
-
-       stats_flags.collect_eth = cpu_to_le32(1);
-
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(port),
-              ((u32 *)&stats_flags)[0]);
-       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(port) + 4,
-              ((u32 *)&stats_flags)[1]);
-
-       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(port),
-              ((u32 *)&stats_flags)[0]);
-       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(port) + 4,
-              ((u32 *)&stats_flags)[1]);
-
-       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(port),
-              ((u32 *)&stats_flags)[0]);
-       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(port) + 4,
-              ((u32 *)&stats_flags)[1]);
-
-/*      DP(NETIF_MSG_IFUP, "stats_flags: 0x%08x 0x%08x\n",
-          ((u32 *)&stats_flags)[0], ((u32 *)&stats_flags)[1]); */
-}
-
-static void bnx2x_nic_init(struct bnx2x *bp)
-{
-       int i;
-
-       for_each_queue(bp, i) {
-               struct bnx2x_fastpath *fp = &bp->fp[i];
-
-               fp->state = BNX2X_FP_STATE_CLOSED;
-               DP(NETIF_MSG_IFUP, "bnx2x_init_sb(%p,%p,%d);\n",
-                  bp, fp->status_blk, i);
-               fp->index = i;
-               bnx2x_init_sb(bp, fp->status_blk, fp->status_blk_mapping, i);
-       }
-
-       bnx2x_init_def_sb(bp, bp->def_status_blk,
-                         bp->def_status_blk_mapping, 0x10);
-       bnx2x_update_coalesce(bp);
-       bnx2x_init_rx_rings(bp);
-       bnx2x_init_tx_ring(bp);
-       bnx2x_init_sp_ring(bp);
-       bnx2x_init_context(bp);
-       bnx2x_init_internal(bp);
-       bnx2x_init_stats(bp);
-       bnx2x_init_ind_table(bp);
-       bnx2x_int_enable(bp);
-
-}
-
-/* end of nic init */
-
-/*
- * gzip service functions
- */
-
-static int bnx2x_gunzip_init(struct bnx2x *bp)
-{
-       bp->gunzip_buf = pci_alloc_consistent(bp->pdev, FW_BUF_SIZE,
-                                             &bp->gunzip_mapping);
-       if (bp->gunzip_buf  == NULL)
-               goto gunzip_nomem1;
-
-       bp->strm = kmalloc(sizeof(*bp->strm), GFP_KERNEL);
-       if (bp->strm  == NULL)
-               goto gunzip_nomem2;
-
-       bp->strm->workspace = kmalloc(zlib_inflate_workspacesize(),
-                                     GFP_KERNEL);
-       if (bp->strm->workspace == NULL)
-               goto gunzip_nomem3;
-
-       return 0;
-
-gunzip_nomem3:
-       kfree(bp->strm);
-       bp->strm = NULL;
-
-gunzip_nomem2:
-       pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf,
-                           bp->gunzip_mapping);
-       bp->gunzip_buf = NULL;
-
-gunzip_nomem1:
-       printk(KERN_ERR PFX "%s: Cannot allocate firmware buffer for"
-              " uncompression\n", bp->dev->name);
-       return -ENOMEM;
-}
-
-static void bnx2x_gunzip_end(struct bnx2x *bp)
-{
-       kfree(bp->strm->workspace);
-
-       kfree(bp->strm);
-       bp->strm = NULL;
-
-       if (bp->gunzip_buf) {
-               pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf,
-                                   bp->gunzip_mapping);
-               bp->gunzip_buf = NULL;
-       }
-}
-
-static int bnx2x_gunzip(struct bnx2x *bp, u8 *zbuf, int len)
-{
-       int n, rc;
-
-       /* check gzip header */
-       if ((zbuf[0] != 0x1f) || (zbuf[1] != 0x8b) || (zbuf[2] != Z_DEFLATED))
-               return -EINVAL;
-
-       n = 10;
-
-#define FNAME                          0x8
-
-       if (zbuf[3] & FNAME)
-               while ((zbuf[n++] != 0) && (n < len));
-
-       bp->strm->next_in = zbuf + n;
-       bp->strm->avail_in = len - n;
-       bp->strm->next_out = bp->gunzip_buf;
-       bp->strm->avail_out = FW_BUF_SIZE;
-
-       rc = zlib_inflateInit2(bp->strm, -MAX_WBITS);
-       if (rc != Z_OK)
-               return rc;
-
-       rc = zlib_inflate(bp->strm, Z_FINISH);
-       if ((rc != Z_OK) && (rc != Z_STREAM_END))
-               printk(KERN_ERR PFX "%s: Firmware decompression error: %s\n",
-                      bp->dev->name, bp->strm->msg);
-
-       bp->gunzip_outlen = (FW_BUF_SIZE - bp->strm->avail_out);
-       if (bp->gunzip_outlen & 0x3)
-               printk(KERN_ERR PFX "%s: Firmware decompression error:"
-                                   " gunzip_outlen (%d) not aligned\n",
-                      bp->dev->name, bp->gunzip_outlen);
-       bp->gunzip_outlen >>= 2;
-
-       zlib_inflateEnd(bp->strm);
-
-       if (rc == Z_STREAM_END)
-               return 0;
-
-       return rc;
-}
-
-/* nic load/unload */
-
-/*
- * general service functions
- */
-
-/* send a NIG loopback debug packet */
-static void bnx2x_lb_pckt(struct bnx2x *bp)
-{
-#ifdef USE_DMAE
-       u32 wb_write[3];
-#endif
-
-       /* Ethernet source and destination addresses */
-#ifdef USE_DMAE
-       wb_write[0] = 0x55555555;
-       wb_write[1] = 0x55555555;
-       wb_write[2] = 0x20;             /* SOP */
-       REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3);
-#else
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB, 0x55555555);
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB + 4, 0x55555555);
-       /* SOP */
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB + 8, 0x20);
-#endif
-
-       /* NON-IP protocol */
-#ifdef USE_DMAE
-       wb_write[0] = 0x09000000;
-       wb_write[1] = 0x55555555;
-       wb_write[2] = 0x10;             /* EOP, eop_bvalid = 0 */
-       REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3);
-#else
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB, 0x09000000);
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB + 4, 0x55555555);
-       /* EOP, eop_bvalid = 0 */
-       REG_WR_IND(bp, NIG_REG_DEBUG_PACKET_LB + 8, 0x10);
-#endif
-}
-
-/* some of the internal memories
- * are not directly readable from the driver
- * to test them we send debug packets
- */
-static int bnx2x_int_mem_test(struct bnx2x *bp)
-{
-       int factor;
-       int count, i;
-       u32 val = 0;
-
-       switch (CHIP_REV(bp)) {
-       case CHIP_REV_EMUL:
-               factor = 200;
-               break;
-       case CHIP_REV_FPGA:
-               factor = 120;
-               break;
-       default:
-               factor = 1;
-               break;
-       }
-
-       DP(NETIF_MSG_HW, "start part1\n");
-
-       /* Disable inputs of parser neighbor blocks */
-       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0);
-       REG_WR(bp, TCM_REG_PRS_IFEN, 0x0);
-       REG_WR(bp, CFC_REG_DEBUG0, 0x1);
-       NIG_WR(NIG_REG_PRS_REQ_IN_EN, 0x0);
-
-       /*  Write 0 to parser credits for CFC search request */
-       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0);
-
-       /* send Ethernet packet */
-       bnx2x_lb_pckt(bp);
-
-       /* TODO do i reset NIG statistic? */
-       /* Wait until NIG register shows 1 packet of size 0x10 */
-       count = 1000 * factor;
-       while (count) {
-#ifdef BNX2X_DMAE_RD
-               bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
-               val = *bnx2x_sp(bp, wb_data[0]);
-#else
-               val = REG_RD(bp, NIG_REG_STAT2_BRB_OCTET);
-               REG_RD(bp, NIG_REG_STAT2_BRB_OCTET + 4);
-#endif
-               if (val == 0x10)
-                       break;
-
-               msleep(10);
-               count--;
-       }
-       if (val != 0x10) {
-               BNX2X_ERR("NIG timeout  val = 0x%x\n", val);
-               return -1;
-       }
-
-       /* Wait until PRS register shows 1 packet */
-       count = 1000 * factor;
-       while (count) {
-               val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
-
-               if (val == 1)
-                       break;
-
-               msleep(10);
-               count--;
-       }
-       if (val != 0x1) {
-               BNX2X_ERR("PRS timeout val = 0x%x\n", val);
-               return -2;
-       }
-
-       /* Reset and init BRB, PRS */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x3);
-       msleep(50);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x3);
-       msleep(50);
-       bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
-       bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
-
-       DP(NETIF_MSG_HW, "part2\n");
-
-       /* Disable inputs of parser neighbor blocks */
-       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0);
-       REG_WR(bp, TCM_REG_PRS_IFEN, 0x0);
-       REG_WR(bp, CFC_REG_DEBUG0, 0x1);
-       NIG_WR(NIG_REG_PRS_REQ_IN_EN, 0x0);
-
-       /* Write 0 to parser credits for CFC search request */
-       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0);
-
-       /* send 10 Ethernet packets */
-       for (i = 0; i < 10; i++)
-               bnx2x_lb_pckt(bp);
-
-       /* Wait until NIG register shows 10 + 1
-          packets of size 11*0x10 = 0xb0 */
-       count = 1000 * factor;
-       while (count) {
-#ifdef BNX2X_DMAE_RD
-               bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
-               val = *bnx2x_sp(bp, wb_data[0]);
-#else
-               val = REG_RD(bp, NIG_REG_STAT2_BRB_OCTET);
-               REG_RD(bp, NIG_REG_STAT2_BRB_OCTET + 4);
-#endif
-               if (val == 0xb0)
-                       break;
-
-               msleep(10);
-               count--;
-       }
-       if (val != 0xb0) {
-               BNX2X_ERR("NIG timeout  val = 0x%x\n", val);
-               return -3;
-       }
-
-       /* Wait until PRS register shows 2 packets */
-       val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
-       if (val != 2)
-               BNX2X_ERR("PRS timeout  val = 0x%x\n", val);
-
-       /* Write 1 to parser credits for CFC search request */
-       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x1);
-
-       /* Wait until PRS register shows 3 packets */
-       msleep(10 * factor);
-       /* Wait until NIG register shows 1 packet of size 0x10 */
-       val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
-       if (val != 3)
-               BNX2X_ERR("PRS timeout  val = 0x%x\n", val);
-
-       /* clear NIG EOP FIFO */
-       for (i = 0; i < 11; i++)
-               REG_RD(bp, NIG_REG_INGRESS_EOP_LB_FIFO);
-       val = REG_RD(bp, NIG_REG_INGRESS_EOP_LB_EMPTY);
-       if (val != 1) {
-               BNX2X_ERR("clear of NIG failed\n");
-               return -4;
-       }
-
-       /* Reset and init BRB, PRS, NIG */
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x03);
-       msleep(50);
-       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03);
-       msleep(50);
-       bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
-       bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
-#ifndef BCM_ISCSI
-       /* set NIC mode */
-       REG_WR(bp, PRS_REG_NIC_MODE, 1);
-#endif
-
-       /* Enable inputs of parser neighbor blocks */
-       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x7fffffff);
-       REG_WR(bp, TCM_REG_PRS_IFEN, 0x1);
-       REG_WR(bp, CFC_REG_DEBUG0, 0x0);
-       NIG_WR(NIG_REG_PRS_REQ_IN_EN, 0x1);
-
-       DP(NETIF_MSG_HW, "done\n");
-
-       return 0; /* OK */
-}
-
-static void enable_blocks_attention(struct bnx2x *bp)
-{
-       REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0);
-       REG_WR(bp, PXP_REG_PXP_INT_MASK_1, 0);
-       REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0);
-       REG_WR(bp, CFC_REG_CFC_INT_MASK, 0);
-       REG_WR(bp, QM_REG_QM_INT_MASK, 0);
-       REG_WR(bp, TM_REG_TM_INT_MASK, 0);
-       REG_WR(bp, XSDM_REG_XSDM_INT_MASK_0, 0);
-       REG_WR(bp, XSDM_REG_XSDM_INT_MASK_1, 0);
-       REG_WR(bp, XCM_REG_XCM_INT_MASK, 0);
-/*      REG_WR(bp, XSEM_REG_XSEM_INT_MASK_0, 0); */
-/*      REG_WR(bp, XSEM_REG_XSEM_INT_MASK_1, 0); */
-       REG_WR(bp, USDM_REG_USDM_INT_MASK_0, 0);
-       REG_WR(bp, USDM_REG_USDM_INT_MASK_1, 0);
-       REG_WR(bp, UCM_REG_UCM_INT_MASK, 0);
-/*      REG_WR(bp, USEM_REG_USEM_INT_MASK_0, 0); */
-/*      REG_WR(bp, USEM_REG_USEM_INT_MASK_1, 0); */
-       REG_WR(bp, GRCBASE_UPB + PB_REG_PB_INT_MASK, 0);
-       REG_WR(bp, CSDM_REG_CSDM_INT_MASK_0, 0);
-       REG_WR(bp, CSDM_REG_CSDM_INT_MASK_1, 0);
-       REG_WR(bp, CCM_REG_CCM_INT_MASK, 0);
-/*      REG_WR(bp, CSEM_REG_CSEM_INT_MASK_0, 0); */
-/*      REG_WR(bp, CSEM_REG_CSEM_INT_MASK_1, 0); */
-       REG_WR(bp, PXP2_REG_PXP2_INT_MASK, 0x480000);
-       REG_WR(bp, TSDM_REG_TSDM_INT_MASK_0, 0);
-       REG_WR(bp, TSDM_REG_TSDM_INT_MASK_1, 0);
-       REG_WR(bp, TCM_REG_TCM_INT_MASK, 0);
-/*      REG_WR(bp, TSEM_REG_TSEM_INT_MASK_0, 0); */
-/*      REG_WR(bp, TSEM_REG_TSEM_INT_MASK_1, 0); */
-       REG_WR(bp, CDU_REG_CDU_INT_MASK, 0);
-       REG_WR(bp, DMAE_REG_DMAE_INT_MASK, 0);
-/*      REG_WR(bp, MISC_REG_MISC_INT_MASK, 0); */
-       REG_WR(bp, PBF_REG_PBF_INT_MASK, 0X18);         /* bit 3,4 masked */
-}
-
-static int bnx2x_function_init(struct bnx2x *bp, int mode)
-{
-       int func = bp->port;
-       int port = func ? PORT1 : PORT0;
-       u32 val, i;
-#ifdef USE_DMAE
-       u32 wb_write[2];
-#endif
-
-       DP(BNX2X_MSG_MCP, "function is %d  mode is %x\n", func, mode);
-       if ((func != 0) && (func != 1)) {
-               BNX2X_ERR("BAD function number (%d)\n", func);
-               return -ENODEV;
-       }
-
-       bnx2x_gunzip_init(bp);
-
-       if (mode & 0x1) {       /* init common */
-               DP(BNX2X_MSG_MCP, "starting common init  func %d  mode %x\n",
-                  func, mode);
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET,
-                      0xffffffff);
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
-                      0xfffc);
-               bnx2x_init_block(bp, MISC_COMMON_START, MISC_COMMON_END);
-
-               REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x100);
-               msleep(30);
-               REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x0);
-
-               bnx2x_init_block(bp, PXP_COMMON_START, PXP_COMMON_END);
-               bnx2x_init_block(bp, PXP2_COMMON_START, PXP2_COMMON_END);
-
-               bnx2x_init_pxp(bp);
-
-               if (CHIP_REV(bp) == CHIP_REV_Ax) {
-                       /* enable HW interrupt from PXP on USDM
-                          overflow bit 16 on INT_MASK_0 */
-                       REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0);
-               }
-
-#ifdef __BIG_ENDIAN
-               REG_WR(bp, PXP2_REG_RQ_QM_ENDIAN_M, 1);
-               REG_WR(bp, PXP2_REG_RQ_TM_ENDIAN_M, 1);
-               REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1);
-               REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1);
-               REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1);
-               REG_WR(bp, PXP2_REG_RQ_HC_ENDIAN_M, 1);
-
-/*             REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */
-               REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1);
-               REG_WR(bp, PXP2_REG_RD_TM_SWAP_MODE, 1);
-               REG_WR(bp, PXP2_REG_RD_SRC_SWAP_MODE, 1);
-               REG_WR(bp, PXP2_REG_RD_CDURD_SWAP_MODE, 1);
-#endif
-
-#ifndef BCM_ISCSI
-               /* set NIC mode */
-               REG_WR(bp, PRS_REG_NIC_MODE, 1);
-#endif
-
-               REG_WR(bp, PXP2_REG_RQ_CDU_P_SIZE, 5);
-#ifdef BCM_ISCSI
-               REG_WR(bp, PXP2_REG_RQ_TM_P_SIZE, 5);
-               REG_WR(bp, PXP2_REG_RQ_QM_P_SIZE, 5);
-               REG_WR(bp, PXP2_REG_RQ_SRC_P_SIZE, 5);
-#endif
-
-               bnx2x_init_block(bp, DMAE_COMMON_START, DMAE_COMMON_END);
-
-               /* let the HW do it's magic ... */
-               msleep(100);
-               /* finish PXP init
-                  (can be moved up if we want to use the DMAE) */
-               val = REG_RD(bp, PXP2_REG_RQ_CFG_DONE);
-               if (val != 1) {
-                       BNX2X_ERR("PXP2 CFG failed\n");
-                       return -EBUSY;
-               }
-
-               val = REG_RD(bp, PXP2_REG_RD_INIT_DONE);
-               if (val != 1) {
-                       BNX2X_ERR("PXP2 RD_INIT failed\n");
-                       return -EBUSY;
-               }
-
-               REG_WR(bp, PXP2_REG_RQ_DISABLE_INPUTS, 0);
-               REG_WR(bp, PXP2_REG_RD_DISABLE_INPUTS, 0);
-
-               bnx2x_init_fill(bp, TSEM_REG_PRAM, 0, 8);
-
-               bnx2x_init_block(bp, TCM_COMMON_START, TCM_COMMON_END);
-               bnx2x_init_block(bp, UCM_COMMON_START, UCM_COMMON_END);
-               bnx2x_init_block(bp, CCM_COMMON_START, CCM_COMMON_END);
-               bnx2x_init_block(bp, XCM_COMMON_START, XCM_COMMON_END);
-
-#ifdef BNX2X_DMAE_RD
-               bnx2x_read_dmae(bp, XSEM_REG_PASSIVE_BUFFER, 3);
-               bnx2x_read_dmae(bp, CSEM_REG_PASSIVE_BUFFER, 3);
-               bnx2x_read_dmae(bp, TSEM_REG_PASSIVE_BUFFER, 3);
-               bnx2x_read_dmae(bp, USEM_REG_PASSIVE_BUFFER, 3);
-#else
-               REG_RD(bp, XSEM_REG_PASSIVE_BUFFER);
-               REG_RD(bp, XSEM_REG_PASSIVE_BUFFER + 4);
-               REG_RD(bp, XSEM_REG_PASSIVE_BUFFER + 8);
-               REG_RD(bp, CSEM_REG_PASSIVE_BUFFER);
-               REG_RD(bp, CSEM_REG_PASSIVE_BUFFER + 4);
-               REG_RD(bp, CSEM_REG_PASSIVE_BUFFER + 8);
-               REG_RD(bp, TSEM_REG_PASSIVE_BUFFER);
-               REG_RD(bp, TSEM_REG_PASSIVE_BUFFER + 4);
-               REG_RD(bp, TSEM_REG_PASSIVE_BUFFER + 8);
-               REG_RD(bp, USEM_REG_PASSIVE_BUFFER);
-               REG_RD(bp, USEM_REG_PASSIVE_BUFFER + 4);
-               REG_RD(bp, USEM_REG_PASSIVE_BUFFER + 8);
-#endif
-               bnx2x_init_block(bp, QM_COMMON_START, QM_COMMON_END);
-               /* soft reset pulse */
-               REG_WR(bp, QM_REG_SOFT_RESET, 1);
-               REG_WR(bp, QM_REG_SOFT_RESET, 0);
-
-#ifdef BCM_ISCSI
-               bnx2x_init_block(bp, TIMERS_COMMON_START, TIMERS_COMMON_END);
-#endif
-               bnx2x_init_block(bp, DQ_COMMON_START, DQ_COMMON_END);
-               REG_WR(bp, DORQ_REG_DPM_CID_OFST, BCM_PAGE_BITS);
-               if (CHIP_REV(bp) == CHIP_REV_Ax) {
-                       /* enable hw interrupt from doorbell Q */
-                       REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0);
-               }
-
-               bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
-
-               if (CHIP_REV_IS_SLOW(bp)) {
-                       /* fix for emulation and FPGA for no pause */
-                       REG_WR(bp, BRB1_REG_PAUSE_HIGH_THRESHOLD_0, 513);
-                       REG_WR(bp, BRB1_REG_PAUSE_HIGH_THRESHOLD_1, 513);
-                       REG_WR(bp, BRB1_REG_PAUSE_LOW_THRESHOLD_0, 0);
-                       REG_WR(bp, BRB1_REG_PAUSE_LOW_THRESHOLD_1, 0);
-               }
-
-               bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
-
-               bnx2x_init_block(bp, TSDM_COMMON_START, TSDM_COMMON_END);
-               bnx2x_init_block(bp, CSDM_COMMON_START, CSDM_COMMON_END);
-               bnx2x_init_block(bp, USDM_COMMON_START, USDM_COMMON_END);
-               bnx2x_init_block(bp, XSDM_COMMON_START, XSDM_COMMON_END);
-
-               bnx2x_init_fill(bp, TSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE);
-               bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE);
-               bnx2x_init_fill(bp, XSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE);
-               bnx2x_init_fill(bp, USTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE);
-
-               bnx2x_init_block(bp, TSEM_COMMON_START, TSEM_COMMON_END);
-               bnx2x_init_block(bp, USEM_COMMON_START, USEM_COMMON_END);
-               bnx2x_init_block(bp, CSEM_COMMON_START, CSEM_COMMON_END);
-               bnx2x_init_block(bp, XSEM_COMMON_START, XSEM_COMMON_END);
-
-               /* sync semi rtc */
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
-                      0x80000000);
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET,
-                      0x80000000);
-
-               bnx2x_init_block(bp, UPB_COMMON_START, UPB_COMMON_END);
-               bnx2x_init_block(bp, XPB_COMMON_START, XPB_COMMON_END);
-               bnx2x_init_block(bp, PBF_COMMON_START, PBF_COMMON_END);
-
-               REG_WR(bp, SRC_REG_SOFT_RST, 1);
-               for (i = SRC_REG_KEYRSS0_0; i <= SRC_REG_KEYRSS1_9; i += 4) {
-                       REG_WR(bp, i, 0xc0cac01a);
-                       /* TODO: replace with something meaningful */
-               }
-               /* SRCH COMMON comes here */
-               REG_WR(bp, SRC_REG_SOFT_RST, 0);
-
-               if (sizeof(union cdu_context) != 1024) {
-                       /* we currently assume that a context is 1024 bytes */
-                       printk(KERN_ALERT PFX "please adjust the size of"
-                              " cdu_context(%ld)\n",
-                              (long)sizeof(union cdu_context));
-               }
-               val = (4 << 24) + (0 << 12) + 1024;
-               REG_WR(bp, CDU_REG_CDU_GLOBAL_PARAMS, val);
-               bnx2x_init_block(bp, CDU_COMMON_START, CDU_COMMON_END);
-
-               bnx2x_init_block(bp, CFC_COMMON_START, CFC_COMMON_END);
-               REG_WR(bp, CFC_REG_INIT_REG, 0x7FF);
-
-               bnx2x_init_block(bp, HC_COMMON_START, HC_COMMON_END);
-               bnx2x_init_block(bp, MISC_AEU_COMMON_START,
-                                MISC_AEU_COMMON_END);
-               /* RXPCS COMMON comes here */
-               /* EMAC0 COMMON comes here */
-               /* EMAC1 COMMON comes here */
-               /* DBU COMMON comes here */
-               /* DBG COMMON comes here */
-               bnx2x_init_block(bp, NIG_COMMON_START, NIG_COMMON_END);
-
-               if (CHIP_REV_IS_SLOW(bp))
-                       msleep(200);
-
-               /* finish CFC init */
-               val = REG_RD(bp, CFC_REG_LL_INIT_DONE);
-               if (val != 1) {
-                       BNX2X_ERR("CFC LL_INIT failed\n");
-                       return -EBUSY;
-               }
-
-               val = REG_RD(bp, CFC_REG_AC_INIT_DONE);
-               if (val != 1) {
-                       BNX2X_ERR("CFC AC_INIT failed\n");
-                       return -EBUSY;
-               }
-
-               val = REG_RD(bp, CFC_REG_CAM_INIT_DONE);
-               if (val != 1) {
-                       BNX2X_ERR("CFC CAM_INIT failed\n");
-                       return -EBUSY;
-               }
-
-               REG_WR(bp, CFC_REG_DEBUG0, 0);
-
-               /* read NIG statistic
-                  to see if this is our first up since powerup */
-#ifdef BNX2X_DMAE_RD
-               bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
-               val = *bnx2x_sp(bp, wb_data[0]);
-#else
-               val = REG_RD(bp, NIG_REG_STAT2_BRB_OCTET);
-               REG_RD(bp, NIG_REG_STAT2_BRB_OCTET + 4);
-#endif
-               /* do internal memory self test */
-               if ((val == 0) && bnx2x_int_mem_test(bp)) {
-                       BNX2X_ERR("internal mem selftest failed\n");
-                       return -EBUSY;
-               }
-
-               /* clear PXP2 attentions */
-               REG_RD(bp, PXP2_REG_PXP2_INT_STS_CLR);
-
-               enable_blocks_attention(bp);
-               /* enable_blocks_parity(bp); */
-
-               switch (bp->board & SHARED_HW_CFG_BOARD_TYPE_MASK) {
-               case SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G:
-                       /* Fan failure is indicated by SPIO 5 */
-                       bnx2x_set_spio(bp, MISC_REGISTERS_SPIO_5,
-                                      MISC_REGISTERS_SPIO_INPUT_HI_Z);
-
-                       /* set to active low mode */
-                       val = REG_RD(bp, MISC_REG_SPIO_INT);
-                       val |= ((1 << MISC_REGISTERS_SPIO_5) <<
-                                       MISC_REGISTERS_SPIO_INT_OLD_SET_POS);
-                       REG_WR(bp, MISC_REG_SPIO_INT, val);
-
-                       /* enable interrupt to signal the IGU */
-                       val = REG_RD(bp, MISC_REG_SPIO_EVENT_EN);
-                       val |= (1 << MISC_REGISTERS_SPIO_5);
-                       REG_WR(bp, MISC_REG_SPIO_EVENT_EN, val);
-                       break;
-
-               default:
-                       break;
-               }
-
-       } /* end of common init */
-
-       /* per port init */
-
-       /* the phys address is shifted right 12 bits and has an added
-          1=valid bit added to the 53rd bit
-          then since this is a wide register(TM)
-          we split it into two 32 bit writes
-        */
-#define RQ_ONCHIP_AT_PORT_SIZE  384
-#define ONCHIP_ADDR1(x)   ((u32)(((u64)x >> 12) & 0xFFFFFFFF))
-#define ONCHIP_ADDR2(x)   ((u32)((1 << 20) | ((u64)x >> 44)))
-#define PXP_ONE_ILT(x)    ((x << 10) | x)
-
-       DP(BNX2X_MSG_MCP, "starting per-function init port is %x\n", func);
-
-       REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + func*4, 0);
-
-       /* Port PXP comes here */
-       /* Port PXP2 comes here */
-
-       /* Offset is
-        * Port0  0
-        * Port1  384 */
-       i = func * RQ_ONCHIP_AT_PORT_SIZE;
-#ifdef USE_DMAE
-       wb_write[0] = ONCHIP_ADDR1(bnx2x_sp_mapping(bp, context));
-       wb_write[1] = ONCHIP_ADDR2(bnx2x_sp_mapping(bp, context));
-       REG_WR_DMAE(bp, PXP2_REG_RQ_ONCHIP_AT + i*8, wb_write, 2);
-#else
-       REG_WR_IND(bp, PXP2_REG_RQ_ONCHIP_AT + i*8,
-                  ONCHIP_ADDR1(bnx2x_sp_mapping(bp, context)));
-       REG_WR_IND(bp, PXP2_REG_RQ_ONCHIP_AT + i*8 + 4,
-                  ONCHIP_ADDR2(bnx2x_sp_mapping(bp, context)));
-#endif
-       REG_WR(bp, PXP2_REG_PSWRQ_CDU0_L2P + func*4, PXP_ONE_ILT(i));
-
-#ifdef BCM_ISCSI
-       /* Port0  1
-        * Port1  385 */
-       i++;
-       wb_write[0] = ONCHIP_ADDR1(bp->timers_mapping);
-       wb_write[1] = ONCHIP_ADDR2(bp->timers_mapping);
-       REG_WR_DMAE(bp, PXP2_REG_RQ_ONCHIP_AT + i*8, wb_write, 2);
-       REG_WR(bp, PXP2_REG_PSWRQ_TM0_L2P + func*4, PXP_ONE_ILT(i));
-
-       /* Port0  2
-        * Port1  386 */
-       i++;
-       wb_write[0] = ONCHIP_ADDR1(bp->qm_mapping);
-       wb_write[1] = ONCHIP_ADDR2(bp->qm_mapping);
-       REG_WR_DMAE(bp, PXP2_REG_RQ_ONCHIP_AT + i*8, wb_write, 2);
-       REG_WR(bp, PXP2_REG_PSWRQ_QM0_L2P + func*4, PXP_ONE_ILT(i));
-
-       /* Port0  3
-        * Port1  387 */
-       i++;
-       wb_write[0] = ONCHIP_ADDR1(bp->t1_mapping);
-       wb_write[1] = ONCHIP_ADDR2(bp->t1_mapping);
-       REG_WR_DMAE(bp, PXP2_REG_RQ_ONCHIP_AT + i*8, wb_write, 2);
-       REG_WR(bp, PXP2_REG_PSWRQ_SRC0_L2P + func*4, PXP_ONE_ILT(i));
-#endif
-
-       /* Port TCM comes here */
-       /* Port UCM comes here */
-       /* Port CCM comes here */
-       bnx2x_init_block(bp, func ? XCM_PORT1_START : XCM_PORT0_START,
-                            func ? XCM_PORT1_END : XCM_PORT0_END);
-
-#ifdef USE_DMAE
-       wb_write[0] = 0;
-       wb_write[1] = 0;
-#endif
-       for (i = 0; i < 32; i++) {
-               REG_WR(bp, QM_REG_BASEADDR + (func*32 + i)*4, 1024 * 4 * i);
-#ifdef USE_DMAE
-               REG_WR_DMAE(bp, QM_REG_PTRTBL + (func*32 + i)*8, wb_write, 2);
-#else
-               REG_WR_IND(bp, QM_REG_PTRTBL + (func*32 + i)*8, 0);
-               REG_WR_IND(bp, QM_REG_PTRTBL + (func*32 + i)*8 + 4, 0);
-#endif
-       }
-       REG_WR(bp, QM_REG_CONNNUM_0 + func*4, 1024/16 - 1);
-
-       /* Port QM comes here */
-
-#ifdef BCM_ISCSI
-       REG_WR(bp, TM_REG_LIN0_SCAN_TIME + func*4, 1024/64*20);
-       REG_WR(bp, TM_REG_LIN0_MAX_ACTIVE_CID + func*4, 31);
-
-       bnx2x_init_block(bp, func ? TIMERS_PORT1_START : TIMERS_PORT0_START,
-                            func ? TIMERS_PORT1_END : TIMERS_PORT0_END);
-#endif
-       /* Port DQ comes here */
-       /* Port BRB1 comes here */
-       bnx2x_init_block(bp, func ? PRS_PORT1_START : PRS_PORT0_START,
-                            func ? PRS_PORT1_END : PRS_PORT0_END);
-       /* Port TSDM comes here */
-       /* Port CSDM comes here */
-       /* Port USDM comes here */
-       /* Port XSDM comes here */
-       bnx2x_init_block(bp, func ? TSEM_PORT1_START : TSEM_PORT0_START,
-                            func ? TSEM_PORT1_END : TSEM_PORT0_END);
-       bnx2x_init_block(bp, func ? USEM_PORT1_START : USEM_PORT0_START,
-                            func ? USEM_PORT1_END : USEM_PORT0_END);
-       bnx2x_init_block(bp, func ? CSEM_PORT1_START : CSEM_PORT0_START,
-                            func ? CSEM_PORT1_END : CSEM_PORT0_END);
-       bnx2x_init_block(bp, func ? XSEM_PORT1_START : XSEM_PORT0_START,
-                            func ? XSEM_PORT1_END : XSEM_PORT0_END);
-       /* Port UPB comes here */
-       /* Port XSDM comes here */
-       bnx2x_init_block(bp, func ? PBF_PORT1_START : PBF_PORT0_START,
-                            func ? PBF_PORT1_END : PBF_PORT0_END);
-
-       /* configure PBF to work without PAUSE mtu 9000 */
-       REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + func*4, 0);
-
-       /* update threshold */
-       REG_WR(bp, PBF_REG_P0_ARB_THRSH + func*4, (9040/16));
-       /* update init credit */
-       REG_WR(bp, PBF_REG_P0_INIT_CRD + func*4, (9040/16) + 553 - 22);
-
-       /* probe changes */
-       REG_WR(bp, PBF_REG_INIT_P0 + func*4, 1);
-       msleep(5);
-       REG_WR(bp, PBF_REG_INIT_P0 + func*4, 0);
-
-#ifdef BCM_ISCSI
-       /* tell the searcher where the T2 table is */
-       REG_WR(bp, SRC_REG_COUNTFREE0 + func*4, 16*1024/64);
-
-       wb_write[0] = U64_LO(bp->t2_mapping);
-       wb_write[1] = U64_HI(bp->t2_mapping);
-       REG_WR_DMAE(bp, SRC_REG_FIRSTFREE0 + func*4, wb_write, 2);
-       wb_write[0] = U64_LO((u64)bp->t2_mapping + 16*1024 - 64);
-       wb_write[1] = U64_HI((u64)bp->t2_mapping + 16*1024 - 64);
-       REG_WR_DMAE(bp, SRC_REG_LASTFREE0 + func*4, wb_write, 2);
-
-       REG_WR(bp, SRC_REG_NUMBER_HASH_BITS0 + func*4, 10);
-       /* Port SRCH comes here */
-#endif
-       /* Port CDU comes here */
-       /* Port CFC comes here */
-       bnx2x_init_block(bp, func ? HC_PORT1_START : HC_PORT0_START,
-                            func ? HC_PORT1_END : HC_PORT0_END);
-       bnx2x_init_block(bp, func ? MISC_AEU_PORT1_START :
-                                   MISC_AEU_PORT0_START,
-                            func ? MISC_AEU_PORT1_END : MISC_AEU_PORT0_END);
-       /* Port PXPCS comes here */
-       /* Port EMAC0 comes here */
-       /* Port EMAC1 comes here */
-       /* Port DBU comes here */
-       /* Port DBG comes here */
-       bnx2x_init_block(bp, func ? NIG_PORT1_START : NIG_PORT0_START,
-                            func ? NIG_PORT1_END : NIG_PORT0_END);
-       REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + func*4, 1);
-       /* Port MCP comes here */
-       /* Port DMAE comes here */
-
-       switch (bp->board & SHARED_HW_CFG_BOARD_TYPE_MASK) {
-       case SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G:
-               /* add SPIO 5 to group 0 */
-               val = REG_RD(bp, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
-               val |= AEU_INPUTS_ATTN_BITS_SPIO5;
-               REG_WR(bp, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, val);
-               break;
-
-       default:
-               break;
-       }
-
-       bnx2x_link_reset(bp);
-
-       /* Reset PCIE errors for debug */
-       REG_WR(bp, 0x2114, 0xffffffff);
-       REG_WR(bp, 0x2120, 0xffffffff);
-       REG_WR(bp, 0x2814, 0xffffffff);
-
-       /* !!! move to init_values.h */
-       REG_WR(bp, XSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1);
-       REG_WR(bp, USDM_REG_INIT_CREDIT_PXP_CTRL, 0x1);
-       REG_WR(bp, CSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1);
-       REG_WR(bp, TSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1);
-
-       REG_WR(bp, DBG_REG_PCI_REQ_CREDIT, 0x1);
-       REG_WR(bp, TM_REG_PCIARB_CRDCNT_VAL, 0x1);
-       REG_WR(bp, CDU_REG_CDU_DEBUG, 0x264);
-       REG_WR(bp, CDU_REG_CDU_DEBUG, 0x0);
-
-       bnx2x_gunzip_end(bp);
-
-       if (!nomcp) {
-               port = bp->port;
-
-               bp->fw_drv_pulse_wr_seq =
-                               (SHMEM_RD(bp, func_mb[port].drv_pulse_mb) &
-                                DRV_PULSE_SEQ_MASK);
-               bp->fw_mb = SHMEM_RD(bp, func_mb[port].fw_mb_param);
-               DP(BNX2X_MSG_MCP, "drv_pulse 0x%x  fw_mb 0x%x\n",
-                  bp->fw_drv_pulse_wr_seq, bp->fw_mb);
-       } else {
-               bp->fw_mb = 0;
-       }
-
-       return 0;
-}
-
-/* send the MCP a request, block until there is a reply */
-static u32 bnx2x_fw_command(struct bnx2x *bp, u32 command)
-{
-       int port = bp->port;
-       u32 seq = ++bp->fw_seq;
-       u32 rc = 0;
-
-       SHMEM_WR(bp, func_mb[port].drv_mb_header, (command | seq));
-       DP(BNX2X_MSG_MCP, "wrote command (%x) to FW MB\n", (command | seq));
-
-       /* let the FW do it's magic ... */
-       msleep(100); /* TBD */
-
-       if (CHIP_REV_IS_SLOW(bp))
-               msleep(900);
-
-       rc = SHMEM_RD(bp, func_mb[port].fw_mb_header);
-       DP(BNX2X_MSG_MCP, "read (%x) seq is (%x) from FW MB\n", rc, seq);
-
-       /* is this a reply to our command? */
-       if (seq == (rc & FW_MSG_SEQ_NUMBER_MASK)) {
-               rc &= FW_MSG_CODE_MASK;
-
-       } else {
-               /* FW BUG! */
-               BNX2X_ERR("FW failed to respond!\n");
-               bnx2x_fw_dump(bp);
-               rc = 0;
-       }
-
-       return rc;
-}
-
-static void bnx2x_free_mem(struct bnx2x *bp)
-{
-
-#define BNX2X_PCI_FREE(x, y, size) \
-       do { \
-               if (x) { \
-                       pci_free_consistent(bp->pdev, size, x, y); \
-                       x = NULL; \
-                       y = 0; \
-               } \
-       } while (0)
-
-#define BNX2X_FREE(x) \
-       do { \
-               if (x) { \
-                       vfree(x); \
-                       x = NULL; \
-               } \
-       } while (0)
-
-       int i;
-
-       /* fastpath */
-       for_each_queue(bp, i) {
-
-               /* Status blocks */
-               BNX2X_PCI_FREE(bnx2x_fp(bp, i, status_blk),
-                              bnx2x_fp(bp, i, status_blk_mapping),
-                              sizeof(struct host_status_block) +
-                              sizeof(struct eth_tx_db_data));
-
-               /* fast path rings: tx_buf tx_desc rx_buf rx_desc rx_comp */
-               BNX2X_FREE(bnx2x_fp(bp, i, tx_buf_ring));
-               BNX2X_PCI_FREE(bnx2x_fp(bp, i, tx_desc_ring),
-                              bnx2x_fp(bp, i, tx_desc_mapping),
-                              sizeof(struct eth_tx_bd) * NUM_TX_BD);
-
-               BNX2X_FREE(bnx2x_fp(bp, i, rx_buf_ring));
-               BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_desc_ring),
-                              bnx2x_fp(bp, i, rx_desc_mapping),
-                              sizeof(struct eth_rx_bd) * NUM_RX_BD);
-
-               BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_comp_ring),
-                              bnx2x_fp(bp, i, rx_comp_mapping),
-                              sizeof(struct eth_fast_path_rx_cqe) *
-                              NUM_RCQ_BD);
-       }
-
-       BNX2X_FREE(bp->fp);
-
-       /* end of fastpath */
-
-       BNX2X_PCI_FREE(bp->def_status_blk, bp->def_status_blk_mapping,
-                      (sizeof(struct host_def_status_block)));
-
-       BNX2X_PCI_FREE(bp->slowpath, bp->slowpath_mapping,
-                      (sizeof(struct bnx2x_slowpath)));
-
-#ifdef BCM_ISCSI
-       BNX2X_PCI_FREE(bp->t1, bp->t1_mapping, 64*1024);
-       BNX2X_PCI_FREE(bp->t2, bp->t2_mapping, 16*1024);
-       BNX2X_PCI_FREE(bp->timers, bp->timers_mapping, 8*1024);
-       BNX2X_PCI_FREE(bp->qm, bp->qm_mapping, 128*1024);
-#endif
-       BNX2X_PCI_FREE(bp->spq, bp->spq_mapping, PAGE_SIZE);
-
-#undef BNX2X_PCI_FREE
-#undef BNX2X_KFREE
-}
-
-static int bnx2x_alloc_mem(struct bnx2x *bp)
-{
-
-#define BNX2X_PCI_ALLOC(x, y, size) \
-       do { \
-               x = pci_alloc_consistent(bp->pdev, size, y); \
-               if (x == NULL) \
-                       goto alloc_mem_err; \
-               memset(x, 0, size); \
-       } while (0)
-
-#define BNX2X_ALLOC(x, size) \
-       do { \
-               x = vmalloc(size); \
-               if (x == NULL) \
-                       goto alloc_mem_err; \
-               memset(x, 0, size); \
-       } while (0)
-
-       int i;
-
-       /* fastpath */
-       BNX2X_ALLOC(bp->fp, sizeof(struct bnx2x_fastpath) * bp->num_queues);
-
-       for_each_queue(bp, i) {
-               bnx2x_fp(bp, i, bp) = bp;
-
-               /* Status blocks */
-               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, status_blk),
-                               &bnx2x_fp(bp, i, status_blk_mapping),
-                               sizeof(struct host_status_block) +
-                               sizeof(struct eth_tx_db_data));
-
-               bnx2x_fp(bp, i, hw_tx_prods) =
-                               (void *)(bnx2x_fp(bp, i, status_blk) + 1);
-
-               bnx2x_fp(bp, i, tx_prods_mapping) =
-                               bnx2x_fp(bp, i, status_blk_mapping) +
-                               sizeof(struct host_status_block);
-
-               /* fast path rings: tx_buf tx_desc rx_buf rx_desc rx_comp */
-               BNX2X_ALLOC(bnx2x_fp(bp, i, tx_buf_ring),
-                               sizeof(struct sw_tx_bd) * NUM_TX_BD);
-               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, tx_desc_ring),
-                               &bnx2x_fp(bp, i, tx_desc_mapping),
-                               sizeof(struct eth_tx_bd) * NUM_TX_BD);
-
-               BNX2X_ALLOC(bnx2x_fp(bp, i, rx_buf_ring),
-                               sizeof(struct sw_rx_bd) * NUM_RX_BD);
-               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_desc_ring),
-                               &bnx2x_fp(bp, i, rx_desc_mapping),
-                               sizeof(struct eth_rx_bd) * NUM_RX_BD);
-
-               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_comp_ring),
-                               &bnx2x_fp(bp, i, rx_comp_mapping),
-                               sizeof(struct eth_fast_path_rx_cqe) *
-                               NUM_RCQ_BD);
-
-       }
-       /* end of fastpath */
-
-       BNX2X_PCI_ALLOC(bp->def_status_blk, &bp->def_status_blk_mapping,
-                       sizeof(struct host_def_status_block));
-
-       BNX2X_PCI_ALLOC(bp->slowpath, &bp->slowpath_mapping,
-                       sizeof(struct bnx2x_slowpath));
-
-#ifdef BCM_ISCSI
-       BNX2X_PCI_ALLOC(bp->t1, &bp->t1_mapping, 64*1024);
-
-       /* Initialize T1 */
-       for (i = 0; i < 64*1024; i += 64) {
-               *(u64 *)((char *)bp->t1 + i + 56) = 0x0UL;
-               *(u64 *)((char *)bp->t1 + i + 3) = 0x0UL;
-       }
-
-       /* allocate searcher T2 table
-          we allocate 1/4 of alloc num for T2
-         (which is not entered into the ILT) */
-       BNX2X_PCI_ALLOC(bp->t2, &bp->t2_mapping, 16*1024);
-
-       /* Initialize T2 */
-       for (i = 0; i < 16*1024; i += 64)
-               * (u64 *)((char *)bp->t2 + i + 56) = bp->t2_mapping + i + 64;
-
-       /* now fixup the last line in the block to point to the next block */
-       *(u64 *)((char *)bp->t2 + 1024*16-8) = bp->t2_mapping;
-
-       /* Timer block array (MAX_CONN*8) phys uncached for now 1024 conns */
-       BNX2X_PCI_ALLOC(bp->timers, &bp->timers_mapping, 8*1024);
-
-       /* QM queues (128*MAX_CONN) */
-       BNX2X_PCI_ALLOC(bp->qm, &bp->qm_mapping, 128*1024);
-#endif
-
-       /* Slow path ring */
-       BNX2X_PCI_ALLOC(bp->spq, &bp->spq_mapping, BCM_PAGE_SIZE);
-
-       return 0;
-
-alloc_mem_err:
-       bnx2x_free_mem(bp);
-       return -ENOMEM;
-
-#undef BNX2X_PCI_ALLOC
-#undef BNX2X_ALLOC
-}
-
-static void bnx2x_free_tx_skbs(struct bnx2x *bp)
-{
-       int i;
-
-       for_each_queue(bp, i) {
-               struct bnx2x_fastpath *fp = &bp->fp[i];
-
-               u16 bd_cons = fp->tx_bd_cons;
-               u16 sw_prod = fp->tx_pkt_prod;
-               u16 sw_cons = fp->tx_pkt_cons;
-
-               BUG_TRAP(fp->tx_buf_ring != NULL);
-
-               while (sw_cons != sw_prod) {
-                       bd_cons = bnx2x_free_tx_pkt(bp, fp, TX_BD(sw_cons));
-                       sw_cons++;
-               }
-       }
-}
-
-static void bnx2x_free_rx_skbs(struct bnx2x *bp)
-{
-       int i, j;
-
-       for_each_queue(bp, j) {
-               struct bnx2x_fastpath *fp = &bp->fp[j];
-
-               BUG_TRAP(fp->rx_buf_ring != NULL);
-
-               for (i = 0; i < NUM_RX_BD; i++) {
-                       struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[i];
-                       struct sk_buff *skb = rx_buf->skb;
-
-                       if (skb == NULL)
-                               continue;
-
-                       pci_unmap_single(bp->pdev,
-                                        pci_unmap_addr(rx_buf, mapping),
-                                        bp->rx_buf_use_size,
-                                        PCI_DMA_FROMDEVICE);
-
-                       rx_buf->skb = NULL;
-                       dev_kfree_skb(skb);
-               }
-       }
-}
-
-static void bnx2x_free_skbs(struct bnx2x *bp)
-{
-       bnx2x_free_tx_skbs(bp);
-       bnx2x_free_rx_skbs(bp);
-}
-
-static void bnx2x_free_msix_irqs(struct bnx2x *bp)
-{
-       int i;
-
-       free_irq(bp->msix_table[0].vector, bp->dev);
-       DP(NETIF_MSG_IFDOWN, "released sp irq (%d)\n",
-          bp->msix_table[0].vector);
-
-       for_each_queue(bp, i) {
-               DP(NETIF_MSG_IFDOWN, "about to release fp #%d->%d irq  "
-                  "state(%x)\n", i, bp->msix_table[i + 1].vector,
-                  bnx2x_fp(bp, i, state));
-
-               if (bnx2x_fp(bp, i, state) != BNX2X_FP_STATE_CLOSED)
-                       BNX2X_ERR("IRQ of fp #%d being freed while "
-                                 "state != closed\n", i);
-
-               free_irq(bp->msix_table[i + 1].vector, &bp->fp[i]);
-       }
-
-}
-
-static void bnx2x_free_irq(struct bnx2x *bp)
-{
-
-       if (bp->flags & USING_MSIX_FLAG) {
-
-               bnx2x_free_msix_irqs(bp);
-               pci_disable_msix(bp->pdev);
-
-               bp->flags &= ~USING_MSIX_FLAG;
-
-       } else
-               free_irq(bp->pdev->irq, bp->dev);
-}
-
-static int bnx2x_enable_msix(struct bnx2x *bp)
-{
-
-       int i;
-
-       bp->msix_table[0].entry = 0;
-       for_each_queue(bp, i)
-               bp->msix_table[i + 1].entry = i + 1;
-
-       if (pci_enable_msix(bp->pdev, &bp->msix_table[0],
-                                    bp->num_queues + 1)){
-               BNX2X_LOG("failed to enable MSI-X\n");
-               return -1;
-
-       }
-
-       bp->flags |= USING_MSIX_FLAG;
-
-       return 0;
-
-}
-
-
-static int bnx2x_req_msix_irqs(struct bnx2x *bp)
-{
-
-       int i, rc;
-
-       rc = request_irq(bp->msix_table[0].vector, bnx2x_msix_sp_int, 0,
-                        bp->dev->name, bp->dev);
-
-       if (rc) {
-               BNX2X_ERR("request sp irq failed\n");
-               return -EBUSY;
-       }
-
-       for_each_queue(bp, i) {
-               rc = request_irq(bp->msix_table[i + 1].vector,
-                                bnx2x_msix_fp_int, 0,
-                                bp->dev->name, &bp->fp[i]);
-
-               if (rc) {
-                       BNX2X_ERR("request fp #%d irq failed  "
-                                 "rc %d\n", i, rc);
-                       bnx2x_free_msix_irqs(bp);
-                       return -EBUSY;
-               }
-
-               bnx2x_fp(bp, i, state) = BNX2X_FP_STATE_IRQ;
-
-       }
-
-       return 0;
-
-}
-
-static int bnx2x_req_irq(struct bnx2x *bp)
-{
-
-       int rc = request_irq(bp->pdev->irq, bnx2x_interrupt,
-                            IRQF_SHARED, bp->dev->name, bp->dev);
-       if (!rc)
-               bnx2x_fp(bp, 0, state) = BNX2X_FP_STATE_IRQ;
-
-       return rc;
-
-}
-
-/*
- * Init service functions
- */
-
-static void bnx2x_set_mac_addr(struct bnx2x *bp)
-{
-       struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config);
-
-       /* CAM allocation
-        * unicasts 0-31:port0 32-63:port1
-        * multicast 64-127:port0 128-191:port1
-        */
-       config->hdr.length_6b = 2;
-       config->hdr.offset = bp->port ? 31 : 0;
-       config->hdr.reserved0 = 0;
-       config->hdr.reserved1 = 0;
-
-       /* primary MAC */
-       config->config_table[0].cam_entry.msb_mac_addr =
-                                       swab16(*(u16 *)&bp->dev->dev_addr[0]);
-       config->config_table[0].cam_entry.middle_mac_addr =
-                                       swab16(*(u16 *)&bp->dev->dev_addr[2]);
-       config->config_table[0].cam_entry.lsb_mac_addr =
-                                       swab16(*(u16 *)&bp->dev->dev_addr[4]);
-       config->config_table[0].cam_entry.flags = cpu_to_le16(bp->port);
-       config->config_table[0].target_table_entry.flags = 0;
-       config->config_table[0].target_table_entry.client_id = 0;
-       config->config_table[0].target_table_entry.vlan_id = 0;
-
-       DP(NETIF_MSG_IFUP, "setting MAC (%04x:%04x:%04x)\n",
-          config->config_table[0].cam_entry.msb_mac_addr,
-          config->config_table[0].cam_entry.middle_mac_addr,
-          config->config_table[0].cam_entry.lsb_mac_addr);
-
-       /* broadcast */
-       config->config_table[1].cam_entry.msb_mac_addr = 0xffff;
-       config->config_table[1].cam_entry.middle_mac_addr = 0xffff;
-       config->config_table[1].cam_entry.lsb_mac_addr = 0xffff;
-       config->config_table[1].cam_entry.flags = cpu_to_le16(bp->port);
-       config->config_table[1].target_table_entry.flags =
-                               TSTORM_CAM_TARGET_TABLE_ENTRY_BROADCAST;
-       config->config_table[1].target_table_entry.client_id = 0;
-       config->config_table[1].target_table_entry.vlan_id = 0;
-
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
-                     U64_HI(bnx2x_sp_mapping(bp, mac_config)),
-                     U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0);
-}
-
-static int bnx2x_wait_ramrod(struct bnx2x *bp, int state, int idx,
-                            int *state_p, int poll)
-{
-       /* can take a while if any port is running */
-       int timeout = 500;
-
-       DP(NETIF_MSG_IFUP, "%s for state to become %x on IDX [%d]\n",
-          poll ? "polling" : "waiting", state, idx);
-
-       might_sleep();
-
-       while (timeout) {
-
-               if (poll) {
-                       bnx2x_rx_int(bp->fp, 10);
-                       /* If index is different from 0
-                        * The reply for some commands will
-                        * be on the none default queue
-                        */
-                       if (idx)
-                               bnx2x_rx_int(&bp->fp[idx], 10);
-               }
-
-               mb(); /* state is changed by bnx2x_sp_event()*/
-
-               if (*state_p == state)
-                       return 0;
-
-               timeout--;
-               msleep(1);
-
-       }
-
-       /* timeout! */
-       BNX2X_ERR("timeout %s for state %x on IDX [%d]\n",
-                 poll ? "polling" : "waiting", state, idx);
-
-       return -EBUSY;
-}
-
-static int bnx2x_setup_leading(struct bnx2x *bp)
-{
-
-       /* reset IGU state */
-       bnx2x_ack_sb(bp, DEF_SB_ID, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
-
-       /* SETUP ramrod */
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_SETUP, 0, 0, 0, 0);
-
-       return bnx2x_wait_ramrod(bp, BNX2X_STATE_OPEN, 0, &(bp->state), 0);
-
-}
-
-static int bnx2x_setup_multi(struct bnx2x *bp, int index)
-{
-
-       /* reset IGU state */
-       bnx2x_ack_sb(bp, index, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
-
-       /* SETUP ramrod */
-       bp->fp[index].state = BNX2X_FP_STATE_OPENING;
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CLIENT_SETUP, index, 0, index, 0);
-
-       /* Wait for completion */
-       return bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_OPEN, index,
-                                &(bp->fp[index].state), 0);
-
-}
-
-
-static int bnx2x_poll(struct net_device *dev, int *budget);
-static void bnx2x_set_rx_mode(struct net_device *dev);
-
-static int bnx2x_nic_load(struct bnx2x *bp, int req_irq)
-{
-       u32 load_code;
-       int i;
-
-       bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD;
-
-       /* Send LOAD_REQUEST command to MCP.
-          Returns the type of LOAD command: if it is the
-          first port to be initialized common blocks should be
-          initialized, otherwise - not.
-       */
-       if (!nomcp) {
-               load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ);
-               if (!load_code) {
-                       BNX2X_ERR("MCP response failure, unloading\n");
-                       return -EBUSY;
-               }
-               if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) {
-                       BNX2X_ERR("MCP refused load request, unloading\n");
-                       return -EBUSY; /* other port in diagnostic mode */
-               }
-       } else {
-               load_code = FW_MSG_CODE_DRV_LOAD_COMMON;
-       }
-
-       /* if we can't use msix we only need one fp,
-        * so try to enable msix with the requested number of fp's
-        * and fallback to inta with one fp
-        */
-       if (req_irq) {
-               if (use_inta) {
-                       bp->num_queues = 1;
-               } else {
-                       if ((use_multi > 1) && (use_multi <= 16))
-                               /* user requested number */
-                               bp->num_queues = use_multi;
-                       else if (use_multi == 1)
-                               bp->num_queues = num_online_cpus();
-                       else
-                               bp->num_queues = 1;
-
-                       if (bnx2x_enable_msix(bp)) {
-                               /* failed to enable msix */
-                               bp->num_queues = 1;
-                               if (use_multi)
-                                       BNX2X_ERR("Multi requested but failed"
-                                                 " to enable MSI-X\n");
-                       }
-               }
-       }
-
-       DP(NETIF_MSG_IFUP, "set number of queues to %d\n", bp->num_queues);
-
-       if (bnx2x_alloc_mem(bp))
-               return -ENOMEM;
-
-       if (req_irq) {
-               if (bp->flags & USING_MSIX_FLAG) {
-                       if (bnx2x_req_msix_irqs(bp)) {
-                               pci_disable_msix(bp->pdev);
-                               goto load_error;
-                       }
-
-               } else {
-                       if (bnx2x_req_irq(bp)) {
-                               BNX2X_ERR("IRQ request failed, aborting\n");
-                               goto load_error;
-                       }
-               }
-       }
-
-       /* Initialize HW */
-       if (bnx2x_function_init(bp,
-                               (load_code == FW_MSG_CODE_DRV_LOAD_COMMON))) {
-               BNX2X_ERR("HW init failed, aborting\n");
-               goto load_error;
-       }
-
-
-       atomic_set(&bp->intr_sem, 0);
-
-
-       /* Setup NIC internals and enable interrupts */
-       bnx2x_nic_init(bp);
-
-       /* Send LOAD_DONE command to MCP */
-       if (!nomcp) {
-               load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE);
-               if (!load_code) {
-                       BNX2X_ERR("MCP response failure, unloading\n");
-                       goto load_int_disable;
-               }
-       }
-
-       bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
-
-       /* Enable Rx interrupt handling before sending the ramrod
-          as it's completed on Rx FP queue */
-
-       netif_poll_enable(bp->dev);
-
-       if (bnx2x_setup_leading(bp))
-               goto load_stop_netif;
-
-       for_each_nondefault_queue(bp, i)
-               if (bnx2x_setup_multi(bp, i))
-                       goto load_stop_netif;
-
-       bnx2x_set_mac_addr(bp);
-
-       bnx2x_phy_init(bp);
-
-       /* Start fast path */
-       if (req_irq) { /* IRQ is only requested from bnx2x_open */
-               netif_start_queue(bp->dev);
-               if (bp->flags & USING_MSIX_FLAG)
-                       printk(KERN_INFO PFX "%s: using MSI-X\n",
-                              bp->dev->name);
-
-       /* Otherwise Tx queue should be only reenabled */
-       } else if (netif_running(bp->dev)) {
-               netif_wake_queue(bp->dev);
-               bnx2x_set_rx_mode(bp->dev);
-       }
-
-       /* start the timer */
-       mod_timer(&bp->timer, jiffies + bp->current_interval);
-
-       return 0;
-
-load_stop_netif:
-       netif_poll_disable(bp->dev);
-
-load_int_disable:
-       bnx2x_int_disable_sync(bp);
-
-       bnx2x_free_skbs(bp);
-       bnx2x_free_irq(bp);
-
-load_error:
-       bnx2x_free_mem(bp);
-
-       /* TBD we really need to reset the chip
-          if we want to recover from this */
-       return -EBUSY;
-}
-
-static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code)
-{
-       int port = bp->port;
-#ifdef USE_DMAE
-       u32 wb_write[2];
-#endif
-       int base, i;
-
-       DP(NETIF_MSG_IFDOWN, "reset called with code %x\n", reset_code);
-
-       /* Do not rcv packets to BRB */
-       REG_WR(bp, NIG_REG_LLH0_BRB1_DRV_MASK + port*4, 0x0);
-       /* Do not direct rcv packets that are not for MCP to the BRB */
-       REG_WR(bp, (port ? NIG_REG_LLH1_BRB1_NOT_MCP :
-                          NIG_REG_LLH0_BRB1_NOT_MCP), 0x0);
-
-       /* Configure IGU and AEU */
-       REG_WR(bp, HC_REG_CONFIG_0 + port*4, 0x1000);
-       REG_WR(bp, MISC_REG_AEU_MASK_ATTN_FUNC_0 + port*4, 0);
-
-       /* TODO: Close Doorbell port? */
-
-       /* Clear ILT */
-#ifdef USE_DMAE
-       wb_write[0] = 0;
-       wb_write[1] = 0;
-#endif
-       base = port * RQ_ONCHIP_AT_PORT_SIZE;
-       for (i = base; i < base + RQ_ONCHIP_AT_PORT_SIZE; i++) {
-#ifdef USE_DMAE
-               REG_WR_DMAE(bp, PXP2_REG_RQ_ONCHIP_AT + i*8, wb_write, 2);
-#else
-               REG_WR_IND(bp, PXP2_REG_RQ_ONCHIP_AT, 0);
-               REG_WR_IND(bp, PXP2_REG_RQ_ONCHIP_AT + 4, 0);
-#endif
-       }
-
-       if (reset_code == FW_MSG_CODE_DRV_UNLOAD_COMMON) {
-               /* reset_common */
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
-                      0xd3ffff7f);
-               REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
-                      0x1403);
-       }
-}
-
-static int bnx2x_stop_multi(struct bnx2x *bp, int index)
-{
-
-       int rc;
-
-       /* halt the connection */
-       bp->fp[index].state = BNX2X_FP_STATE_HALTING;
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, index, 0, 0, 0);
-
-
-       rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, index,
-                                      &(bp->fp[index].state), 1);
-       if (rc) /* timeout */
-               return rc;
-
-       /* delete cfc entry */
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CFC_DEL, index, 0, 0, 1);
-
-       return bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_CLOSED, index,
-                                &(bp->fp[index].state), 1);
-
-}
-
-
-static void bnx2x_stop_leading(struct bnx2x *bp)
-{
-       u16 dsb_sp_prod_idx;
-       /* if the other port is handling traffic,
-          this can take a lot of time */
-       int timeout = 500;
-
-       might_sleep();
-
-       /* Send HALT ramrod */
-       bp->fp[0].state = BNX2X_FP_STATE_HALTING;
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, 0, 0, 0, 0);
-
-       if (bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, 0,
-                              &(bp->fp[0].state), 1))
-               return;
-
-       dsb_sp_prod_idx = *bp->dsb_sp_prod;
-
-       /* Send PORT_DELETE ramrod */
-       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_DEL, 0, 0, 0, 1);
-
-       /* Wait for completion to arrive on default status block
-          we are going to reset the chip anyway
-          so there is not much to do if this times out
-        */
-       while ((dsb_sp_prod_idx == *bp->dsb_sp_prod) && timeout) {
-               timeout--;
-               msleep(1);
-       }
-       if (!timeout) {
-               DP(NETIF_MSG_IFDOWN, "timeout polling for completion "
-                  "dsb_sp_prod 0x%x != dsb_sp_prod_idx 0x%x\n",
-                  *bp->dsb_sp_prod, dsb_sp_prod_idx);
-       }
-       bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD;
-       bp->fp[0].state = BNX2X_FP_STATE_CLOSED;
-}
-
-
-static int bnx2x_nic_unload(struct bnx2x *bp, int free_irq)
-{
-       u32 reset_code = 0;
-       int i, timeout;
-
-       bp->state = BNX2X_STATE_CLOSING_WAIT4_HALT;
-
-       del_timer_sync(&bp->timer);
-
-       bp->rx_mode = BNX2X_RX_MODE_NONE;
-       bnx2x_set_storm_rx_mode(bp);
-
-       if (netif_running(bp->dev)) {
-               netif_tx_disable(bp->dev);
-               bp->dev->trans_start = jiffies; /* prevent tx timeout */
-       }
-
-       /* Wait until all fast path tasks complete */
-       for_each_queue(bp, i) {
-               struct bnx2x_fastpath *fp = &bp->fp[i];
-
-               timeout = 1000;
-               while (bnx2x_has_work(fp) && (timeout--))
-                       msleep(1);
-               if (!timeout)
-                       BNX2X_ERR("timeout waiting for queue[%d]\n", i);
-       }
-
-       /* Wait until stat ramrod returns and all SP tasks complete */
-       timeout = 1000;
-       while ((bp->stat_pending || (bp->spq_left != MAX_SPQ_PENDING)) &&
-              (timeout--))
-               msleep(1);
-
-       netif_poll_disable(bp->dev);
-       /* Disable interrupts after Tx and Rx are disabled on stack level */
-       bnx2x_int_disable_sync(bp);
-
-       if (bp->flags & NO_WOL_FLAG)
-               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP;
-
-       else if (bp->wol) {
-               u32 emac_base = bp->port ? GRCBASE_EMAC0 : GRCBASE_EMAC1;
-               u8 *mac_addr = bp->dev->dev_addr;
-               u32 val = (EMAC_MODE_MPKT | EMAC_MODE_MPKT_RCVD |
-                          EMAC_MODE_ACPI_RCVD);
-
-               EMAC_WR(EMAC_REG_EMAC_MODE, val);
-
-               val = (mac_addr[0] << 8) | mac_addr[1];
-               EMAC_WR(EMAC_REG_EMAC_MAC_MATCH, val);
-
-               val = (mac_addr[2] << 24) | (mac_addr[3] << 16) |
-                     (mac_addr[4] << 8) | mac_addr[5];
-               EMAC_WR(EMAC_REG_EMAC_MAC_MATCH + 4, val);
-
-               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_EN;
-
-       } else
-               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
-
-       /* Close multi and leading connections */
-       for_each_nondefault_queue(bp, i)
-               if (bnx2x_stop_multi(bp, i))
-                       goto unload_error;
-
-       bnx2x_stop_leading(bp);
-       if ((bp->state != BNX2X_STATE_CLOSING_WAIT4_UNLOAD) ||
-           (bp->fp[0].state != BNX2X_FP_STATE_CLOSED)) {
-               DP(NETIF_MSG_IFDOWN, "failed to close leading properly!"
-                  "state 0x%x  fp[0].state 0x%x",
-                  bp->state, bp->fp[0].state);
-       }
-
-unload_error:
-       bnx2x_link_reset(bp);
-
-       if (!nomcp)
-               reset_code = bnx2x_fw_command(bp, reset_code);
-       else
-               reset_code = FW_MSG_CODE_DRV_UNLOAD_COMMON;
-
-       /* Release IRQs */
-       if (free_irq)
-               bnx2x_free_irq(bp);
-
-       /* Reset the chip */
-       bnx2x_reset_chip(bp, reset_code);
-
-       /* Report UNLOAD_DONE to MCP */
-       if (!nomcp)
-               bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
-
-       /* Free SKBs and driver internals */
-       bnx2x_free_skbs(bp);
-       bnx2x_free_mem(bp);
-
-       bp->state = BNX2X_STATE_CLOSED;
-
-       netif_carrier_off(bp->dev);
-
-       return 0;
-}
-
-/* end of nic load/unload */
-
-/* ethtool_ops */
-
-/*
- * Init service functions
- */
-
-static void bnx2x_link_settings_supported(struct bnx2x *bp, u32 switch_cfg)
-{
-       int port = bp->port;
-       u32 ext_phy_type;
-
-       bp->phy_flags = 0;
-
-       switch (switch_cfg) {
-       case SWITCH_CFG_1G:
-               BNX2X_DEV_INFO("switch_cfg 0x%x (1G)\n", switch_cfg);
-
-               ext_phy_type = SERDES_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n",
-                                      ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10baseT_Half |
-                                         SUPPORTED_10baseT_Full |
-                                         SUPPORTED_100baseT_Half |
-                                         SUPPORTED_100baseT_Full |
-                                         SUPPORTED_1000baseT_Full |
-                                         SUPPORTED_2500baseX_Full |
-                                         SUPPORTED_TP | SUPPORTED_FIBRE |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (5482)\n",
-                                      ext_phy_type);
-
-                       bp->phy_flags |= PHY_SGMII_FLAG;
-
-                       bp->supported |= (SUPPORTED_10baseT_Half |
-                                         SUPPORTED_10baseT_Full |
-                                         SUPPORTED_100baseT_Half |
-                                         SUPPORTED_100baseT_Full |
-                                         SUPPORTED_1000baseT_Full |
-                                         SUPPORTED_TP | SUPPORTED_FIBRE |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               default:
-                       BNX2X_ERR("NVRAM config error. "
-                                 "BAD SerDes ext_phy_config 0x%x\n",
-                                 bp->ext_phy_config);
-                       return;
-               }
-
-               bp->phy_addr = REG_RD(bp, NIG_REG_SERDES0_CTRL_PHY_ADDR +
-                                     port*0x10);
-               BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->phy_addr);
-               break;
-
-       case SWITCH_CFG_10G:
-               BNX2X_DEV_INFO("switch_cfg 0x%x (10G)\n", switch_cfg);
-
-               bp->phy_flags |= PHY_XGXS_FLAG;
-
-               ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n",
-                                      ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10baseT_Half |
-                                         SUPPORTED_10baseT_Full |
-                                         SUPPORTED_100baseT_Half |
-                                         SUPPORTED_100baseT_Full |
-                                         SUPPORTED_1000baseT_Full |
-                                         SUPPORTED_2500baseX_Full |
-                                         SUPPORTED_10000baseT_Full |
-                                         SUPPORTED_TP | SUPPORTED_FIBRE |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8705)\n",
-                                       ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10000baseT_Full |
-                                         SUPPORTED_FIBRE |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8706)\n",
-                                      ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10000baseT_Full |
-                                         SUPPORTED_1000baseT_Full |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_FIBRE |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8072)\n",
-                                      ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10000baseT_Full |
-                                         SUPPORTED_1000baseT_Full |
-                                         SUPPORTED_FIBRE |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
-                       BNX2X_DEV_INFO("ext_phy_type 0x%x (SFX7101)\n",
-                                      ext_phy_type);
-
-                       bp->supported |= (SUPPORTED_10000baseT_Full |
-                                         SUPPORTED_TP |
-                                         SUPPORTED_Autoneg |
-                                         SUPPORTED_Pause |
-                                         SUPPORTED_Asym_Pause);
-                       break;
-
-               default:
-                       BNX2X_ERR("NVRAM config error. "
-                                 "BAD XGXS ext_phy_config 0x%x\n",
-                                 bp->ext_phy_config);
-                       return;
-               }
-
-               bp->phy_addr = REG_RD(bp, NIG_REG_XGXS0_CTRL_PHY_ADDR +
-                                     port*0x18);
-               BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->phy_addr);
-
-               bp->ser_lane = ((bp->lane_config &
-                                PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
-                               PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
-               bp->rx_lane_swap = ((bp->lane_config &
-                                    PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK) >>
-                                   PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT);
-               bp->tx_lane_swap = ((bp->lane_config &
-                                    PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK) >>
-                                   PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT);
-               BNX2X_DEV_INFO("rx_lane_swap 0x%x  tx_lane_swap 0x%x\n",
-                              bp->rx_lane_swap, bp->tx_lane_swap);
-               break;
-
-       default:
-               BNX2X_ERR("BAD switch_cfg link_config 0x%x\n",
-                         bp->link_config);
-               return;
-       }
-
-       /* mask what we support according to speed_cap_mask */
-       if (!(bp->speed_cap_mask &
-             PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF))
-               bp->supported &= ~SUPPORTED_10baseT_Half;
-
-       if (!(bp->speed_cap_mask &
-             PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL))
-               bp->supported &= ~SUPPORTED_10baseT_Full;
-
-       if (!(bp->speed_cap_mask &
-             PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF))
-               bp->supported &= ~SUPPORTED_100baseT_Half;
-
-       if (!(bp->speed_cap_mask &
-             PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL))
-               bp->supported &= ~SUPPORTED_100baseT_Full;
-
-       if (!(bp->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_1G))
-               bp->supported &= ~(SUPPORTED_1000baseT_Half |
-                                  SUPPORTED_1000baseT_Full);
-
-       if (!(bp->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
-               bp->supported &= ~SUPPORTED_2500baseX_Full;
-
-       if (!(bp->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G))
-               bp->supported &= ~SUPPORTED_10000baseT_Full;
-
-       BNX2X_DEV_INFO("supported 0x%x\n", bp->supported);
-}
-
-static void bnx2x_link_settings_requested(struct bnx2x *bp)
-{
-       bp->req_autoneg = 0;
-       bp->req_duplex = DUPLEX_FULL;
-
-       switch (bp->link_config & PORT_FEATURE_LINK_SPEED_MASK) {
-       case PORT_FEATURE_LINK_SPEED_AUTO:
-               if (bp->supported & SUPPORTED_Autoneg) {
-                       bp->req_autoneg |= AUTONEG_SPEED;
-                       bp->req_line_speed = 0;
-                       bp->advertising = bp->supported;
-               } else {
-                       if (XGXS_EXT_PHY_TYPE(bp) ==
-                               PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) {
-                               /* force 10G, no AN */
-                               bp->req_line_speed = SPEED_10000;
-                               bp->advertising =
-                                               (ADVERTISED_10000baseT_Full |
-                                                ADVERTISED_FIBRE);
-                               break;
-                       }
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  Autoneg not supported\n",
-                                 bp->link_config);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_10M_FULL:
-               if (bp->supported & SUPPORTED_10baseT_Full) {
-                       bp->req_line_speed = SPEED_10;
-                       bp->advertising = (ADVERTISED_10baseT_Full |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_10M_HALF:
-               if (bp->supported & SUPPORTED_10baseT_Half) {
-                       bp->req_line_speed = SPEED_10;
-                       bp->req_duplex = DUPLEX_HALF;
-                       bp->advertising = (ADVERTISED_10baseT_Half |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_100M_FULL:
-               if (bp->supported & SUPPORTED_100baseT_Full) {
-                       bp->req_line_speed = SPEED_100;
-                       bp->advertising = (ADVERTISED_100baseT_Full |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_100M_HALF:
-               if (bp->supported & SUPPORTED_100baseT_Half) {
-                       bp->req_line_speed = SPEED_100;
-                       bp->req_duplex = DUPLEX_HALF;
-                       bp->advertising = (ADVERTISED_100baseT_Half |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_1G:
-               if (bp->supported & SUPPORTED_1000baseT_Full) {
-                       bp->req_line_speed = SPEED_1000;
-                       bp->advertising = (ADVERTISED_1000baseT_Full |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_2_5G:
-               if (bp->supported & SUPPORTED_2500baseX_Full) {
-                       bp->req_line_speed = SPEED_2500;
-                       bp->advertising = (ADVERTISED_2500baseX_Full |
-                                          ADVERTISED_TP);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       case PORT_FEATURE_LINK_SPEED_10G_CX4:
-       case PORT_FEATURE_LINK_SPEED_10G_KX4:
-       case PORT_FEATURE_LINK_SPEED_10G_KR:
-               if (bp->supported & SUPPORTED_10000baseT_Full) {
-                       bp->req_line_speed = SPEED_10000;
-                       bp->advertising = (ADVERTISED_10000baseT_Full |
-                                          ADVERTISED_FIBRE);
-               } else {
-                       BNX2X_ERR("NVRAM config error. "
-                                 "Invalid link_config 0x%x"
-                                 "  speed_cap_mask 0x%x\n",
-                                 bp->link_config, bp->speed_cap_mask);
-                       return;
-               }
-               break;
-
-       default:
-               BNX2X_ERR("NVRAM config error. "
-                         "BAD link speed link_config 0x%x\n",
-                         bp->link_config);
-               bp->req_autoneg |= AUTONEG_SPEED;
-               bp->req_line_speed = 0;
-               bp->advertising = bp->supported;
-               break;
-       }
-       BNX2X_DEV_INFO("req_line_speed %d  req_duplex %d\n",
-                      bp->req_line_speed, bp->req_duplex);
-
-       bp->req_flow_ctrl = (bp->link_config &
-                            PORT_FEATURE_FLOW_CONTROL_MASK);
-       if ((bp->req_flow_ctrl == FLOW_CTRL_AUTO) &&
-           (bp->supported & SUPPORTED_Autoneg))
-               bp->req_autoneg |= AUTONEG_FLOW_CTRL;
-
-       BNX2X_DEV_INFO("req_autoneg 0x%x  req_flow_ctrl 0x%x"
-                      "  advertising 0x%x\n",
-                      bp->req_autoneg, bp->req_flow_ctrl, bp->advertising);
-}
-
-static void bnx2x_get_hwinfo(struct bnx2x *bp)
-{
-       u32 val, val2, val3, val4, id;
-       int port = bp->port;
-       u32 switch_cfg;
-
-       bp->shmem_base = REG_RD(bp, MISC_REG_SHARED_MEM_ADDR);
-       BNX2X_DEV_INFO("shmem offset is %x\n", bp->shmem_base);
-
-       /* Get the chip revision id and number. */
-       /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
-       val = REG_RD(bp, MISC_REG_CHIP_NUM);
-       id = ((val & 0xffff) << 16);
-       val = REG_RD(bp, MISC_REG_CHIP_REV);
-       id |= ((val & 0xf) << 12);
-       val = REG_RD(bp, MISC_REG_CHIP_METAL);
-       id |= ((val & 0xff) << 4);
-       REG_RD(bp, MISC_REG_BOND_ID);
-       id |= (val & 0xf);
-       bp->chip_id = id;
-       BNX2X_DEV_INFO("chip ID is %x\n", id);
-
-       if (!bp->shmem_base || (bp->shmem_base != 0xAF900)) {
-               BNX2X_DEV_INFO("MCP not active\n");
-               nomcp = 1;
-               goto set_mac;
-       }
-
-       val = SHMEM_RD(bp, validity_map[port]);
-       if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
-               != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
-               BNX2X_ERR("BAD MCP validity signature\n");
-
-       bp->fw_seq = (SHMEM_RD(bp, func_mb[port].drv_mb_header) &
-                     DRV_MSG_SEQ_NUMBER_MASK);
-
-       bp->hw_config = SHMEM_RD(bp, dev_info.shared_hw_config.config);
-       bp->board = SHMEM_RD(bp, dev_info.shared_hw_config.board);
-       bp->serdes_config =
-               SHMEM_RD(bp, dev_info.port_hw_config[port].serdes_config);
-       bp->lane_config =
-               SHMEM_RD(bp, dev_info.port_hw_config[port].lane_config);
-       bp->ext_phy_config =
-               SHMEM_RD(bp,
-                        dev_info.port_hw_config[port].external_phy_config);
-       bp->speed_cap_mask =
-               SHMEM_RD(bp,
-                        dev_info.port_hw_config[port].speed_capability_mask);
-
-       bp->link_config =
-               SHMEM_RD(bp, dev_info.port_feature_config[port].link_config);
-
-       BNX2X_DEV_INFO("hw_config (%08x) board (%08x)  serdes_config (%08x)\n"
-            KERN_INFO "  lane_config (%08x)  ext_phy_config (%08x)\n"
-            KERN_INFO "  speed_cap_mask (%08x)  link_config (%08x)"
-                      "  fw_seq (%08x)\n",
-                      bp->hw_config, bp->board, bp->serdes_config,
-                      bp->lane_config, bp->ext_phy_config,
-                      bp->speed_cap_mask, bp->link_config, bp->fw_seq);
-
-       switch_cfg = (bp->link_config & PORT_FEATURE_CONNECTED_SWITCH_MASK);
-       bnx2x_link_settings_supported(bp, switch_cfg);
-
-       bp->autoneg = (bp->hw_config & SHARED_HW_CFG_AN_ENABLE_MASK);
-       /* for now disable cl73 */
-       bp->autoneg &= ~SHARED_HW_CFG_AN_ENABLE_CL73;
-       BNX2X_DEV_INFO("autoneg 0x%x\n", bp->autoneg);
-
-       bnx2x_link_settings_requested(bp);
-
-       val2 = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_upper);
-       val = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_lower);
-       bp->dev->dev_addr[0] = (u8)(val2 >> 8 & 0xff);
-       bp->dev->dev_addr[1] = (u8)(val2 & 0xff);
-       bp->dev->dev_addr[2] = (u8)(val >> 24 & 0xff);
-       bp->dev->dev_addr[3] = (u8)(val >> 16 & 0xff);
-       bp->dev->dev_addr[4] = (u8)(val >> 8  & 0xff);
-       bp->dev->dev_addr[5] = (u8)(val & 0xff);
-
-       memcpy(bp->dev->perm_addr, bp->dev->dev_addr, 6);
-
-
-       val = SHMEM_RD(bp, dev_info.shared_hw_config.part_num);
-       val2 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[4]);
-       val3 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[8]);
-       val4 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[12]);
-
-       printk(KERN_INFO PFX "part number %X-%X-%X-%X\n",
-              val, val2, val3, val4);
-
-       /* bc ver */
-       if (!nomcp) {
-               bp->bc_ver = val = ((SHMEM_RD(bp, dev_info.bc_rev)) >> 8);
-               BNX2X_DEV_INFO("bc_ver %X\n", val);
-               if (val < BNX2X_BC_VER) {
-                       /* for now only warn
-                        * later we might need to enforce this */
-                       BNX2X_ERR("This driver needs bc_ver %X but found %X,"
-                                 " please upgrade BC\n", BNX2X_BC_VER, val);
-               }
-       } else {
-               bp->bc_ver = 0;
-       }
-
-       val = REG_RD(bp, MCP_REG_MCPR_NVM_CFG4);
-       bp->flash_size = (NVRAM_1MB_SIZE << (val & MCPR_NVM_CFG4_FLASH_SIZE));
-       BNX2X_DEV_INFO("flash_size 0x%x (%d)\n",
-                      bp->flash_size, bp->flash_size);
-
-       return;
-
-set_mac: /* only supposed to happen on emulation/FPGA */
-       BNX2X_ERR("warning rendom MAC workaround active\n");
-       random_ether_addr(bp->dev->dev_addr);
-       memcpy(bp->dev->perm_addr, bp->dev->dev_addr, 6);
-
-}
-
-/*
- * ethtool service functions
- */
-
-/* All ethtool functions called with rtnl_lock */
-
-static int bnx2x_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       cmd->supported = bp->supported;
-       cmd->advertising = bp->advertising;
-
-       if (netif_carrier_ok(dev)) {
-               cmd->speed = bp->line_speed;
-               cmd->duplex = bp->duplex;
-       } else {
-               cmd->speed = bp->req_line_speed;
-               cmd->duplex = bp->req_duplex;
-       }
-
-       if (bp->phy_flags & PHY_XGXS_FLAG) {
-               u32 ext_phy_type = XGXS_EXT_PHY_TYPE(bp);
-
-               switch (ext_phy_type) {
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
-                       cmd->port = PORT_FIBRE;
-                       break;
-
-               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
-                       cmd->port = PORT_TP;
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
-                          bp->ext_phy_config);
-               }
-       } else
-               cmd->port = PORT_TP;
-
-       cmd->phy_address = bp->phy_addr;
-       cmd->transceiver = XCVR_INTERNAL;
-
-       if (bp->req_autoneg & AUTONEG_SPEED)
-               cmd->autoneg = AUTONEG_ENABLE;
-       else
-               cmd->autoneg = AUTONEG_DISABLE;
-
-       cmd->maxtxpkt = 0;
-       cmd->maxrxpkt = 0;
-
-       DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n"
-          DP_LEVEL "  supported 0x%x  advertising 0x%x  speed %d\n"
-          DP_LEVEL "  duplex %d  port %d  phy_address %d  transceiver %d\n"
-          DP_LEVEL "  autoneg %d  maxtxpkt %d  maxrxpkt %d\n",
-          cmd->cmd, cmd->supported, cmd->advertising, cmd->speed,
-          cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver,
-          cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt);
-
-       return 0;
-}
-
-static int bnx2x_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       u32 advertising;
-
-       DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n"
-          DP_LEVEL "  supported 0x%x  advertising 0x%x  speed %d\n"
-          DP_LEVEL "  duplex %d  port %d  phy_address %d  transceiver %d\n"
-          DP_LEVEL "  autoneg %d  maxtxpkt %d  maxrxpkt %d\n",
-          cmd->cmd, cmd->supported, cmd->advertising, cmd->speed,
-          cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver,
-          cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt);
-
-       if (cmd->autoneg == AUTONEG_ENABLE) {
-               if (!(bp->supported & SUPPORTED_Autoneg)) {
-                       DP(NETIF_MSG_LINK, "Aotoneg not supported\n");
-                       return -EINVAL;
-               }
-
-               /* advertise the requested speed and duplex if supported */
-               cmd->advertising &= bp->supported;
-
-               bp->req_autoneg |= AUTONEG_SPEED;
-               bp->req_line_speed = 0;
-               bp->req_duplex = DUPLEX_FULL;
-               bp->advertising |= (ADVERTISED_Autoneg | cmd->advertising);
-
-       } else { /* forced speed */
-               /* advertise the requested speed and duplex if supported */
-               switch (cmd->speed) {
-               case SPEED_10:
-                       if (cmd->duplex == DUPLEX_FULL) {
-                               if (!(bp->supported &
-                                     SUPPORTED_10baseT_Full)) {
-                                       DP(NETIF_MSG_LINK,
-                                          "10M full not supported\n");
-                                       return -EINVAL;
-                               }
-
-                               advertising = (ADVERTISED_10baseT_Full |
-                                              ADVERTISED_TP);
-                       } else {
-                               if (!(bp->supported &
-                                     SUPPORTED_10baseT_Half)) {
-                                       DP(NETIF_MSG_LINK,
-                                          "10M half not supported\n");
-                                       return -EINVAL;
-                               }
-
-                               advertising = (ADVERTISED_10baseT_Half |
-                                              ADVERTISED_TP);
-                       }
-                       break;
-
-               case SPEED_100:
-                       if (cmd->duplex == DUPLEX_FULL) {
-                               if (!(bp->supported &
-                                               SUPPORTED_100baseT_Full)) {
-                                       DP(NETIF_MSG_LINK,
-                                          "100M full not supported\n");
-                                       return -EINVAL;
-                               }
-
-                               advertising = (ADVERTISED_100baseT_Full |
-                                              ADVERTISED_TP);
-                       } else {
-                               if (!(bp->supported &
-                                               SUPPORTED_100baseT_Half)) {
-                                       DP(NETIF_MSG_LINK,
-                                          "100M half not supported\n");
-                                       return -EINVAL;
-                               }
-
-                               advertising = (ADVERTISED_100baseT_Half |
-                                              ADVERTISED_TP);
-                       }
-                       break;
-
-               case SPEED_1000:
-                       if (cmd->duplex != DUPLEX_FULL) {
-                               DP(NETIF_MSG_LINK, "1G half not supported\n");
-                               return -EINVAL;
-                       }
-
-                       if (!(bp->supported & SUPPORTED_1000baseT_Full)) {
-                               DP(NETIF_MSG_LINK, "1G full not supported\n");
-                               return -EINVAL;
-                       }
-
-                       advertising = (ADVERTISED_1000baseT_Full |
-                                      ADVERTISED_TP);
-                       break;
-
-               case SPEED_2500:
-                       if (cmd->duplex != DUPLEX_FULL) {
-                               DP(NETIF_MSG_LINK,
-                                  "2.5G half not supported\n");
-                               return -EINVAL;
-                       }
-
-                       if (!(bp->supported & SUPPORTED_2500baseX_Full)) {
-                               DP(NETIF_MSG_LINK,
-                                  "2.5G full not supported\n");
-                               return -EINVAL;
-                       }
-
-                       advertising = (ADVERTISED_2500baseX_Full |
-                                      ADVERTISED_TP);
-                       break;
-
-               case SPEED_10000:
-                       if (cmd->duplex != DUPLEX_FULL) {
-                               DP(NETIF_MSG_LINK, "10G half not supported\n");
-                               return -EINVAL;
-                       }
-
-                       if (!(bp->supported & SUPPORTED_10000baseT_Full)) {
-                               DP(NETIF_MSG_LINK, "10G full not supported\n");
-                               return -EINVAL;
-                       }
-
-                       advertising = (ADVERTISED_10000baseT_Full |
-                                      ADVERTISED_FIBRE);
-                       break;
-
-               default:
-                       DP(NETIF_MSG_LINK, "Unsupported speed\n");
-                       return -EINVAL;
-               }
-
-               bp->req_autoneg &= ~AUTONEG_SPEED;
-               bp->req_line_speed = cmd->speed;
-               bp->req_duplex = cmd->duplex;
-               bp->advertising = advertising;
-       }
-
-       DP(NETIF_MSG_LINK, "req_autoneg 0x%x  req_line_speed %d\n"
-          DP_LEVEL "  req_duplex %d  advertising 0x%x\n",
-          bp->req_autoneg, bp->req_line_speed, bp->req_duplex,
-          bp->advertising);
-
-       bnx2x_stop_stats(bp);
-       bnx2x_link_initialize(bp);
-
-       return 0;
-}
-
-static void bnx2x_get_drvinfo(struct net_device *dev,
-                             struct ethtool_drvinfo *info)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       strcpy(info->driver, DRV_MODULE_NAME);
-       strcpy(info->version, DRV_MODULE_VERSION);
-       snprintf(info->fw_version, 32, "%d.%d.%d:%d (BC VER %x)",
-                BCM_5710_FW_MAJOR_VERSION, BCM_5710_FW_MINOR_VERSION,
-                BCM_5710_FW_REVISION_VERSION, BCM_5710_FW_COMPILE_FLAGS,
-                bp->bc_ver);
-       strcpy(info->bus_info, pci_name(bp->pdev));
-       info->n_stats = BNX2X_NUM_STATS;
-       info->testinfo_len = BNX2X_NUM_TESTS;
-       info->eedump_len = bp->flash_size;
-       info->regdump_len = 0;
-}
-
-static void bnx2x_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (bp->flags & NO_WOL_FLAG) {
-               wol->supported = 0;
-               wol->wolopts = 0;
-       } else {
-               wol->supported = WAKE_MAGIC;
-               if (bp->wol)
-                       wol->wolopts = WAKE_MAGIC;
-               else
-                       wol->wolopts = 0;
-       }
-       memset(&wol->sopass, 0, sizeof(wol->sopass));
-}
-
-static int bnx2x_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (wol->wolopts & ~WAKE_MAGIC)
-               return -EINVAL;
-
-       if (wol->wolopts & WAKE_MAGIC) {
-               if (bp->flags & NO_WOL_FLAG)
-                       return -EINVAL;
-
-               bp->wol = 1;
-       } else {
-               bp->wol = 0;
-       }
-       return 0;
-}
-
-static u32 bnx2x_get_msglevel(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       return bp->msglevel;
-}
-
-static void bnx2x_set_msglevel(struct net_device *dev, u32 level)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (capable(CAP_NET_ADMIN))
-               bp->msglevel = level;
-}
-
-static int bnx2x_nway_reset(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (bp->state != BNX2X_STATE_OPEN) {
-               DP(NETIF_MSG_PROBE, "state is %x, returning\n", bp->state);
-               return -EAGAIN;
-       }
-
-       bnx2x_stop_stats(bp);
-       bnx2x_link_initialize(bp);
-
-       return 0;
-}
-
-static int bnx2x_get_eeprom_len(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       return bp->flash_size;
-}
-
-static int bnx2x_acquire_nvram_lock(struct bnx2x *bp)
-{
-       int port = bp->port;
-       int count, i;
-       u32 val = 0;
-
-       /* adjust timeout for emulation/FPGA */
-       count = NVRAM_TIMEOUT_COUNT;
-       if (CHIP_REV_IS_SLOW(bp))
-               count *= 100;
-
-       /* request access to nvram interface */
-       REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB,
-              (MCPR_NVM_SW_ARB_ARB_REQ_SET1 << port));
-
-       for (i = 0; i < count*10; i++) {
-               val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB);
-               if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))
-                       break;
-
-               udelay(5);
-       }
-
-       if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))) {
-               DP(NETIF_MSG_NVM, "cannot get access to nvram interface\n");
-               return -EBUSY;
-       }
-
-       return 0;
-}
-
-static int bnx2x_release_nvram_lock(struct bnx2x *bp)
-{
-       int port = bp->port;
-       int count, i;
-       u32 val = 0;
-
-       /* adjust timeout for emulation/FPGA */
-       count = NVRAM_TIMEOUT_COUNT;
-       if (CHIP_REV_IS_SLOW(bp))
-               count *= 100;
-
-       /* relinquish nvram interface */
-       REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB,
-              (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << port));
-
-       for (i = 0; i < count*10; i++) {
-               val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB);
-               if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)))
-                       break;
-
-               udelay(5);
-       }
-
-       if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)) {
-               DP(NETIF_MSG_NVM, "cannot free access to nvram interface\n");
-               return -EBUSY;
-       }
-
-       return 0;
-}
-
-static void bnx2x_enable_nvram_access(struct bnx2x *bp)
-{
-       u32 val;
-
-       val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE);
-
-       /* enable both bits, even on read */
-       REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE,
-              (val | MCPR_NVM_ACCESS_ENABLE_EN |
-                     MCPR_NVM_ACCESS_ENABLE_WR_EN));
-}
-
-static void bnx2x_disable_nvram_access(struct bnx2x *bp)
-{
-       u32 val;
-
-       val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE);
-
-       /* disable both bits, even after read */
-       REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE,
-              (val & ~(MCPR_NVM_ACCESS_ENABLE_EN |
-                       MCPR_NVM_ACCESS_ENABLE_WR_EN)));
-}
-
-static int bnx2x_nvram_read_dword(struct bnx2x *bp, u32 offset, u32 *ret_val,
-                                 u32 cmd_flags)
-{
-       int count, i, rc;
-       u32 val;
-
-       /* build the command word */
-       cmd_flags |= MCPR_NVM_COMMAND_DOIT;
-
-       /* need to clear DONE bit separately */
-       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE);
-
-       /* address of the NVRAM to read from */
-       REG_WR(bp, MCP_REG_MCPR_NVM_ADDR,
-              (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE));
-
-       /* issue a read command */
-       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags);
-
-       /* adjust timeout for emulation/FPGA */
-       count = NVRAM_TIMEOUT_COUNT;
-       if (CHIP_REV_IS_SLOW(bp))
-               count *= 100;
-
-       /* wait for completion */
-       *ret_val = 0;
-       rc = -EBUSY;
-       for (i = 0; i < count; i++) {
-               udelay(5);
-               val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND);
-
-               if (val & MCPR_NVM_COMMAND_DONE) {
-                       val = REG_RD(bp, MCP_REG_MCPR_NVM_READ);
-                       DP(NETIF_MSG_NVM, "val 0x%08x\n", val);
-                       /* we read nvram data in cpu order
-                        * but ethtool sees it as an array of bytes
-                        * converting to big-endian will do the work */
-                       val = cpu_to_be32(val);
-                       *ret_val = val;
-                       rc = 0;
-                       break;
-               }
-       }
-
-       return rc;
-}
-
-static int bnx2x_nvram_read(struct bnx2x *bp, u32 offset, u8 *ret_buf,
-                           int buf_size)
-{
-       int rc;
-       u32 cmd_flags;
-       u32 val;
-
-       if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) {
-               DP(NETIF_MSG_NVM,
-                  "Invalid parameter: offset 0x%x  buf_size 0x%x\n",
-                  offset, buf_size);
-               return -EINVAL;
-       }
-
-       if (offset + buf_size > bp->flash_size) {
-               DP(NETIF_MSG_NVM, "Invalid parameter: offset (0x%x) +"
-                                 " buf_size (0x%x) > flash_size (0x%x)\n",
-                  offset, buf_size, bp->flash_size);
-               return -EINVAL;
-       }
-
-       /* request access to nvram interface */
-       rc = bnx2x_acquire_nvram_lock(bp);
-       if (rc)
-               return rc;
-
-       /* enable access to nvram interface */
-       bnx2x_enable_nvram_access(bp);
-
-       /* read the first word(s) */
-       cmd_flags = MCPR_NVM_COMMAND_FIRST;
-       while ((buf_size > sizeof(u32)) && (rc == 0)) {
-               rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags);
-               memcpy(ret_buf, &val, 4);
-
-               /* advance to the next dword */
-               offset += sizeof(u32);
-               ret_buf += sizeof(u32);
-               buf_size -= sizeof(u32);
-               cmd_flags = 0;
-       }
-
-       if (rc == 0) {
-               cmd_flags |= MCPR_NVM_COMMAND_LAST;
-               rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags);
-               memcpy(ret_buf, &val, 4);
-       }
-
-       /* disable access to nvram interface */
-       bnx2x_disable_nvram_access(bp);
-       bnx2x_release_nvram_lock(bp);
-
-       return rc;
-}
-
-static int bnx2x_get_eeprom(struct net_device *dev,
-                           struct ethtool_eeprom *eeprom, u8 *eebuf)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       int rc;
-
-       DP(NETIF_MSG_NVM, "ethtool_eeprom: cmd %d\n"
-          DP_LEVEL "  magic 0x%x  offset 0x%x (%d)  len 0x%x (%d)\n",
-          eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
-          eeprom->len, eeprom->len);
-
-       /* parameters already validated in ethtool_get_eeprom */
-
-       rc = bnx2x_nvram_read(bp, eeprom->offset, eebuf, eeprom->len);
-
-       return rc;
-}
-
-static int bnx2x_nvram_write_dword(struct bnx2x *bp, u32 offset, u32 val,
-                                  u32 cmd_flags)
-{
-       int count, i, rc;
-
-       /* build the command word */
-       cmd_flags |= MCPR_NVM_COMMAND_DOIT | MCPR_NVM_COMMAND_WR;
-
-       /* need to clear DONE bit separately */
-       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE);
-
-       /* write the data */
-       REG_WR(bp, MCP_REG_MCPR_NVM_WRITE, val);
-
-       /* address of the NVRAM to write to */
-       REG_WR(bp, MCP_REG_MCPR_NVM_ADDR,
-              (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE));
-
-       /* issue the write command */
-       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags);
-
-       /* adjust timeout for emulation/FPGA */
-       count = NVRAM_TIMEOUT_COUNT;
-       if (CHIP_REV_IS_SLOW(bp))
-               count *= 100;
-
-       /* wait for completion */
-       rc = -EBUSY;
-       for (i = 0; i < count; i++) {
-               udelay(5);
-               val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND);
-               if (val & MCPR_NVM_COMMAND_DONE) {
-                       rc = 0;
-                       break;
-               }
-       }
-
-       return rc;
-}
-
-#define BYTE_OFFSET(offset)            (8 * (offset & 0x03))
-
-static int bnx2x_nvram_write1(struct bnx2x *bp, u32 offset, u8 *data_buf,
-                             int buf_size)
-{
-       int rc;
-       u32 cmd_flags;
-       u32 align_offset;
-       u32 val;
-
-       if (offset + buf_size > bp->flash_size) {
-               DP(NETIF_MSG_NVM, "Invalid parameter: offset (0x%x) +"
-                                 " buf_size (0x%x) > flash_size (0x%x)\n",
-                  offset, buf_size, bp->flash_size);
-               return -EINVAL;
-       }
-
-       /* request access to nvram interface */
-       rc = bnx2x_acquire_nvram_lock(bp);
-       if (rc)
-               return rc;
-
-       /* enable access to nvram interface */
-       bnx2x_enable_nvram_access(bp);
-
-       cmd_flags = (MCPR_NVM_COMMAND_FIRST | MCPR_NVM_COMMAND_LAST);
-       align_offset = (offset & ~0x03);
-       rc = bnx2x_nvram_read_dword(bp, align_offset, &val, cmd_flags);
-
-       if (rc == 0) {
-               val &= ~(0xff << BYTE_OFFSET(offset));
-               val |= (*data_buf << BYTE_OFFSET(offset));
-
-               /* nvram data is returned as an array of bytes
-                * convert it back to cpu order */
-               val = be32_to_cpu(val);
-
-               DP(NETIF_MSG_NVM, "val 0x%08x\n", val);
-
-               rc = bnx2x_nvram_write_dword(bp, align_offset, val,
-                                            cmd_flags);
-       }
-
-       /* disable access to nvram interface */
-       bnx2x_disable_nvram_access(bp);
-       bnx2x_release_nvram_lock(bp);
-
-       return rc;
-}
-
-static int bnx2x_nvram_write(struct bnx2x *bp, u32 offset, u8 *data_buf,
-                            int buf_size)
-{
-       int rc;
-       u32 cmd_flags;
-       u32 val;
-       u32 written_so_far;
-
-       if (buf_size == 1) {    /* ethtool */
-               return bnx2x_nvram_write1(bp, offset, data_buf, buf_size);
-       }
-
-       if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) {
-               DP(NETIF_MSG_NVM,
-                  "Invalid parameter: offset 0x%x  buf_size 0x%x\n",
-                  offset, buf_size);
-               return -EINVAL;
-       }
-
-       if (offset + buf_size > bp->flash_size) {
-               DP(NETIF_MSG_NVM, "Invalid parameter: offset (0x%x) +"
-                                 " buf_size (0x%x) > flash_size (0x%x)\n",
-                  offset, buf_size, bp->flash_size);
-               return -EINVAL;
-       }
-
-       /* request access to nvram interface */
-       rc = bnx2x_acquire_nvram_lock(bp);
-       if (rc)
-               return rc;
-
-       /* enable access to nvram interface */
-       bnx2x_enable_nvram_access(bp);
-
-       written_so_far = 0;
-       cmd_flags = MCPR_NVM_COMMAND_FIRST;
-       while ((written_so_far < buf_size) && (rc == 0)) {
-               if (written_so_far == (buf_size - sizeof(u32)))
-                       cmd_flags |= MCPR_NVM_COMMAND_LAST;
-               else if (((offset + 4) % NVRAM_PAGE_SIZE) == 0)
-                       cmd_flags |= MCPR_NVM_COMMAND_LAST;
-               else if ((offset % NVRAM_PAGE_SIZE) == 0)
-                       cmd_flags |= MCPR_NVM_COMMAND_FIRST;
-
-               memcpy(&val, data_buf, 4);
-               DP(NETIF_MSG_NVM, "val 0x%08x\n", val);
-
-               rc = bnx2x_nvram_write_dword(bp, offset, val, cmd_flags);
-
-               /* advance to the next dword */
-               offset += sizeof(u32);
-               data_buf += sizeof(u32);
-               written_so_far += sizeof(u32);
-               cmd_flags = 0;
-       }
-
-       /* disable access to nvram interface */
-       bnx2x_disable_nvram_access(bp);
-       bnx2x_release_nvram_lock(bp);
-
-       return rc;
-}
-
-static int bnx2x_set_eeprom(struct net_device *dev,
-                           struct ethtool_eeprom *eeprom, u8 *eebuf)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       int rc;
-
-       DP(NETIF_MSG_NVM, "ethtool_eeprom: cmd %d\n"
-          DP_LEVEL "  magic 0x%x  offset 0x%x (%d)  len 0x%x (%d)\n",
-          eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
-          eeprom->len, eeprom->len);
-
-       /* parameters already validated in ethtool_set_eeprom */
-
-       rc = bnx2x_nvram_write(bp, eeprom->offset, eebuf, eeprom->len);
-
-       return rc;
-}
-
-static int bnx2x_get_coalesce(struct net_device *dev,
-                             struct ethtool_coalesce *coal)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       memset(coal, 0, sizeof(struct ethtool_coalesce));
-
-       coal->rx_coalesce_usecs = bp->rx_ticks;
-       coal->tx_coalesce_usecs = bp->tx_ticks;
-       coal->stats_block_coalesce_usecs = bp->stats_ticks;
-
-       return 0;
-}
-
-static int bnx2x_set_coalesce(struct net_device *dev,
-                             struct ethtool_coalesce *coal)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       bp->rx_ticks = (u16) coal->rx_coalesce_usecs;
-       if (bp->rx_ticks > 3000)
-               bp->rx_ticks = 3000;
-
-       bp->tx_ticks = (u16) coal->tx_coalesce_usecs;
-       if (bp->tx_ticks > 0x3000)
-               bp->tx_ticks = 0x3000;
-
-       bp->stats_ticks = coal->stats_block_coalesce_usecs;
-       if (bp->stats_ticks > 0xffff00)
-               bp->stats_ticks = 0xffff00;
-       bp->stats_ticks &= 0xffff00;
-
-       if (netif_running(bp->dev))
-               bnx2x_update_coalesce(bp);
-
-       return 0;
-}
-
-static void bnx2x_get_ringparam(struct net_device *dev,
-                               struct ethtool_ringparam *ering)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       ering->rx_max_pending = MAX_RX_AVAIL;
-       ering->rx_mini_max_pending = 0;
-       ering->rx_jumbo_max_pending = 0;
-
-       ering->rx_pending = bp->rx_ring_size;
-       ering->rx_mini_pending = 0;
-       ering->rx_jumbo_pending = 0;
-
-       ering->tx_max_pending = MAX_TX_AVAIL;
-       ering->tx_pending = bp->tx_ring_size;
-}
-
-static int bnx2x_set_ringparam(struct net_device *dev,
-                              struct ethtool_ringparam *ering)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if ((ering->rx_pending > MAX_RX_AVAIL) ||
-           (ering->tx_pending > MAX_TX_AVAIL) ||
-           (ering->tx_pending <= MAX_SKB_FRAGS + 4))
-               return -EINVAL;
-
-       bp->rx_ring_size = ering->rx_pending;
-       bp->tx_ring_size = ering->tx_pending;
-
-       if (netif_running(bp->dev)) {
-               bnx2x_nic_unload(bp, 0);
-               bnx2x_nic_load(bp, 0);
-       }
-
-       return 0;
-}
-
-static void bnx2x_get_pauseparam(struct net_device *dev,
-                                struct ethtool_pauseparam *epause)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       epause->autoneg =
-               ((bp->req_autoneg & AUTONEG_FLOW_CTRL) == AUTONEG_FLOW_CTRL);
-       epause->rx_pause = ((bp->flow_ctrl & FLOW_CTRL_RX) == FLOW_CTRL_RX);
-       epause->tx_pause = ((bp->flow_ctrl & FLOW_CTRL_TX) == FLOW_CTRL_TX);
-
-       DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n"
-          DP_LEVEL "  autoneg %d  rx_pause %d  tx_pause %d\n",
-          epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause);
-}
-
-static int bnx2x_set_pauseparam(struct net_device *dev,
-                               struct ethtool_pauseparam *epause)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n"
-          DP_LEVEL "  autoneg %d  rx_pause %d  tx_pause %d\n",
-          epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause);
-
-       if (epause->autoneg) {
-               if (!(bp->supported & SUPPORTED_Autoneg)) {
-                       DP(NETIF_MSG_LINK, "Aotoneg not supported\n");
-                       return -EINVAL;
-               }
-
-               bp->req_autoneg |= AUTONEG_FLOW_CTRL;
-       } else
-               bp->req_autoneg &= ~AUTONEG_FLOW_CTRL;
-
-       bp->req_flow_ctrl = FLOW_CTRL_AUTO;
-
-       if (epause->rx_pause)
-               bp->req_flow_ctrl |= FLOW_CTRL_RX;
-       if (epause->tx_pause)
-               bp->req_flow_ctrl |= FLOW_CTRL_TX;
-
-       if (!(bp->req_autoneg & AUTONEG_FLOW_CTRL) &&
-           (bp->req_flow_ctrl == FLOW_CTRL_AUTO))
-               bp->req_flow_ctrl = FLOW_CTRL_NONE;
-
-       DP(NETIF_MSG_LINK, "req_autoneg 0x%x  req_flow_ctrl 0x%x\n",
-          bp->req_autoneg, bp->req_flow_ctrl);
-
-       bnx2x_stop_stats(bp);
-       bnx2x_link_initialize(bp);
-
-       return 0;
-}
-
-static u32 bnx2x_get_rx_csum(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       return bp->rx_csum;
-}
-
-static int bnx2x_set_rx_csum(struct net_device *dev, u32 data)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       bp->rx_csum = data;
-       return 0;
-}
-
-static int bnx2x_set_tso(struct net_device *dev, u32 data)
-{
-       if (data)
-               dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
-       else
-               dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN);
-       return 0;
-}
-
-static struct {
-       char string[ETH_GSTRING_LEN];
-} bnx2x_tests_str_arr[BNX2X_NUM_TESTS] = {
-       { "MC Errors  (online)" }
-};
-
-static int bnx2x_self_test_count(struct net_device *dev)
-{
-       return BNX2X_NUM_TESTS;
-}
-
-static void bnx2x_self_test(struct net_device *dev,
-                           struct ethtool_test *etest, u64 *buf)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       int stats_state;
-
-       memset(buf, 0, sizeof(u64) * BNX2X_NUM_TESTS);
-
-       if (bp->state != BNX2X_STATE_OPEN) {
-               DP(NETIF_MSG_PROBE, "state is %x, returning\n", bp->state);
-               return;
-       }
-
-       stats_state = bp->stats_state;
-       bnx2x_stop_stats(bp);
-
-       if (bnx2x_mc_assert(bp) != 0) {
-               buf[0] = 1;
-               etest->flags |= ETH_TEST_FL_FAILED;
-       }
-
-#ifdef BNX2X_EXTRA_DEBUG
-       bnx2x_panic_dump(bp);
-#endif
-       bp->stats_state = stats_state;
-}
-
-static struct {
-       char string[ETH_GSTRING_LEN];
-} bnx2x_stats_str_arr[BNX2X_NUM_STATS] = {
-       { "rx_bytes"},
-       { "rx_error_bytes"},
-       { "tx_bytes"},
-       { "tx_error_bytes"},
-       { "rx_ucast_packets"},
-       { "rx_mcast_packets"},
-       { "rx_bcast_packets"},
-       { "tx_ucast_packets"},
-       { "tx_mcast_packets"},
-       { "tx_bcast_packets"},
-       { "tx_mac_errors"},     /* 10 */
-       { "tx_carrier_errors"},
-       { "rx_crc_errors"},
-       { "rx_align_errors"},
-       { "tx_single_collisions"},
-       { "tx_multi_collisions"},
-       { "tx_deferred"},
-       { "tx_excess_collisions"},
-       { "tx_late_collisions"},
-       { "tx_total_collisions"},
-       { "rx_fragments"},      /* 20 */
-       { "rx_jabbers"},
-       { "rx_undersize_packets"},
-       { "rx_oversize_packets"},
-       { "rx_xon_frames"},
-       { "rx_xoff_frames"},
-       { "tx_xon_frames"},
-       { "tx_xoff_frames"},
-       { "rx_mac_ctrl_frames"},
-       { "rx_filtered_packets"},
-       { "rx_discards"},       /* 30 */
-       { "brb_discard"},
-       { "brb_truncate"},
-       { "xxoverflow"}
-};
-
-#define STATS_OFFSET32(offset_name) \
-       (offsetof(struct bnx2x_eth_stats, offset_name) / 4)
-
-static unsigned long bnx2x_stats_offset_arr[BNX2X_NUM_STATS] = {
-       STATS_OFFSET32(total_bytes_received_hi),
-       STATS_OFFSET32(stat_IfHCInBadOctets_hi),
-       STATS_OFFSET32(total_bytes_transmitted_hi),
-       STATS_OFFSET32(stat_IfHCOutBadOctets_hi),
-       STATS_OFFSET32(total_unicast_packets_received_hi),
-       STATS_OFFSET32(total_multicast_packets_received_hi),
-       STATS_OFFSET32(total_broadcast_packets_received_hi),
-       STATS_OFFSET32(total_unicast_packets_transmitted_hi),
-       STATS_OFFSET32(total_multicast_packets_transmitted_hi),
-       STATS_OFFSET32(total_broadcast_packets_transmitted_hi),
-       STATS_OFFSET32(stat_Dot3statsInternalMacTransmitErrors), /* 10 */
-       STATS_OFFSET32(stat_Dot3StatsCarrierSenseErrors),
-       STATS_OFFSET32(crc_receive_errors),
-       STATS_OFFSET32(alignment_errors),
-       STATS_OFFSET32(single_collision_transmit_frames),
-       STATS_OFFSET32(multiple_collision_transmit_frames),
-       STATS_OFFSET32(stat_Dot3StatsDeferredTransmissions),
-       STATS_OFFSET32(excessive_collision_frames),
-       STATS_OFFSET32(late_collision_frames),
-       STATS_OFFSET32(number_of_bugs_found_in_stats_spec),
-       STATS_OFFSET32(runt_packets_received),                  /* 20 */
-       STATS_OFFSET32(jabber_packets_received),
-       STATS_OFFSET32(error_runt_packets_received),
-       STATS_OFFSET32(error_jabber_packets_received),
-       STATS_OFFSET32(pause_xon_frames_received),
-       STATS_OFFSET32(pause_xoff_frames_received),
-       STATS_OFFSET32(pause_xon_frames_transmitted),
-       STATS_OFFSET32(pause_xoff_frames_transmitted),
-       STATS_OFFSET32(control_frames_received),
-       STATS_OFFSET32(mac_filter_discard),
-       STATS_OFFSET32(no_buff_discard),                        /* 30 */
-       STATS_OFFSET32(brb_discard),
-       STATS_OFFSET32(brb_truncate_discard),
-       STATS_OFFSET32(xxoverflow_discard)
-};
-
-static u8 bnx2x_stats_len_arr[BNX2X_NUM_STATS] = {
-       8, 0, 8, 0, 8, 8, 8, 8, 8, 8,
-       4, 0, 4, 4, 4, 4, 4, 4, 4, 4,
-       4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-       4, 4, 4, 4
-};
-
-static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
-{
-       switch (stringset) {
-       case ETH_SS_STATS:
-               memcpy(buf, bnx2x_stats_str_arr, sizeof(bnx2x_stats_str_arr));
-               break;
-
-       case ETH_SS_TEST:
-               memcpy(buf, bnx2x_tests_str_arr, sizeof(bnx2x_tests_str_arr));
-               break;
-       }
-}
-
-static int bnx2x_get_stats_count(struct net_device *dev)
-{
-       return BNX2X_NUM_STATS;
-}
-
-static void bnx2x_get_ethtool_stats(struct net_device *dev,
-                                   struct ethtool_stats *stats, u64 *buf)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       u32 *hw_stats = (u32 *)bnx2x_sp_check(bp, eth_stats);
-       int i;
-
-       for (i = 0; i < BNX2X_NUM_STATS; i++) {
-               if (bnx2x_stats_len_arr[i] == 0) {
-                       /* skip this counter */
-                       buf[i] = 0;
-                       continue;
-               }
-               if (!hw_stats) {
-                       buf[i] = 0;
-                       continue;
-               }
-               if (bnx2x_stats_len_arr[i] == 4) {
-                       /* 4-byte counter */
-                      buf[i] = (u64) *(hw_stats + bnx2x_stats_offset_arr[i]);
-                       continue;
-               }
-               /* 8-byte counter */
-               buf[i] = HILO_U64(*(hw_stats + bnx2x_stats_offset_arr[i]),
-                                *(hw_stats + bnx2x_stats_offset_arr[i] + 1));
-       }
-}
-
-static int bnx2x_phys_id(struct net_device *dev, u32 data)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       int i;
-
-       if (data == 0)
-               data = 2;
-
-       for (i = 0; i < (data * 2); i++) {
-               if ((i % 2) == 0) {
-                       bnx2x_leds_set(bp, SPEED_1000);
-               } else {
-                       bnx2x_leds_unset(bp);
-               }
-               msleep_interruptible(500);
-               if (signal_pending(current))
-                       break;
-       }
-
-       if (bp->link_up)
-               bnx2x_leds_set(bp, bp->line_speed);
-
-       return 0;
-}
-
-static struct ethtool_ops bnx2x_ethtool_ops = {
-       .get_settings           = bnx2x_get_settings,
-       .set_settings           = bnx2x_set_settings,
-       .get_drvinfo            = bnx2x_get_drvinfo,
-       .get_wol                = bnx2x_get_wol,
-       .set_wol                = bnx2x_set_wol,
-       .get_msglevel           = bnx2x_get_msglevel,
-       .set_msglevel           = bnx2x_set_msglevel,
-       .nway_reset             = bnx2x_nway_reset,
-       .get_link               = ethtool_op_get_link,
-       .get_eeprom_len         = bnx2x_get_eeprom_len,
-       .get_eeprom             = bnx2x_get_eeprom,
-       .set_eeprom             = bnx2x_set_eeprom,
-       .get_coalesce           = bnx2x_get_coalesce,
-       .set_coalesce           = bnx2x_set_coalesce,
-       .get_ringparam          = bnx2x_get_ringparam,
-       .set_ringparam          = bnx2x_set_ringparam,
-       .get_pauseparam         = bnx2x_get_pauseparam,
-       .set_pauseparam         = bnx2x_set_pauseparam,
-       .get_rx_csum            = bnx2x_get_rx_csum,
-       .set_rx_csum            = bnx2x_set_rx_csum,
-       .get_tx_csum            = ethtool_op_get_tx_csum,
-       .set_tx_csum            = ethtool_op_set_tx_csum,
-       .get_sg                 = ethtool_op_get_sg,
-       .set_sg                 = ethtool_op_set_sg,
-       .get_tso                = ethtool_op_get_tso,
-       .set_tso                = bnx2x_set_tso,
-       .self_test_count        = bnx2x_self_test_count,
-       .self_test              = bnx2x_self_test,
-       .get_strings            = bnx2x_get_strings,
-       .phys_id                = bnx2x_phys_id,
-       .get_stats_count        = bnx2x_get_stats_count,
-       .get_ethtool_stats      = bnx2x_get_ethtool_stats
-};
-
-/* end of ethtool_ops */
-
-/****************************************************************************
-* General service functions
-****************************************************************************/
-
-static int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state)
-{
-       u16 pmcsr;
-
-       pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, &pmcsr);
-
-       switch (state) {
-       case PCI_D0:
-               pci_write_config_word(bp->pdev,
-                                     bp->pm_cap + PCI_PM_CTRL,
-                                     ((pmcsr & ~PCI_PM_CTRL_STATE_MASK) |
-                                      PCI_PM_CTRL_PME_STATUS));
-
-               if (pmcsr & PCI_PM_CTRL_STATE_MASK)
-               /* delay required during transition out of D3hot */
-                       msleep(20);
-               break;
-
-       case PCI_D3hot:
-               pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
-               pmcsr |= 3;
-
-               if (bp->wol)
-                       pmcsr |= PCI_PM_CTRL_PME_ENABLE;
-
-               pci_write_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL,
-                                     pmcsr);
-
-               /* No more memory access after this point until
-               * device is brought back to D0.
-               */
-               break;
-
-       default:
-               return -EINVAL;
-       }
-       return 0;
-}
-
-/*
- * net_device service functions
- */
-
-/* called with netif_tx_lock from set_multicast */
-static void bnx2x_set_rx_mode(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       u32 rx_mode = BNX2X_RX_MODE_NORMAL;
-
-       DP(NETIF_MSG_IFUP, "called dev->flags = %x\n", dev->flags);
-
-       if (dev->flags & IFF_PROMISC)
-               rx_mode = BNX2X_RX_MODE_PROMISC;
-
-       else if ((dev->flags & IFF_ALLMULTI) ||
-                (dev->mc_count > BNX2X_MAX_MULTICAST))
-               rx_mode = BNX2X_RX_MODE_ALLMULTI;
-
-       else { /* some multicasts */
-               int i, old, offset;
-               struct dev_mc_list *mclist;
-               struct mac_configuration_cmd *config =
-                                               bnx2x_sp(bp, mcast_config);
-
-               for (i = 0, mclist = dev->mc_list;
-                    mclist && (i < dev->mc_count);
-                    i++, mclist = mclist->next) {
-
-                       config->config_table[i].cam_entry.msb_mac_addr =
-                                       swab16(*(u16 *)&mclist->dmi_addr[0]);
-                       config->config_table[i].cam_entry.middle_mac_addr =
-                                       swab16(*(u16 *)&mclist->dmi_addr[2]);
-                       config->config_table[i].cam_entry.lsb_mac_addr =
-                                       swab16(*(u16 *)&mclist->dmi_addr[4]);
-                       config->config_table[i].cam_entry.flags =
-                                                       cpu_to_le16(bp->port);
-                       config->config_table[i].target_table_entry.flags = 0;
-                       config->config_table[i].target_table_entry.
-                                                               client_id = 0;
-                       config->config_table[i].target_table_entry.
-                                                               vlan_id = 0;
-
-                       DP(NETIF_MSG_IFUP,
-                          "setting MCAST[%d] (%04x:%04x:%04x)\n",
-                          i, config->config_table[i].cam_entry.msb_mac_addr,
-                          config->config_table[i].cam_entry.middle_mac_addr,
-                          config->config_table[i].cam_entry.lsb_mac_addr);
-               }
-               old = config->hdr.length_6b;
-               if (old > i) {
-                       for (; i < old; i++) {
-                               if (CAM_IS_INVALID(config->config_table[i])) {
-                                       i--; /* already invalidated */
-                                       break;
-                               }
-                               /* invalidate */
-                               CAM_INVALIDATE(config->config_table[i]);
-                       }
-               }
-
-               if (CHIP_REV_IS_SLOW(bp))
-                       offset = BNX2X_MAX_EMUL_MULTI*(1 + bp->port);
-               else
-                       offset = BNX2X_MAX_MULTICAST*(1 + bp->port);
-
-               config->hdr.length_6b = i;
-               config->hdr.offset = offset;
-               config->hdr.reserved0 = 0;
-               config->hdr.reserved1 = 0;
-
-               bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
-                             U64_HI(bnx2x_sp_mapping(bp, mcast_config)),
-                             U64_LO(bnx2x_sp_mapping(bp, mcast_config)), 0);
-       }
-
-       bp->rx_mode = rx_mode;
-       bnx2x_set_storm_rx_mode(bp);
-}
-
-static int bnx2x_poll(struct net_device *dev, int *budget)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       struct bnx2x_fastpath *fp = bp->fp;
-       int work_to_do = min(*budget, dev->quota);
-       int work_done = 0;
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               goto out_panic;
-#endif
-
-       prefetch(fp->tx_buf_ring[TX_BD(fp->tx_pkt_cons)].skb);
-       prefetch(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb);
-       prefetch((char *)(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb) + 256);
-
-       bnx2x_update_fpsb_idx(fp);
-
-       if (le16_to_cpu(*fp->tx_cons_sb) != fp->tx_pkt_cons)
-               bnx2x_tx_int(fp, work_to_do);
-
-
-       if (le16_to_cpu(*fp->rx_cons_sb) != fp->rx_comp_cons)
-               work_done = bnx2x_rx_int(fp, work_to_do);
-
-       *budget -= work_done;
-       dev->quota -= work_done;
-
-       rmb(); /* bnx2x_has_work() reads the status block */
-
-       /* must not complete if we consumed full budget */
-       if ((work_done == 0) && !bnx2x_has_work(fp)) {
-
-#ifdef BNX2X_STOP_ON_ERROR
-out_panic:
-#endif
-               netif_rx_complete(bp->dev);
-
-               bnx2x_ack_sb(bp, fp->index, USTORM_ID,
-                            le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1);
-               bnx2x_ack_sb(bp, fp->index, CSTORM_ID,
-                            le16_to_cpu(fp->fp_c_idx), IGU_INT_ENABLE, 1);
-               return 0;
-       }
-
-       return 1;
-}
-
-/* Called with netif_tx_lock.
- * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call
- * netif_wake_queue().
- */
-static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-       struct bnx2x_fastpath *fp;
-       struct sw_tx_bd *tx_buf;
-       struct eth_tx_bd *tx_bd;
-       struct eth_tx_parse_bd *pbd = NULL;
-       u16 pkt_prod, bd_prod;
-       int nbd, fp_index = 0;
-       dma_addr_t mapping;
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (unlikely(bp->panic))
-               return NETDEV_TX_BUSY;
-#endif
-
-       fp_index = smp_processor_id() % (bp->num_queues);
-
-       fp = &bp->fp[fp_index];
-       if (unlikely(bnx2x_tx_avail(bp->fp) <
-                                       (skb_shinfo(skb)->nr_frags + 3))) {
-               bp->slowpath->eth_stats.driver_xoff++,
-               netif_stop_queue(dev);
-               BNX2X_ERR("BUG! Tx ring full when queue awake!\n");
-               return NETDEV_TX_BUSY;
-       }
-
-       /*
-       This is a bit ugly. First we use one BD which we mark as start,
-       then for TSO or xsum we have a parsing info BD,
-       and only then we have the rest of the TSO bds.
-       (don't forget to mark the last one as last,
-       and to unmap only AFTER you write to the BD ...)
-       I would like to thank DovH for this mess.
-       */
-
-       pkt_prod = fp->tx_pkt_prod++;
-       bd_prod = fp->tx_bd_prod;
-       bd_prod = TX_BD(bd_prod);
-
-       /* get a tx_buff and first bd */
-       tx_buf = &fp->tx_buf_ring[TX_BD(pkt_prod)];
-       tx_bd = &fp->tx_desc_ring[bd_prod];
-
-       tx_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD;
-       tx_bd->general_data = (UNICAST_ADDRESS <<
-                              ETH_TX_BD_ETH_ADDR_TYPE_SHIFT);
-       tx_bd->general_data |= 1; /* header nbd */
-
-       /* remember the first bd of the packet */
-       tx_buf->first_bd = bd_prod;
-
-       DP(NETIF_MSG_TX_QUEUED,
-          "sending pkt %u @%p  next_idx %u  bd %u @%p\n",
-          pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd);
-
-       if (skb->ip_summed == CHECKSUM_PARTIAL) {
-               struct iphdr *iph = ip_hdr(skb);
-               u8 len;
-
-               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_IP_CSUM;
-
-               /* turn on parsing and get a bd */
-               bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
-               pbd = (void *)&fp->tx_desc_ring[bd_prod];
-               len = ((u8 *)iph - (u8 *)skb->data) / 2;
-
-               /* for now NS flag is not used in Linux */
-               pbd->global_data = (len |
-                                   ((skb->protocol == ntohs(ETH_P_8021Q)) <<
-                                    ETH_TX_PARSE_BD_LLC_SNAP_EN_SHIFT));
-               pbd->ip_hlen = ip_hdrlen(skb) / 2;
-               pbd->total_hlen = cpu_to_le16(len + pbd->ip_hlen);
-               if (iph->protocol == IPPROTO_TCP) {
-                       struct tcphdr *th = tcp_hdr(skb);
-
-                       tx_bd->bd_flags.as_bitfield |=
-                                               ETH_TX_BD_FLAGS_TCP_CSUM;
-                       pbd->tcp_flags = pbd_tcp_flags(skb);
-                       pbd->total_hlen += cpu_to_le16(tcp_hdrlen(skb) / 2);
-                       pbd->tcp_pseudo_csum = swab16(th->check);
-
-               } else if (iph->protocol == IPPROTO_UDP) {
-                       struct udphdr *uh = udp_hdr(skb);
-
-                       tx_bd->bd_flags.as_bitfield |=
-                                               ETH_TX_BD_FLAGS_TCP_CSUM;
-                       pbd->total_hlen += cpu_to_le16(4);
-                       pbd->global_data |= ETH_TX_PARSE_BD_CS_ANY_FLG;
-                       pbd->cs_offset = 5; /* 10 >> 1 */
-                       pbd->tcp_pseudo_csum = 0;
-                       /* HW bug: we need to subtract 10 bytes before the
-                        * UDP header from the csum
-                        */
-                       uh->check = (u16) ~csum_fold(csum_sub(uh->check,
-                               csum_partial(((u8 *)(uh)-10), 10, 0)));
-               }
-       }
-
-       if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) {
-               tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb));
-               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG;
-       } else {
-               tx_bd->vlan = cpu_to_le16(pkt_prod);
-       }
-
-       mapping = pci_map_single(bp->pdev, skb->data,
-                                skb->len, PCI_DMA_TODEVICE);
-
-       tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
-       tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
-       nbd = skb_shinfo(skb)->nr_frags + ((pbd == NULL)? 1 : 2);
-       tx_bd->nbd = cpu_to_le16(nbd);
-       tx_bd->nbytes = cpu_to_le16(skb_headlen(skb));
-
-       DP(NETIF_MSG_TX_QUEUED, "first bd @%p  addr (%x:%x)  nbd %d"
-          "  nbytes %d  flags %x  vlan %u\n",
-          tx_bd, tx_bd->addr_hi, tx_bd->addr_lo, tx_bd->nbd,
-          tx_bd->nbytes, tx_bd->bd_flags.as_bitfield, tx_bd->vlan);
-
-       if (skb_shinfo(skb)->gso_size &&
-           (skb->len > (bp->dev->mtu + ETH_HLEN))) {
-               int hlen = 2 * le16_to_cpu(pbd->total_hlen);
-
-               DP(NETIF_MSG_TX_QUEUED,
-                  "TSO packet len %d  hlen %d  total len %d  tso size %d\n",
-                  skb->len, hlen, skb_headlen(skb),
-                  skb_shinfo(skb)->gso_size);
-
-               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_SW_LSO;
-
-               if (tx_bd->nbytes > cpu_to_le16(hlen)) {
-                       /* we split the first bd into headers and data bds
-                        * to ease the pain of our fellow micocode engineers
-                        * we use one mapping for both bds
-                        * So far this has only been observed to happen
-                        * in Other Operating Systems(TM)
-                        */
-
-                       /* first fix first bd */
-                       nbd++;
-                       tx_bd->nbd = cpu_to_le16(nbd);
-                       tx_bd->nbytes = cpu_to_le16(hlen);
-
-                       /* we only print this as an error
-                        * because we don't think this will ever happen.
-                        */
-                       BNX2X_ERR("TSO split header size is %d (%x:%x)"
-                                 "  nbd %d\n", tx_bd->nbytes, tx_bd->addr_hi,
-                                 tx_bd->addr_lo, tx_bd->nbd);
-
-                       /* now get a new data bd
-                        * (after the pbd) and fill it */
-                       bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
-                       tx_bd = &fp->tx_desc_ring[bd_prod];
-
-                       tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
-                       tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping) + hlen);
-                       tx_bd->nbytes = cpu_to_le16(skb_headlen(skb) - hlen);
-                       tx_bd->vlan = cpu_to_le16(pkt_prod);
-                       /* this marks the bd
-                        * as one that has no individual mapping
-                        * the FW ignores this flag in a bd not marked start
-                        */
-                       tx_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_SW_LSO;
-                       DP(NETIF_MSG_TX_QUEUED,
-                          "TSO split data size is %d (%x:%x)\n",
-                          tx_bd->nbytes, tx_bd->addr_hi, tx_bd->addr_lo);
-               }
-
-               if (!pbd) {
-                       /* supposed to be unreached
-                        * (and therefore not handled properly...)
-                        */
-                       BNX2X_ERR("LSO with no PBD\n");
-                       BUG();
-               }
-
-               pbd->lso_mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
-               pbd->tcp_send_seq = swab32(tcp_hdr(skb)->seq);
-               pbd->ip_id = swab16(ip_hdr(skb)->id);
-               pbd->tcp_pseudo_csum =
-                               swab16(~csum_tcpudp_magic(ip_hdr(skb)->saddr,
-                                                         ip_hdr(skb)->daddr,
-                                                         0, IPPROTO_TCP, 0));
-               pbd->global_data |= ETH_TX_PARSE_BD_PSEUDO_CS_WITHOUT_LEN;
-       }
-
-       {
-               int i;
-
-               for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
-                       skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
-
-                       bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
-                       tx_bd = &fp->tx_desc_ring[bd_prod];
-
-                       mapping = pci_map_page(bp->pdev, frag->page,
-                                              frag->page_offset,
-                                              frag->size, PCI_DMA_TODEVICE);
-
-                       tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
-                       tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
-                       tx_bd->nbytes = cpu_to_le16(frag->size);
-                       tx_bd->vlan = cpu_to_le16(pkt_prod);
-                       tx_bd->bd_flags.as_bitfield = 0;
-                       DP(NETIF_MSG_TX_QUEUED, "frag %d  bd @%p"
-                          "  addr (%x:%x)  nbytes %d  flags %x\n",
-                          i, tx_bd, tx_bd->addr_hi, tx_bd->addr_lo,
-                          tx_bd->nbytes, tx_bd->bd_flags.as_bitfield);
-               } /* for */
-       }
-
-       /* now at last mark the bd as the last bd */
-       tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_END_BD;
-
-       DP(NETIF_MSG_TX_QUEUED, "last bd @%p  flags %x\n",
-          tx_bd, tx_bd->bd_flags.as_bitfield);
-
-       tx_buf->skb = skb;
-
-       bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
-
-       /* now send a tx doorbell, counting the next bd
-        * if the packet contains or ends with it
-        */
-       if (TX_BD_POFF(bd_prod) < nbd)
-               nbd++;
-
-       if (pbd)
-               DP(NETIF_MSG_TX_QUEUED,
-                  "PBD @%p  ip_data %x  ip_hlen %u  ip_id %u  lso_mss %u"
-                  "  tcp_flags %x  xsum %x  seq %u  hlen %u\n",
-                  pbd, pbd->global_data, pbd->ip_hlen, pbd->ip_id,
-                  pbd->lso_mss, pbd->tcp_flags, pbd->tcp_pseudo_csum,
-                  pbd->tcp_send_seq, pbd->total_hlen);
-
-       DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %u  bd %d\n", nbd, bd_prod);
-
-       fp->hw_tx_prods->bds_prod =
-               cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd);
-       mb(); /* FW restriction: must not reorder writing nbd and packets */
-       fp->hw_tx_prods->packets_prod =
-               cpu_to_le32(le32_to_cpu(fp->hw_tx_prods->packets_prod) + 1);
-       DOORBELL(bp, fp_index, 0);
-
-       mmiowb();
-
-       fp->tx_bd_prod = bd_prod;
-       dev->trans_start = jiffies;
-
-       if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) {
-               netif_stop_queue(dev);
-               bp->slowpath->eth_stats.driver_xoff++;
-               if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3)
-                       netif_wake_queue(dev);
-       }
-       fp->tx_pkt++;
-
-       return NETDEV_TX_OK;
-}
-
-static struct net_device_stats *bnx2x_get_stats(struct net_device *dev)
-{
-       return &((struct bnx2x *)dev->priv)->net_stats;
-}
-
-/* Called with rtnl_lock */
-static int bnx2x_open(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       bnx2x_set_power_state(bp, PCI_D0);
-
-       return bnx2x_nic_load(bp, 1);
-}
-
-/* Called with rtnl_lock */
-static int bnx2x_close(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       /* Unload the driver, release IRQs */
-       bnx2x_nic_unload(bp, 1);
-
-       if (!CHIP_REV_IS_SLOW(bp))
-               bnx2x_set_power_state(bp, PCI_D3hot);
-
-       return 0;
-}
-
-/* Called with rtnl_lock */
-static int bnx2x_change_mac_addr(struct net_device *dev, void *p)
-{
-       struct sockaddr *addr = p;
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (!is_valid_ether_addr(addr->sa_data))
-               return -EINVAL;
-
-       memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
-       if (netif_running(dev))
-               bnx2x_set_mac_addr(bp);
-
-       return 0;
-}
-
-/* Called with rtnl_lock */
-static int bnx2x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-{
-       struct mii_ioctl_data *data = if_mii(ifr);
-       struct bnx2x *bp = netdev_priv(dev);
-       int err;
-
-       switch (cmd) {
-       case SIOCGMIIPHY:
-               data->phy_id = bp->phy_addr;
-
-               /* fallthrough */
-       case SIOCGMIIREG: {
-               u32 mii_regval;
-
-               spin_lock_bh(&bp->phy_lock);
-               if (bp->state == BNX2X_STATE_OPEN) {
-                       err = bnx2x_mdio22_read(bp, data->reg_num & 0x1f,
-                                               &mii_regval);
-
-                       data->val_out = mii_regval;
-               } else {
-                       err = -EAGAIN;
-               }
-               spin_unlock_bh(&bp->phy_lock);
-               return err;
-       }
-
-       case SIOCSMIIREG:
-               if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-
-               spin_lock_bh(&bp->phy_lock);
-               if (bp->state == BNX2X_STATE_OPEN) {
-                       err = bnx2x_mdio22_write(bp, data->reg_num & 0x1f,
-                                                data->val_in);
-               } else {
-                       err = -EAGAIN;
-               }
-               spin_unlock_bh(&bp->phy_lock);
-               return err;
-
-       default:
-               /* do nothing */
-               break;
-       }
-
-       return -EOPNOTSUPP;
-}
-
-/* Called with rtnl_lock */
-static int bnx2x_change_mtu(struct net_device *dev, int new_mtu)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if ((new_mtu > ETH_MAX_JUMBO_PACKET_SIZE) ||
-           ((new_mtu + ETH_HLEN) < ETH_MIN_PACKET_SIZE))
-               return -EINVAL;
-
-       /* This does not race with packet allocation
-        * because the actual alloc size is
-        * only updated as part of load
-        */
-       dev->mtu = new_mtu;
-
-       if (netif_running(dev)) {
-               bnx2x_nic_unload(bp, 0);
-               bnx2x_nic_load(bp, 0);
-       }
-       return 0;
-}
-
-static void bnx2x_tx_timeout(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-#ifdef BNX2X_STOP_ON_ERROR
-       if (!bp->panic)
-               bnx2x_panic();
-#endif
-       /* This allows the netif to be shutdown gracefully before resetting */
-       schedule_work(&bp->reset_task);
-}
-
-#ifdef BCM_VLAN
-/* Called with rtnl_lock */
-static void bnx2x_vlan_rx_register(struct net_device *dev,
-                                  struct vlan_group *vlgrp)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       bp->vlgrp = vlgrp;
-       if (netif_running(dev))
-               bnx2x_set_rx_mode(dev);
-}
-
-static void bnx2x_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       if (bp->vlgrp)
-               bp->vlgrp->vlan_devices[vid] = NULL;
-
-       if (netif_running(dev))
-               bnx2x_set_client_config(bp);
-}
-
-
-#endif
-
-#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER)
-static void poll_bnx2x(struct net_device *dev)
-{
-       struct bnx2x *bp = netdev_priv(dev);
-
-       disable_irq(bp->pdev->irq);
-       bnx2x_interrupt(bp->pdev->irq, dev, NULL);
-       enable_irq(bp->pdev->irq);
-}
-#endif
-
-static void bnx2x_reset_task(void *data)
-{
-       struct bnx2x *bp = data;
-
-#ifdef BNX2X_STOP_ON_ERROR
-       BNX2X_ERR("reset task called but STOP_ON_ERROR defined"
-                 " so reset not done to allow debug dump,\n"
-        KERN_ERR " you will need to reboot when done\n");
-       return;
-#endif
-
-       if (!netif_running(bp->dev))
-               return;
-
-       rtnl_lock();
-
-       if (bp->state != BNX2X_STATE_OPEN) {
-               DP(NETIF_MSG_TX_ERR, "state is %x, returning\n", bp->state);
-               goto reset_task_exit;
-       }
-
-       bnx2x_nic_unload(bp, 0);
-       bnx2x_nic_load(bp, 0);
-
-reset_task_exit:
-       rtnl_unlock();
-}
-
-static int __devinit bnx2x_init_board(struct pci_dev *pdev,
-                                     struct net_device *dev)
-{
-       struct bnx2x *bp;
-       int rc;
-
-       SET_NETDEV_DEV(dev, &pdev->dev);
-       bp = netdev_priv(dev);
-
-       bp->flags = 0;
-       bp->port = PCI_FUNC(pdev->devfn);
-
-       rc = pci_enable_device(pdev);
-       if (rc) {
-               printk(KERN_ERR PFX "Cannot enable PCI device, aborting\n");
-               goto err_out;
-       }
-
-       if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
-               printk(KERN_ERR PFX "Cannot find PCI device base address,"
-                      " aborting\n");
-               rc = -ENODEV;
-               goto err_out_disable;
-       }
-
-       if (!(pci_resource_flags(pdev, 2) & IORESOURCE_MEM)) {
-               printk(KERN_ERR PFX "Cannot find second PCI device"
-                      " base address, aborting\n");
-               rc = -ENODEV;
-               goto err_out_disable;
-       }
-
-       rc = pci_request_regions(pdev, DRV_MODULE_NAME);
-       if (rc) {
-               printk(KERN_ERR PFX "Cannot obtain PCI resources,"
-                      " aborting\n");
-               goto err_out_disable;
-       }
-
-       pci_set_master(pdev);
-
-       bp->pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM);
-       if (bp->pm_cap == 0) {
-               printk(KERN_ERR PFX "Cannot find power management"
-                      " capability, aborting\n");
-               rc = -EIO;
-               goto err_out_release;
-       }
-
-       bp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
-       if (bp->pcie_cap == 0) {
-               printk(KERN_ERR PFX "Cannot find PCI Express capability,"
-                      " aborting\n");
-               rc = -EIO;
-               goto err_out_release;
-       }
-
-       if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) == 0) {
-               bp->flags |= USING_DAC_FLAG;
-               if (pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK) != 0) {
-                       printk(KERN_ERR PFX "pci_set_consistent_dma_mask"
-                              " failed, aborting\n");
-                       rc = -EIO;
-                       goto err_out_release;
-               }
-
-       } else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) {
-               printk(KERN_ERR PFX "System does not support DMA,"
-                      " aborting\n");
-               rc = -EIO;
-               goto err_out_release;
-       }
-
-       bp->dev = dev;
-       bp->pdev = pdev;
-
-       spin_lock_init(&bp->phy_lock);
-
-       INIT_WORK(&bp->reset_task, bnx2x_reset_task, bp);
-       INIT_WORK(&bp->sp_task, bnx2x_sp_task, bp);
-
-       dev->base_addr = pci_resource_start(pdev, 0);
-
-       dev->irq = pdev->irq;
-
-       bp->regview = ioremap_nocache(dev->base_addr,
-                                     pci_resource_len(pdev, 0));
-       if (!bp->regview) {
-               printk(KERN_ERR PFX "Cannot map register space, aborting\n");
-               rc = -ENOMEM;
-               goto err_out_release;
-       }
-
-       bp->doorbells = ioremap_nocache(pci_resource_start(pdev , 2),
-                                       pci_resource_len(pdev, 2));
-       if (!bp->doorbells) {
-               printk(KERN_ERR PFX "Cannot map doorbell space, aborting\n");
-               rc = -ENOMEM;
-               goto err_out_unmap;
-       }
-
-       bnx2x_set_power_state(bp, PCI_D0);
-
-       bnx2x_get_hwinfo(bp);
-
-       if (CHIP_REV(bp) == CHIP_REV_FPGA) {
-               printk(KERN_ERR PFX "FPGA detected. MCP disabled,"
-                      " will only init first device\n");
-               onefunc = 1;
-               nomcp = 1;
-       }
-
-       if (nomcp) {
-               printk(KERN_ERR PFX "MCP disabled, will only"
-                      " init first device\n");
-               onefunc = 1;
-       }
-
-       if (onefunc && bp->port) {
-               printk(KERN_ERR PFX "Second device disabled, exiting\n");
-               rc = -ENODEV;
-               goto err_out_unmap;
-       }
-
-       bp->tx_ring_size = MAX_TX_AVAIL;
-       bp->rx_ring_size = MAX_RX_AVAIL;
-
-       bp->rx_csum = 1;
-
-       bp->rx_offset = 0;
-
-       bp->tx_quick_cons_trip_int = 0xff;
-       bp->tx_quick_cons_trip = 0xff;
-       bp->tx_ticks_int = 50;
-       bp->tx_ticks = 50;
-
-       bp->rx_quick_cons_trip_int = 0xff;
-       bp->rx_quick_cons_trip = 0xff;
-       bp->rx_ticks_int = 25;
-       bp->rx_ticks = 25;
-
-       bp->stats_ticks = 1000000 & 0xffff00;
-
-       bp->timer_interval = HZ;
-       bp->current_interval = (poll ? poll : HZ);
-
-       init_timer(&bp->timer);
-       bp->timer.expires = jiffies + bp->current_interval;
-       bp->timer.data = (unsigned long) bp;
-       bp->timer.function = bnx2x_timer;
-
-       return 0;
-
-err_out_unmap:
-       if (bp->regview) {
-               iounmap(bp->regview);
-               bp->regview = NULL;
-       }
-
-       if (bp->doorbells) {
-               iounmap(bp->doorbells);
-               bp->doorbells = NULL;
-       }
-
-err_out_release:
-       pci_release_regions(pdev);
-
-err_out_disable:
-       pci_disable_device(pdev);
-       pci_set_drvdata(pdev, NULL);
-
-err_out:
-       return rc;
-}
-
-static int __devinit bnx2x_get_pcie_width(struct bnx2x *bp)
-{
-       u32 val = REG_RD(bp, PCICFG_OFFSET + PCICFG_LINK_CONTROL);
-
-       val = (val & PCICFG_LINK_WIDTH) >> PCICFG_LINK_WIDTH_SHIFT;
-       return val;
-}
-
-/* return value of 1=2.5GHz 2=5GHz */
-static int __devinit bnx2x_get_pcie_speed(struct bnx2x *bp)
-{
-       u32 val = REG_RD(bp, PCICFG_OFFSET + PCICFG_LINK_CONTROL);
-
-       val = (val & PCICFG_LINK_SPEED) >> PCICFG_LINK_SPEED_SHIFT;
-       return val;
-}
-
-static int __devinit bnx2x_init_one(struct pci_dev *pdev,
-                                   const struct pci_device_id *ent)
-{
-       static int version_printed;
-       struct net_device *dev = NULL;
-       struct bnx2x *bp;
-       int rc, i;
-       int port = PCI_FUNC(pdev->devfn);
-
-       if (version_printed++ == 0)
-               printk(KERN_INFO "%s", version);
-
-       /* dev zeroed in init_etherdev */
-       dev = alloc_etherdev(sizeof(*bp));
-       if (!dev)
-               return -ENOMEM;
-
-       netif_carrier_off(dev);
-
-       bp = netdev_priv(dev);
-       bp->msglevel = debug;
-
-       if (port && onefunc) {
-               printk(KERN_ERR PFX "second function disabled. exiting\n");
-               free_netdev(dev);
-               return 0;
-       }
-
-       rc = bnx2x_init_board(pdev, dev);
-       if (rc < 0) {
-               free_netdev(dev);
-               return rc;
-       }
-
-       dev->poll = bnx2x_poll;
-       dev->weight = 128*4;
-       
-       dev->hard_start_xmit = bnx2x_start_xmit;
-       dev->watchdog_timeo = TX_TIMEOUT;
-
-       dev->get_stats = bnx2x_get_stats;
-       dev->ethtool_ops = &bnx2x_ethtool_ops;
-       dev->open = bnx2x_open;
-       dev->stop = bnx2x_close;
-       dev->set_multicast_list = bnx2x_set_rx_mode;
-       dev->set_mac_address = bnx2x_change_mac_addr;
-       dev->do_ioctl = bnx2x_ioctl;
-       dev->change_mtu = bnx2x_change_mtu;
-       dev->tx_timeout = bnx2x_tx_timeout;
-#ifdef BCM_VLAN
-       dev->vlan_rx_register = bnx2x_vlan_rx_register;
-       dev->vlan_rx_kill_vid = bnx2x_vlan_rx_kill_vid;
-#endif
-#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER)
-       dev->poll_controller = poll_bnx2x;
-#endif
-       dev->features |= NETIF_F_SG;
-       if (bp->flags & USING_DAC_FLAG)
-               dev->features |= NETIF_F_HIGHDMA;
-       dev->features |= NETIF_F_IP_CSUM;
-#ifdef BCM_VLAN
-       dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-#endif
-       dev->features |= NETIF_F_TSO | NETIF_F_TSO_ECN;
-
-       rc = register_netdev(dev);
-       if (rc) {
-               dev_err(&pdev->dev, "Cannot register net device\n");
-               if (bp->regview)
-                       iounmap(bp->regview);
-               if (bp->doorbells)
-                       iounmap(bp->doorbells);
-               pci_release_regions(pdev);
-               pci_disable_device(pdev);
-               pci_set_drvdata(pdev, NULL);
-               free_netdev(dev);
-               return rc;
-       }
-
-       pci_set_drvdata(pdev, dev);
-
-       bp->name = board_info[ent->driver_data].name;
-       printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx,"
-              " IRQ %d, ", dev->name, bp->name,
-              ((CHIP_ID(bp) & 0xf000) >> 12) + 'A',
-              ((CHIP_ID(bp) & 0x0ff0) >> 4),
-              bnx2x_get_pcie_width(bp),
-              (bnx2x_get_pcie_speed(bp) == 2) ? "5GHz (Gen2)" : "2.5GHz",
-              dev->base_addr, bp->pdev->irq);
-
-       printk("node addr ");
-        for (i = 0; i < 6; i++)
-                printk("%2.2x", dev->dev_addr[i]);
-       printk("\n");
-
-       return 0;
-}
-
-static void __devexit bnx2x_remove_one(struct pci_dev *pdev)
-{
-       struct net_device *dev = pci_get_drvdata(pdev);
-       struct bnx2x *bp;
-
-       if (!dev) {
-               /* we get here if init_one() fails */
-               printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n");
-               return;
-       }
-
-       bp = netdev_priv(dev);
-
-       unregister_netdev(dev);
-
-       if (bp->regview)
-               iounmap(bp->regview);
-
-       if (bp->doorbells)
-               iounmap(bp->doorbells);
-
-       free_netdev(dev);
-       pci_release_regions(pdev);
-       pci_disable_device(pdev);
-       pci_set_drvdata(pdev, NULL);
-}
-
-static int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
-{
-       struct net_device *dev = pci_get_drvdata(pdev);
-       struct bnx2x *bp;
-
-       if (!dev)
-               return 0;
-
-       if (!netif_running(dev))
-               return 0;
-
-       bp = netdev_priv(dev);
-
-       bnx2x_nic_unload(bp, 0);
-
-       netif_device_detach(dev);
-
-       pci_save_state(pdev);
-       bnx2x_set_power_state(bp, pci_choose_state(pdev, state));
-
-       return 0;
-}
-
-static int bnx2x_resume(struct pci_dev *pdev)
-{
-       struct net_device *dev = pci_get_drvdata(pdev);
-       struct bnx2x *bp;
-       int rc;
-
-       if (!dev) {
-               printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n");
-               return -ENODEV;
-       }
-
-       if (!netif_running(dev))
-               return 0;
-
-       bp = netdev_priv(dev);
-
-       pci_restore_state(pdev);
-       bnx2x_set_power_state(bp, PCI_D0);
-       netif_device_attach(dev);
-
-       rc = bnx2x_nic_load(bp, 0);
-       if (rc)
-               return rc;
-
-       return 0;
-}
-
-static struct pci_driver bnx2x_pci_driver = {
-       .name       = DRV_MODULE_NAME,
-       .id_table   = bnx2x_pci_tbl,
-       .probe      = bnx2x_init_one,
-       .remove     = __devexit_p(bnx2x_remove_one),
-       .suspend    = bnx2x_suspend,
-       .resume     = bnx2x_resume,
-};
-
-static int __init bnx2x_init(void)
-{
-       return pci_register_driver(&bnx2x_pci_driver);
-}
-
-static void __exit bnx2x_cleanup(void)
-{
-       pci_unregister_driver(&bnx2x_pci_driver);
-}
-
-module_init(bnx2x_init);
-module_exit(bnx2x_cleanup);
-
index bc8548949e533925e0199722af02e43ead896e18..d0841cff4134ce1deefd4a0b78c916cbfd488ec0 100644 (file)
 #ifndef BNX2X_H
 #define BNX2X_H
 
+/* compilation time flags */
+
+/* define this to make the driver freeze on error to allow getting debug info
+ * (you will need to reboot afterwards) */
+/* #define BNX2X_STOP_ON_ERROR */
+
+#if (LINUX_VERSION_CODE >= 0x020610)
+#define BCM_CNIC
+#endif
+
+#if (LINUX_VERSION_CODE >= 0x020618) || defined(__VMKLNX__) /* BNX2X_UPSTREAM */
+#define BNX2X_NEW_NAPI
+#endif
+
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+#include "bnx2x_compat.h"
+#endif
+#ifdef BCM_CNIC
+#include "cnic_drv.h"
+#endif
+#include "bnx2x_reg.h"
+#include "bnx2x_fw_defs.h"
+#include "bnx2x_hsi.h"
+#include "bnx2x_link.h"
+
 /* error/debug prints */
 
-#define DRV_MODULE_NAME        "bnx2x"
-#define PFX DRV_MODULE_NAME     ": "
+#define DRV_MODULE_NAME                "bnx2x"
+#define PFX DRV_MODULE_NAME    ": "
 
 /* for messages that are currently off */
-#define BNX2X_MSG_OFF                  0
-#define BNX2X_MSG_MCP                  0x10000 /* was: NETIF_MSG_HW */
-#define BNX2X_MSG_STATS                0x20000 /* was: NETIF_MSG_TIMER */
-#define NETIF_MSG_NVM                  0x40000 /* was: NETIF_MSG_HW */
-#define NETIF_MSG_DMAE                 0x80000 /* was: NETIF_MSG_HW */
+#define BNX2X_MSG_OFF                  0
+#define BNX2X_MSG_MCP                  0x010000 /* was: NETIF_MSG_HW */
+#define BNX2X_MSG_STATS                        0x020000 /* was: NETIF_MSG_TIMER */
+#define BNX2X_MSG_NVM                  0x040000 /* was: NETIF_MSG_HW */
+#define BNX2X_MSG_DMAE                 0x080000 /* was: NETIF_MSG_HW */
 #define BNX2X_MSG_SP                   0x100000 /* was: NETIF_MSG_INTR */
 #define BNX2X_MSG_FP                   0x200000 /* was: NETIF_MSG_INTR */
 
-#define DP_LEVEL                       KERN_NOTICE     /* was: KERN_DEBUG */
+#define DP_LEVEL                       KERN_NOTICE     /* was: KERN_DEBUG */
 
 /* regular debug print */
 #define DP(__mask, __fmt, __args...) do { \
        if (bp->msglevel & (__mask)) \
-               printk(DP_LEVEL "[%s:%d(%s)]" __fmt, __FUNCTION__, \
-               __LINE__, bp->dev?(bp->dev->name):"?", ##__args); \
+               printk(DP_LEVEL "[%s:%d(%s)]" __fmt, __func__, __LINE__, \
+                       bp->dev ? (bp->dev->name) : "?", ##__args); \
        } while (0)
 
-/* for errors (never masked) */
-#define BNX2X_ERR(__fmt, __args...) do { \
-       printk(KERN_ERR "[%s:%d(%s)]" __fmt, __FUNCTION__, \
-               __LINE__, bp->dev?(bp->dev->name):"?", ##__args); \
+/* errors debug print */
+#define BNX2X_DBG_ERR(__fmt, __args...) do { \
+       if (bp->msglevel & NETIF_MSG_PROBE) \
+               printk(KERN_ERR "[%s:%d(%s)]" __fmt, __func__, __LINE__, \
+                       bp->dev ? (bp->dev->name) : "?", ##__args); \
        } while (0)
 
-/* for logging (never masked) */
-#define BNX2X_LOG(__fmt, __args...) do { \
-       printk(KERN_NOTICE "[%s:%d(%s)]" __fmt, __FUNCTION__, \
-               __LINE__, bp->dev?(bp->dev->name):"?", ##__args); \
+/* for errors (never masked) */
+#define BNX2X_ERR(__fmt, __args...) do { \
+       printk(KERN_ERR "[%s:%d(%s)]" __fmt, __func__, __LINE__, \
+               bp->dev ? (bp->dev->name) : "?", ##__args); \
        } while (0)
 
 /* before we have a dev->name use dev_info() */
@@ -60,7 +86,7 @@
 #define bnx2x_panic() do { \
                bp->panic = 1; \
                BNX2X_ERR("driver assert\n"); \
-               bnx2x_disable_int(bp); \
+               bnx2x_int_disable(bp); \
                bnx2x_panic_dump(bp); \
        } while (0)
 #else
 #endif
 
 
-#define U64_LO(x)                      (((u64)x) & 0xffffffff)
-#define U64_HI(x)                      (((u64)x) >> 32)
-#define HILO_U64(hi, lo)               (((u64)hi << 32) + lo)
+#ifdef NETIF_F_HW_VLAN_TX
+#define BCM_VLAN                       1
+#endif
+
 
+#define U64_LO(x)                      (u32)(((u64)(x)) & 0xffffffff)
+#define U64_HI(x)                      (u32)(((u64)(x)) >> 32)
+#define HILO_U64(hi, lo)               ((((u64)(hi)) << 32) + (lo))
 
-#define REG_ADDR(bp, offset)           (bp->regview + offset)
 
-#define REG_RD(bp, offset)             readl(REG_ADDR(bp, offset))
-#define REG_RD8(bp, offset)            readb(REG_ADDR(bp, offset))
-#define REG_RD64(bp, offset)           readq(REG_ADDR(bp, offset))
+#define REG_ADDR(bp, offset)           (bp->regview + offset)
 
-#define REG_WR(bp, offset, val)        writel((u32)val, REG_ADDR(bp, offset))
+#define REG_RD(bp, offset)             readl(REG_ADDR(bp, offset))
+#define REG_RD8(bp, offset)            readb(REG_ADDR(bp, offset))
+#define REG_RD64(bp, offset)           readq(REG_ADDR(bp, offset))
+
+#define REG_WR(bp, offset, val)                writel((u32)val, REG_ADDR(bp, offset))
 #define REG_WR8(bp, offset, val)       writeb((u8)val, REG_ADDR(bp, offset))
-#define REG_WR16(bp, offset, val)       writew((u16)val, REG_ADDR(bp, offset))
-#define REG_WR32(bp, offset, val)       REG_WR(bp, offset, val)
+#define REG_WR16(bp, offset, val)      writew((u16)val, REG_ADDR(bp, offset))
+#define REG_WR32(bp, offset, val)      REG_WR(bp, offset, val)
 
-#define REG_RD_IND(bp, offset)         bnx2x_reg_rd_ind(bp, offset)
-#define REG_WR_IND(bp, offset, val)     bnx2x_reg_wr_ind(bp, offset, val)
+#define REG_RD_IND(bp, offset)         bnx2x_reg_rd_ind(bp, offset)
+#define REG_WR_IND(bp, offset, val)    bnx2x_reg_wr_ind(bp, offset, val)
 
-#define REG_WR_DMAE(bp, offset, val, len32) \
+#define REG_RD_DMAE(bp, offset, valp, len32) \
        do { \
-               memcpy(bnx2x_sp(bp, wb_data[0]), val, len32 * 4); \
+               bnx2x_read_dmae(bp, offset, len32);\
+               memcpy(valp, bnx2x_sp(bp, wb_data[0]), len32 * 4); \
+       } while (0)
+
+#define REG_WR_DMAE(bp, offset, valp, len32) \
+       do { \
+               memcpy(bnx2x_sp(bp, wb_data[0]), valp, len32 * 4); \
                bnx2x_write_dmae(bp, bnx2x_sp_mapping(bp, wb_data), \
                                 offset, len32); \
        } while (0)
 
-#define SHMEM_RD(bp, type) \
-       REG_RD(bp, bp->shmem_base + offsetof(struct shmem_region, type))
-#define SHMEM_WR(bp, type, val) \
-       REG_WR(bp, bp->shmem_base + offsetof(struct shmem_region, type), val)
-
-#define NIG_WR(reg, val)       REG_WR(bp, reg, val)
-#define EMAC_WR(reg, val)       REG_WR(bp, emac_base + reg, val)
-#define BMAC_WR(reg, val)       REG_WR(bp, GRCBASE_NIG + bmac_addr + reg, val)
+#define SHMEM_ADDR(bp, field)          (bp->common.shmem_base + \
+                                        offsetof(struct shmem_region, field))
+#define SHMEM_RD(bp, field)            REG_RD(bp, SHMEM_ADDR(bp, field))
+#define SHMEM_WR(bp, field, val)       REG_WR(bp, SHMEM_ADDR(bp, field), val)
 
+#define EMAC_RD(bp, reg)               REG_RD(bp, emac_base + reg)
+#define EMAC_WR(bp, reg, val)          REG_WR(bp, emac_base + reg, val)
 
-#define for_each_queue(bp, var) for (var = 0; var < bp->num_queues; var++)
 
-#define for_each_nondefault_queue(bp, var) \
-                               for (var = 1; var < bp->num_queues; var++)
-#define is_multi(bp)           (bp->num_queues > 1)
+/* fast path */
 
+struct sw_rx_bd {
+       struct sk_buff  *skb;
+       DECLARE_PCI_UNMAP_ADDR(mapping)
+};
 
-struct regp {
-       u32 lo;
-       u32 hi;
+struct sw_tx_bd {
+       struct sk_buff  *skb;
+       u16             first_bd;
 };
 
-struct bmac_stats {
-       struct regp tx_gtpkt;
-       struct regp tx_gtxpf;
-       struct regp tx_gtfcs;
-       struct regp tx_gtmca;
-       struct regp tx_gtgca;
-       struct regp tx_gtfrg;
-       struct regp tx_gtovr;
-       struct regp tx_gt64;
-       struct regp tx_gt127;
-       struct regp tx_gt255;   /* 10 */
-       struct regp tx_gt511;
-       struct regp tx_gt1023;
-       struct regp tx_gt1518;
-       struct regp tx_gt2047;
-       struct regp tx_gt4095;
-       struct regp tx_gt9216;
-       struct regp tx_gt16383;
-       struct regp tx_gtmax;
-       struct regp tx_gtufl;
-       struct regp tx_gterr;   /* 20 */
-       struct regp tx_gtbyt;
-
-       struct regp rx_gr64;
-       struct regp rx_gr127;
-       struct regp rx_gr255;
-       struct regp rx_gr511;
-       struct regp rx_gr1023;
-       struct regp rx_gr1518;
-       struct regp rx_gr2047;
-       struct regp rx_gr4095;
-       struct regp rx_gr9216;  /* 30 */
-       struct regp rx_gr16383;
-       struct regp rx_grmax;
-       struct regp rx_grpkt;
-       struct regp rx_grfcs;
-       struct regp rx_grmca;
-       struct regp rx_grbca;
-       struct regp rx_grxcf;
-       struct regp rx_grxpf;
-       struct regp rx_grxuo;
-       struct regp rx_grjbr;   /* 40 */
-       struct regp rx_grovr;
-       struct regp rx_grflr;
-       struct regp rx_grmeg;
-       struct regp rx_grmeb;
-       struct regp rx_grbyt;
-       struct regp rx_grund;
-       struct regp rx_grfrg;
-       struct regp rx_grerb;
-       struct regp rx_grfre;
-       struct regp rx_gripj;   /* 50 */
+struct sw_rx_page {
+       struct page     *page;
+       DECLARE_PCI_UNMAP_ADDR(mapping)
 };
 
-struct emac_stats {
-       u32 rx_ifhcinoctets                        ;
-       u32 rx_ifhcinbadoctets                     ;
-       u32 rx_etherstatsfragments                 ;
-       u32 rx_ifhcinucastpkts                     ;
-       u32 rx_ifhcinmulticastpkts                 ;
-       u32 rx_ifhcinbroadcastpkts                 ;
-       u32 rx_dot3statsfcserrors                  ;
-       u32 rx_dot3statsalignmenterrors            ;
-       u32 rx_dot3statscarriersenseerrors         ;
-       u32 rx_xonpauseframesreceived              ;    /* 10 */
-       u32 rx_xoffpauseframesreceived             ;
-       u32 rx_maccontrolframesreceived            ;
-       u32 rx_xoffstateentered                    ;
-       u32 rx_dot3statsframestoolong              ;
-       u32 rx_etherstatsjabbers                   ;
-       u32 rx_etherstatsundersizepkts             ;
-       u32 rx_etherstatspkts64octets              ;
-       u32 rx_etherstatspkts65octetsto127octets   ;
-       u32 rx_etherstatspkts128octetsto255octets  ;
-       u32 rx_etherstatspkts256octetsto511octets  ;    /* 20 */
-       u32 rx_etherstatspkts512octetsto1023octets ;
-       u32 rx_etherstatspkts1024octetsto1522octets;
-       u32 rx_etherstatspktsover1522octets        ;
-
-       u32 rx_falsecarriererrors                  ;
-
-       u32 tx_ifhcoutoctets                       ;
-       u32 tx_ifhcoutbadoctets                    ;
-       u32 tx_etherstatscollisions                ;
-       u32 tx_outxonsent                          ;
-       u32 tx_outxoffsent                         ;
-       u32 tx_flowcontroldone                     ;    /* 30 */
-       u32 tx_dot3statssinglecollisionframes      ;
-       u32 tx_dot3statsmultiplecollisionframes    ;
-       u32 tx_dot3statsdeferredtransmissions      ;
-       u32 tx_dot3statsexcessivecollisions        ;
-       u32 tx_dot3statslatecollisions             ;
-       u32 tx_ifhcoutucastpkts                    ;
-       u32 tx_ifhcoutmulticastpkts                ;
-       u32 tx_ifhcoutbroadcastpkts                ;
-       u32 tx_etherstatspkts64octets              ;
-       u32 tx_etherstatspkts65octetsto127octets   ;    /* 40 */
-       u32 tx_etherstatspkts128octetsto255octets  ;
-       u32 tx_etherstatspkts256octetsto511octets  ;
-       u32 tx_etherstatspkts512octetsto1023octets ;
-       u32 tx_etherstatspkts1024octetsto1522octet ;
-       u32 tx_etherstatspktsover1522octets        ;
-       u32 tx_dot3statsinternalmactransmiterrors  ;    /* 46 */
+
+/* MC hsi */
+#define BCM_PAGE_SHIFT                 12
+#define BCM_PAGE_SIZE                  (1 << BCM_PAGE_SHIFT)
+#define BCM_PAGE_MASK                  (~(BCM_PAGE_SIZE - 1))
+#define BCM_PAGE_ALIGN(addr)   (((addr) + BCM_PAGE_SIZE - 1) & BCM_PAGE_MASK)
+
+#define PAGES_PER_SGE_SHIFT            0
+#define PAGES_PER_SGE                  (1 << PAGES_PER_SGE_SHIFT)
+
+/* SGE ring related macros */
+#define NUM_RX_SGE_PAGES               2
+#define RX_SGE_CNT             (BCM_PAGE_SIZE / sizeof(struct eth_rx_sge))
+#define MAX_RX_SGE_CNT                 (RX_SGE_CNT - 2)
+/* RX_SGE_CNT is promised to be a power of 2 */
+#define RX_SGE_MASK                    (RX_SGE_CNT - 1)
+#define NUM_RX_SGE                     (RX_SGE_CNT * NUM_RX_SGE_PAGES)
+#define MAX_RX_SGE                     (NUM_RX_SGE - 1)
+#define NEXT_SGE_IDX(x)                ((((x) & RX_SGE_MASK) == \
+                                 (MAX_RX_SGE_CNT - 1)) ? (x) + 3 : (x) + 1)
+#define RX_SGE(x)                      ((x) & MAX_RX_SGE)
+
+/* SGE producer mask related macros */
+/* Number of bits in one sge_mask array element */
+#define RX_SGE_MASK_ELEM_SZ            64
+#define RX_SGE_MASK_ELEM_SHIFT         6
+#define RX_SGE_MASK_ELEM_MASK          ((u64)RX_SGE_MASK_ELEM_SZ - 1)
+
+/* Creates a bitmask of all ones in less significant bits.
+   idx - index of the most significant bit in the created mask */
+#define RX_SGE_ONES_MASK(idx) \
+               (((u64)0x1 << (((idx) & RX_SGE_MASK_ELEM_MASK) + 1)) - 1)
+#define RX_SGE_MASK_ELEM_ONE_MASK      ((u64)(~0))
+
+/* Number of u64 elements in SGE mask array */
+#define RX_SGE_MASK_LEN                        ((NUM_RX_SGE_PAGES * RX_SGE_CNT) / \
+                                        RX_SGE_MASK_ELEM_SZ)
+#define RX_SGE_MASK_LEN_MASK           (RX_SGE_MASK_LEN - 1)
+#define NEXT_SGE_MASK_ELEM(el)         (((el) + 1) & RX_SGE_MASK_LEN_MASK)
+
+
+struct bnx2x_fastpath {
+
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       struct napi_struct      napi;
+#endif
+
+       struct host_status_block *status_blk;
+       dma_addr_t              status_blk_mapping;
+
+       struct eth_tx_db_data   *hw_tx_prods;
+       dma_addr_t              tx_prods_mapping;
+
+       struct sw_tx_bd         *tx_buf_ring;
+
+       struct eth_tx_bd        *tx_desc_ring;
+       dma_addr_t              tx_desc_mapping;
+
+       struct sw_rx_bd         *rx_buf_ring;   /* BDs mappings ring */
+       struct sw_rx_page       *rx_page_ring;  /* SGE pages mappings ring */
+
+       struct eth_rx_bd        *rx_desc_ring;
+       dma_addr_t              rx_desc_mapping;
+
+       union eth_rx_cqe        *rx_comp_ring;
+       dma_addr_t              rx_comp_mapping;
+
+       /* SGE ring */
+       struct eth_rx_sge       *rx_sge_ring;
+       dma_addr_t              rx_sge_mapping;
+
+       u64                     sge_mask[RX_SGE_MASK_LEN];
+
+       int                     state;
+#define BNX2X_FP_STATE_CLOSED          0
+#define BNX2X_FP_STATE_IRQ             0x80000
+#define BNX2X_FP_STATE_OPENING         0x90000
+#define BNX2X_FP_STATE_OPEN            0xa0000
+#define BNX2X_FP_STATE_HALTING         0xb0000
+#define BNX2X_FP_STATE_HALTED          0xc0000
+
+       u8                      index;  /* number in fp array */
+       u8                      cl_id;  /* eth client id */
+       u8                      sb_id;  /* status block number in HW */
+#define FP_IDX(fp)                     (fp->index)
+#define FP_CL_ID(fp)                   (fp->cl_id)
+#define BP_CL_ID(bp)                   (bp->fp[0].cl_id)
+#define FP_SB_ID(fp)                   (fp->sb_id)
+#define CNIC_SB_ID                     0
+
+       u16                     tx_pkt_prod;
+       u16                     tx_pkt_cons;
+       u16                     tx_bd_prod;
+       u16                     tx_bd_cons;
+       u16                     *tx_cons_sb;
+
+       u16                     fp_c_idx;
+       u16                     fp_u_idx;
+
+       u16                     rx_bd_prod;
+       u16                     rx_bd_cons;
+       u16                     rx_comp_prod;
+       u16                     rx_comp_cons;
+       u16                     rx_sge_prod;
+       /* The last maximal completed SGE */
+       u16                     last_max_sge;
+       u16                     *rx_cons_sb;
+       u16                     *rx_bd_cons_sb;
+
+       unsigned long           tx_pkt,
+                               rx_pkt,
+                               rx_calls;
+#ifdef BNX2X_STOP_ON_ERROR
+       unsigned long           poll_no_work, poll_calls, poll_max_calls,
+                               poll_complete, poll_exit;
+#endif
+       /* TPA related */
+       struct sw_rx_bd         tpa_pool[ETH_MAX_AGGREGATION_QUEUES_E1H];
+       u8                      tpa_state[ETH_MAX_AGGREGATION_QUEUES_E1H];
+#define BNX2X_TPA_START                        1
+#define BNX2X_TPA_STOP                 2
+       u8                      disable_tpa;
+#ifdef BNX2X_STOP_ON_ERROR
+       u64                     tpa_queue_used;
+#endif
+
+       struct bnx2x            *bp; /* parent */
 };
 
-union mac_stats {
-       struct emac_stats emac;
-       struct bmac_stats bmac;
+#define bnx2x_fp(bp, nr, var)          (bp->fp[nr].var)
+
+#define BNX2X_HAS_TX_WORK(fp) \
+                       ((fp->tx_pkt_prod != le16_to_cpu(*fp->tx_cons_sb)) || \
+                        (fp->tx_pkt_prod != fp->tx_pkt_cons))
+
+#define BNX2X_HAS_WORK(fp)     (bnx2x_has_rx_work(fp) || BNX2X_HAS_TX_WORK(fp))
+
+
+/* MC hsi */
+#define MAX_FETCH_BD                   13      /* HW max BDs per packet */
+#define RX_COPY_THRESH                 92
+
+#define NUM_TX_RINGS                   16
+#define TX_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_tx_bd))
+#define MAX_TX_DESC_CNT                        (TX_DESC_CNT - 1)
+#define NUM_TX_BD                      (TX_DESC_CNT * NUM_TX_RINGS)
+#define MAX_TX_BD                      (NUM_TX_BD - 1)
+#define MAX_TX_AVAIL                   (MAX_TX_DESC_CNT * NUM_TX_RINGS - 2)
+#define NEXT_TX_IDX(x)         ((((x) & MAX_TX_DESC_CNT) == \
+                                 (MAX_TX_DESC_CNT - 1)) ? (x) + 2 : (x) + 1)
+#define TX_BD(x)                       ((x) & MAX_TX_BD)
+#define TX_BD_POFF(x)                  ((x) & MAX_TX_DESC_CNT)
+
+/* The RX BD ring is special, each bd is 8 bytes but the last one is 16 */
+#define NUM_RX_RINGS                   8
+#define RX_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd))
+#define MAX_RX_DESC_CNT                        (RX_DESC_CNT - 2)
+#define RX_DESC_MASK                   (RX_DESC_CNT - 1)
+#define NUM_RX_BD                      (RX_DESC_CNT * NUM_RX_RINGS)
+#define MAX_RX_BD                      (NUM_RX_BD - 1)
+#define MAX_RX_AVAIL                   (MAX_RX_DESC_CNT * NUM_RX_RINGS - 2)
+#define NEXT_RX_IDX(x)         ((((x) & RX_DESC_MASK) == \
+                                 (MAX_RX_DESC_CNT - 1)) ? (x) + 3 : (x) + 1)
+#define RX_BD(x)                       ((x) & MAX_RX_BD)
+
+/* As long as CQE is 4 times bigger than BD entry we have to allocate
+   4 times more pages for CQ ring in order to keep it balanced with
+   BD ring */
+#define NUM_RCQ_RINGS                  (NUM_RX_RINGS * 4)
+#define RCQ_DESC_CNT           (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe))
+#define MAX_RCQ_DESC_CNT               (RCQ_DESC_CNT - 1)
+#define NUM_RCQ_BD                     (RCQ_DESC_CNT * NUM_RCQ_RINGS)
+#define MAX_RCQ_BD                     (NUM_RCQ_BD - 1)
+#define MAX_RCQ_AVAIL                  (MAX_RCQ_DESC_CNT * NUM_RCQ_RINGS - 2)
+#define NEXT_RCQ_IDX(x)                ((((x) & MAX_RCQ_DESC_CNT) == \
+                                 (MAX_RCQ_DESC_CNT - 1)) ? (x) + 2 : (x) + 1)
+#define RCQ_BD(x)                      ((x) & MAX_RCQ_BD)
+
+
+/* This is needed for determining of last_max */
+#define SUB_S16(a, b)                  (s16)((s16)(a) - (s16)(b))
+
+#define __SGE_MASK_SET_BIT(el, bit) \
+       do { \
+               el = ((el) | ((u64)0x1 << (bit))); \
+       } while (0)
+
+#define __SGE_MASK_CLEAR_BIT(el, bit) \
+       do { \
+               el = ((el) & (~((u64)0x1 << (bit)))); \
+       } while (0)
+
+#define SGE_MASK_SET_BIT(fp, idx) \
+       __SGE_MASK_SET_BIT(fp->sge_mask[(idx) >> RX_SGE_MASK_ELEM_SHIFT], \
+                          ((idx) & RX_SGE_MASK_ELEM_MASK))
+
+#define SGE_MASK_CLEAR_BIT(fp, idx) \
+       __SGE_MASK_CLEAR_BIT(fp->sge_mask[(idx) >> RX_SGE_MASK_ELEM_SHIFT], \
+                            ((idx) & RX_SGE_MASK_ELEM_MASK))
+
+
+/* used on a CID received from the HW */
+#define SW_CID(x)                      (le32_to_cpu(x) & \
+                                        (COMMON_RAMROD_ETH_RX_CQE_CID >> 7))
+#define CQE_CMD(x)                     (le32_to_cpu(x) >> \
+                                       COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT)
+
+#define BD_UNMAP_ADDR(bd)              HILO_U64(le32_to_cpu((bd)->addr_hi), \
+                                                le32_to_cpu((bd)->addr_lo))
+#define BD_UNMAP_LEN(bd)               (le16_to_cpu((bd)->nbytes))
+
+
+#define DPM_TRIGER_TYPE                        0x40
+#define DOORBELL(bp, cid, val) \
+       do { \
+               writel((u32)val, (bp)->doorbells + (BCM_PAGE_SIZE * cid) + \
+                      DPM_TRIGER_TYPE); \
+       } while (0)
+
+
+/* TX CSUM helpers */
+#if (LINUX_VERSION_CODE >= 0x20616) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */
+#define SKB_CS_OFF(skb)                (offsetof(struct tcphdr, check) - \
+                                skb->csum_offset)
+#define SKB_CS(skb)            (*(u16 *)(skb_transport_header(skb) + \
+                                         skb->csum_offset))
+#else
+#define SKB_CS_OFF(skb)                (offsetof(struct tcphdr, check) - skb->csum)
+#define SKB_CS(skb)            (*(u16 *)(skb->h.raw + skb->csum))
+#endif
+
+#define pbd_tcp_flags(skb)     (ntohl(tcp_flag_word(tcp_hdr(skb)))>>16 & 0xff)
+
+#define XMIT_PLAIN                     0
+#define XMIT_CSUM_V4                   0x1
+#define XMIT_CSUM_V6                   0x2
+#define XMIT_CSUM_TCP                  0x4
+#define XMIT_GSO_V4                    0x8
+#define XMIT_GSO_V6                    0x10
+
+#define XMIT_CSUM                      (XMIT_CSUM_V4 | XMIT_CSUM_V6)
+#define XMIT_GSO                       (XMIT_GSO_V4 | XMIT_GSO_V6)
+
+
+/* stuff added to make the code fit 80Col */
+
+#define CQE_TYPE(cqe_fp_flags) ((cqe_fp_flags) & ETH_FAST_PATH_RX_CQE_TYPE)
+
+#define TPA_TYPE_START                 ETH_FAST_PATH_RX_CQE_START_FLG
+#define TPA_TYPE_END                   ETH_FAST_PATH_RX_CQE_END_FLG
+#define TPA_TYPE(cqe_fp_flags)         ((cqe_fp_flags) & \
+                                        (TPA_TYPE_START | TPA_TYPE_END))
+
+#define ETH_RX_ERROR_FALGS             ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG
+
+#define BNX2X_IP_CSUM_ERR(cqe) \
+                       (!((cqe)->fast_path_cqe.status_flags & \
+                          ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG) && \
+                        ((cqe)->fast_path_cqe.type_error_flags & \
+                         ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG))
+
+#define BNX2X_L4_CSUM_ERR(cqe) \
+                       (!((cqe)->fast_path_cqe.status_flags & \
+                          ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) && \
+                        ((cqe)->fast_path_cqe.type_error_flags & \
+                         ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG))
+
+#define BNX2X_RX_CSUM_OK(cqe) \
+                       (!(BNX2X_L4_CSUM_ERR(cqe) || BNX2X_IP_CSUM_ERR(cqe)))
+
+#define BNX2X_RX_SUM_FIX(cqe) \
+                       ((le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & \
+                         PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) == \
+                        (1 << PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT))
+
+
+#define FP_USB_FUNC_OFF                        (2 + 2*HC_USTORM_SB_NUM_INDICES)
+#define FP_CSB_FUNC_OFF                        (2 + 2*HC_CSTORM_SB_NUM_INDICES)
+
+#define U_SB_ETH_RX_CQ_INDEX           HC_INDEX_U_ETH_RX_CQ_CONS
+#define U_SB_ETH_RX_BD_INDEX           HC_INDEX_U_ETH_RX_BD_CONS
+#define C_SB_ETH_TX_CQ_INDEX           HC_INDEX_C_ETH_TX_CQ_CONS
+
+#define BNX2X_RX_SB_INDEX \
+       (&fp->status_blk->u_status_block.index_values[U_SB_ETH_RX_CQ_INDEX])
+
+#define BNX2X_RX_SB_BD_INDEX \
+       (&fp->status_blk->u_status_block.index_values[U_SB_ETH_RX_BD_INDEX])
+
+#define BNX2X_RX_SB_INDEX_NUM \
+               (((U_SB_ETH_RX_CQ_INDEX << \
+                  USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT) & \
+                 USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER) | \
+                ((U_SB_ETH_RX_BD_INDEX << \
+                  USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT) & \
+                 USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER))
+
+#define BNX2X_TX_SB_INDEX \
+       (&fp->status_blk->c_status_block.index_values[C_SB_ETH_TX_CQ_INDEX])
+
+
+/* end of fast path */
+
+/* common */
+
+struct bnx2x_common {
+
+       u32                     chip_id;
+/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
+#define CHIP_ID(bp)                    (bp->common.chip_id & 0xfffffff0)
+
+#define CHIP_NUM(bp)                   (bp->common.chip_id >> 16)
+#define CHIP_NUM_57710                 0x164e
+#define CHIP_NUM_57711                 0x164f
+#define CHIP_NUM_57711E                        0x1650
+#define CHIP_IS_E1(bp)                 (CHIP_NUM(bp) == CHIP_NUM_57710)
+#define CHIP_IS_57711(bp)              (CHIP_NUM(bp) == CHIP_NUM_57711)
+#define CHIP_IS_57711E(bp)             (CHIP_NUM(bp) == CHIP_NUM_57711E)
+#define CHIP_IS_E1H(bp)                        (CHIP_IS_57711(bp) || \
+                                        CHIP_IS_57711E(bp))
+#define IS_E1H_OFFSET                  CHIP_IS_E1H(bp)
+
+#define CHIP_REV(bp)                   (bp->common.chip_id & 0x0000f000)
+#define CHIP_REV_Ax                    0x00000000
+/* assume maximum 5 revisions */
+#define CHIP_REV_IS_SLOW(bp)           (CHIP_REV(bp) > 0x00005000)
+/* Emul versions are A=>0xe, B=>0xc, C=>0xa, D=>8, E=>6 */
+#define CHIP_REV_IS_EMUL(bp)           ((CHIP_REV_IS_SLOW(bp)) && \
+                                        !(CHIP_REV(bp) & 0x00001000))
+/* FPGA versions are A=>0xf, B=>0xd, C=>0xb, D=>9, E=>7 */
+#define CHIP_REV_IS_FPGA(bp)           ((CHIP_REV_IS_SLOW(bp)) && \
+                                        (CHIP_REV(bp) & 0x00001000))
+
+#define CHIP_TIME(bp)                  ((CHIP_REV_IS_EMUL(bp)) ? 2000 : \
+                                       ((CHIP_REV_IS_FPGA(bp)) ? 200 : 1))
+
+#define CHIP_METAL(bp)                 (bp->common.chip_id & 0x00000ff0)
+#define CHIP_BOND_ID(bp)               (bp->common.chip_id & 0x0000000f)
+
+       int                     flash_size;
+#define NVRAM_1MB_SIZE                 0x20000 /* 1M bit in bytes */
+#define NVRAM_TIMEOUT_COUNT            30000
+#define NVRAM_PAGE_SIZE                        256
+
+       u32                     shmem_base;
+
+       u32                     hw_config;
+
+       u32                     bc_ver;
 };
 
+
+/* end of common */
+
+/* port */
+
 struct nig_stats {
        u32 brb_discard;
        u32 brb_packet;
@@ -244,13 +531,53 @@ struct nig_stats {
        u32 pbf_octets;
        u32 pbf_packet;
        u32 safc_inp;
-       u32 done;
-       u32 pad;
+       u32 egress_mac_pkt0_lo;
+       u32 egress_mac_pkt0_hi;
+       u32 egress_mac_pkt1_lo;
+       u32 egress_mac_pkt1_hi;
+};
+
+struct bnx2x_port {
+       u32                     pmf;
+
+       u32                     link_config;
+
+       u32                     supported;
+/* link settings - missing defines */
+#define SUPPORTED_2500baseX_Full       (1 << 15)
+
+       u32                     advertising;
+/* link settings - missing defines */
+#define ADVERTISED_2500baseX_Full      (1 << 15)
+
+       u32                     phy_addr;
+
+       /* used to synchronize phy accesses */
+       struct mutex            phy_mutex;
+
+       u32                     port_stx;
+
+       struct nig_stats        old_nig_stats;
+};
+
+/* end of port */
+
+
+enum bnx2x_stats_event {
+       STATS_EVENT_PMF = 0,
+       STATS_EVENT_LINK_UP,
+       STATS_EVENT_UPDATE,
+       STATS_EVENT_STOP,
+       STATS_EVENT_MAX
+};
+
+enum bnx2x_stats_state {
+       STATS_STATE_DISABLED = 0,
+       STATS_STATE_ENABLED,
+       STATS_STATE_MAX
 };
 
 struct bnx2x_eth_stats {
-       u32 pad;        /* to make long counters u64 aligned */
-       u32 mac_stx_start;
        u32 total_bytes_received_hi;
        u32 total_bytes_received_lo;
        u32 total_bytes_transmitted_hi;
@@ -267,97 +594,128 @@ struct bnx2x_eth_stats {
        u32 total_multicast_packets_transmitted_lo;
        u32 total_broadcast_packets_transmitted_hi;
        u32 total_broadcast_packets_transmitted_lo;
-       u32 crc_receive_errors;
-       u32 alignment_errors;
-       u32 false_carrier_detections;
-       u32 runt_packets_received;
-       u32 jabber_packets_received;
-       u32 pause_xon_frames_received;
-       u32 pause_xoff_frames_received;
-       u32 pause_xon_frames_transmitted;
-       u32 pause_xoff_frames_transmitted;
-       u32 single_collision_transmit_frames;
-       u32 multiple_collision_transmit_frames;
-       u32 late_collision_frames;
-       u32 excessive_collision_frames;
-       u32 control_frames_received;
-       u32 frames_received_64_bytes;
-       u32 frames_received_65_127_bytes;
-       u32 frames_received_128_255_bytes;
-       u32 frames_received_256_511_bytes;
-       u32 frames_received_512_1023_bytes;
-       u32 frames_received_1024_1522_bytes;
-       u32 frames_received_1523_9022_bytes;
-       u32 frames_transmitted_64_bytes;
-       u32 frames_transmitted_65_127_bytes;
-       u32 frames_transmitted_128_255_bytes;
-       u32 frames_transmitted_256_511_bytes;
-       u32 frames_transmitted_512_1023_bytes;
-       u32 frames_transmitted_1024_1522_bytes;
-       u32 frames_transmitted_1523_9022_bytes;
        u32 valid_bytes_received_hi;
        u32 valid_bytes_received_lo;
-       u32 error_runt_packets_received;
-       u32 error_jabber_packets_received;
-       u32 mac_stx_end;
-
-       u32 pad2;
-       u32 stat_IfHCInBadOctets_hi;
-       u32 stat_IfHCInBadOctets_lo;
-       u32 stat_IfHCOutBadOctets_hi;
-       u32 stat_IfHCOutBadOctets_lo;
-       u32 stat_Dot3statsFramesTooLong;
-       u32 stat_Dot3statsInternalMacTransmitErrors;
-       u32 stat_Dot3StatsCarrierSenseErrors;
-       u32 stat_Dot3StatsDeferredTransmissions;
-       u32 stat_FlowControlDone;
-       u32 stat_XoffStateEntered;
-
-       u32 x_total_sent_bytes_hi;
-       u32 x_total_sent_bytes_lo;
-       u32 x_total_sent_pkts;
-
-       u32 t_rcv_unicast_bytes_hi;
-       u32 t_rcv_unicast_bytes_lo;
-       u32 t_rcv_broadcast_bytes_hi;
-       u32 t_rcv_broadcast_bytes_lo;
-       u32 t_rcv_multicast_bytes_hi;
-       u32 t_rcv_multicast_bytes_lo;
-       u32 t_total_rcv_pkt;
-
-       u32 checksum_discard;
-       u32 packets_too_big_discard;
+
+       u32 error_bytes_received_hi;
+       u32 error_bytes_received_lo;
+
+       u32 rx_stat_ifhcinbadoctets_hi;
+       u32 rx_stat_ifhcinbadoctets_lo;
+       u32 tx_stat_ifhcoutbadoctets_hi;
+       u32 tx_stat_ifhcoutbadoctets_lo;
+       u32 rx_stat_dot3statsfcserrors_hi;
+       u32 rx_stat_dot3statsfcserrors_lo;
+       u32 rx_stat_dot3statsalignmenterrors_hi;
+       u32 rx_stat_dot3statsalignmenterrors_lo;
+       u32 rx_stat_dot3statscarriersenseerrors_hi;
+       u32 rx_stat_dot3statscarriersenseerrors_lo;
+       u32 rx_stat_falsecarriererrors_hi;
+       u32 rx_stat_falsecarriererrors_lo;
+       u32 rx_stat_etherstatsundersizepkts_hi;
+       u32 rx_stat_etherstatsundersizepkts_lo;
+       u32 rx_stat_dot3statsframestoolong_hi;
+       u32 rx_stat_dot3statsframestoolong_lo;
+       u32 rx_stat_etherstatsfragments_hi;
+       u32 rx_stat_etherstatsfragments_lo;
+       u32 rx_stat_etherstatsjabbers_hi;
+       u32 rx_stat_etherstatsjabbers_lo;
+       u32 rx_stat_maccontrolframesreceived_hi;
+       u32 rx_stat_maccontrolframesreceived_lo;
+       u32 rx_stat_bmac_xpf_hi;
+       u32 rx_stat_bmac_xpf_lo;
+       u32 rx_stat_bmac_xcf_hi;
+       u32 rx_stat_bmac_xcf_lo;
+       u32 rx_stat_xoffstateentered_hi;
+       u32 rx_stat_xoffstateentered_lo;
+       u32 rx_stat_xonpauseframesreceived_hi;
+       u32 rx_stat_xonpauseframesreceived_lo;
+       u32 rx_stat_xoffpauseframesreceived_hi;
+       u32 rx_stat_xoffpauseframesreceived_lo;
+       u32 tx_stat_outxonsent_hi;
+       u32 tx_stat_outxonsent_lo;
+       u32 tx_stat_outxoffsent_hi;
+       u32 tx_stat_outxoffsent_lo;
+       u32 tx_stat_flowcontroldone_hi;
+       u32 tx_stat_flowcontroldone_lo;
+       u32 tx_stat_etherstatscollisions_hi;
+       u32 tx_stat_etherstatscollisions_lo;
+       u32 tx_stat_dot3statssinglecollisionframes_hi;
+       u32 tx_stat_dot3statssinglecollisionframes_lo;
+       u32 tx_stat_dot3statsmultiplecollisionframes_hi;
+       u32 tx_stat_dot3statsmultiplecollisionframes_lo;
+       u32 tx_stat_dot3statsdeferredtransmissions_hi;
+       u32 tx_stat_dot3statsdeferredtransmissions_lo;
+       u32 tx_stat_dot3statsexcessivecollisions_hi;
+       u32 tx_stat_dot3statsexcessivecollisions_lo;
+       u32 tx_stat_dot3statslatecollisions_hi;
+       u32 tx_stat_dot3statslatecollisions_lo;
+       u32 tx_stat_etherstatspkts64octets_hi;
+       u32 tx_stat_etherstatspkts64octets_lo;
+       u32 tx_stat_etherstatspkts65octetsto127octets_hi;
+       u32 tx_stat_etherstatspkts65octetsto127octets_lo;
+       u32 tx_stat_etherstatspkts128octetsto255octets_hi;
+       u32 tx_stat_etherstatspkts128octetsto255octets_lo;
+       u32 tx_stat_etherstatspkts256octetsto511octets_hi;
+       u32 tx_stat_etherstatspkts256octetsto511octets_lo;
+       u32 tx_stat_etherstatspkts512octetsto1023octets_hi;
+       u32 tx_stat_etherstatspkts512octetsto1023octets_lo;
+       u32 tx_stat_etherstatspkts1024octetsto1522octets_hi;
+       u32 tx_stat_etherstatspkts1024octetsto1522octets_lo;
+       u32 tx_stat_etherstatspktsover1522octets_hi;
+       u32 tx_stat_etherstatspktsover1522octets_lo;
+       u32 tx_stat_bmac_2047_hi;
+       u32 tx_stat_bmac_2047_lo;
+       u32 tx_stat_bmac_4095_hi;
+       u32 tx_stat_bmac_4095_lo;
+       u32 tx_stat_bmac_9216_hi;
+       u32 tx_stat_bmac_9216_lo;
+       u32 tx_stat_bmac_16383_hi;
+       u32 tx_stat_bmac_16383_lo;
+       u32 tx_stat_dot3statsinternalmactransmiterrors_hi;
+       u32 tx_stat_dot3statsinternalmactransmiterrors_lo;
+       u32 tx_stat_bmac_ufl_hi;
+       u32 tx_stat_bmac_ufl_lo;
+
+       u32 brb_drop_hi;
+       u32 brb_drop_lo;
+       u32 brb_truncate_hi;
+       u32 brb_truncate_lo;
+
+       u32 jabber_packets_received;
+
+       u32 etherstatspkts1024octetsto1522octets_hi;
+       u32 etherstatspkts1024octetsto1522octets_lo;
+       u32 etherstatspktsover1522octets_hi;
+       u32 etherstatspktsover1522octets_lo;
+
        u32 no_buff_discard;
-       u32 ttl0_discard;
-       u32 mac_discard;
+
        u32 mac_filter_discard;
        u32 xxoverflow_discard;
        u32 brb_truncate_discard;
+       u32 mac_discard;
 
-       u32 brb_discard;
-       u32 brb_packet;
-       u32 brb_truncate;
-       u32 flow_ctrl_discard;
-       u32 flow_ctrl_octets;
-       u32 flow_ctrl_packet;
-       u32 mng_discard;
-       u32 mng_octet_inp;
-       u32 mng_octet_out;
-       u32 mng_packet_inp;
-       u32 mng_packet_out;
-       u32 pbf_octets;
-       u32 pbf_packet;
-       u32 safc_inp;
        u32 driver_xoff;
-       u32 number_of_bugs_found_in_stats_spec; /* just kidding */
+       u32 rx_err_discard_pkt;
+       u32 rx_skb_alloc_failed;
+       u32 hw_csum_err;
+
+       u32 nig_timer_max;
 };
 
-#define MAC_STX_NA                     0xffffffff
+#define STATS_OFFSET32(stat_name) \
+                       (offsetof(struct bnx2x_eth_stats, stat_name) / 4)
+
 
-#ifdef BNX2X_MULTI
-#define MAX_CONTEXT                    16
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+#ifdef BCM_CNIC
+#define MAX_CONTEXT                    15
+#else
+#define MAX_CONTEXT                    16
+#endif
 #else
-#define MAX_CONTEXT                    1
+#define MAX_CONTEXT                    1
 #endif
 
 union cdu_context {
@@ -365,616 +723,406 @@ union cdu_context {
        char pad[1024];
 };
 
-#define MAX_DMAE_C                     5
+#define MAX_DMAE_C                     8
 
 /* DMA memory not used in fastpath */
 struct bnx2x_slowpath {
-       union cdu_context               context[MAX_CONTEXT];
-       struct eth_stats_query          fw_stats;
-       struct mac_configuration_cmd    mac_config;
-       struct mac_configuration_cmd    mcast_config;
+       union cdu_context               context[MAX_CONTEXT];
+       struct eth_stats_query          fw_stats;
+       struct mac_configuration_cmd    mac_config;
+       struct mac_configuration_cmd    mcast_config;
 
        /* used by dmae command executer */
-       struct dmae_command             dmae[MAX_DMAE_C];
+       struct dmae_command             dmae[MAX_DMAE_C];
 
-       union mac_stats                 mac_stats;
-       struct nig_stats                nig;
-       struct bnx2x_eth_stats          eth_stats;
+       u32                             stats_comp;
+       union mac_stats                 mac_stats;
+       struct nig_stats                nig_stats;
+       struct host_port_stats          port_stats;
+       struct host_func_stats          func_stats;
 
-       u32                             wb_comp;
-#define BNX2X_WB_COMP_VAL              0xe0d0d0ae
-       u32                             wb_data[4];
+       u32                             wb_comp;
+       u32                             wb_data[4];
 };
 
-#define bnx2x_sp(bp, var)              (&bp->slowpath->var)
-#define bnx2x_sp_check(bp, var) ((bp->slowpath) ? (&bp->slowpath->var) : NULL)
+#define bnx2x_sp(bp, var)              (&bp->slowpath->var)
 #define bnx2x_sp_mapping(bp, var) \
                (bp->slowpath_mapping + offsetof(struct bnx2x_slowpath, var))
 
 
-struct sw_rx_bd {
-       struct sk_buff  *skb;
-       DECLARE_PCI_UNMAP_ADDR(mapping)
-};
-
-struct sw_tx_bd {
-       struct sk_buff  *skb;
-       u16             first_bd;
-};
-
-struct bnx2x_fastpath {
-
-       struct host_status_block *status_blk;
-       dma_addr_t              status_blk_mapping;
-
-       struct eth_tx_db_data   *hw_tx_prods;
-       dma_addr_t              tx_prods_mapping;
-
-       struct sw_tx_bd         *tx_buf_ring;
-
-       struct eth_tx_bd        *tx_desc_ring;
-       dma_addr_t              tx_desc_mapping;
-
-       struct sw_rx_bd         *rx_buf_ring;
-
-       struct eth_rx_bd        *rx_desc_ring;
-       dma_addr_t              rx_desc_mapping;
-
-       union eth_rx_cqe        *rx_comp_ring;
-       dma_addr_t              rx_comp_mapping;
-
-       int                     state;
-#define BNX2X_FP_STATE_CLOSED          0
-#define BNX2X_FP_STATE_IRQ             0x80000
-#define BNX2X_FP_STATE_OPENING         0x90000
-#define BNX2X_FP_STATE_OPEN            0xa0000
-#define BNX2X_FP_STATE_HALTING         0xb0000
-#define BNX2X_FP_STATE_HALTED          0xc0000
-
-       int                     index;
-
-       u16                     tx_pkt_prod;
-       u16                     tx_pkt_cons;
-       u16                     tx_bd_prod;
-       u16                     tx_bd_cons;
-       u16                     *tx_cons_sb;
-
-       u16                     fp_c_idx;
-       u16                     fp_u_idx;
-
-       u16                     rx_bd_prod;
-       u16                     rx_bd_cons;
-       u16                     rx_comp_prod;
-       u16                     rx_comp_cons;
-       u16                     *rx_cons_sb;
-
-       unsigned long           tx_pkt,
-                               rx_pkt,
-                               rx_calls;
-
-       struct bnx2x            *bp; /* parent */
-};
-
-#define bnx2x_fp(bp, nr, var)          (bp->fp[nr].var)
-
-
 /* attn group wiring */
-#define MAX_DYNAMIC_ATTN_GRPS          8
+#define MAX_DYNAMIC_ATTN_GRPS          8
 
 struct attn_route {
-       u32     sig[4];
+       u32     sig[4];
 };
 
 struct bnx2x {
        /* Fields used in the tx and intr/napi performance paths
         * are grouped together in the beginning of the structure
         */
-       struct bnx2x_fastpath   *fp;
-       void __iomem            *regview;
-       void __iomem            *doorbells;
+       struct bnx2x_fastpath   fp[MAX_CONTEXT];
+       void __iomem            *regview;
+       void __iomem            *doorbells;
+#ifndef BNX2X_ISCSI /* BNX2X_UPSTREAM */
+#define BNX2X_DB_SIZE          (16*2048)
+#else
+#define BNX2X_DB_SIZE          (256*2048)
+#endif
 
-       struct net_device       *dev;
-       struct pci_dev          *pdev;
+       struct net_device       *dev;
+       struct pci_dev          *pdev;
 
        atomic_t                intr_sem;
-       struct msix_entry       msix_table[MAX_CONTEXT+1];
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+#ifdef BCM_CNIC
+       struct msix_entry       msix_table[MAX_CONTEXT+2];
+#else
+       struct msix_entry       msix_table[MAX_CONTEXT+1];
+#endif
+#endif
+#define INT_MODE_INTx                  1
+#define INT_MODE_MSI                   2
+#define INT_MODE_MSIX                  3
 
-       int                     tx_ring_size;
+       int                     tx_ring_size;
 
 #ifdef BCM_VLAN
-       struct vlan_group       *vlgrp;
+       struct vlan_group       *vlgrp;
 #endif
 
-       u32                     rx_csum;
-       u32                     rx_offset;
-       u32                     rx_buf_use_size;        /* useable size */
-       u32                     rx_buf_size;            /* with alignment */
-#define ETH_OVREHEAD                   (ETH_HLEN + 8)  /* 8 for CRC + VLAN */
-#define ETH_MIN_PACKET_SIZE            60
-#define ETH_MAX_PACKET_SIZE            1500
-#define ETH_MAX_JUMBO_PACKET_SIZE       9600
+       u32                     rx_csum;
+       u32                     rx_buf_size;
+#define ETH_OVREHEAD                   (ETH_HLEN + 8)  /* 8 for CRC + VLAN */
+#define ETH_MIN_PACKET_SIZE            60
+#define ETH_MAX_PACKET_SIZE            1500
+#define ETH_MAX_JUMBO_PACKET_SIZE      9600
+
+#define BNX2X_RX_ALIGN_SHIFT           6
+#define BNX2X_RX_ALIGN                 (1 << BNX2X_RX_ALIGN_SHIFT)
 
        struct host_def_status_block *def_status_blk;
-#define DEF_SB_ID              16
-       u16                     def_c_idx;
-       u16                     def_u_idx;
-       u16                     def_t_idx;
-       u16                     def_x_idx;
-       u16                     def_att_idx;
-       u32                     attn_state;
-       struct attn_route       attn_group[MAX_DYNAMIC_ATTN_GRPS];
-       u32                     aeu_mask;
-       u32                     nig_mask;
+#define DEF_SB_ID                      16
+       u16                     def_c_idx;
+       u16                     def_u_idx;
+       u16                     def_x_idx;
+       u16                     def_t_idx;
+       u16                     def_att_idx;
+       u32                     attn_state;
+       struct attn_route       attn_group[MAX_DYNAMIC_ATTN_GRPS];
 
        /* slow path ring */
-       struct eth_spe          *spq;
-       dma_addr_t              spq_mapping;
-       u16                     spq_prod_idx;
-       struct eth_spe          *spq_prod_bd;
-       struct eth_spe          *spq_last_bd;
-       u16                     *dsb_sp_prod;
-       u16                     spq_left; /* serialize spq */
-       spinlock_t              spq_lock;
-
-       /* Flag for marking that there is either
-        * STAT_QUERY or CFC DELETE ramrod pending
-        */
-       u8                      stat_pending;
+       struct eth_spe          *spq;
+       dma_addr_t              spq_mapping;
+       u16                     spq_prod_idx;
+       struct eth_spe          *spq_prod_bd;
+       struct eth_spe          *spq_last_bd;
+       u16                     *dsb_sp_prod;
+       u16                     spq_left; /* serialize spq */
+       /* used to synchronize spq accesses */
+       spinlock_t              spq_lock;
+
+       /* Flags for marking that there is a STAT_QUERY or
+          SET_MAC ramrod pending */
+       u8                      stats_pending;
+       u8                      set_mac_pending;
 
        /* End of fields used in the performance code paths */
 
-       int                     panic;
-       int                     msglevel;
-
-       u32                     flags;
-#define PCIX_FLAG                      1
-#define PCI_32BIT_FLAG                 2
-#define ONE_TDMA_FLAG                  4       /* no longer used */
-#define NO_WOL_FLAG                    8
-#define USING_DAC_FLAG                 0x10
-#define USING_MSIX_FLAG                0x20
-#define ASF_ENABLE_FLAG                0x40
-
-       int                     port;
-
-       int                     pm_cap;
-       int                     pcie_cap;
-
-       /* Used to synchronize phy accesses */
-       spinlock_t              phy_lock;
-
-       struct work_struct      reset_task;
+       int                     panic;
+       int                     msglevel;
+
+       u32                     flags;
+#define PCIX_FLAG                      1
+#define PCI_32BIT_FLAG                 2
+#define ONE_PORT_FLAG                  4
+#define NO_WOL_FLAG                    8
+#define USING_DAC_FLAG                 0x10
+#define USING_MSIX_FLAG                        0x20
+#define USING_MSI_FLAG                 0x40
+#define TPA_ENABLE_FLAG                        0x80
+#define NO_MCP_FLAG                    0x100
+#define BP_NOMCP(bp)                   (bp->flags & NO_MCP_FLAG)
+
+       int                     func;
+#define BP_PORT(bp)                    (bp->func % PORT_MAX)
+#define BP_FUNC(bp)                    (bp->func)
+#define BP_E1HVN(bp)                   (bp->func >> 1)
+#define BP_L_ID(bp)                    (BP_E1HVN(bp) << 2)
+
+       int                     pm_cap;
+       int                     pcie_cap;
+
+       struct work_struct      sp_task;
+       struct work_struct      reset_task;
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
        u16                     sp_running;
-       struct work_struct      sp_task;
+#endif
 
-       struct timer_list       timer;
-       int                     timer_interval;
-       int                     current_interval;
+       struct timer_list       timer;
+       int                     current_interval;
 
-       u32                     shmem_base;
+       u16                     fw_seq;
+       u16                     fw_drv_pulse_wr_seq;
+       u32                     func_stx;
 
-       u32                     chip_id;
-/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
-#define CHIP_ID(bp)                    (((bp)->chip_id) & 0xfffffff0)
-
-#define CHIP_NUM(bp)                   (((bp)->chip_id) & 0xffff0000)
-
-#define CHIP_REV(bp)                   (((bp)->chip_id) & 0x0000f000)
-#define CHIP_REV_Ax                    0x00000000
-#define CHIP_REV_Bx                    0x00001000
-#define CHIP_REV_Cx                    0x00002000
-#define CHIP_REV_EMUL                  0x0000e000
-#define CHIP_REV_FPGA                  0x0000f000
-#define CHIP_REV_IS_SLOW(bp)           ((CHIP_REV(bp) == CHIP_REV_EMUL) || \
-                                        (CHIP_REV(bp) == CHIP_REV_FPGA))
-
-#define CHIP_METAL(bp)                 (((bp)->chip_id) & 0x00000ff0)
-#define CHIP_BOND_ID(bp)               (((bp)->chip_id) & 0x0000000f)
-
-       u16                     fw_seq;
-       u16                     fw_drv_pulse_wr_seq;
-       u32                     fw_mb;
-
-       u32                     hw_config;
-       u32                     board;
-       u32                     serdes_config;
-       u32                     lane_config;
-       u32                     ext_phy_config;
-#define XGXS_EXT_PHY_TYPE(bp)          (bp->ext_phy_config & \
-                                        PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK)
-#define SERDES_EXT_PHY_TYPE(bp)        (bp->ext_phy_config & \
-                                        PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK)
-
-       u32                     speed_cap_mask;
-       u32                     link_config;
-#define SWITCH_CFG_1G                  PORT_FEATURE_CON_SWITCH_1G_SWITCH
-#define SWITCH_CFG_10G                 PORT_FEATURE_CON_SWITCH_10G_SWITCH
-#define SWITCH_CFG_AUTO_DETECT         PORT_FEATURE_CON_SWITCH_AUTO_DETECT
-#define SWITCH_CFG_ONE_TIME_DETECT      \
-                               PORT_FEATURE_CON_SWITCH_ONE_TIME_DETECT
-
-       u8                      ser_lane;
-       u8                      rx_lane_swap;
-       u8                      tx_lane_swap;
-
-       u8                      link_up;
-       u8                      phy_link_up;
-
-       u32                     supported;
-/* link settings - missing defines */
-#define SUPPORTED_2500baseT_Full       (1 << 15)
-
-       u32                     phy_flags;
-/*#define PHY_SERDES_FLAG                      0x1*/
-#define PHY_BMAC_FLAG                  0x2
-#define PHY_EMAC_FLAG                  0x4
-#define PHY_XGXS_FLAG                  0x8
-#define PHY_SGMII_FLAG                 0x10
-#define PHY_INT_MODE_MASK_FLAG         0x300
-#define PHY_INT_MODE_AUTO_POLLING_FLAG  0x100
-#define PHY_INT_MODE_LINK_READY_FLAG    0x200
-
-       u32                     phy_addr;
-       u32                     phy_id;
-
-       u32                     autoneg;
-#define AUTONEG_CL37                   SHARED_HW_CFG_AN_ENABLE_CL37
-#define AUTONEG_CL73                   SHARED_HW_CFG_AN_ENABLE_CL73
-#define AUTONEG_BAM                    SHARED_HW_CFG_AN_ENABLE_BAM
-#define AUTONEG_PARALLEL               \
-                               SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION
-#define AUTONEG_SGMII_FIBER_AUTODET     \
-                               SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT
-#define AUTONEG_REMOTE_PHY             SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY
-
-       u32                     req_autoneg;
-#define AUTONEG_SPEED                  0x1
-#define AUTONEG_FLOW_CTRL              0x2
-
-       u32                     req_line_speed;
-/* link settings - missing defines */
-#define SPEED_12000                    12000
-#define SPEED_12500                    12500
-#define SPEED_13000                    13000
-#define SPEED_15000                    15000
-#define SPEED_16000                    16000
-
-       u32                     req_duplex;
-       u32                     req_flow_ctrl;
-#define FLOW_CTRL_AUTO                 PORT_FEATURE_FLOW_CONTROL_AUTO
-#define FLOW_CTRL_TX                   PORT_FEATURE_FLOW_CONTROL_TX
-#define FLOW_CTRL_RX                   PORT_FEATURE_FLOW_CONTROL_RX
-#define FLOW_CTRL_BOTH                 PORT_FEATURE_FLOW_CONTROL_BOTH
-#define FLOW_CTRL_NONE                 PORT_FEATURE_FLOW_CONTROL_NONE
-
-       u32                     advertising;
-/* link settings - missing defines */
-#define ADVERTISED_2500baseT_Full       (1 << 15)
+       struct link_params      link_params;
+       struct link_vars        link_vars;
 
-       u32                     link_status;
-       u32                     line_speed;
-       u32                     duplex;
-       u32                     flow_ctrl;
+       struct bnx2x_common     common;
+       struct bnx2x_port       port;
 
-       u32                     bc_ver;
+       struct cmng_struct_per_port cmng;
+       u32                     wsum;
 
-       int                     flash_size;
-#define NVRAM_1MB_SIZE                 0x20000 /* 1M bit in bytes */
-#define NVRAM_TIMEOUT_COUNT            30000
-#define NVRAM_PAGE_SIZE                256
+       u32                     mf_config;
+       u16                     e1hov;
+       u8                      e1hmf;
+#define IS_E1HMF(bp)                   (bp->e1hmf != 0)
 
        u8                      wol;
 
-       int                     rx_ring_size;
+       int                     rx_ring_size;
 
-       u16                     tx_quick_cons_trip_int;
-       u16                     tx_quick_cons_trip;
-       u16                     tx_ticks_int;
-       u16                     tx_ticks;
+       u16                     tx_quick_cons_trip_int;
+       u16                     tx_quick_cons_trip;
+       u16                     tx_ticks_int;
+       u16                     tx_ticks;
 
-       u16                     rx_quick_cons_trip_int;
-       u16                     rx_quick_cons_trip;
-       u16                     rx_ticks_int;
-       u16                     rx_ticks;
+       u16                     rx_quick_cons_trip_int;
+       u16                     rx_quick_cons_trip;
+       u16                     rx_ticks_int;
+       u16                     rx_ticks;
 
-       u32                     stats_ticks;
+       u32                     lin_cnt;
 
-       int                     state;
-#define BNX2X_STATE_CLOSED             0x0
-#define BNX2X_STATE_OPENING_WAIT4_LOAD  0x1000
-#define BNX2X_STATE_OPENING_WAIT4_PORT  0x2000
+       int                     state;
+#define BNX2X_STATE_CLOSED             0x0
+#define BNX2X_STATE_OPENING_WAIT4_LOAD 0x1000
+#define BNX2X_STATE_OPENING_WAIT4_PORT 0x2000
 #define BNX2X_STATE_OPEN               0x3000
-#define BNX2X_STATE_CLOSING_WAIT4_HALT  0x4000
+#define BNX2X_STATE_CLOSING_WAIT4_HALT 0x4000
 #define BNX2X_STATE_CLOSING_WAIT4_DELETE 0x5000
 #define BNX2X_STATE_CLOSING_WAIT4_UNLOAD 0x6000
-#define BNX2X_STATE_ERROR              0xF000
-
-       int                     num_queues;
-
-       u32                     rx_mode;
-#define BNX2X_RX_MODE_NONE             0
-#define BNX2X_RX_MODE_NORMAL           1
-#define BNX2X_RX_MODE_ALLMULTI         2
-#define BNX2X_RX_MODE_PROMISC          3
-#define BNX2X_MAX_MULTICAST            64
-#define BNX2X_MAX_EMUL_MULTI           16
-
-       dma_addr_t              def_status_blk_mapping;
-
-       struct bnx2x_slowpath   *slowpath;
-       dma_addr_t              slowpath_mapping;
-
-#ifdef BCM_ISCSI
-       void                    *t1;
-       dma_addr_t              t1_mapping;
-       void                    *t2;
-       dma_addr_t              t2_mapping;
-       void                    *timers;
-       dma_addr_t              timers_mapping;
-       void                    *qm;
-       dma_addr_t              qm_mapping;
+#define BNX2X_STATE_DISABLED           0xd000
+#define BNX2X_STATE_DIAG               0xe000
+#define BNX2X_STATE_ERROR              0xf000
+
+       int                     multi_mode;
+#define BNX2X_MAX_PRIORITY             8
+#define BNX2X_MAX_ENTRIES_PER_PRI      16
+       u8                      pri_map[BNX2X_MAX_PRIORITY];
+       int                     num_queues;
+#define BNX2X_MAX_QUEUES(bp)   (IS_E1HMF(bp) ? (MAX_CONTEXT / E1HVN_MAX) : \
+                                                MAX_CONTEXT)
+
+       u32                     rx_mode;
+#define BNX2X_RX_MODE_NONE             0
+#define BNX2X_RX_MODE_NORMAL           1
+#define BNX2X_RX_MODE_ALLMULTI         2
+#define BNX2X_RX_MODE_PROMISC          3
+#define BNX2X_MAX_MULTICAST            64
+#define BNX2X_MAX_EMUL_MULTI           16
+
+       dma_addr_t              def_status_blk_mapping;
+
+       struct bnx2x_slowpath   *slowpath;
+       dma_addr_t              slowpath_mapping;
+
+#ifdef BCM_CNIC
+       void                    *t1;
+       dma_addr_t              t1_mapping;
+       void                    *t2;
+       dma_addr_t              t2_mapping;
+       void                    *timers;
+       dma_addr_t              timers_mapping;
+       void                    *qm;
+       dma_addr_t              qm_mapping;
+       struct cnic_ops         *cnic_ops;
+       void                    *cnic_data;
+       u32                     cnic_tag;
+       struct cnic_eth_dev     cnic_eth_dev;
+       struct host_status_block *cnic_sb;
+       dma_addr_t              cnic_sb_mapping;
+       struct eth_spe          *cnic_kwq;
+       struct eth_spe          *cnic_kwq_prod;
+       struct eth_spe          *cnic_kwq_cons;
+       struct eth_spe          *cnic_kwq_last;
+       u16                     cnic_kwq_pending;
+       u16                     cnic_spq_pending;
 #endif
 
-       char                    *name;
+       int                     dmae_ready;
+       /* used to synchronize dmae accesses */
+       struct mutex            dmae_mutex;
+       struct dmae_command     init_dmae;
 
        /* used to synchronize stats collecting */
-       int                     stats_state;
-#define STATS_STATE_DISABLE            0
-#define STATS_STATE_ENABLE             1
-#define STATS_STATE_STOP               2 /* stop stats on next iteration */
-
-       struct net_device_stats net_stats;
-
+       int                     stats_state;
        /* used by dmae command loader */
-       struct dmae_command     dmae;
-       int                     executer_idx;
+       struct dmae_command     stats_dmae;
+       int                     executer_idx;
 
-       u32                     old_brb_discard;
-       struct bmac_stats       old_bmac;
+       u16                     stats_counter;
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+       struct net_device_stats net_stats;
+#endif
        struct tstorm_per_client_stats old_tclient;
-       struct z_stream_s       *strm;
-       void                    *gunzip_buf;
-       dma_addr_t              gunzip_mapping;
-       int                     gunzip_outlen;
-#define FW_BUF_SIZE                    0x8000
+       struct xstorm_per_client_stats old_xclient;
+       struct bnx2x_eth_stats  eth_stats;
+
+       struct z_stream_s       *strm;
+       void                    *gunzip_buf;
+       dma_addr_t              gunzip_mapping;
+       int                     gunzip_outlen;
+#define FW_BUF_SIZE                    0x8000
 
+#if (LINUX_VERSION_CODE < 0x2060b) /* ! BNX2X_UPSTREAM */
+       u32                     pci_state[16];
+#endif
 };
 
 
-/* DMAE command defines */
-#define DMAE_CMD_SRC_PCI               0
-#define DMAE_CMD_SRC_GRC               DMAE_COMMAND_SRC
+#define for_each_queue(bp, var)        for (var = 0; var < bp->num_queues; var++)
 
-#define DMAE_CMD_DST_PCI               (1 << DMAE_COMMAND_DST_SHIFT)
-#define DMAE_CMD_DST_GRC               (2 << DMAE_COMMAND_DST_SHIFT)
+#define for_each_nondefault_queue(bp, var) \
+                               for (var = 1; var < bp->num_queues; var++)
+#define is_multi(bp)           (bp->num_queues > 1)
 
-#define DMAE_CMD_C_DST_PCI             0
-#define DMAE_CMD_C_DST_GRC             (1 << DMAE_COMMAND_C_DST_SHIFT)
 
-#define DMAE_CMD_C_ENABLE              DMAE_COMMAND_C_TYPE_ENABLE
+void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32);
+void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr, u32 dst_addr,
+                     u32 len32);
+int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode, u8 port);
 
-#define DMAE_CMD_ENDIANITY_NO_SWAP      (0 << DMAE_COMMAND_ENDIANITY_SHIFT)
-#define DMAE_CMD_ENDIANITY_B_SWAP       (1 << DMAE_COMMAND_ENDIANITY_SHIFT)
-#define DMAE_CMD_ENDIANITY_DW_SWAP      (2 << DMAE_COMMAND_ENDIANITY_SHIFT)
-#define DMAE_CMD_ENDIANITY_B_DW_SWAP    (3 << DMAE_COMMAND_ENDIANITY_SHIFT)
+static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
+                          int wait)
+{
+       u32 val;
 
-#define DMAE_CMD_PORT_0                0
-#define DMAE_CMD_PORT_1                DMAE_COMMAND_PORT
+       do {
+               val = REG_RD(bp, reg);
+               if (val == expected)
+                       break;
+               ms -= wait;
+               msleep(wait);
 
-#define DMAE_CMD_SRC_RESET             DMAE_COMMAND_SRC_RESET
-#define DMAE_CMD_DST_RESET             DMAE_COMMAND_DST_RESET
+       } while (ms > 0);
 
-#define DMAE_LEN32_MAX                 0x400
+       return val;
+}
 
 
-/* MC hsi */
-#define RX_COPY_THRESH                 92
-#define BCM_PAGE_BITS                  12
-#define BCM_PAGE_SIZE                  (1 << BCM_PAGE_BITS)
-
-#define NUM_TX_RINGS                   16
-#define TX_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_tx_bd))
-#define MAX_TX_DESC_CNT                (TX_DESC_CNT - 1)
-#define NUM_TX_BD                      (TX_DESC_CNT * NUM_TX_RINGS)
-#define MAX_TX_BD                      (NUM_TX_BD - 1)
-#define MAX_TX_AVAIL                   (MAX_TX_DESC_CNT * NUM_TX_RINGS - 2)
-#define NEXT_TX_IDX(x)         ((((x) & MAX_TX_DESC_CNT) == \
-                                (MAX_TX_DESC_CNT - 1)) ? (x) + 2 : (x) + 1)
-#define TX_BD(x)                       ((x) & MAX_TX_BD)
-#define TX_BD_POFF(x)                  ((x) & MAX_TX_DESC_CNT)
+/* load/unload mode */
+#define LOAD_NORMAL                    0
+#define LOAD_OPEN                      1
+#define LOAD_DIAG                      2
+#define UNLOAD_NORMAL                  0
+#define UNLOAD_CLOSE                   1
 
-/* The RX BD ring is special, each bd is 8 bytes but the last one is 16 */
-#define NUM_RX_RINGS                   8
-#define RX_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_rx_bd))
-#define MAX_RX_DESC_CNT                (RX_DESC_CNT - 2)
-#define RX_DESC_MASK                   (RX_DESC_CNT - 1)
-#define NUM_RX_BD                      (RX_DESC_CNT * NUM_RX_RINGS)
-#define MAX_RX_BD                      (NUM_RX_BD - 1)
-#define MAX_RX_AVAIL                   (MAX_RX_DESC_CNT * NUM_RX_RINGS - 2)
-#define NEXT_RX_IDX(x)         ((((x) & RX_DESC_MASK) == \
-                                (MAX_RX_DESC_CNT - 1)) ? (x) + 3 : (x) + 1)
-#define RX_BD(x)                       ((x) & MAX_RX_BD)
 
-#define NUM_RCQ_RINGS                  (NUM_RX_RINGS * 2)
-#define RCQ_DESC_CNT           (BCM_PAGE_SIZE / sizeof(union eth_rx_cqe))
-#define MAX_RCQ_DESC_CNT               (RCQ_DESC_CNT - 1)
-#define NUM_RCQ_BD                     (RCQ_DESC_CNT * NUM_RCQ_RINGS)
-#define MAX_RCQ_BD                     (NUM_RCQ_BD - 1)
-#define MAX_RCQ_AVAIL                  (MAX_RCQ_DESC_CNT * NUM_RCQ_RINGS - 2)
-#define NEXT_RCQ_IDX(x)        ((((x) & MAX_RCQ_DESC_CNT) == \
-                                (MAX_RCQ_DESC_CNT - 1)) ? (x) + 2 : (x) + 1)
-#define RCQ_BD(x)                      ((x) & MAX_RCQ_BD)
+/* DMAE command defines */
+#define DMAE_CMD_SRC_PCI               0
+#define DMAE_CMD_SRC_GRC               DMAE_COMMAND_SRC
 
+#define DMAE_CMD_DST_PCI               (1 << DMAE_COMMAND_DST_SHIFT)
+#define DMAE_CMD_DST_GRC               (2 << DMAE_COMMAND_DST_SHIFT)
 
-/* used on a CID received from the HW */
-#define SW_CID(x)                      (le32_to_cpu(x) & \
-                                        (COMMON_RAMROD_ETH_RX_CQE_CID >> 1))
-#define CQE_CMD(x)                     (le32_to_cpu(x) >> \
-                                       COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT)
+#define DMAE_CMD_C_DST_PCI             0
+#define DMAE_CMD_C_DST_GRC             (1 << DMAE_COMMAND_C_DST_SHIFT)
 
-#define BD_UNMAP_ADDR(bd)              HILO_U64(le32_to_cpu((bd)->addr_hi), \
-                                                le32_to_cpu((bd)->addr_lo))
-#define BD_UNMAP_LEN(bd)               (le16_to_cpu((bd)->nbytes))
+#define DMAE_CMD_C_ENABLE              DMAE_COMMAND_C_TYPE_ENABLE
 
+#define DMAE_CMD_ENDIANITY_NO_SWAP     (0 << DMAE_COMMAND_ENDIANITY_SHIFT)
+#define DMAE_CMD_ENDIANITY_B_SWAP      (1 << DMAE_COMMAND_ENDIANITY_SHIFT)
+#define DMAE_CMD_ENDIANITY_DW_SWAP     (2 << DMAE_COMMAND_ENDIANITY_SHIFT)
+#define DMAE_CMD_ENDIANITY_B_DW_SWAP   (3 << DMAE_COMMAND_ENDIANITY_SHIFT)
 
-#define STROM_ASSERT_ARRAY_SIZE        50
+#define DMAE_CMD_PORT_0                        0
+#define DMAE_CMD_PORT_1                        DMAE_COMMAND_PORT
 
+#define DMAE_CMD_SRC_RESET             DMAE_COMMAND_SRC_RESET
+#define DMAE_CMD_DST_RESET             DMAE_COMMAND_DST_RESET
+#define DMAE_CMD_E1HVN_SHIFT           DMAE_COMMAND_E1HVN_SHIFT
 
-#define MDIO_INDIRECT_REG_ADDR         0x1f
-#define MDIO_SET_REG_BANK(bp, reg_bank) \
-               bnx2x_mdio22_write(bp, MDIO_INDIRECT_REG_ADDR, reg_bank)
+#define DMAE_LEN32_RD_MAX              0x80
+#define DMAE_LEN32_WR_MAX              0x400
 
-#define MDIO_ACCESS_TIMEOUT            1000
+#define DMAE_COMP_VAL                  0xe0d0d0ae
 
+#define MAX_DMAE_C_PER_PORT            8
+#define INIT_DMAE_C(bp)                        (BP_PORT(bp)*MAX_DMAE_C_PER_PORT + \
+                                        BP_E1HVN(bp))
+#define PMF_DMAE_C(bp)                 (BP_PORT(bp)*MAX_DMAE_C_PER_PORT + \
+                                        E1HVN_MAX)
 
-/* must be used on a CID before placing it on a HW ring */
-#define HW_CID(bp, x)                  (x | (bp->port << 23))
 
-#define SP_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_spe))
-#define MAX_SP_DESC_CNT                (SP_DESC_CNT - 1)
+/* PCIE link and speed */
+#define PCICFG_LINK_WIDTH              0x1f00000
+#define PCICFG_LINK_WIDTH_SHIFT                20
+#define PCICFG_LINK_SPEED              0xf0000
+#define PCICFG_LINK_SPEED_SHIFT                16
 
-#define ATTN_NIG_FOR_FUNC              (1L << 8)
-#define ATTN_SW_TIMER_4_FUNC           (1L << 9)
-#define GPIO_2_FUNC                    (1L << 10)
-#define GPIO_3_FUNC                    (1L << 11)
-#define GPIO_4_FUNC                    (1L << 12)
-#define ATTN_GENERAL_ATTN_1            (1L << 13)
-#define ATTN_GENERAL_ATTN_2            (1L << 14)
-#define ATTN_GENERAL_ATTN_3            (1L << 15)
-#define ATTN_GENERAL_ATTN_4            (1L << 13)
-#define ATTN_GENERAL_ATTN_5            (1L << 14)
-#define ATTN_GENERAL_ATTN_6            (1L << 15)
 
-#define ATTN_HARD_WIRED_MASK           0xff00
-#define ATTENTION_ID                   4
+#define BNX2X_NUM_STATS                        43
+#define BNX2X_NUM_TESTS                        8
 
+#define BNX2X_MAC_LOOPBACK             0
+#define BNX2X_PHY_LOOPBACK             1
+#define BNX2X_MAC_LOOPBACK_FAILED      1
+#define BNX2X_PHY_LOOPBACK_FAILED      2
+#define BNX2X_LOOPBACK_FAILED          (BNX2X_MAC_LOOPBACK_FAILED | \
+                                        BNX2X_PHY_LOOPBACK_FAILED)
 
-#define BNX2X_BTR                      3
-#define MAX_SPQ_PENDING                8
 
+#define STROM_ASSERT_ARRAY_SIZE                50
 
-#define BNX2X_NUM_STATS                        34
-#define BNX2X_NUM_TESTS                        1
 
+/* must be used on a CID before placing it on a HW ring */
+#define HW_CID(bp, x)          ((BP_PORT(bp) << 23) | (BP_E1HVN(bp) << 17) | x)
 
-#define DPM_TRIGER_TYPE                0x40
-#define DOORBELL(bp, cid, val) \
-       do { \
-               writel((u32)val, (bp)->doorbells + (BCM_PAGE_SIZE * cid) + \
-                      DPM_TRIGER_TYPE); \
-       } while (0)
+#define SP_DESC_CNT            (BCM_PAGE_SIZE / sizeof(struct eth_spe))
+#define MAX_SP_DESC_CNT                        (SP_DESC_CNT - 1)
 
-/* PCIE link and speed */
-#define PCICFG_LINK_WIDTH              0x1f00000
-#define PCICFG_LINK_WIDTH_SHIFT                20
-#define PCICFG_LINK_SPEED              0xf0000
-#define PCICFG_LINK_SPEED_SHIFT                16
 
-#define BMAC_CONTROL_RX_ENABLE         2
+#define BNX2X_BTR                      3
+#define MAX_SPQ_PENDING                        8
 
-#define pbd_tcp_flags(skb)     (ntohl(tcp_flag_word(tcp_hdr(skb)))>>16 & 0xff)
 
-/* stuff added to make the code fit 80Col */
+/* CMNG constants
+   derived from lab experiments, and not from system spec calculations !!! */
+#define DEF_MIN_RATE                   100
+/* resolution of the rate shaping timer - 100 usec */
+#define RS_PERIODIC_TIMEOUT_USEC       100
+/* resolution of fairness algorithm in usecs -
+   coefficient for calculating the actual t fair */
+#define T_FAIR_COEF                    10000000
+/* number of bytes in single QM arbitration cycle -
+   coefficient for calculating the fairness timer */
+#define QM_ARB_BYTES                   40000
+#define FAIR_MEM                       2
 
-#define TPA_TYPE_START                 ETH_FAST_PATH_RX_CQE_START_FLG
-#define TPA_TYPE_END                   ETH_FAST_PATH_RX_CQE_END_FLG
-#define TPA_TYPE(cqe)          (cqe->fast_path_cqe.error_type_flags & \
-                                (TPA_TYPE_START | TPA_TYPE_END))
-#define BNX2X_RX_SUM_OK(cqe) \
-                       (!(cqe->fast_path_cqe.status_flags & \
-                        (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG | \
-                         ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG)))
 
-#define BNX2X_RX_SUM_FIX(cqe) \
-                       ((le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & \
-                         PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) == \
-                        (1 << PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT))
+#define ATTN_NIG_FOR_FUNC              (1L << 8)
+#define ATTN_SW_TIMER_4_FUNC           (1L << 9)
+#define GPIO_2_FUNC                    (1L << 10)
+#define GPIO_3_FUNC                    (1L << 11)
+#define GPIO_4_FUNC                    (1L << 12)
+#define ATTN_GENERAL_ATTN_1            (1L << 13)
+#define ATTN_GENERAL_ATTN_2            (1L << 14)
+#define ATTN_GENERAL_ATTN_3            (1L << 15)
+#define ATTN_GENERAL_ATTN_4            (1L << 13)
+#define ATTN_GENERAL_ATTN_5            (1L << 14)
+#define ATTN_GENERAL_ATTN_6            (1L << 15)
+
+#define ATTN_HARD_WIRED_MASK           0xff00
+#define ATTENTION_ID                   4
 
 
-#define MDIO_AN_CL73_OR_37_COMPLETE \
-               (MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE | \
-                MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE)
-
-#define GP_STATUS_PAUSE_RSOLUTION_TXSIDE \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE
-#define GP_STATUS_PAUSE_RSOLUTION_RXSIDE \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE
-#define GP_STATUS_SPEED_MASK \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK
-#define GP_STATUS_10M   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M
-#define GP_STATUS_100M  MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M
-#define GP_STATUS_1G    MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G
-#define GP_STATUS_2_5G  MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G
-#define GP_STATUS_5G    MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G
-#define GP_STATUS_6G    MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G
-#define GP_STATUS_10G_HIG \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG
-#define GP_STATUS_10G_CX4 \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4
-#define GP_STATUS_12G_HIG \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG
-#define GP_STATUS_12_5G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G
-#define GP_STATUS_13G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G
-#define GP_STATUS_15G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G
-#define GP_STATUS_16G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G
-#define GP_STATUS_1G_KX MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX
-#define GP_STATUS_10G_KX4 \
-                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4
-
-#define LINK_10THD                     LINK_STATUS_SPEED_AND_DUPLEX_10THD
-#define LINK_10TFD                     LINK_STATUS_SPEED_AND_DUPLEX_10TFD
-#define LINK_100TXHD                   LINK_STATUS_SPEED_AND_DUPLEX_100TXHD
-#define LINK_100T4                     LINK_STATUS_SPEED_AND_DUPLEX_100T4
-#define LINK_100TXFD                   LINK_STATUS_SPEED_AND_DUPLEX_100TXFD
-#define LINK_1000THD                   LINK_STATUS_SPEED_AND_DUPLEX_1000THD
-#define LINK_1000TFD                   LINK_STATUS_SPEED_AND_DUPLEX_1000TFD
-#define LINK_1000XFD                   LINK_STATUS_SPEED_AND_DUPLEX_1000XFD
-#define LINK_2500THD                   LINK_STATUS_SPEED_AND_DUPLEX_2500THD
-#define LINK_2500TFD                   LINK_STATUS_SPEED_AND_DUPLEX_2500TFD
-#define LINK_2500XFD                   LINK_STATUS_SPEED_AND_DUPLEX_2500XFD
-#define LINK_10GTFD                    LINK_STATUS_SPEED_AND_DUPLEX_10GTFD
-#define LINK_10GXFD                    LINK_STATUS_SPEED_AND_DUPLEX_10GXFD
-#define LINK_12GTFD                    LINK_STATUS_SPEED_AND_DUPLEX_12GTFD
-#define LINK_12GXFD                    LINK_STATUS_SPEED_AND_DUPLEX_12GXFD
-#define LINK_12_5GTFD                  LINK_STATUS_SPEED_AND_DUPLEX_12_5GTFD
-#define LINK_12_5GXFD                  LINK_STATUS_SPEED_AND_DUPLEX_12_5GXFD
-#define LINK_13GTFD                    LINK_STATUS_SPEED_AND_DUPLEX_13GTFD
-#define LINK_13GXFD                    LINK_STATUS_SPEED_AND_DUPLEX_13GXFD
-#define LINK_15GTFD                    LINK_STATUS_SPEED_AND_DUPLEX_15GTFD
-#define LINK_15GXFD                    LINK_STATUS_SPEED_AND_DUPLEX_15GXFD
-#define LINK_16GTFD                    LINK_STATUS_SPEED_AND_DUPLEX_16GTFD
-#define LINK_16GXFD                    LINK_STATUS_SPEED_AND_DUPLEX_16GXFD
-
-#define NIG_STATUS_XGXS0_LINK10G \
-               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK10G
-#define NIG_STATUS_XGXS0_LINK_STATUS \
-               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS
-#define NIG_STATUS_XGXS0_LINK_STATUS_SIZE \
-               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS_SIZE
-#define NIG_STATUS_SERDES0_LINK_STATUS \
-               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_SERDES0_LINK_STATUS
-#define NIG_MASK_MI_INT \
-               NIG_MASK_INTERRUPT_PORT0_REG_MASK_EMAC0_MISC_MI_INT
-#define NIG_MASK_XGXS0_LINK10G \
-               NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK10G
-#define NIG_MASK_XGXS0_LINK_STATUS \
-               NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK_STATUS
-#define NIG_MASK_SERDES0_LINK_STATUS \
-               NIG_MASK_INTERRUPT_PORT0_REG_MASK_SERDES0_LINK_STATUS
-
-#define XGXS_RESET_BITS \
-       (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_RSTB_HW |   \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_IDDQ |      \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN |    \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN_SD | \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_TXD_FIFO_RSTB)
-
-#define SERDES_RESET_BITS \
-       (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_RSTB_HW | \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_IDDQ |    \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN |  \
-        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN_SD)
+/* stuff added to make the code fit 80Col */
 
+#define BNX2X_PMF_LINK_ASSERT \
+       GENERAL_ATTEN_OFFSET(LINK_SYNC_ATTENTION_BIT_FUNC_0 + BP_FUNC(bp))
 
 #define BNX2X_MC_ASSERT_BITS \
        (GENERAL_ATTEN_OFFSET(TSTORM_FATAL_ASSERT_ATTENTION_BIT) | \
@@ -985,15 +1133,20 @@ struct bnx2x {
 #define BNX2X_MCP_ASSERT \
        GENERAL_ATTEN_OFFSET(MCP_FATAL_ASSERT_ATTENTION_BIT)
 
-#define BNX2X_DOORQ_ASSERT \
-       AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT
+#define BNX2X_GRC_TIMEOUT      GENERAL_ATTEN_OFFSET(LATCHED_ATTN_TIMEOUT_GRC)
+#define BNX2X_GRC_RSV          (GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCR) | \
+                                GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCT) | \
+                                GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCN) | \
+                                GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCU) | \
+                                GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RBCP) | \
+                                GENERAL_ATTEN_OFFSET(LATCHED_ATTN_RSVD_GRC))
 
 #define HW_INTERRUT_ASSERT_SET_0 \
                                (AEU_INPUTS_ATTN_BITS_TSDM_HW_INTERRUPT | \
                                 AEU_INPUTS_ATTN_BITS_TCM_HW_INTERRUPT | \
                                 AEU_INPUTS_ATTN_BITS_TSEMI_HW_INTERRUPT | \
                                 AEU_INPUTS_ATTN_BITS_PBF_HW_INTERRUPT)
-#define HW_PRTY_ASSERT_SET_0    (AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR | \
+#define HW_PRTY_ASSERT_SET_0   (AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_PARSER_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_TSDM_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_SEARCHER_PARITY_ERROR |\
@@ -1010,7 +1163,7 @@ struct bnx2x {
                                 AEU_INPUTS_ATTN_BITS_UPB_HW_INTERRUPT | \
                                 AEU_INPUTS_ATTN_BITS_CSDM_HW_INTERRUPT | \
                                 AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT)
-#define HW_PRTY_ASSERT_SET_1    (AEU_INPUTS_ATTN_BITS_PBCLIENT_PARITY_ERROR |\
+#define HW_PRTY_ASSERT_SET_1   (AEU_INPUTS_ATTN_BITS_PBCLIENT_PARITY_ERROR |\
                                 AEU_INPUTS_ATTN_BITS_QM_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_XSDM_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_XSEMI_PARITY_ERROR | \
@@ -1027,7 +1180,7 @@ struct bnx2x {
                                 AEU_INPUTS_ATTN_BITS_DMAE_HW_INTERRUPT | \
                        AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_HW_INTERRUPT |\
                                 AEU_INPUTS_ATTN_BITS_MISC_HW_INTERRUPT)
-#define HW_PRTY_ASSERT_SET_2    (AEU_INPUTS_ATTN_BITS_CSEMI_PARITY_ERROR | \
+#define HW_PRTY_ASSERT_SET_2   (AEU_INPUTS_ATTN_BITS_CSEMI_PARITY_ERROR | \
                                 AEU_INPUTS_ATTN_BITS_PXP_PARITY_ERROR | \
                        AEU_INPUTS_ATTN_BITS_PXPPCICLOCKCLIENT_PARITY_ERROR |\
                                 AEU_INPUTS_ATTN_BITS_CFC_PARITY_ERROR | \
@@ -1036,42 +1189,45 @@ struct bnx2x {
                                 AEU_INPUTS_ATTN_BITS_MISC_PARITY_ERROR)
 
 
-#define ETH_RX_ERROR_FALGS      (ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG | \
-                                ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG | \
-                                ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG)
-
+#define MULTI_FLAGS(bp) \
+               (TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY | \
+                TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY | \
+                TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY | \
+                TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY | \
+                (bp->multi_mode << \
+                 TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT))
 
-#define MULTI_FLAGS \
-       (TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY     | \
-        TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY | \
-        TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY     | \
-        TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY | \
-        TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_ENABLE)
+#define MULTI_MASK                     0x7f
 
-#define MULTI_MASK      0x7f
 
+#define DEF_USB_FUNC_OFF               (2 + 2*HC_USTORM_DEF_SB_NUM_INDICES)
+#define DEF_CSB_FUNC_OFF               (2 + 2*HC_CSTORM_DEF_SB_NUM_INDICES)
+#define DEF_XSB_FUNC_OFF               (2 + 2*HC_XSTORM_DEF_SB_NUM_INDICES)
+#define DEF_TSB_FUNC_OFF               (2 + 2*HC_TSTORM_DEF_SB_NUM_INDICES)
 
-#define U_SB_ETH_RX_CQ_INDEX           HC_INDEX_U_ETH_RX_CQ_CONS
-#define C_SB_ETH_TX_CQ_INDEX           HC_INDEX_C_ETH_TX_CQ_CONS
-#define C_DEF_SB_SP_INDEX              HC_INDEX_DEF_C_ETH_SLOW_PATH
-
-#define BNX2X_RX_SB_INDEX \
-       &fp->status_blk->u_status_block.index_values[U_SB_ETH_RX_CQ_INDEX]
-
-#define BNX2X_TX_SB_INDEX \
-       &fp->status_blk->c_status_block.index_values[C_SB_ETH_TX_CQ_INDEX]
+#define C_DEF_SB_SP_INDEX              HC_INDEX_DEF_C_ETH_SLOW_PATH
 
 #define BNX2X_SP_DSB_INDEX \
-&bp->def_status_blk->c_def_status_block.index_values[C_DEF_SB_SP_INDEX]
+(&bp->def_status_blk->c_def_status_block.index_values[C_DEF_SB_SP_INDEX])
 
 
 #define CAM_IS_INVALID(x) \
 (x.target_table_entry.flags == TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE)
 
 #define CAM_INVALIDATE(x) \
-x.target_table_entry.flags = TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE
+       (x.target_table_entry.flags = TSTORM_CAM_TARGET_TABLE_ENTRY_ACTION_TYPE)
 
 
+/* Number of u32 elements in MC hash array */
+#define MC_HASH_SIZE                   8
+#define MC_HASH_OFFSET(bp, i)          (BAR_TSTRORM_INTMEM + \
+       TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(BP_FUNC(bp)) + i*4)
+
+
+#ifndef PXP2_REG_PXP2_INT_STS
+#define PXP2_REG_PXP2_INT_STS          PXP2_REG_PXP2_INT_STS_0
+#endif
+
 /* MISC_REG_RESET_REG - this is here for the hsi to work don't touch */
 
 #endif /* bnx2x.h */
diff --git a/drivers/net/bnx2x_compat.h b/drivers/net/bnx2x_compat.h
new file mode 100644 (file)
index 0000000..b135e75
--- /dev/null
@@ -0,0 +1,307 @@
+#ifndef __BNX2X_COMPAT_H__
+#define __BNX2X_COMPAT_H__
+
+#ifndef BNX2X_NEW_NAPI
+#define netif_rx_schedule(dev, X)      netif_rx_schedule(dev)
+#define netif_rx_complete(X, Y)                netif_rx_complete(dev)
+#endif
+
+#if (LINUX_VERSION_CODE < 0x020616)
+#define skb_copy_from_linear_data_offset(skb, pad, new_skb_data, len) \
+                               memcpy(new_skb_data, skb->data + pad, len)
+
+/* skb_buff accessors */
+#define ip_hdr(skb)                    (skb)->nh.iph
+#define ipv6_hdr(skb)                  (skb)->nh.ipv6h
+#define ip_hdrlen(skb)                 (ip_hdr(skb)->ihl * 4)
+#define tcp_hdr(skb)                   (skb)->h.th
+#define tcp_hdrlen(skb)                        (tcp_hdr(skb)->doff * 4)
+#define udp_hdr(skb)                   (skb)->h.uh
+#define skb_mac_header(skb)            ((skb)->mac.raw)
+#define skb_network_header(skb)                ((skb)->nh.raw)
+#define skb_transport_header(skb)      ((skb)->h.raw)
+#endif
+
+
+#ifndef CHECKSUM_PARTIAL
+#define CHECKSUM_PARTIAL               CHECKSUM_HW
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020600)
+#define might_sleep()
+
+#define num_online_cpus()              1
+
+#define dev_info(dev, format, args...) \
+                               printk(KERN_INFO "bnx2x: " format, ##args)
+
+#define dev_err(dev, format, args...) \
+                               printk(KERN_ERR "bnx2x: " format, ##args)
+
+static inline int dma_mapping_error(dma_addr_t mapping)
+{
+       return 0;
+}
+
+#define synchronize_irq(X)             synchronize_irq()
+#define flush_scheduled_work()
+#endif
+
+
+#ifndef SET_MODULE_OWNER
+#define SET_MODULE_OWNER(dev)
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020604)
+#define MODULE_VERSION(version)
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020605)
+static inline void pci_dma_sync_single_for_device(struct pci_dev *dev,
+                                                 dma_addr_t map, size_t size,
+                                                 int dir)
+{
+}
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020547)
+#define pci_set_consistent_dma_mask(X, Y)      (0)
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020607)
+#define msleep(x) \
+       do { \
+               current->state = TASK_UNINTERRUPTIBLE; \
+               schedule_timeout((HZ * (x)) / 1000); \
+       } while (0)
+
+#ifndef ADVERTISE_1000XPAUSE
+static inline struct mii_ioctl_data *if_mii(struct ifreq *rq)
+{
+       return (struct mii_ioctl_data *)&rq->ifr_ifru;
+}
+#endif
+
+#define pci_enable_msix(X, Y, Z)       (-1)
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020609)
+#define msleep_interruptible(x) \
+       do{ \
+               current->state = TASK_INTERRUPTIBLE; \
+               schedule_timeout((HZ * (x)) / 1000); \
+       } while (0)
+
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x02060b)
+#define pm_message_t                   u32
+#define pci_power_t                    u32
+#define PCI_D0                         0
+#define PCI_D3hot                      3
+#define pci_choose_state(pdev, state)  state
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x02060e)
+#define touch_softlockup_watchdog()
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020612)
+static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev,
+                                              unsigned int length)
+{
+       struct sk_buff *skb = dev_alloc_skb(length);
+
+       if (skb)
+               skb->dev = dev;
+       return skb;
+}
+#endif
+
+
+#ifndef IRQ_HANDLED
+typedef void                           irqreturn_t;
+#define IRQ_HANDLED
+#define IRQ_NONE
+#endif
+
+
+#ifndef IRQF_SHARED
+#define IRQF_SHARED                    SA_SHIRQ
+#endif
+
+
+#ifndef NETIF_F_GSO
+static inline void netif_tx_lock(struct net_device *dev)
+{
+       spin_lock(&dev->xmit_lock);
+       dev->xmit_lock_owner = smp_processor_id();
+}
+
+static inline void netif_tx_unlock(struct net_device *dev)
+{
+       dev->xmit_lock_owner = -1;
+       spin_unlock(&dev->xmit_lock);
+}
+#endif
+
+
+#ifndef skb_shinfo
+#define skb_shinfo(SKB)        ((struct skb_shared_info *)(skb_end_pointer(SKB)))
+#endif
+
+
+#ifdef NETIF_F_TSO
+#ifndef NETIF_F_GSO
+
+static inline int skb_is_gso(const struct sk_buff *skb)
+{
+       return skb_shinfo(skb)->tso_size;
+}
+
+#define gso_size                       tso_size
+
+#endif /* NETIF_F_GSO */
+
+#ifndef NETIF_F_GSO_SOFTWARE
+#define NETIF_F_GSO_SOFTWARE           (NETIF_F_TSO)
+#endif
+
+#endif /* NETIF_F_TSO */
+
+#ifndef NETIF_F_TSO_ECN
+#define NETIF_F_TSO_ECN                        0
+#endif
+
+
+#if !defined(mmiowb)
+#define mmiowb()
+#endif
+
+#if !defined(__iomem)
+#define __iomem
+#endif
+
+#ifndef noinline
+#define noinline
+#endif
+
+#if !defined(INIT_WORK)
+#define INIT_WORK INIT_TQUEUE
+#define schedule_work                  schedule_task
+#define work_struct                    tq_struct
+#endif
+
+#if !defined(HAVE_NETDEV_PRIV) && (LINUX_VERSION_CODE != 0x020603) && (LINUX_VERSION_CODE != 0x020604) && (LINUX_VERSION_CODE != 0x020605)
+#define netdev_priv(dev)               (dev)->priv
+#endif
+
+/* Missing defines */
+#ifndef SPEED_2500
+#define SPEED_2500                     2500
+#endif
+
+#ifndef SUPPORTED_Pause
+#define SUPPORTED_Pause                        (1 << 13)
+#endif
+#ifndef SUPPORTED_Asym_Pause
+#define SUPPORTED_Asym_Pause           (1 << 14)
+#endif
+
+#ifndef ADVERTISED_Pause
+#define ADVERTISED_Pause               (1 << 13)
+#endif
+
+#ifndef ADVERTISED_Asym_Pause
+#define ADVERTISED_Asym_Pause          (1 << 14)
+#endif
+
+#ifndef NETDEV_TX_BUSY
+#define NETDEV_TX_BUSY                 1 /* driver tx path was busy */
+#endif
+
+#ifndef NETDEV_TX_OK
+#define NETDEV_TX_OK                   0 /* driver took care of packet */
+#endif
+
+
+#ifndef DMA_64BIT_MASK
+#define DMA_64BIT_MASK                 ((u64) 0xffffffffffffffffULL)
+#define DMA_32BIT_MASK                 ((u64) 0x00000000ffffffffULL)
+#endif
+
+#ifndef PCI_CAP_ID_EXP
+#define PCI_CAP_ID_EXP                 0x10
+#endif
+
+#ifndef PCI_EXP_DEVCTL
+#define PCI_EXP_DEVCTL                 8       /* Device Control */
+#endif
+
+#ifndef PCI_EXP_DEVCTL_PAYLOAD
+#define PCI_EXP_DEVCTL_PAYLOAD         0x00e0  /* Max_Payload_Size */
+#endif
+
+#ifndef PCI_EXP_DEVCTL_READRQ
+#define PCI_EXP_DEVCTL_READRQ          0x7000  /* Max_Read_Request_Size */
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020618)
+
+#ifndef NETIF_F_HW_CSUM
+#define NETIF_F_HW_CSUM                        8
+#endif
+
+static inline int bnx2x_set_tx_hw_csum(struct net_device *dev, u32 data)
+{
+       if (data)
+               dev->features |= NETIF_F_HW_CSUM;
+       else
+               dev->features &= ~NETIF_F_HW_CSUM;
+       return 0;
+}
+#endif
+
+
+/* If mutex is not available, use semaphore */
+#ifndef __LINUX_MUTEX_H
+#define mutex                          semaphore
+#define mutex_lock(x)                  down(x)
+#define mutex_unlock(x)                        up(x)
+#define mutex_init(x)                  sema_init(x,1)
+#endif
+
+
+#ifndef KERN_CONT
+#define KERN_CONT
+#endif
+
+
+#if (LINUX_VERSION_CODE < 0x020606) || defined(BNX2X_DRIVER_DISK) || defined(__VMKLNX__)
+
+#define CRC32C_POLY_LE                 0x82F63B78
+
+static inline u32 crc32c_le(u32 crc, unsigned char const *p, size_t len)
+{
+       int i;
+
+       while (len--) {
+               crc ^= *p++;
+               for (i = 0; i < 8; i++)
+                       crc = (crc >> 1) ^ ((crc & 1) ? CRC32C_POLY_LE : 0);
+       }
+       return crc;
+}
+#endif
+
+#endif /* __BNX2X_COMPAT_H__ */
index 3b968904ca659ced3e1877f17a497ca865eaebf6..384ebeba1cb11edd05b382acdc1c23348882a222 100644 (file)
  */
 
 
-#define CSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index)\
-       (0x1922 + (port * 0x40) + (index * 0x4))
-#define CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)\
-       (0x1900 + (port * 0x40))
-#define CSTORM_HC_BTR_OFFSET(port)\
-       (0x1984 + (port * 0xc0))
-#define CSTORM_SB_HC_DISABLE_OFFSET(port, cpu_id, index)\
-       (0x141a + (port * 0x280) + (cpu_id * 0x28) + (index * 0x4))
-#define CSTORM_SB_HC_TIMEOUT_OFFSET(port, cpu_id, index)\
-       (0x1418 + (port * 0x280) + (cpu_id * 0x28) + (index * 0x4))
-#define CSTORM_SB_HOST_SB_ADDR_OFFSET(port, cpu_id)\
-       (0x1400 + (port * 0x280) + (cpu_id * 0x28))
-#define CSTORM_STATS_FLAGS_OFFSET(port)                (0x5108 + (port * 0x8))
-#define TSTORM_CLIENT_CONFIG_OFFSET(port, client_id)\
-       (0x1510 + (port * 0x240) + (client_id * 0x20))
-#define TSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index)\
-       (0x138a + (port * 0x28) + (index * 0x4))
-#define TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)\
-       (0x1370 + (port * 0x28))
-#define TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port)\
-       (0x4b70 + (port * 0x8))
-#define TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(function)\
-       (0x1418 + (function * 0x30))
-#define TSTORM_HC_BTR_OFFSET(port)\
-       (0x13c4 + (port * 0x18))
-#define TSTORM_INDIRECTION_TABLE_OFFSET(port)\
-       (0x22c8 + (port * 0x80))
-#define TSTORM_INDIRECTION_TABLE_SIZE                  0x80
-#define TSTORM_MAC_FILTER_CONFIG_OFFSET(port)\
-       (0x1420 + (port * 0x30))
-#define TSTORM_RCQ_PROD_OFFSET(port, client_id)\
-       (0x1508 + (port * 0x240) + (client_id * 0x20))
-#define TSTORM_STATS_FLAGS_OFFSET(port)                (0x4b90 + (port * 0x8))
-#define USTORM_DEF_SB_HC_DISABLE_OFFSET(port, index)\
-       (0x191a + (port * 0x28) + (index * 0x4))
-#define USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)\
-       (0x1900 + (port * 0x28))
-#define USTORM_HC_BTR_OFFSET(port)\
-       (0x1954 + (port * 0xb8))
-#define USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(port)\
-       (0x5408 + (port * 0x8))
-#define USTORM_SB_HC_DISABLE_OFFSET(port, cpu_id, index)\
-       (0x141a + (port * 0x280) + (cpu_id * 0x28) + (index * 0x4))
-#define USTORM_SB_HC_TIMEOUT_OFFSET(port, cpu_id, index)\
-       (0x1418 + (port * 0x280) + (cpu_id * 0x28) + (index * 0x4))
-#define USTORM_SB_HOST_SB_ADDR_OFFSET(port, cpu_id)\
-       (0x1400 + (port * 0x280) + (cpu_id * 0x28))
-#define XSTORM_ASSERT_LIST_INDEX_OFFSET                0x1000
-#define XSTORM_ASSERT_LIST_OFFSET(idx)                 (0x1020 + (idx * 0x10))
-#define XSTORM_DEF_SB_HC_DISABLE_OFFSET(port, index)\
-       (0x141a + (port * 0x28) + (index * 0x4))
-#define XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(port)\
-       (0x1400 + (port * 0x28))
-#define XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(port)\
-       (0x5408 + (port * 0x8))
-#define XSTORM_HC_BTR_OFFSET(port)\
-       (0x1454 + (port * 0x18))
-#define XSTORM_SPQ_PAGE_BASE_OFFSET(port)\
-       (0x5328 + (port * 0x18))
-#define XSTORM_SPQ_PROD_OFFSET(port)\
-       (0x5330 + (port * 0x18))
-#define XSTORM_STATS_FLAGS_OFFSET(port)                (0x53f8 + (port * 0x8))
+#define CSTORM_ASSERT_LIST_INDEX_OFFSET \
+       (IS_E1H_OFFSET ? 0x7000 : 0x1000)
+#define CSTORM_ASSERT_LIST_OFFSET(idx) \
+       (IS_E1H_OFFSET ? (0x7020 + (idx * 0x10)) : (0x1020 + (idx * 0x10)))
+#define CSTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \
+       (IS_E1H_OFFSET ? (0x8522 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100) + (index * 0x4)) : (0x1922 + (function * \
+       0x40) + (index * 0x4)))
+#define CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x8500 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100)) : (0x1900 + (function * 0x40)))
+#define CSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x8508 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100)) : (0x1908 + (function * 0x40)))
+#define CSTORM_FUNCTION_MODE_OFFSET \
+       (IS_E1H_OFFSET ? 0x11e8 : 0xffffffff)
+#define CSTORM_HC_BTR_OFFSET(port) \
+       (IS_E1H_OFFSET ? (0x8704 + (port * 0xf0)) : (0x1984 + (port * 0xc0)))
+#define CSTORM_SB_HC_DISABLE_OFFSET(port, cpu_id, index) \
+       (IS_E1H_OFFSET ? (0x801a + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)) : (0x141a + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)))
+#define CSTORM_SB_HC_TIMEOUT_OFFSET(port, cpu_id, index) \
+       (IS_E1H_OFFSET ? (0x8018 + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)) : (0x1418 + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)))
+#define CSTORM_SB_HOST_SB_ADDR_OFFSET(port, cpu_id) \
+       (IS_E1H_OFFSET ? (0x8000 + (port * 0x280) + (cpu_id * 0x28)) : \
+       (0x1400 + (port * 0x280) + (cpu_id * 0x28)))
+#define CSTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, cpu_id) \
+       (IS_E1H_OFFSET ? (0x8008 + (port * 0x280) + (cpu_id * 0x28)) : \
+       (0x1408 + (port * 0x280) + (cpu_id * 0x28)))
+#define CSTORM_STATS_FLAGS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x1108 + (function * 0x8)) : (0x5108 + \
+       (function * 0x8)))
+#define TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x31c0 + (function * 0x20)) : 0xffffffff)
+#define TSTORM_ASSERT_LIST_INDEX_OFFSET \
+       (IS_E1H_OFFSET ? 0xa000 : 0x1000)
+#define TSTORM_ASSERT_LIST_OFFSET(idx) \
+       (IS_E1H_OFFSET ? (0xa020 + (idx * 0x10)) : (0x1020 + (idx * 0x10)))
+#define TSTORM_CLIENT_CONFIG_OFFSET(port, client_id) \
+       (IS_E1H_OFFSET ? (0x3350 + (port * 0x190) + (client_id * 0x10)) \
+       : (0x9c0 + (port * 0x130) + (client_id * 0x10)))
+#define TSTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \
+       (IS_E1H_OFFSET ? (0xb01a + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0) + (index * 0x4)) : (0x141a + (function * \
+       0x28) + (index * 0x4)))
+#define TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0xb000 + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0)) : (0x1400 + (function * 0x28)))
+#define TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0xb008 + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0)) : (0x1408 + (function * 0x28)))
+#define TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2b80 + (function * 0x8)) : (0x4b68 + \
+       (function * 0x8)))
+#define TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x3000 + (function * 0x38)) : (0x1500 + \
+       (function * 0x38)))
+#define TSTORM_FUNCTION_MODE_OFFSET \
+       (IS_E1H_OFFSET ? 0x1ad0 : 0xffffffff)
+#define TSTORM_HC_BTR_OFFSET(port) \
+       (IS_E1H_OFFSET ? (0xb144 + (port * 0x30)) : (0x1454 + (port * 0x18)))
+#define TSTORM_INDIRECTION_TABLE_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x12c8 + (function * 0x80)) : (0x22c8 + \
+       (function * 0x80)))
+#define TSTORM_INDIRECTION_TABLE_SIZE 0x80
+#define TSTORM_MAC_FILTER_CONFIG_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x3008 + (function * 0x38)) : (0x1508 + \
+       (function * 0x38)))
+#define TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \
+       (IS_E1H_OFFSET ? (0x2010 + (port * 0x5b0) + (stats_counter_id * \
+       0x50)) : (0x4000 + (port * 0x5b0) + (stats_counter_id * 0x50)))
+#define TSTORM_STATS_FLAGS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2c00 + (function * 0x8)) : (0x4b88 + \
+       (function * 0x8)))
+#define TSTORM_TPA_EXIST_OFFSET (IS_E1H_OFFSET ? 0x3680 : 0x1c20)
+#define USTORM_AGG_DATA_OFFSET (IS_E1H_OFFSET ? 0xa040 : 0x2c10)
+#define USTORM_AGG_DATA_SIZE (IS_E1H_OFFSET ? 0x2440 : 0x1200)
+#define USTORM_ASSERT_LIST_INDEX_OFFSET \
+       (IS_E1H_OFFSET ? 0x8960 : 0x1000)
+#define USTORM_ASSERT_LIST_OFFSET(idx) \
+       (IS_E1H_OFFSET ? (0x8980 + (idx * 0x10)) : (0x1020 + (idx * 0x10)))
+#define USTORM_CQE_PAGE_BASE_OFFSET(port, clientId) \
+       (IS_E1H_OFFSET ? (0x8018 + (port * 0x4b0) + (clientId * 0x30)) : \
+       (0x5330 + (port * 0x260) + (clientId * 0x20)))
+#define USTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \
+       (IS_E1H_OFFSET ? (0x9522 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100) + (index * 0x4)) : (0x1922 + (function * \
+       0x40) + (index * 0x4)))
+#define USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x9500 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100)) : (0x1900 + (function * 0x40)))
+#define USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x9508 + ((function>>1) * 0x40) + \
+       ((function&1) * 0x100)) : (0x1908 + (function * 0x40)))
+#define USTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x26f0 + (function * 0x8)) : (0x1fd8 + \
+       (function * 0x8)))
+#define USTORM_FUNCTION_MODE_OFFSET \
+       (IS_E1H_OFFSET ? 0x2448 : 0xffffffff)
+#define USTORM_HC_BTR_OFFSET(port) \
+       (IS_E1H_OFFSET ? (0x9704 + (port * 0xf0)) : (0x1984 + (port * 0xc0)))
+#define USTORM_MAX_AGG_SIZE_OFFSET(port, clientId) \
+       (IS_E1H_OFFSET ? (0x8010 + (port * 0x4b0) + (clientId * 0x30)) : \
+       (0x5328 + (port * 0x260) + (clientId * 0x20)))
+#define USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2408 + (function * 0x8)) : (0x5308 + \
+       (function * 0x8)))
+#define USTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \
+       (IS_E1H_OFFSET ? (0x2450 + (port * 0x120) + (stats_counter_id * \
+       0x10)) : (0x1d80 + (port * 0x120) + (stats_counter_id * 0x10)))
+#define USTORM_RX_PRODS_OFFSET(port, client_id) \
+       (IS_E1H_OFFSET ? (0x8000 + (port * 0x4b0) + (client_id * 0x30)) \
+       : (0x5318 + (port * 0x260) + (client_id * 0x20)))
+#define USTORM_SB_HC_DISABLE_OFFSET(port, cpu_id, index) \
+       (IS_E1H_OFFSET ? (0x901a + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)) : (0x141a + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)))
+#define USTORM_SB_HC_TIMEOUT_OFFSET(port, cpu_id, index) \
+       (IS_E1H_OFFSET ? (0x9018 + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)) : (0x1418 + (port * 0x280) + (cpu_id * 0x28) + \
+       (index * 0x4)))
+#define USTORM_SB_HOST_SB_ADDR_OFFSET(port, cpu_id) \
+       (IS_E1H_OFFSET ? (0x9000 + (port * 0x280) + (cpu_id * 0x28)) : \
+       (0x1400 + (port * 0x280) + (cpu_id * 0x28)))
+#define USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, cpu_id) \
+       (IS_E1H_OFFSET ? (0x9008 + (port * 0x280) + (cpu_id * 0x28)) : \
+       (0x1408 + (port * 0x280) + (cpu_id * 0x28)))
+#define USTORM_STATS_FLAGS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2690 + (function * 0x8)) : (0x1fc0 + \
+       (function * 0x8)))
+#define XSTORM_ASSERT_LIST_INDEX_OFFSET \
+       (IS_E1H_OFFSET ? 0x9000 : 0x1000)
+#define XSTORM_ASSERT_LIST_OFFSET(idx) \
+       (IS_E1H_OFFSET ? (0x9020 + (idx * 0x10)) : (0x1020 + (idx * 0x10)))
+#define XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) \
+       (IS_E1H_OFFSET ? (0x24a8 + (port * 0x50)) : (0x3ba0 + (port * 0x50)))
+#define XSTORM_DEF_SB_HC_DISABLE_OFFSET(function, index) \
+       (IS_E1H_OFFSET ? (0xa01a + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0) + (index * 0x4)) : (0x141a + (function * \
+       0x28) + (index * 0x4)))
+#define XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0xa000 + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0)) : (0x1400 + (function * 0x28)))
+#define XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0xa008 + ((function>>1) * 0x28) + \
+       ((function&1) * 0xa0)) : (0x1408 + (function * 0x28)))
+#define XSTORM_E1HOV_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2ad8 + (function * 0x2)) : 0xffffffff)
+#define XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2418 + (function * 0x8)) : (0x3b70 + \
+       (function * 0x8)))
+#define XSTORM_FAIRNESS_PER_VN_VARS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2588 + (function * 0x70)) : (0x3c80 + \
+       (function * 0x70)))
+#define XSTORM_FUNCTION_MODE_OFFSET \
+       (IS_E1H_OFFSET ? 0x2ae8 : 0xffffffff)
+#define XSTORM_HC_BTR_OFFSET(port) \
+       (IS_E1H_OFFSET ? (0xa144 + (port * 0x30)) : (0x1454 + (port * 0x18)))
+#define XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, stats_counter_id) \
+       (IS_E1H_OFFSET ? (0xc000 + (port * 0x3f0) + (stats_counter_id * \
+       0x38)) : (0x3378 + (port * 0x3f0) + (stats_counter_id * 0x38)))
+#define XSTORM_RATE_SHAPING_PER_VN_VARS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2548 + (function * 0x70)) : (0x3c40 + \
+       (function * 0x70)))
+#define XSTORM_SPQ_PAGE_BASE_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2000 + (function * 0x10)) : (0x3328 + \
+       (function * 0x10)))
+#define XSTORM_SPQ_PROD_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x2008 + (function * 0x10)) : (0x3330 + \
+       (function * 0x10)))
+#define XSTORM_STATS_FLAGS_OFFSET(function) \
+       (IS_E1H_OFFSET ? (0x23d8 + (function * 0x8)) : (0x3b60 + \
+       (function * 0x8)))
 #define COMMON_ASM_INVALID_ASSERT_OPCODE 0x0
 
 /**
-* This file defines HSI constatnts for the ETH flow
+* This file defines HSI constants for the ETH flow
 */
+#ifdef _EVEREST_MICROCODE
+#include "microcode_constants.h"
+#include "eth_rx_bd.h"
+#include "eth_tx_bd.h"
+#include "eth_rx_cqe.h"
+#include "eth_rx_sge.h"
+#include "eth_rx_cqe_next_page.h"
+#endif
 
-/* hash types */
-#define DEFAULT_HASH_TYPE                      0
-#define IPV4_HASH_TYPE                         1
-#define TCP_IPV4_HASH_TYPE                     2
-#define IPV6_HASH_TYPE                         3
-#define TCP_IPV6_HASH_TYPE                     4
+/* RSS hash types */
+#define DEFAULT_HASH_TYPE 0
+#define IPV4_HASH_TYPE 1
+#define TCP_IPV4_HASH_TYPE 2
+#define IPV6_HASH_TYPE 3
+#define TCP_IPV6_HASH_TYPE 4
+#define VLAN_PRI_HASH_TYPE 5
+#define E1HOV_PRI_HASH_TYPE 6
+#define DSCP_HASH_TYPE 7
+
+
+/* Ethernet Ring parameters */
+#define X_ETH_LOCAL_RING_SIZE 13
+#define FIRST_BD_IN_PKT 0
+#define PARSE_BD_INDEX 1
+#define NUM_OF_ETH_BDS_IN_PAGE ((PAGE_SIZE)/(STRUCT_SIZE(eth_tx_bd)/8))
+
+
+/* Rx ring params */
+#define U_ETH_LOCAL_BD_RING_SIZE 16
+#define U_ETH_LOCAL_SGE_RING_SIZE 12
+#define U_ETH_SGL_SIZE 8
+
+
+#define U_ETH_BDS_PER_PAGE_MASK \
+       ((PAGE_SIZE/(STRUCT_SIZE(eth_rx_bd)/8))-1)
+#define U_ETH_CQE_PER_PAGE_MASK \
+       ((PAGE_SIZE/(STRUCT_SIZE(eth_rx_cqe)/8))-1)
+#define U_ETH_SGES_PER_PAGE_MASK \
+       ((PAGE_SIZE/(STRUCT_SIZE(eth_rx_sge)/8))-1)
+
+#define U_ETH_SGES_PER_PAGE_INVERSE_MASK \
+       (0xFFFF - ((PAGE_SIZE/((STRUCT_SIZE(eth_rx_sge))/8))-1))
+
+
+#define TU_ETH_CQES_PER_PAGE \
+       (PAGE_SIZE/(STRUCT_SIZE(eth_rx_cqe_next_page)/8))
+#define U_ETH_BDS_PER_PAGE (PAGE_SIZE/(STRUCT_SIZE(eth_rx_bd)/8))
+#define U_ETH_SGES_PER_PAGE (PAGE_SIZE/(STRUCT_SIZE(eth_rx_sge)/8))
+
+#define U_ETH_UNDEFINED_Q 0xFF
 
 /* values of command IDs in the ramrod message */
-#define RAMROD_CMD_ID_ETH_PORT_SETUP                   (80)
-#define RAMROD_CMD_ID_ETH_CLIENT_SETUP                 (85)
-#define RAMROD_CMD_ID_ETH_STAT_QUERY                   (90)
-#define RAMROD_CMD_ID_ETH_UPDATE                       (100)
-#define RAMROD_CMD_ID_ETH_HALT                         (105)
-#define RAMROD_CMD_ID_ETH_SET_MAC                      (110)
-#define RAMROD_CMD_ID_ETH_CFC_DEL                      (115)
-#define RAMROD_CMD_ID_ETH_PORT_DEL                     (120)
-#define RAMROD_CMD_ID_ETH_FORWARD_SETUP                (125)
+#define RAMROD_CMD_ID_ETH_PORT_SETUP 80
+#define RAMROD_CMD_ID_ETH_CLIENT_SETUP 85
+#define RAMROD_CMD_ID_ETH_STAT_QUERY 90
+#define RAMROD_CMD_ID_ETH_UPDATE 100
+#define RAMROD_CMD_ID_ETH_HALT 105
+#define RAMROD_CMD_ID_ETH_SET_MAC 110
+#define RAMROD_CMD_ID_ETH_CFC_DEL 115
+#define RAMROD_CMD_ID_ETH_PORT_DEL 120
+#define RAMROD_CMD_ID_ETH_FORWARD_SETUP 125
 
 
 /* command values for set mac command */
-#define T_ETH_MAC_COMMAND_SET                          0
-#define T_ETH_MAC_COMMAND_INVALIDATE                   1
+#define T_ETH_MAC_COMMAND_SET 0
+#define T_ETH_MAC_COMMAND_INVALIDATE 1
 
-#define T_ETH_INDIRECTION_TABLE_SIZE                   128
+#define T_ETH_INDIRECTION_TABLE_SIZE 128
+
+/*The CRC32 seed, that is used for the hash(reduction) multicast address */
+#define T_ETH_CRC32_HASH_SEED 0x00000000
 
 /* Maximal L2 clients supported */
-#define ETH_MAX_RX_CLIENTS                             (18)
+#define ETH_MAX_RX_CLIENTS_E1 19
+#define ETH_MAX_RX_CLIENTS_E1H 25
+
+/* Maximal aggregation queues supported */
+#define ETH_MAX_AGGREGATION_QUEUES_E1 32
+#define ETH_MAX_AGGREGATION_QUEUES_E1H 64
+
+/* ETH RSS modes */
+#define ETH_RSS_MODE_DISABLED 0
+#define ETH_RSS_MODE_REGULAR 1
+#define ETH_RSS_MODE_VLAN_PRI 2
+#define ETH_RSS_MODE_E1HOV_PRI 3
+#define ETH_RSS_MODE_IP_DSCP 4
+
 
 /**
-* This file defines HSI constatnts common to all microcode flows
+* This file defines HSI constants common to all microcode flows
 */
 
 /* Connection types */
-#define ETH_CONNECTION_TYPE                    0
+#define ETH_CONNECTION_TYPE 0
+#define TOE_CONNECTION_TYPE 1
+#define RDMA_CONNECTION_TYPE 2
+#define ISCSI_CONNECTION_TYPE 3
+#define FCOE_CONNECTION_TYPE 4
+#define RESERVED_CONNECTION_TYPE_0 5
+#define RESERVED_CONNECTION_TYPE_1 6
+#define RESERVED_CONNECTION_TYPE_2 7
+
 
-#define PROTOCOL_STATE_BIT_OFFSET              6
+#define PROTOCOL_STATE_BIT_OFFSET 6
 
-#define ETH_STATE      (ETH_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
+#define ETH_STATE (ETH_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
+#define TOE_STATE (TOE_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
+#define RDMA_STATE (RDMA_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
+#define ISCSI_STATE \
+       (ISCSI_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
+#define FCOE_STATE (FCOE_CONNECTION_TYPE << PROTOCOL_STATE_BIT_OFFSET)
 
 /* microcode fixed page page size 4K (chains and ring segments) */
-#define MC_PAGE_SIZE                                           (4096)
+#define MC_PAGE_SIZE (4096)
 
-/* Host coalescing constants */
 
-/* IGU constants */
-#define IGU_PORT_BASE                          0x0400
-
-#define IGU_ADDR_MSIX                          0x0000
-#define IGU_ADDR_INT_ACK                       0x0200
-#define IGU_ADDR_PROD_UPD                      0x0201
-#define IGU_ADDR_ATTN_BITS_UPD                 0x0202
-#define IGU_ADDR_ATTN_BITS_SET                 0x0203
-#define IGU_ADDR_ATTN_BITS_CLR                 0x0204
-#define IGU_ADDR_COALESCE_NOW                  0x0205
-#define IGU_ADDR_SIMD_MASK                     0x0206
-#define IGU_ADDR_SIMD_NOMASK                   0x0207
-#define IGU_ADDR_MSI_CTL                       0x0210
-#define IGU_ADDR_MSI_ADDR_LO                   0x0211
-#define IGU_ADDR_MSI_ADDR_HI                   0x0212
-#define IGU_ADDR_MSI_DATA                      0x0213
-
-#define IGU_INT_ENABLE                         0
-#define IGU_INT_DISABLE                        1
-#define IGU_INT_NOP                            2
-#define IGU_INT_NOP2                           3
+/* Host coalescing constants */
 
 /* index numbers */
-#define HC_USTORM_DEF_SB_NUM_INDICES           4
-#define HC_CSTORM_DEF_SB_NUM_INDICES           8
-#define HC_XSTORM_DEF_SB_NUM_INDICES           4
-#define HC_TSTORM_DEF_SB_NUM_INDICES           4
-#define HC_USTORM_SB_NUM_INDICES               4
-#define HC_CSTORM_SB_NUM_INDICES               4
-
-/* index values - which counterto update */
-
-#define HC_INDEX_U_ETH_RX_CQ_CONS              1
-
-#define HC_INDEX_C_ETH_TX_CQ_CONS              1
-
-#define HC_INDEX_DEF_X_SPQ_CONS                0
-
-#define HC_INDEX_DEF_C_ETH_FW_TX_CQ_CONS       2
-#define HC_INDEX_DEF_C_ETH_SLOW_PATH           3
+#define HC_USTORM_DEF_SB_NUM_INDICES 8
+#define HC_CSTORM_DEF_SB_NUM_INDICES 8
+#define HC_XSTORM_DEF_SB_NUM_INDICES 4
+#define HC_TSTORM_DEF_SB_NUM_INDICES 4
+#define HC_USTORM_SB_NUM_INDICES 4
+#define HC_CSTORM_SB_NUM_INDICES 4
+
+/* index values - which counter to update */
+
+#define HC_INDEX_U_TOE_RX_CQ_CONS 0
+#define HC_INDEX_U_ETH_RX_CQ_CONS 1
+#define HC_INDEX_U_ETH_RX_BD_CONS 2
+#define HC_INDEX_U_FCOE_EQ_CONS 3
+
+#define HC_INDEX_C_TOE_TX_CQ_CONS 0
+#define HC_INDEX_C_ETH_TX_CQ_CONS 1
+#define HC_INDEX_C_ISCSI_EQ_CONS 2
+
+#define HC_INDEX_DEF_X_SPQ_CONS 0
+
+#define HC_INDEX_DEF_C_RDMA_EQ_CONS 0
+#define HC_INDEX_DEF_C_RDMA_NAL_PROD 1
+#define HC_INDEX_DEF_C_ETH_FW_TX_CQ_CONS 2
+#define HC_INDEX_DEF_C_ETH_SLOW_PATH 3
+#define HC_INDEX_DEF_C_ETH_RDMA_CQ_CONS 4
+#define HC_INDEX_DEF_C_ETH_ISCSI_CQ_CONS 5
+#define HC_INDEX_DEF_C_ETH_FCOE_CQ_CONS 6
+
+#define HC_INDEX_DEF_U_ETH_RDMA_RX_CQ_CONS 0
+#define HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS 1
+#define HC_INDEX_DEF_U_ETH_RDMA_RX_BD_CONS 2
+#define HC_INDEX_DEF_U_ETH_ISCSI_RX_BD_CONS 3
+#define HC_INDEX_DEF_U_ETH_FCOE_RX_CQ_CONS 4
+#define HC_INDEX_DEF_U_ETH_FCOE_RX_BD_CONS 5
 
 /* used by the driver to get the SB offset */
-#define USTORM_ID                      0
-#define CSTORM_ID                      1
-#define XSTORM_ID                      2
-#define TSTORM_ID                      3
-#define ATTENTION_ID                   4
+#define USTORM_ID 0
+#define CSTORM_ID 1
+#define XSTORM_ID 2
+#define TSTORM_ID 3
+#define ATTENTION_ID 4
 
 /* max number of slow path commands per port */
-#define MAX_RAMRODS_PER_PORT           (8)
+#define MAX_RAMRODS_PER_PORT (8)
 
 /* values for RX ETH CQE type field */
-#define RX_ETH_CQE_TYPE_ETH_FASTPATH   (0)
-#define RX_ETH_CQE_TYPE_ETH_RAMROD             (1)
-
-/* MAC address list size */
-#define T_MAC_ADDRESS_LIST_SIZE        (96)
-
+#define RX_ETH_CQE_TYPE_ETH_FASTPATH (0)
+#define RX_ETH_CQE_TYPE_ETH_RAMROD (1)
+
+
+/**** DEFINES FOR TIMERS/CLOCKS RESOLUTIONS ****/
+#define EMULATION_FREQUENCY_FACTOR (1600)
+#define FPGA_FREQUENCY_FACTOR (100)
+
+#define TIMERS_TICK_SIZE_CHIP (1e-3)
+#define TIMERS_TICK_SIZE_EMUL \
+ ((TIMERS_TICK_SIZE_CHIP)/((EMULATION_FREQUENCY_FACTOR)))
+#define TIMERS_TICK_SIZE_FPGA \
+ ((TIMERS_TICK_SIZE_CHIP)/((FPGA_FREQUENCY_FACTOR)))
+
+#define TSEMI_CLK1_RESUL_CHIP (1e-3)
+#define TSEMI_CLK1_RESUL_EMUL \
+ ((TSEMI_CLK1_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR))
+#define TSEMI_CLK1_RESUL_FPGA \
+ ((TSEMI_CLK1_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR))
+
+#define USEMI_CLK1_RESUL_CHIP \
+ (TIMERS_TICK_SIZE_CHIP)
+#define USEMI_CLK1_RESUL_EMUL \
+ (TIMERS_TICK_SIZE_EMUL)
+#define USEMI_CLK1_RESUL_FPGA \
+ (TIMERS_TICK_SIZE_FPGA)
+
+#define XSEMI_CLK1_RESUL_CHIP (1e-3)
+#define XSEMI_CLK1_RESUL_EMUL \
+ ((XSEMI_CLK1_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR))
+#define XSEMI_CLK1_RESUL_FPGA \
+ ((XSEMI_CLK1_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR))
+
+#define XSEMI_CLK2_RESUL_CHIP (1e-6)
+#define XSEMI_CLK2_RESUL_EMUL \
+ ((XSEMI_CLK2_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR))
+#define XSEMI_CLK2_RESUL_FPGA \
+ ((XSEMI_CLK2_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR))
+
+#define SDM_TIMER_TICK_RESUL_CHIP (4*(1e-6))
+#define SDM_TIMER_TICK_RESUL_EMUL \
+ ((SDM_TIMER_TICK_RESUL_CHIP)/(EMULATION_FREQUENCY_FACTOR))
+#define SDM_TIMER_TICK_RESUL_FPGA \
+ ((SDM_TIMER_TICK_RESUL_CHIP)/(FPGA_FREQUENCY_FACTOR))
+
+
+/**** END DEFINES FOR TIMERS/CLOCKS RESOLUTIONS ****/
 #define XSTORM_IP_ID_ROLL_HALF 0x8000
 #define XSTORM_IP_ID_ROLL_ALL 0
 
-#define FW_LOG_LIST_SIZE       (50)
+#define FW_LOG_LIST_SIZE (50)
+
+#define NUM_OF_PROTOCOLS 4
+#define MAX_COS_NUMBER 16
+#define MAX_T_STAT_COUNTER_ID 18
+#define MAX_X_STAT_COUNTER_ID 18
+#define MAX_U_STAT_COUNTER_ID 18
+
 
-#define NUM_OF_PROTOCOLS               4
-#define MAX_COS_NUMBER                 16
-#define MAX_T_STAT_COUNTER_ID  18
+#define UNKNOWN_ADDRESS 0
+#define UNICAST_ADDRESS 1
+#define MULTICAST_ADDRESS 2
+#define BROADCAST_ADDRESS 3
 
-#define T_FAIR                                                 1
-#define FAIR_MEM                                               2
-#define RS_PERIODIC_TIMEOUT_IN_SDM_TICS 25
+#define SINGLE_FUNCTION 0
+#define MULTI_FUNCTION 1
 
-#define UNKNOWN_ADDRESS        0
-#define UNICAST_ADDRESS        1
-#define MULTICAST_ADDRESS      2
-#define BROADCAST_ADDRESS      3
+#define IP_V4 0
+#define IP_V6 1
 
index b21075ccb52ecf72945508863390d2a0268cac15..48059d86cd69ff97c6226b71a16ca5716f3b6bf8 100644 (file)
@@ -91,6 +91,13 @@ struct shared_hw_cfg {                                        /* NVRAM Offset */
 
 #define SHARED_HW_CFG_HIDE_PORT1                   0x00002000
 
+#define SHARED_HW_CFG_WOL_CAPABLE_DISABLED         0x00000000
+#define SHARED_HW_CFG_WOL_CAPABLE_ENABLED          0x00004000
+
+       /*  Output low when PERST is asserted */
+#define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_DISABLED            0x00000000
+#define SHARED_HW_CFG_SPIO4_FOLLOW_PERST_ENABLED             0x00008000
+
        u32 power_dissipated;                                   /* 0x11c */
 #define SHARED_HW_CFG_POWER_DIS_CMN_MASK           0xff000000
 #define SHARED_HW_CFG_POWER_DIS_CMN_SHIFT          24
@@ -119,29 +126,15 @@ struct shared_hw_cfg {                                     /* NVRAM Offset */
 #define SHARED_HW_CFG_UMP_NC_SI_EXT_PHY_TYPE_BCM5221 0x00010000
 
        u32 board;                                              /* 0x124 */
-#define SHARED_HW_CFG_BOARD_TYPE_MASK              0x0000ffff
-#define SHARED_HW_CFG_BOARD_TYPE_SHIFT             0
-#define SHARED_HW_CFG_BOARD_TYPE_NONE              0x00000000
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1000     0x00000001
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1001     0x00000002
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1002G    0x00000003
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1004G    0x00000004
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1007G    0x00000005
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1015G    0x00000006
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710A1020G    0x00000007
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710T1003G    0x00000008
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G    0x00000009
-#define SHARED_HW_CFG_BOARD_TYPE_BCM957710A1021G    0x0000000a
-
-#define SHARED_HW_CFG_BOARD_VER_MASK               0xffff0000
-#define SHARED_HW_CFG_BOARD_VER_SHIFT              16
-#define SHARED_HW_CFG_BOARD_MAJOR_VER_MASK         0xf0000000
-#define SHARED_HW_CFG_BOARD_MAJOR_VER_SHIFT        28
-#define SHARED_HW_CFG_BOARD_MINOR_VER_MASK         0x0f000000
-#define SHARED_HW_CFG_BOARD_MINOR_VER_SHIFT        24
-#define SHARED_HW_CFG_BOARD_REV_MASK               0x00ff0000
+#define SHARED_HW_CFG_BOARD_REV_MASK               0x00FF0000
 #define SHARED_HW_CFG_BOARD_REV_SHIFT              16
 
+#define SHARED_HW_CFG_BOARD_MAJOR_VER_MASK         0x0F000000
+#define SHARED_HW_CFG_BOARD_MAJOR_VER_SHIFT        24
+
+#define SHARED_HW_CFG_BOARD_MINOR_VER_MASK         0xF0000000
+#define SHARED_HW_CFG_BOARD_MINOR_VER_SHIFT        28
+
        u32 reserved;                                           /* 0x128 */
 
 };
@@ -192,36 +185,21 @@ struct port_hw_cfg {                          /* port 0: 0x12c  port 1: 0x2bc */
        u32 rdma_mac_lower;
 
        u32 serdes_config;
-       /* for external PHY, or forced mode or during AN */
-#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_MASK 0xffff0000
-#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_SHIFT  16
+#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_MASK          0x0000FFFF
+#define PORT_HW_CFG_SERDES_TX_DRV_PRE_EMPHASIS_SHIFT         0
 
-#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK    0x0000ffff
-#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT   0
+#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_MASK             0xFFFF0000
+#define PORT_HW_CFG_SERDES_RX_DRV_EQUALIZER_SHIFT            16
 
-       u16 serdes_tx_driver_pre_emphasis[16];
-       u16 serdes_rx_driver_equalizer[16];
 
-       u32 xgxs_config_lane0;
-       u32 xgxs_config_lane1;
-       u32 xgxs_config_lane2;
-       u32 xgxs_config_lane3;
-       /* for external PHY, or forced mode or during AN */
-#define PORT_HW_CFG_XGXS_TX_DRV_PRE_EMPHASIS_MASK   0xffff0000
-#define PORT_HW_CFG_XGXS_TX_DRV_PRE_EMPHASIS_SHIFT  16
+       u32 Reserved0[16];                                  /* 0x158 */
 
-#define PORT_HW_CFG_XGXS_RX_DRV_EQUALIZER_MASK     0x0000ffff
-#define PORT_HW_CFG_XGXS_RX_DRV_EQUALIZER_SHIFT     0
+       /*  for external PHY, or forced mode or during AN */
+       u16 xgxs_config_rx[4];                              /* 0x198 */
 
-       u16 xgxs_tx_driver_pre_emphasis_lane0[16];
-       u16 xgxs_tx_driver_pre_emphasis_lane1[16];
-       u16 xgxs_tx_driver_pre_emphasis_lane2[16];
-       u16 xgxs_tx_driver_pre_emphasis_lane3[16];
+       u16 xgxs_config_tx[4];                              /* 0x1A0 */
 
-       u16 xgxs_rx_driver_equalizer_lane0[16];
-       u16 xgxs_rx_driver_equalizer_lane1[16];
-       u16 xgxs_rx_driver_equalizer_lane2[16];
-       u16 xgxs_rx_driver_equalizer_lane3[16];
+       u32 Reserved1[64];                                  /* 0x1A8 */
 
        u32 lane_config;
 #define PORT_HW_CFG_LANE_SWAP_CFG_MASK             0x0000ffff
@@ -259,7 +237,7 @@ struct port_hw_cfg {                            /* port 0: 0x12c  port 1: 0x2bc */
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073      0x00000300
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705      0x00000400
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706      0x00000500
-#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8276      0x00000600
+#define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726      0x00000600
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481      0x00000700
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101      0x00000800
 #define PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE      0x0000fd00
@@ -301,8 +279,10 @@ struct port_hw_cfg {                           /* port 0: 0x12c  port 1: 0x2bc */
 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_16G        0x00000800
 #define PORT_HW_CFG_SPEED_CAPABILITY_D3_RESERVED    0x0000f000
 
-       u32 reserved[2];
+       /*  A place to hold the original MAC address as a backup */
+       u32 backup_mac_upper;                               /* 0x2B4 */
 
+       u32 backup_mac_lower;                               /* 0x2B8 */
 };
 
 
@@ -314,6 +294,14 @@ struct shared_feat_cfg {                            /* NVRAM Offset */
        u32 config;                                             /* 0x450 */
 #define SHARED_FEATURE_BMC_ECHO_MODE_EN            0x00000001
 
+       /*  Use the values from options 47 and 48 instead of the HW default
+         values */
+#define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_DISABLED     0x00000000
+#define SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED      0x00000002
+
+       /*  Override the OTP back to single function mode */
+#define SHARED_FEATURE_MF_MODE_DISABLED            0x00000100
+
 };
 
 
@@ -378,12 +366,13 @@ struct port_feat_cfg {                        /* port 0: 0x454  port 1: 0x4c8 */
 #define PORT_FEATURE_WOL_ACPI_UPON_MGMT            0x00000010
 
        u32 mba_config;
-#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK      0x00000003
+#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK      0x00000007
 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT     0
 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE       0x00000000
 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL       0x00000001
 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP     0x00000002
 #define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_ISCSIB     0x00000003
+#define PORT_FEATURE_MBA_BOOT_AGENT_TYPE_NONE          0x00000007
 #define PORT_FEATURE_MBA_RES_PAUSE_CAP             0x00000100
 #define PORT_FEATURE_MBA_RES_ASYM_PAUSE_CAP        0x00000200
 #define PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE       0x00000400
@@ -502,28 +491,41 @@ struct port_feat_cfg {                        /* port 0: 0x454  port 1: 0x4c8 */
 };
 
 
-/*****************************************************************************
- * Device Information                                                       *
- *****************************************************************************/
-struct dev_info {                                                   /* size */
+/****************************************************************************
+ * Device Information                                                      *
+ ****************************************************************************/
+struct shm_dev_info {                                              /* size */
 
-       u32    bc_rev; /* 8 bits each: major, minor, build */           /* 4 */
+       u32    bc_rev; /* 8 bits each: major, minor, build */          /* 4 */
 
-       struct shared_hw_cfg     shared_hw_config;                     /* 40 */
+       struct shared_hw_cfg     shared_hw_config;                    /* 40 */
 
-       struct port_hw_cfg       port_hw_config[PORT_MAX];      /* 400*2=800 */
+       struct port_hw_cfg       port_hw_config[PORT_MAX];     /* 400*2=800 */
 
-       struct shared_feat_cfg   shared_feature_config;                 /* 4 */
+       struct shared_feat_cfg   shared_feature_config;                /* 4 */
 
-       struct port_feat_cfg     port_feature_config[PORT_MAX]; /* 116*2=232 */
+       struct port_feat_cfg     port_feature_config[PORT_MAX];/* 116*2=232 */
 
 };
 
 
 #define FUNC_0                         0
 #define FUNC_1                         1
+#define FUNC_2                         2
+#define FUNC_3                         3
+#define FUNC_4                         4
+#define FUNC_5                         5
+#define FUNC_6                         6
+#define FUNC_7                         7
 #define E1_FUNC_MAX                    2
-#define FUNC_MAX                       E1_FUNC_MAX
+#define E1H_FUNC_MAX                   8
+
+#define VN_0                           0
+#define VN_1                           1
+#define VN_2                           2
+#define VN_3                           3
+#define E1VN_MAX                       1
+#define E1HVN_MAX                      4
 
 
 /* This value (in milliseconds) determines the frequency of the driver
@@ -619,7 +621,11 @@ struct drv_port_mb {
 #define LINK_STATUS_LINK_PARTNER_15GXFD_CAPABLE        0x08000000
 #define LINK_STATUS_LINK_PARTNER_16GXFD_CAPABLE        0x10000000
 
-       u32 reserved[3];
+       u32 port_stx;
+
+       u32 stat_nig_timer;
+
+       u32 reserved[1];
 
 };
 
@@ -642,6 +648,11 @@ struct drv_func_mb {
 #define DRV_MSG_CODE_GET_MANUF_KEY                     0x82000000
 #define DRV_MSG_CODE_LOAD_L2B_PRAM                     0x90000000
 
+#define BIOS_MSG_CODE_LIC_CHALLENGE                    0xff010000
+#define BIOS_MSG_CODE_LIC_RESPONSE                     0xff020000
+#define BIOS_MSG_CODE_VIRT_MAC_PRIM                    0xff030000
+#define BIOS_MSG_CODE_VIRT_MAC_ISCSI                   0xff040000
+
 #define DRV_MSG_SEQ_NUMBER_MASK                        0x0000ffff
 
        u32 drv_mb_param;
@@ -671,6 +682,11 @@ struct drv_func_mb {
 #define FW_MSG_CODE_L2B_PRAM_X_LOAD_FAILURE            0x90230000
 #define FW_MSG_CODE_L2B_PRAM_U_LOAD_FAILURE            0x90240000
 
+#define FW_MSG_CODE_LIC_CHALLENGE                      0xff010000
+#define FW_MSG_CODE_LIC_RESPONSE                       0xff020000
+#define FW_MSG_CODE_VIRT_MAC_PRIM                      0xff030000
+#define FW_MSG_CODE_VIRT_MAC_ISCSI                     0xff040000
+
 #define FW_MSG_SEQ_NUMBER_MASK                         0x0000ffff
 
        u32 fw_mb_param;
@@ -696,7 +712,13 @@ struct drv_func_mb {
        u32 iscsi_boot_signature;
        u32 iscsi_boot_block_offset;
 
-       u32 reserved[3];
+       u32 drv_status;
+#define DRV_STATUS_PMF                                 0x00000001
+
+       u32 virt_mac_upper;
+#define VIRT_MAC_SIGN_MASK                             0xffff0000
+#define VIRT_MAC_SIGNATURE                             0x564d0000
+       u32 virt_mac_lower;
 
 };
 
@@ -712,6 +734,88 @@ struct mgmtfw_state {
 };
 
 
+/****************************************************************************
+ * Multi-Function configuration                                            *
+ ****************************************************************************/
+struct shared_mf_cfg {
+
+       u32 clp_mb;
+#define SHARED_MF_CLP_SET_DEFAULT                  0x00000000
+       /* set by CLP */
+#define SHARED_MF_CLP_EXIT                         0x00000001
+       /* set by MCP */
+#define SHARED_MF_CLP_EXIT_DONE                    0x00010000
+
+};
+
+struct port_mf_cfg {
+
+       u32 dynamic_cfg;        /* device control channel */
+#define PORT_MF_CFG_E1HVN_TAG_MASK                 0x0000ffff
+#define PORT_MF_CFG_E1HVN_TAG_SHIFT                0
+#define PORT_MF_CFG_DYNAMIC_CFG_ENABLED            0x00010000
+#define PORT_MF_CFG_DYNAMIC_CFG_DEFAULT            0x00000000
+
+       u32 reserved[3];
+
+};
+
+struct func_mf_cfg {
+
+       u32 config;
+       /* E/R/I/D */
+       /* function 0 of each port cannot be hidden */
+#define FUNC_MF_CFG_FUNC_HIDE                      0x00000001
+
+#define FUNC_MF_CFG_PROTOCOL_MASK                  0x00000007
+#define FUNC_MF_CFG_PROTOCOL_ETHERNET              0x00000002
+#define FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA     0x00000004
+#define FUNC_MF_CFG_PROTOCOL_ISCSI                 0x00000006
+#define FUNC_MF_CFG_PROTOCOL_DEFAULT\
+       FUNC_MF_CFG_PROTOCOL_ETHERNET_WITH_RDMA
+
+#define FUNC_MF_CFG_FUNC_DISABLED                  0x00000008
+
+       /* PRI */
+       /* 0 - low priority, 3 - high priority */
+#define FUNC_MF_CFG_TRANSMIT_PRIORITY_MASK         0x00000300
+#define FUNC_MF_CFG_TRANSMIT_PRIORITY_SHIFT        8
+#define FUNC_MF_CFG_TRANSMIT_PRIORITY_DEFAULT      0x00000000
+
+       /* MINBW, MAXBW */
+       /* value range - 0..100, increments in 100Mbps */
+#define FUNC_MF_CFG_MIN_BW_MASK                    0x00ff0000
+#define FUNC_MF_CFG_MIN_BW_SHIFT                   16
+#define FUNC_MF_CFG_MIN_BW_DEFAULT                 0x00000000
+#define FUNC_MF_CFG_MAX_BW_MASK                    0xff000000
+#define FUNC_MF_CFG_MAX_BW_SHIFT                   24
+#define FUNC_MF_CFG_MAX_BW_DEFAULT                 0x64000000
+
+       u32 mac_upper;          /* MAC */
+#define FUNC_MF_CFG_UPPERMAC_MASK                  0x0000ffff
+#define FUNC_MF_CFG_UPPERMAC_SHIFT                 0
+#define FUNC_MF_CFG_UPPERMAC_DEFAULT               FUNC_MF_CFG_UPPERMAC_MASK
+       u32 mac_lower;
+#define FUNC_MF_CFG_LOWERMAC_DEFAULT               0xffffffff
+
+       u32 e1hov_tag;  /* VNI */
+#define FUNC_MF_CFG_E1HOV_TAG_MASK                 0x0000ffff
+#define FUNC_MF_CFG_E1HOV_TAG_SHIFT                0
+#define FUNC_MF_CFG_E1HOV_TAG_DEFAULT              FUNC_MF_CFG_E1HOV_TAG_MASK
+
+       u32 reserved[2];
+
+};
+
+struct mf_cfg {
+
+       struct shared_mf_cfg    shared_mf_config;
+       struct port_mf_cfg      port_mf_config[PORT_MAX];
+       struct func_mf_cfg      func_mf_config[E1H_FUNC_MAX];
+
+};
+
+
 /****************************************************************************
  * Shared Memory Region                                                    *
  ****************************************************************************/
@@ -738,23 +842,369 @@ struct shmem_region {                           /*   SharedMem Offset (size) */
 #define SHR_MEM_VALIDITY_ACTIVE_MFW_NONE           0x000001c0
 #define SHR_MEM_VALIDITY_ACTIVE_MFW_MASK           0x000001c0
 
      struct dev_info         dev_info;                /* 0x8     (0x438) */
struct shm_dev_info dev_info; /* 0x8 (0x438) */
 
+#ifdef _LICENSE_H
+       license_key_t           drv_lic_key[PORT_MAX]; /* 0x440 (52*2=0x68) */
+#else /* BNX2X_UPSTREAM */
        u8                      reserved[52*PORT_MAX];
+#endif
 
        /* FW information (for internal FW use) */
        u32                     fw_info_fio_offset;    /* 0x4a8       (0x4) */
        struct mgmtfw_state     mgmtfw_state;          /* 0x4ac     (0x1b8) */
 
        struct drv_port_mb      port_mb[PORT_MAX];     /* 0x664 (16*2=0x20) */
-       struct drv_func_mb      func_mb[FUNC_MAX];     /* 0x684 (44*2=0x58) */
+#if !defined(b710) /* BNX2X_UPSTREAM */
+       struct drv_func_mb      func_mb[E1H_FUNC_MAX];
+#else
+       struct drv_func_mb      func_mb[E1_FUNC_MAX];  /* 0x684 (44*2=0x58) */
+#endif
+
+#if !defined(b710) /* BNX2X_UPSTREAM */
+       struct mf_cfg           mf_cfg;
+#endif
 
 };                                                    /* 0x6dc */
 
 
+struct emac_stats {
+    u32     rx_stat_ifhcinoctets;
+    u32     rx_stat_ifhcinbadoctets;
+    u32     rx_stat_etherstatsfragments;
+    u32     rx_stat_ifhcinucastpkts;
+    u32     rx_stat_ifhcinmulticastpkts;
+    u32     rx_stat_ifhcinbroadcastpkts;
+    u32     rx_stat_dot3statsfcserrors;
+    u32     rx_stat_dot3statsalignmenterrors;
+    u32     rx_stat_dot3statscarriersenseerrors;
+    u32     rx_stat_xonpauseframesreceived;
+    u32     rx_stat_xoffpauseframesreceived;
+    u32     rx_stat_maccontrolframesreceived;
+    u32     rx_stat_xoffstateentered;
+    u32     rx_stat_dot3statsframestoolong;
+    u32     rx_stat_etherstatsjabbers;
+    u32     rx_stat_etherstatsundersizepkts;
+    u32     rx_stat_etherstatspkts64octets;
+    u32     rx_stat_etherstatspkts65octetsto127octets;
+    u32     rx_stat_etherstatspkts128octetsto255octets;
+    u32     rx_stat_etherstatspkts256octetsto511octets;
+    u32     rx_stat_etherstatspkts512octetsto1023octets;
+    u32     rx_stat_etherstatspkts1024octetsto1522octets;
+    u32     rx_stat_etherstatspktsover1522octets;
+
+    u32     rx_stat_falsecarriererrors;
+
+    u32     tx_stat_ifhcoutoctets;
+    u32     tx_stat_ifhcoutbadoctets;
+    u32     tx_stat_etherstatscollisions;
+    u32     tx_stat_outxonsent;
+    u32     tx_stat_outxoffsent;
+    u32     tx_stat_flowcontroldone;
+    u32     tx_stat_dot3statssinglecollisionframes;
+    u32     tx_stat_dot3statsmultiplecollisionframes;
+    u32     tx_stat_dot3statsdeferredtransmissions;
+    u32     tx_stat_dot3statsexcessivecollisions;
+    u32     tx_stat_dot3statslatecollisions;
+    u32     tx_stat_ifhcoutucastpkts;
+    u32     tx_stat_ifhcoutmulticastpkts;
+    u32     tx_stat_ifhcoutbroadcastpkts;
+    u32     tx_stat_etherstatspkts64octets;
+    u32     tx_stat_etherstatspkts65octetsto127octets;
+    u32     tx_stat_etherstatspkts128octetsto255octets;
+    u32     tx_stat_etherstatspkts256octetsto511octets;
+    u32     tx_stat_etherstatspkts512octetsto1023octets;
+    u32     tx_stat_etherstatspkts1024octetsto1522octets;
+    u32     tx_stat_etherstatspktsover1522octets;
+    u32     tx_stat_dot3statsinternalmactransmiterrors;
+};
+
+
+struct bmac_stats {
+    u32     tx_stat_gtpkt_lo;
+    u32     tx_stat_gtpkt_hi;
+    u32     tx_stat_gtxpf_lo;
+    u32     tx_stat_gtxpf_hi;
+    u32     tx_stat_gtfcs_lo;
+    u32     tx_stat_gtfcs_hi;
+    u32     tx_stat_gtmca_lo;
+    u32     tx_stat_gtmca_hi;
+    u32     tx_stat_gtbca_lo;
+    u32     tx_stat_gtbca_hi;
+    u32     tx_stat_gtfrg_lo;
+    u32     tx_stat_gtfrg_hi;
+    u32     tx_stat_gtovr_lo;
+    u32     tx_stat_gtovr_hi;
+    u32     tx_stat_gt64_lo;
+    u32     tx_stat_gt64_hi;
+    u32     tx_stat_gt127_lo;
+    u32     tx_stat_gt127_hi;
+    u32     tx_stat_gt255_lo;
+    u32     tx_stat_gt255_hi;
+    u32     tx_stat_gt511_lo;
+    u32     tx_stat_gt511_hi;
+    u32     tx_stat_gt1023_lo;
+    u32     tx_stat_gt1023_hi;
+    u32     tx_stat_gt1518_lo;
+    u32     tx_stat_gt1518_hi;
+    u32     tx_stat_gt2047_lo;
+    u32     tx_stat_gt2047_hi;
+    u32     tx_stat_gt4095_lo;
+    u32     tx_stat_gt4095_hi;
+    u32     tx_stat_gt9216_lo;
+    u32     tx_stat_gt9216_hi;
+    u32     tx_stat_gt16383_lo;
+    u32     tx_stat_gt16383_hi;
+    u32     tx_stat_gtmax_lo;
+    u32     tx_stat_gtmax_hi;
+    u32     tx_stat_gtufl_lo;
+    u32     tx_stat_gtufl_hi;
+    u32     tx_stat_gterr_lo;
+    u32     tx_stat_gterr_hi;
+    u32     tx_stat_gtbyt_lo;
+    u32     tx_stat_gtbyt_hi;
+
+    u32     rx_stat_gr64_lo;
+    u32     rx_stat_gr64_hi;
+    u32     rx_stat_gr127_lo;
+    u32     rx_stat_gr127_hi;
+    u32     rx_stat_gr255_lo;
+    u32     rx_stat_gr255_hi;
+    u32     rx_stat_gr511_lo;
+    u32     rx_stat_gr511_hi;
+    u32     rx_stat_gr1023_lo;
+    u32     rx_stat_gr1023_hi;
+    u32     rx_stat_gr1518_lo;
+    u32     rx_stat_gr1518_hi;
+    u32     rx_stat_gr2047_lo;
+    u32     rx_stat_gr2047_hi;
+    u32     rx_stat_gr4095_lo;
+    u32     rx_stat_gr4095_hi;
+    u32     rx_stat_gr9216_lo;
+    u32     rx_stat_gr9216_hi;
+    u32     rx_stat_gr16383_lo;
+    u32     rx_stat_gr16383_hi;
+    u32     rx_stat_grmax_lo;
+    u32     rx_stat_grmax_hi;
+    u32     rx_stat_grpkt_lo;
+    u32     rx_stat_grpkt_hi;
+    u32     rx_stat_grfcs_lo;
+    u32     rx_stat_grfcs_hi;
+    u32     rx_stat_grmca_lo;
+    u32     rx_stat_grmca_hi;
+    u32     rx_stat_grbca_lo;
+    u32     rx_stat_grbca_hi;
+    u32     rx_stat_grxcf_lo;
+    u32     rx_stat_grxcf_hi;
+    u32     rx_stat_grxpf_lo;
+    u32     rx_stat_grxpf_hi;
+    u32     rx_stat_grxuo_lo;
+    u32     rx_stat_grxuo_hi;
+    u32     rx_stat_grjbr_lo;
+    u32     rx_stat_grjbr_hi;
+    u32     rx_stat_grovr_lo;
+    u32     rx_stat_grovr_hi;
+    u32     rx_stat_grflr_lo;
+    u32     rx_stat_grflr_hi;
+    u32     rx_stat_grmeg_lo;
+    u32     rx_stat_grmeg_hi;
+    u32     rx_stat_grmeb_lo;
+    u32     rx_stat_grmeb_hi;
+    u32     rx_stat_grbyt_lo;
+    u32     rx_stat_grbyt_hi;
+    u32     rx_stat_grund_lo;
+    u32     rx_stat_grund_hi;
+    u32     rx_stat_grfrg_lo;
+    u32     rx_stat_grfrg_hi;
+    u32     rx_stat_grerb_lo;
+    u32     rx_stat_grerb_hi;
+    u32     rx_stat_grfre_lo;
+    u32     rx_stat_grfre_hi;
+    u32     rx_stat_gripj_lo;
+    u32     rx_stat_gripj_hi;
+};
+
+
+union mac_stats {
+    struct emac_stats  emac_stats;
+    struct bmac_stats  bmac_stats;
+};
+
+
+struct mac_stx {
+    /* in_bad_octets */
+    u32     rx_stat_ifhcinbadoctets_hi;
+    u32     rx_stat_ifhcinbadoctets_lo;
+
+    /* out_bad_octets */
+    u32     tx_stat_ifhcoutbadoctets_hi;
+    u32     tx_stat_ifhcoutbadoctets_lo;
+
+    /* crc_receive_errors */
+    u32     rx_stat_dot3statsfcserrors_hi;
+    u32     rx_stat_dot3statsfcserrors_lo;
+    /* alignment_errors */
+    u32     rx_stat_dot3statsalignmenterrors_hi;
+    u32     rx_stat_dot3statsalignmenterrors_lo;
+    /* carrier_sense_errors */
+    u32     rx_stat_dot3statscarriersenseerrors_hi;
+    u32     rx_stat_dot3statscarriersenseerrors_lo;
+    /* false_carrier_detections */
+    u32     rx_stat_falsecarriererrors_hi;
+    u32     rx_stat_falsecarriererrors_lo;
+
+    /* runt_packets_received */
+    u32     rx_stat_etherstatsundersizepkts_hi;
+    u32     rx_stat_etherstatsundersizepkts_lo;
+    /* jabber_packets_received */
+    u32     rx_stat_dot3statsframestoolong_hi;
+    u32     rx_stat_dot3statsframestoolong_lo;
+
+    /* error_runt_packets_received */
+    u32     rx_stat_etherstatsfragments_hi;
+    u32     rx_stat_etherstatsfragments_lo;
+    /* error_jabber_packets_received */
+    u32     rx_stat_etherstatsjabbers_hi;
+    u32     rx_stat_etherstatsjabbers_lo;
+
+    /* control_frames_received */
+    u32     rx_stat_maccontrolframesreceived_hi;
+    u32     rx_stat_maccontrolframesreceived_lo;
+    u32     rx_stat_bmac_xpf_hi;
+    u32     rx_stat_bmac_xpf_lo;
+    u32     rx_stat_bmac_xcf_hi;
+    u32     rx_stat_bmac_xcf_lo;
+
+    /* xoff_state_entered */
+    u32     rx_stat_xoffstateentered_hi;
+    u32     rx_stat_xoffstateentered_lo;
+    /* pause_xon_frames_received */
+    u32     rx_stat_xonpauseframesreceived_hi;
+    u32     rx_stat_xonpauseframesreceived_lo;
+    /* pause_xoff_frames_received */
+    u32     rx_stat_xoffpauseframesreceived_hi;
+    u32     rx_stat_xoffpauseframesreceived_lo;
+    /* pause_xon_frames_transmitted */
+    u32     tx_stat_outxonsent_hi;
+    u32     tx_stat_outxonsent_lo;
+    /* pause_xoff_frames_transmitted */
+    u32     tx_stat_outxoffsent_hi;
+    u32     tx_stat_outxoffsent_lo;
+    /* flow_control_done */
+    u32     tx_stat_flowcontroldone_hi;
+    u32     tx_stat_flowcontroldone_lo;
+
+    /* ether_stats_collisions */
+    u32     tx_stat_etherstatscollisions_hi;
+    u32     tx_stat_etherstatscollisions_lo;
+    /* single_collision_transmit_frames */
+    u32     tx_stat_dot3statssinglecollisionframes_hi;
+    u32     tx_stat_dot3statssinglecollisionframes_lo;
+    /* multiple_collision_transmit_frames */
+    u32     tx_stat_dot3statsmultiplecollisionframes_hi;
+    u32     tx_stat_dot3statsmultiplecollisionframes_lo;
+    /* deferred_transmissions */
+    u32     tx_stat_dot3statsdeferredtransmissions_hi;
+    u32     tx_stat_dot3statsdeferredtransmissions_lo;
+    /* excessive_collision_frames */
+    u32     tx_stat_dot3statsexcessivecollisions_hi;
+    u32     tx_stat_dot3statsexcessivecollisions_lo;
+    /* late_collision_frames */
+    u32     tx_stat_dot3statslatecollisions_hi;
+    u32     tx_stat_dot3statslatecollisions_lo;
+
+    /* frames_transmitted_64_bytes */
+    u32     tx_stat_etherstatspkts64octets_hi;
+    u32     tx_stat_etherstatspkts64octets_lo;
+    /* frames_transmitted_65_127_bytes */
+    u32     tx_stat_etherstatspkts65octetsto127octets_hi;
+    u32     tx_stat_etherstatspkts65octetsto127octets_lo;
+    /* frames_transmitted_128_255_bytes */
+    u32     tx_stat_etherstatspkts128octetsto255octets_hi;
+    u32     tx_stat_etherstatspkts128octetsto255octets_lo;
+    /* frames_transmitted_256_511_bytes */
+    u32     tx_stat_etherstatspkts256octetsto511octets_hi;
+    u32     tx_stat_etherstatspkts256octetsto511octets_lo;
+    /* frames_transmitted_512_1023_bytes */
+    u32     tx_stat_etherstatspkts512octetsto1023octets_hi;
+    u32     tx_stat_etherstatspkts512octetsto1023octets_lo;
+    /* frames_transmitted_1024_1522_bytes */
+    u32     tx_stat_etherstatspkts1024octetsto1522octets_hi;
+    u32     tx_stat_etherstatspkts1024octetsto1522octets_lo;
+    /* frames_transmitted_1523_9022_bytes */
+    u32     tx_stat_etherstatspktsover1522octets_hi;
+    u32     tx_stat_etherstatspktsover1522octets_lo;
+    u32     tx_stat_bmac_2047_hi;
+    u32     tx_stat_bmac_2047_lo;
+    u32     tx_stat_bmac_4095_hi;
+    u32     tx_stat_bmac_4095_lo;
+    u32     tx_stat_bmac_9216_hi;
+    u32     tx_stat_bmac_9216_lo;
+    u32     tx_stat_bmac_16383_hi;
+    u32     tx_stat_bmac_16383_lo;
+
+    /* internal_mac_transmit_errors */
+    u32     tx_stat_dot3statsinternalmactransmiterrors_hi;
+    u32     tx_stat_dot3statsinternalmactransmiterrors_lo;
+
+    /* if_out_discards */
+    u32     tx_stat_bmac_ufl_hi;
+    u32     tx_stat_bmac_ufl_lo;
+};
+
+
+#define MAC_STX_IDX_MAX                    2
+
+struct host_port_stats {
+    u32           host_port_stats_start;
+
+    struct mac_stx mac_stx[MAC_STX_IDX_MAX];
+
+    u32           brb_drop_hi;
+    u32           brb_drop_lo;
+
+    u32           host_port_stats_end;
+};
+
+
+struct host_func_stats {
+    u32     host_func_stats_start;
+
+    u32     total_bytes_received_hi;
+    u32     total_bytes_received_lo;
+
+    u32     total_bytes_transmitted_hi;
+    u32     total_bytes_transmitted_lo;
+
+    u32     total_unicast_packets_received_hi;
+    u32     total_unicast_packets_received_lo;
+
+    u32     total_multicast_packets_received_hi;
+    u32     total_multicast_packets_received_lo;
+
+    u32     total_broadcast_packets_received_hi;
+    u32     total_broadcast_packets_received_lo;
+
+    u32     total_unicast_packets_transmitted_hi;
+    u32     total_unicast_packets_transmitted_lo;
+
+    u32     total_multicast_packets_transmitted_hi;
+    u32     total_multicast_packets_transmitted_lo;
+
+    u32     total_broadcast_packets_transmitted_hi;
+    u32     total_broadcast_packets_transmitted_lo;
+
+    u32     valid_bytes_received_hi;
+    u32     valid_bytes_received_lo;
+
+    u32     host_func_stats_end;
+};
+
+
 #define BCM_5710_FW_MAJOR_VERSION                      4
-#define BCM_5710_FW_MINOR_VERSION                      0
-#define BCM_5710_FW_REVISION_VERSION                   14
+#define BCM_5710_FW_MINOR_VERSION                      6
+#define BCM_5710_FW_REVISION_VERSION                   15
+#define BCM_5710_FW_ENGINEERING_VERSION                0
 #define BCM_5710_FW_COMPILE_FLAGS                      1
 
 
@@ -764,15 +1214,9 @@ struct shmem_region {                            /*   SharedMem Offset (size) */
 struct atten_def_status_block {
        u32 attn_bits;
        u32 attn_bits_ack;
-#if defined(__BIG_ENDIAN)
-       u16 attn_bits_index;
-       u8 reserved0;
-       u8 status_block_id;
-#elif defined(__LITTLE_ENDIAN)
        u8 status_block_id;
        u8 reserved0;
        u16 attn_bits_index;
-#endif
        u32 reserved1;
 };
 
@@ -793,7 +1237,7 @@ struct doorbell_hdr {
 };
 
 /*
- * doorbell message send to the chip
+ * doorbell message sent to the chip
  */
 struct doorbell {
 #if defined(__BIG_ENDIAN)
@@ -809,7 +1253,7 @@ struct doorbell {
 
 
 /*
- * IGU driver acknowlegement register
+ * IGU driver acknowledgement register
  */
 struct igu_ack_register {
 #if defined(__BIG_ENDIAN)
@@ -849,8 +1293,10 @@ struct parsing_flags {
        u16 flags;
 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE (0x1<<0)
 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE_SHIFT 0
-#define PARSING_FLAGS_NUMBER_OF_NESTED_VLANS (0x3<<1)
-#define PARSING_FLAGS_NUMBER_OF_NESTED_VLANS_SHIFT 1
+#define PARSING_FLAGS_VLAN (0x1<<1)
+#define PARSING_FLAGS_VLAN_SHIFT 1
+#define PARSING_FLAGS_EXTRA_VLAN (0x1<<2)
+#define PARSING_FLAGS_EXTRA_VLAN_SHIFT 2
 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL (0x3<<3)
 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT 3
 #define PARSING_FLAGS_IP_OPTIONS (0x1<<5)
@@ -874,6 +1320,12 @@ struct parsing_flags {
 };
 
 
+struct regpair {
+       u32 lo;
+       u32 hi;
+};
+
+
 /*
  * dmae command structure
  */
@@ -901,8 +1353,10 @@ struct dmae_command {
 #define DMAE_COMMAND_SRC_RESET_SHIFT 13
 #define DMAE_COMMAND_DST_RESET (0x1<<14)
 #define DMAE_COMMAND_DST_RESET_SHIFT 14
-#define DMAE_COMMAND_RESERVED0 (0x1FFFF<<15)
-#define DMAE_COMMAND_RESERVED0_SHIFT 15
+#define DMAE_COMMAND_E1HVN (0x3<<15)
+#define DMAE_COMMAND_E1HVN_SHIFT 15
+#define DMAE_COMMAND_RESERVED0 (0x7FFF<<17)
+#define DMAE_COMMAND_RESERVED0_SHIFT 17
        u32 src_addr_lo;
        u32 src_addr_hi;
        u32 dst_addr_lo;
@@ -952,72 +1406,107 @@ struct double_regpair {
 
 
 /*
- * The eth Rx Buffer Descriptor
- */
-struct eth_rx_bd {
-       u32 addr_lo;
-       u32 addr_hi;
-};
-
-/*
- * The eth storm context of Ustorm
+ * The eth storm context of Ustorm (configuration part)
  */
-struct ustorm_eth_st_context {
+struct ustorm_eth_st_context_config {
 #if defined(__BIG_ENDIAN)
-       u8 sb_index_number;
+       u8 flags;
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT (0x1<<0)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT_SHIFT 0
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC (0x1<<1)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC_SHIFT 1
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA (0x1<<2)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<4)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 4
+#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0x7<<5)
+#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 5
        u8 status_block_id;
-       u8 __local_rx_bd_cons;
-       u8 __local_rx_bd_prod;
+       u8 clientId;
+       u8 sb_index_numbers;
+#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER (0xF<<0)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT 0
+#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER (0xF<<4)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT 4
 #elif defined(__LITTLE_ENDIAN)
-       u8 __local_rx_bd_prod;
-       u8 __local_rx_bd_cons;
+       u8 sb_index_numbers;
+#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER (0xF<<0)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_CQE_SB_INDEX_NUMBER_SHIFT 0
+#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER (0xF<<4)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_BD_SB_INDEX_NUMBER_SHIFT 4
+       u8 clientId;
        u8 status_block_id;
-       u8 sb_index_number;
-#endif
-#if defined(__BIG_ENDIAN)
-       u16 rcq_cons;
-       u16 rx_bd_cons;
-#elif defined(__LITTLE_ENDIAN)
-       u16 rx_bd_cons;
-       u16 rcq_cons;
+       u8 flags;
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT (0x1<<0)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT_SHIFT 0
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC (0x1<<1)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_DYNAMIC_HC_SHIFT 1
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA (0x1<<2)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA_SHIFT 2
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING (0x1<<3)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING_SHIFT 3
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS (0x1<<4)
+#define USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS_SHIFT 4
+#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0 (0x7<<5)
+#define __USTORM_ETH_ST_CONTEXT_CONFIG_RESERVED0_SHIFT 5
 #endif
-       u32 rx_bd_page_base_lo;
-       u32 rx_bd_page_base_hi;
-       u32 rcq_base_address_lo;
-       u32 rcq_base_address_hi;
 #if defined(__BIG_ENDIAN)
-       u16 __num_of_returned_cqes;
-       u8 num_rss;
-       u8 flags;
-#define USTORM_ETH_ST_CONTEXT_ENABLE_MC_ALIGNMENT (0x1<<0)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_MC_ALIGNMENT_SHIFT 0
-#define USTORM_ETH_ST_CONTEXT_ENABLE_DYNAMIC_HC (0x1<<1)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_DYNAMIC_HC_SHIFT 1
-#define USTORM_ETH_ST_CONTEXT_ENABLE_TPA (0x1<<2)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_TPA_SHIFT 2
-#define __USTORM_ETH_ST_CONTEXT_RESERVED0 (0x1F<<3)
-#define __USTORM_ETH_ST_CONTEXT_RESERVED0_SHIFT 3
+       u16 bd_buff_size;
+       u8 statistics_counter_id;
+       u8 mc_alignment_log_size;
 #elif defined(__LITTLE_ENDIAN)
-       u8 flags;
-#define USTORM_ETH_ST_CONTEXT_ENABLE_MC_ALIGNMENT (0x1<<0)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_MC_ALIGNMENT_SHIFT 0
-#define USTORM_ETH_ST_CONTEXT_ENABLE_DYNAMIC_HC (0x1<<1)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_DYNAMIC_HC_SHIFT 1
-#define USTORM_ETH_ST_CONTEXT_ENABLE_TPA (0x1<<2)
-#define USTORM_ETH_ST_CONTEXT_ENABLE_TPA_SHIFT 2
-#define __USTORM_ETH_ST_CONTEXT_RESERVED0 (0x1F<<3)
-#define __USTORM_ETH_ST_CONTEXT_RESERVED0_SHIFT 3
-       u8 num_rss;
-       u16 __num_of_returned_cqes;
+       u8 mc_alignment_log_size;
+       u8 statistics_counter_id;
+       u16 bd_buff_size;
 #endif
 #if defined(__BIG_ENDIAN)
-       u16 mc_alignment_size;
-       u16 agg_threshold;
+       u8 __local_sge_prod;
+       u8 __local_bd_prod;
+       u16 sge_buff_size;
 #elif defined(__LITTLE_ENDIAN)
-       u16 agg_threshold;
-       u16 mc_alignment_size;
+       u16 sge_buff_size;
+       u8 __local_bd_prod;
+       u8 __local_sge_prod;
 #endif
+       u32 reserved;
+       u32 bd_page_base_lo;
+       u32 bd_page_base_hi;
+       u32 sge_page_base_lo;
+       u32 sge_page_base_hi;
+};
+
+/*
+ * The eth Rx Buffer Descriptor
+ */
+struct eth_rx_bd {
+       u32 addr_lo;
+       u32 addr_hi;
+};
+
+/*
+ * The eth Rx SGE Descriptor
+ */
+struct eth_rx_sge {
+       u32 addr_lo;
+       u32 addr_hi;
+};
+
+/*
+ * Local BDs and SGEs rings (in ETH)
+ */
+struct eth_local_rx_rings {
        struct eth_rx_bd __local_bd_ring[16];
+       struct eth_rx_sge __local_sge_ring[12];
+};
+
+/*
+ * The eth storm context of Ustorm
+ */
+struct ustorm_eth_st_context {
+       struct ustorm_eth_st_context_config common;
+       struct eth_local_rx_rings __rings;
 };
 
 /*
@@ -1088,9 +1577,9 @@ struct xstorm_eth_extra_ag_context_section {
 #if defined(__BIG_ENDIAN)
        u16 __reserved3;
        u8 __reserved2;
-       u8 __agg_misc7;
+       u8 __da_only_cnt;
 #elif defined(__LITTLE_ENDIAN)
-       u8 __agg_misc7;
+       u8 __da_only_cnt;
        u8 __reserved2;
        u16 __reserved3;
 #endif
@@ -1193,7 +1682,7 @@ struct xstorm_eth_ag_context {
 };
 
 /*
- * The eth aggregative context section of Tstorm
+ * The eth extra aggregative context section of Tstorm
  */
 struct tstorm_eth_extra_ag_context_section {
        u32 __agg_val1;
@@ -1368,11 +1857,17 @@ struct timers_block_context {
        u32 __reserved_0;
        u32 __reserved_1;
        u32 __reserved_2;
-       u32 __reserved_flags;
+       u32 flags;
+#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0)
+#define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0
+#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2)
+#define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2
+#define __TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3)
+#define __TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3
 };
 
 /*
- * structure for easy accessability to assembler
+ * structure for easy accessbility to assembler
  */
 struct eth_tx_bd_flags {
        u8 as_bitfield;
@@ -1478,18 +1973,36 @@ struct xstorm_eth_st_context {
        u32 tx_bd_page_base_hi;
 #if defined(__BIG_ENDIAN)
        u16 tx_bd_cons;
-       u8 __reserved0;
+       u8 statistics_data;
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID (0x7F<<0)
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID_SHIFT 0
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE (0x1<<7)
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE_SHIFT 7
        u8 __local_tx_bd_prod;
 #elif defined(__LITTLE_ENDIAN)
        u8 __local_tx_bd_prod;
-       u8 __reserved0;
+       u8 statistics_data;
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID (0x7F<<0)
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_COUNTER_ID_SHIFT 0
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE (0x1<<7)
+#define XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE_SHIFT 7
        u16 tx_bd_cons;
 #endif
        u32 db_data_addr_lo;
        u32 db_data_addr_hi;
        u32 __pkt_cons;
        u32 __gso_next;
-       u32 is_eth_conn_1b;
+#if defined(__BIG_ENDIAN)
+       u8 __reserved1;
+       u8 safc_group_num;
+       u8 safc_group_en;
+       u8 __is_eth_conn;
+#elif defined(__LITTLE_ENDIAN)
+       u8 __is_eth_conn;
+       u8 safc_group_en;
+       u8 safc_group_num;
+       u8 __reserved1;
+#endif
        union eth_tx_bd_types __bds[13];
 };
 
@@ -1526,7 +2039,7 @@ struct eth_context {
 
 
 /*
- * ethernet doorbell
+ * Ethernet doorbell
  */
 struct eth_tx_doorbell {
 #if defined(__BIG_ENDIAN)
@@ -1559,7 +2072,7 @@ struct eth_tx_doorbell {
 struct ustorm_def_status_block {
        u16 index_values[HC_USTORM_DEF_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1570,7 +2083,7 @@ struct ustorm_def_status_block {
 struct cstorm_def_status_block {
        u16 index_values[HC_CSTORM_DEF_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1581,7 +2094,7 @@ struct cstorm_def_status_block {
 struct xstorm_def_status_block {
        u16 index_values[HC_XSTORM_DEF_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1592,7 +2105,7 @@ struct xstorm_def_status_block {
 struct tstorm_def_status_block {
        u16 index_values[HC_TSTORM_DEF_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1615,7 +2128,7 @@ struct host_def_status_block {
 struct ustorm_status_block {
        u16 index_values[HC_USTORM_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1626,7 +2139,7 @@ struct ustorm_status_block {
 struct cstorm_status_block {
        u16 index_values[HC_CSTORM_SB_NUM_INDICES];
        u16 status_block_index;
-       u8 reserved0;
+       u8 func;
        u8 status_block_id;
        u32 __flags;
 };
@@ -1644,9 +2157,9 @@ struct host_status_block {
  * The data for RSS setup ramrod
  */
 struct eth_client_setup_ramrod_data {
-       u32 client_id_5b;
-       u8 is_rdma_1b;
-       u8 reserved0;
+       u32 client_id;
+       u8 is_rdma;
+       u8 is_fcoe;
        u16 reserved1;
 };
 
@@ -1664,20 +2177,21 @@ struct eth_dynamic_hc_config {
  * regular eth FP CQE parameters struct
  */
 struct eth_fast_path_rx_cqe {
-       u8 type;
-       u8 error_type_flags;
-#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<0)
-#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 0
-#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<1)
-#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 1
-#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<2)
-#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 2
-#define ETH_FAST_PATH_RX_CQE_START_FLG (0x1<<3)
-#define ETH_FAST_PATH_RX_CQE_START_FLG_SHIFT 3
-#define ETH_FAST_PATH_RX_CQE_END_FLG (0x1<<4)
-#define ETH_FAST_PATH_RX_CQE_END_FLG_SHIFT 4
-#define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x7<<5)
-#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 5
+       u8 type_error_flags;
+#define ETH_FAST_PATH_RX_CQE_TYPE (0x1<<0)
+#define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT 0
+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<1)
+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 1
+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<2)
+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 2
+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<3)
+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 3
+#define ETH_FAST_PATH_RX_CQE_START_FLG (0x1<<4)
+#define ETH_FAST_PATH_RX_CQE_START_FLG_SHIFT 4
+#define ETH_FAST_PATH_RX_CQE_END_FLG (0x1<<5)
+#define ETH_FAST_PATH_RX_CQE_END_FLG_SHIFT 5
+#define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x3<<6)
+#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 6
        u8 status_flags;
 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0)
 #define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0
@@ -1692,11 +2206,13 @@ struct eth_fast_path_rx_cqe {
 #define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7)
 #define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7
        u8 placement_offset;
+       u8 queue_index;
        u32 rss_hash_result;
        u16 vlan_tag;
        u16 pkt_len;
-       u16 queue_index;
+       u16 len_on_bd;
        struct parsing_flags pars_flags;
+       u16 sgl[8];
 };
 
 
@@ -1704,11 +2220,28 @@ struct eth_fast_path_rx_cqe {
  * The data for RSS setup ramrod
  */
 struct eth_halt_ramrod_data {
-       u32 client_id_5b;
+       u32 client_id;
        u32 reserved0;
 };
 
 
+/*
+ * The data for statistics query ramrod
+ */
+struct eth_query_ramrod_data {
+#if defined(__BIG_ENDIAN)
+       u8 reserved0;
+       u8 collect_port;
+       u16 drv_counter;
+#elif defined(__LITTLE_ENDIAN)
+       u16 drv_counter;
+       u8 collect_port;
+       u8 reserved0;
+#endif
+       u32 ctr_id_vector;
+};
+
+
 /*
  * Place holder for ramrods protocol specific data
  */
@@ -1718,7 +2251,7 @@ struct ramrod_data {
 };
 
 /*
- * union for ramrod data for ethernet protocol (CQE) (force size of 16 bits)
+ * union for ramrod data for Ethernet protocol (CQE) (force size of 16 bits)
  */
 union eth_ramrod_data {
        struct ramrod_data general;
@@ -1739,15 +2272,20 @@ struct eth_rx_bd_next_page {
  * Eth Rx Cqe structure- general structure for ramrods
  */
 struct common_ramrod_eth_rx_cqe {
-       u8 type;
-       u8 conn_type_3b;
-       u16 reserved;
+       u8 ramrod_type;
+#define COMMON_RAMROD_ETH_RX_CQE_TYPE (0x1<<0)
+#define COMMON_RAMROD_ETH_RX_CQE_TYPE_SHIFT 0
+#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0 (0x7F<<1)
+#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0_SHIFT 1
+       u8 conn_type;
+       u16 reserved1;
        u32 conn_and_cmd_data;
 #define COMMON_RAMROD_ETH_RX_CQE_CID (0xFFFFFF<<0)
 #define COMMON_RAMROD_ETH_RX_CQE_CID_SHIFT 0
 #define COMMON_RAMROD_ETH_RX_CQE_CMD_ID (0xFF<<24)
 #define COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT 24
        struct ramrod_data protocol_data;
+       u32 reserved2[4];
 };
 
 /*
@@ -1756,8 +2294,7 @@ struct common_ramrod_eth_rx_cqe {
 struct eth_rx_cqe_next_page {
        u32 addr_lo;
        u32 addr_hi;
-       u32 reserved0;
-       u32 reserved1;
+       u32 reserved[6];
 };
 
 /*
@@ -1787,13 +2324,8 @@ struct spe_hdr {
        u16 reserved;
 };
 
-struct regpair {
-       u32 lo;
-       u32 hi;
-};
-
 /*
- * ethernet slow path element
+ * Ethernet slow path element
  */
 union eth_specific_data {
        u8 protocol_data[8];
@@ -1802,10 +2334,11 @@ union eth_specific_data {
        struct eth_halt_ramrod_data halt_ramrod_data;
        struct regpair leading_cqe_addr;
        struct regpair update_data_addr;
+       struct eth_query_ramrod_data query_ramrod_data;
 };
 
 /*
- * ethernet slow path element
+ * Ethernet slow path element
  */
 struct eth_spe {
        struct spe_hdr hdr;
@@ -1824,10 +2357,13 @@ struct eth_tx_db_data {
 
 
 /*
- * Common configuration parameters per port in Tstorm
+ * Common configuration parameters per function in Tstorm
  */
 struct tstorm_eth_function_common_config {
-       u32 config_flags;
+#if defined(__BIG_ENDIAN)
+       u8 leading_client_id;
+       u8 rss_result_mask;
+       u16 config_flags;
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0)
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1)
@@ -1836,21 +2372,36 @@ struct tstorm_eth_function_common_config {
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3)
 #define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3
-#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_ENABLE (0x1<<4)
-#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_ENABLE_SHIFT 4
-#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE (0x1<<5)
-#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE_SHIFT 5
-#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0x3FFFFFF<<6)
-#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 6
-#if defined(__BIG_ENDIAN)
-       u16 __secondary_vlan_id;
-       u8 leading_client_id;
-       u8 rss_result_mask;
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE (0x1<<7)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE_SHIFT 7
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM (0x1<<8)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM_SHIFT 8
+#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0x7F<<9)
+#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 9
 #elif defined(__LITTLE_ENDIAN)
+       u16 config_flags;
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY (0x1<<0)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_CAPABILITY_SHIFT 0
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY (0x1<<1)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV4_TCP_CAPABILITY_SHIFT 1
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY (0x1<<2)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_CAPABILITY_SHIFT 2
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY (0x1<<3)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_IPV6_TCP_CAPABILITY_SHIFT 3
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE (0x7<<4)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_RSS_MODE_SHIFT 4
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE (0x1<<7)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_DEFAULT_ENABLE_SHIFT 7
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM (0x1<<8)
+#define TSTORM_ETH_FUNCTION_COMMON_CONFIG_VLAN_IN_CAM_SHIFT 8
+#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0 (0x7F<<9)
+#define __TSTORM_ETH_FUNCTION_COMMON_CONFIG_RESERVED0_SHIFT 9
        u8 rss_result_mask;
        u8 leading_client_id;
-       u16 __secondary_vlan_id;
 #endif
+       u16 vlan_id[2];
 };
 
 /*
@@ -1866,9 +2417,9 @@ struct eth_update_ramrod_data {
  * MAC filtering configuration command header
  */
 struct mac_configuration_hdr {
-       u8 length_6b;
+       u8 length;
        u8 offset;
-       u16 reserved0;
+       u16 client_id;
        u32 reserved1;
 };
 
@@ -1924,16 +2475,56 @@ struct mac_configuration_cmd {
 };
 
 
+/*
+ * MAC address in list for ramrod
+ */
+struct mac_configuration_entry_e1h {
+       u16 lsb_mac_addr;
+       u16 middle_mac_addr;
+       u16 msb_mac_addr;
+       u16 vlan_id;
+       u16 e1hov_id;
+       u8 client_id;
+       u8 flags;
+#define MAC_CONFIGURATION_ENTRY_E1H_PORT (0x1<<0)
+#define MAC_CONFIGURATION_ENTRY_E1H_PORT_SHIFT 0
+#define MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE (0x1<<1)
+#define MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE_SHIFT 1
+#define MAC_CONFIGURATION_ENTRY_E1H_RDMA_MAC (0x1<<2)
+#define MAC_CONFIGURATION_ENTRY_E1H_RDMA_MAC_SHIFT 2
+#define MAC_CONFIGURATION_ENTRY_E1H_RESERVED0 (0x1F<<3)
+#define MAC_CONFIGURATION_ENTRY_E1H_RESERVED0_SHIFT 3
+};
+
+/*
+ * MAC filtering configuration command
+ */
+struct mac_configuration_cmd_e1h {
+       struct mac_configuration_hdr hdr;
+       struct mac_configuration_entry_e1h config_table[32];
+};
+
+
+/*
+ * approximate-match multicast filtering for E1H per function in Tstorm
+ */
+struct tstorm_eth_approximate_match_multicast_filtering {
+       u32 mcast_add_hash_bit_array[8];
+};
+
+
 /*
  * Configuration parameters per client in Tstorm
  */
 struct tstorm_eth_client_config {
 #if defined(__BIG_ENDIAN)
-       u16 statistics_counter_id;
+       u8 max_sges_for_packet;
+       u8 statistics_counter_id;
        u16 mtu;
 #elif defined(__LITTLE_ENDIAN)
        u16 mtu;
-       u16 statistics_counter_id;
+       u8 statistics_counter_id;
+       u8 max_sges_for_packet;
 #endif
 #if defined(__BIG_ENDIAN)
        u16 drop_flags;
@@ -1941,42 +2532,46 @@ struct tstorm_eth_client_config {
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR_SHIFT 0
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR (0x1<<1)
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR_SHIFT 1
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_MAC_ERR (0x1<<2)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_MAC_ERR_SHIFT 2
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<3)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 3
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<4)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 4
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0x7FF<<5)
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 5
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<2)
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<3)
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 3
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0xFFF<<4)
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 4
        u16 config_flags;
 #define TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE (0x1<<0)
 #define TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE_SHIFT 0
-#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<1)
-#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 1
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0 (0x3FFF<<2)
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REMOVAL_ENABLE (0x1<<1)
+#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REMOVAL_ENABLE_SHIFT 1
+#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<2)
+#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_ENABLE_SGE_RING (0x1<<3)
+#define TSTORM_ETH_CLIENT_CONFIG_ENABLE_SGE_RING_SHIFT 3
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0 (0xFFF<<4)
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0_SHIFT 4
 #elif defined(__LITTLE_ENDIAN)
        u16 config_flags;
 #define TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE (0x1<<0)
 #define TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE_SHIFT 0
-#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<1)
-#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 1
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0 (0x3FFF<<2)
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REMOVAL_ENABLE (0x1<<1)
+#define TSTORM_ETH_CLIENT_CONFIG_E1HOV_REMOVAL_ENABLE_SHIFT 1
+#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE (0x1<<2)
+#define TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_ENABLE_SGE_RING (0x1<<3)
+#define TSTORM_ETH_CLIENT_CONFIG_ENABLE_SGE_RING_SHIFT 3
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0 (0xFFF<<4)
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED0_SHIFT 4
        u16 drop_flags;
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR (0x1<<0)
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_IP_CS_ERR_SHIFT 0
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR (0x1<<1)
 #define TSTORM_ETH_CLIENT_CONFIG_DROP_TCP_CS_ERR_SHIFT 1
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_MAC_ERR (0x1<<2)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_MAC_ERR_SHIFT 2
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<3)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 3
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<4)
-#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 4
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0x7FF<<5)
-#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 5
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0 (0x1<<2)
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_TTL0_SHIFT 2
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR (0x1<<3)
+#define TSTORM_ETH_CLIENT_CONFIG_DROP_UDP_CS_ERR_SHIFT 3
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1 (0xFFF<<4)
+#define __TSTORM_ETH_CLIENT_CONFIG_RESERVED1_SHIFT 4
 #endif
 };
 
@@ -1992,103 +2587,154 @@ struct tstorm_eth_mac_filter_config {
        u32 bcast_drop_all;
        u32 bcast_accept_all;
        u32 strict_vlan;
-       u32 __secondary_vlan_clients;
+       u32 vlan_filter[2];
+       u32 reserved;
 };
 
 
-struct rate_shaping_per_protocol {
+/*
+ * common flag to indicate existance of TPA.
+ */
+struct tstorm_eth_tpa_exist {
 #if defined(__BIG_ENDIAN)
-       u16 reserved0;
-       u16 protocol_rate;
+       u16 reserved1;
+       u8 reserved0;
+       u8 tpa_exist;
 #elif defined(__LITTLE_ENDIAN)
-       u16 protocol_rate;
-       u16 reserved0;
+       u8 tpa_exist;
+       u8 reserved0;
+       u16 reserved1;
 #endif
-       u32 protocol_quota;
-       s32 current_credit;
-       u32 reserved;
+       u32 reserved2;
 };
 
-struct rate_shaping_vars {
-       struct rate_shaping_per_protocol protocol_vars[NUM_OF_PROTOCOLS];
-       u32 pause_mask;
-       u32 periodic_stop;
-       u32 rs_periodic_timeout;
-       u32 rs_threshold;
-       u32 last_periodic_time;
-       u32 reserved;
-};
 
-struct fairness_per_protocol {
-       u32 credit_delta;
-       s32 fair_credit;
+/*
+ * rx rings pause data for E1h only
+ */
+struct ustorm_eth_rx_pause_data_e1h {
+#if defined(__BIG_ENDIAN)
+       u16 bd_thr_low;
+       u16 cqe_thr_low;
+#elif defined(__LITTLE_ENDIAN)
+       u16 cqe_thr_low;
+       u16 bd_thr_low;
+#endif
+#if defined(__BIG_ENDIAN)
+       u16 cos;
+       u16 sge_thr_low;
+#elif defined(__LITTLE_ENDIAN)
+       u16 sge_thr_low;
+       u16 cos;
+#endif
+#if defined(__BIG_ENDIAN)
+       u16 bd_thr_high;
+       u16 cqe_thr_high;
+#elif defined(__LITTLE_ENDIAN)
+       u16 cqe_thr_high;
+       u16 bd_thr_high;
+#endif
 #if defined(__BIG_ENDIAN)
        u16 reserved0;
-       u8 state;
-       u8 weight;
+       u16 sge_thr_high;
 #elif defined(__LITTLE_ENDIAN)
-       u8 weight;
-       u8 state;
+       u16 sge_thr_high;
        u16 reserved0;
 #endif
-       u32 reserved1;
 };
 
-struct fairness_vars {
-       struct fairness_per_protocol protocol_vars[NUM_OF_PROTOCOLS];
-       u32 upper_bound;
-       u32 port_rate;
-       u32 pause_mask;
-       u32 fair_threshold;
-};
 
-struct safc_struct {
-       u32 cur_pause_mask;
-       u32 expire_time;
+/*
+ * Three RX producers for ETH
+ */
+struct ustorm_eth_rx_producers {
 #if defined(__BIG_ENDIAN)
-       u16 reserved0;
-       u8 cur_cos_types;
-       u8 safc_timeout_usec;
+       u16 bd_prod;
+       u16 cqe_prod;
 #elif defined(__LITTLE_ENDIAN)
-       u8 safc_timeout_usec;
-       u8 cur_cos_types;
-       u16 reserved0;
+       u16 cqe_prod;
+       u16 bd_prod;
+#endif
+#if defined(__BIG_ENDIAN)
+       u16 reserved;
+       u16 sge_prod;
+#elif defined(__LITTLE_ENDIAN)
+       u16 sge_prod;
+       u16 reserved;
 #endif
-       u32 reserved1;
 };
 
-struct demo_struct {
+
+/*
+ * per-port SAFC demo variables
+ */
+struct cmng_flags_per_port {
        u8 con_number[NUM_OF_PROTOCOLS];
 #if defined(__BIG_ENDIAN)
-       u8 reserved1;
        u8 fairness_enable;
        u8 rate_shaping_enable;
-       u8 cmng_enable;
+       u8 cmng_protocol_enable;
+       u8 cmng_vn_enable;
 #elif defined(__LITTLE_ENDIAN)
-       u8 cmng_enable;
+       u8 cmng_vn_enable;
+       u8 cmng_protocol_enable;
        u8 rate_shaping_enable;
        u8 fairness_enable;
-       u8 reserved1;
 #endif
 };
 
-struct cmng_struct {
-       struct rate_shaping_vars rs_vars;
-       struct fairness_vars fair_vars;
-       struct safc_struct safc_vars;
-       struct demo_struct demo_vars;
+
+/*
+ * per-port rate shaping variables
+ */
+struct rate_shaping_vars_per_port {
+       u32 rs_periodic_timeout;
+       u32 rs_threshold;
 };
 
 
-struct cos_to_protocol {
-       u8 mask[MAX_COS_NUMBER];
+/*
+ * per-port fairness variables
+ */
+struct fairness_vars_per_port {
+       u32 upper_bound;
+       u32 fair_threshold;
+       u32 fairness_timeout;
 };
 
 
 /*
- * Common statistics collected by the Xstorm (per port)
+ * per-port SAFC variables
  */
-struct xstorm_common_stats {
+struct safc_struct_per_port {
+#if defined(__BIG_ENDIAN)
+       u16 __reserved1;
+       u8 __reserved0;
+       u8 safc_timeout_usec;
+#elif defined(__LITTLE_ENDIAN)
+       u8 safc_timeout_usec;
+       u8 __reserved0;
+       u16 __reserved1;
+#endif
+       u16 cos_to_pause_mask[MAX_COS_NUMBER];
+};
+
+
+/*
+ * Per-port congestion management variables
+ */
+struct cmng_struct_per_port {
+       struct rate_shaping_vars_per_port rs_vars;
+       struct fairness_vars_per_port fair_vars;
+       struct safc_struct_per_port safc_vars;
+       struct cmng_flags_per_port flags;
+};
+
+
+/*
+ * Protocol-common statistics collected by the Xstorm (per client)
+ */
+struct xstorm_per_client_stats {
        struct regpair total_sent_bytes;
        u32 total_sent_pkts;
        u32 unicast_pkts_sent;
@@ -2097,9 +2743,31 @@ struct xstorm_common_stats {
        u32 multicast_pkts_sent;
        u32 broadcast_pkts_sent;
        struct regpair broadcast_bytes_sent;
-       struct regpair done;
+       u16 stats_counter;
+       u16 reserved0;
+       u32 reserved1;
+};
+
+
+/*
+ * Common statistics collected by the Xstorm (per port)
+ */
+struct xstorm_common_stats {
+ struct xstorm_per_client_stats client_statistics[MAX_X_STAT_COUNTER_ID];
+};
+
+
+/*
+ * Protocol-common statistics collected by the Tstorm (per port)
+ */
+struct tstorm_per_port_stats {
+       u32 mac_filter_discard;
+       u32 xxoverflow_discard;
+       u32 brb_truncate_discard;
+       u32 mac_discard;
 };
 
+
 /*
  * Protocol-common statistics collected by the Tstorm (per client)
  */
@@ -2117,28 +2785,53 @@ struct tstorm_per_client_stats {
        u32 rcv_multicast_pkts;
        u32 no_buff_discard;
        u32 ttl0_discard;
-       u32 mac_discard;
-       u32 reserved;
+       u16 stats_counter;
+       u16 reserved0;
+       u32 reserved1;
 };
 
 /*
- * Protocol-common statistics collected by the Tstorm (per port)
+ * Protocol-common statistics collected by the Tstorm
  */
 struct tstorm_common_stats {
-       struct tstorm_per_client_stats client_statistics[MAX_T_STAT_COUNTER_ID];
-       u32 mac_filter_discard;
-       u32 xxoverflow_discard;
-       u32 brb_truncate_discard;
-       u32 reserved;
-       struct regpair done;
+       struct tstorm_per_port_stats port_statistics;
+ struct tstorm_per_client_stats client_statistics[MAX_T_STAT_COUNTER_ID];
+};
+
+/*
+ * Protocol-common statistics collected by the Ustorm (per client)
+ */
+struct ustorm_per_client_stats {
+       struct regpair rcv_error_bytes;
+       u32 no_buff_discard;
+       u16 stats_counter;
+       u16 reserved0;
+};
+
+/*
+ * Protocol-common statistics collected by the Ustorm
+ */
+struct ustorm_common_stats {
+ struct ustorm_per_client_stats client_statistics[MAX_U_STAT_COUNTER_ID];
 };
 
 /*
- * Eth statistics query sturcture for the eth_stats_quesry ramrod
+ * Eth statistics query structure for the eth_stats_query ramrod
  */
 struct eth_stats_query {
        struct xstorm_common_stats xstorm_common;
        struct tstorm_common_stats tstorm_common;
+       struct ustorm_common_stats ustorm_common;
+};
+
+
+/*
+ * per-vnic fairness variables
+ */
+struct fairness_vars_per_vn {
+       u32 protocol_credit_delta[NUM_OF_PROTOCOLS];
+       u32 vn_credit_delta;
+       u32 __reserved0;
 };
 
 
@@ -2147,21 +2840,25 @@ struct eth_stats_query {
  */
 struct fw_version {
 #if defined(__BIG_ENDIAN)
-       u16 patch;
-       u8 primary;
-       u8 client;
+       u8 engineering;
+       u8 revision;
+       u8 minor;
+       u8 major;
 #elif defined(__LITTLE_ENDIAN)
-       u8 client;
-       u8 primary;
-       u16 patch;
+       u8 major;
+       u8 minor;
+       u8 revision;
+       u8 engineering;
 #endif
        u32 flags;
 #define FW_VERSION_OPTIMIZED (0x1<<0)
 #define FW_VERSION_OPTIMIZED_SHIFT 0
 #define FW_VERSION_BIG_ENDIEN (0x1<<1)
 #define FW_VERSION_BIG_ENDIEN_SHIFT 1
-#define __FW_VERSION_RESERVED (0x3FFFFFFF<<2)
-#define __FW_VERSION_RESERVED_SHIFT 2
+#define FW_VERSION_CHIP_VERSION (0x3<<2)
+#define FW_VERSION_CHIP_VERSION_SHIFT 2
+#define __FW_VERSION_RESERVED (0xFFFFFFF<<4)
+#define __FW_VERSION_RESERVED_SHIFT 4
 };
 
 
@@ -2169,15 +2866,10 @@ struct fw_version {
  * FW version stored in first line of pram
  */
 struct pram_fw_version {
-#if defined(__BIG_ENDIAN)
-       u16 patch;
-       u8 primary;
-       u8 client;
-#elif defined(__LITTLE_ENDIAN)
-       u8 client;
-       u8 primary;
-       u16 patch;
-#endif
+       u8 major;
+       u8 minor;
+       u8 revision;
+       u8 engineering;
        u8 flags;
 #define PRAM_FW_VERSION_OPTIMIZED (0x1<<0)
 #define PRAM_FW_VERSION_OPTIMIZED_SHIFT 0
@@ -2185,8 +2877,34 @@ struct pram_fw_version {
 #define PRAM_FW_VERSION_STORM_ID_SHIFT 1
 #define PRAM_FW_VERSION_BIG_ENDIEN (0x1<<3)
 #define PRAM_FW_VERSION_BIG_ENDIEN_SHIFT 3
-#define __PRAM_FW_VERSION_RESERVED0 (0xF<<4)
-#define __PRAM_FW_VERSION_RESERVED0_SHIFT 4
+#define PRAM_FW_VERSION_CHIP_VERSION (0x3<<4)
+#define PRAM_FW_VERSION_CHIP_VERSION_SHIFT 4
+#define __PRAM_FW_VERSION_RESERVED0 (0x3<<6)
+#define __PRAM_FW_VERSION_RESERVED0_SHIFT 6
+};
+
+
+/*
+ * a single rate shaping counter. can be used as protocol or vnic counter
+ */
+struct rate_shaping_counter {
+       u32 quota;
+#if defined(__BIG_ENDIAN)
+       u16 __reserved0;
+       u16 rate;
+#elif defined(__LITTLE_ENDIAN)
+       u16 rate;
+       u16 __reserved0;
+#endif
+};
+
+
+/*
+ * per-vnic rate shaping variables
+ */
+struct rate_shaping_vars_per_vn {
+       struct rate_shaping_counter protocol_counters[NUM_OF_PROTOCOLS];
+       struct rate_shaping_counter vn_counter;
 };
 
 
index 370686eef97c6b59ff5275383f8c4704e27d2a11..a6c0b3abba290a9cd75c7b7c4a764874c4e55801 100644 (file)
@@ -22,7 +22,8 @@
 #define INIT_ASIC                      0x4
 #define INIT_HARDWARE                  0x7
 
-#define STORM_INTMEM_SIZE              (0x5800 / 4)
+#define STORM_INTMEM_SIZE_E1           (0x5800 / 4)
+#define STORM_INTMEM_SIZE_E1H          (0x10000 / 4)
 #define TSTORM_INTMEM_ADDR             0x1a0000
 #define CSTORM_INTMEM_ADDR             0x220000
 #define XSTORM_INTMEM_ADDR             0x2a0000
@@ -30,7 +31,7 @@
 
 
 /* Init operation types and structures */
-
+/* Common for both E1 and E1H */
 #define OP_RD                  0x1 /* read single register */
 #define OP_WR                  0x2 /* write single register */
 #define OP_IW                  0x3 /* write single register using mailbox */
 #define OP_SI                  0x5 /* copy a string using mailbox */
 #define OP_ZR                  0x6 /* clear memory */
 #define OP_ZP                  0x7 /* unzip then copy with DMAE */
-#define OP_WB                  0x8 /* copy a string using DMAE */
+#define OP_WR_64               0x8 /* write 64 bit pattern */
+#define OP_WB                  0x9 /* copy a string using DMAE */
+
+/* Operation specific for E1 */
+#define OP_RD_E1               0xa /* read single register */
+#define OP_WR_E1               0xb /* write single register */
+#define OP_IW_E1               0xc /* write single register using mailbox */
+#define OP_SW_E1               0xd /* copy a string to the device */
+#define OP_SI_E1               0xe /* copy a string using mailbox */
+#define OP_ZR_E1               0xf /* clear memory */
+#define OP_ZP_E1               0x10 /* unzip then copy with DMAE */
+#define OP_WR_64_E1            0x11 /* write 64 bit pattern on E1 */
+#define OP_WB_E1               0x12 /* copy a string using DMAE */
+
+/* Operation specific for E1H */
+#define OP_RD_E1H              0x13 /* read single register */
+#define OP_WR_E1H              0x14 /* write single register */
+#define OP_IW_E1H              0x15 /* write single register using mailbox */
+#define OP_SW_E1H              0x16 /* copy a string to the device */
+#define OP_SI_E1H              0x17 /* copy a string using mailbox */
+#define OP_ZR_E1H              0x18 /* clear memory */
+#define OP_ZP_E1H              0x19 /* unzip then copy with DMAE */
+#define OP_WR_64_E1H           0x1a /* write 64 bit pattern on E1H */
+#define OP_WB_E1H              0x1b /* copy a string using DMAE */
+
+/* FPGA and EMUL specific operations */
+#define OP_WR_EMUL_E1H         0x1c /* write single register on E1H Emul */
+#define OP_WR_EMUL             0x1d /* write single register on Emulation */
+#define OP_WR_FPGA             0x1e /* write single register on FPGA */
+#define OP_WR_ASIC             0x1f /* write single register on ASIC */
+
 
 struct raw_op {
-       u32 op          :8;
-       u32 offset      :24;
+       u32 op:8;
+       u32 offset:24;
        u32 raw_data;
 };
 
 struct op_read {
-       u32 op          :8;
-       u32 offset      :24;
+       u32 op:8;
+       u32 offset:24;
        u32 pad;
 };
 
 struct op_write {
-       u32 op          :8;
-       u32 offset      :24;
+       u32 op:8;
+       u32 offset:24;
        u32 val;
 };
 
 struct op_string_write {
-       u32 op          :8;
-       u32 offset      :24;
+       u32 op:8;
+       u32 offset:24;
 #ifdef __LITTLE_ENDIAN
        u16 data_off;
        u16 data_len;
@@ -71,8 +102,8 @@ struct op_string_write {
 };
 
 struct op_zero {
-       u32 op          :8;
-       u32 offset      :24;
+       u32 op:8;
+       u32 offset:24;
        u32 len;
 };
 
@@ -87,10 +118,6 @@ union init_op {
 #include "bnx2x_init_values.h"
 
 static void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val);
-
-static void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr,
-                            u32 dst_addr, u32 len32);
-
 static int bnx2x_gunzip(struct bnx2x *bp, u8 *zbuf, int len);
 
 static void bnx2x_init_str_wr(struct bnx2x *bp, u32 addr, const u32 *data,
@@ -107,9 +134,6 @@ static void bnx2x_init_str_wr(struct bnx2x *bp, u32 addr, const u32 *data,
        }
 }
 
-#define INIT_MEM_WR(reg, data, reg_off, len) \
-       bnx2x_init_str_wr(bp, reg + reg_off*4, data, len)
-
 static void bnx2x_init_ind_wr(struct bnx2x *bp, u32 addr, const u32 *data,
                              u16 len)
 {
@@ -124,11 +148,117 @@ static void bnx2x_init_ind_wr(struct bnx2x *bp, u32 addr, const u32 *data,
        }
 }
 
+static void bnx2x_write_big_buf(struct bnx2x *bp, u32 addr, u32 len)
+{
+#ifdef USE_DMAE
+       int offset = 0;
+
+       if (bp->dmae_ready) {
+               while (len > DMAE_LEN32_WR_MAX) {
+                       bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+                                        addr + offset, DMAE_LEN32_WR_MAX);
+                       offset += DMAE_LEN32_WR_MAX * 4;
+                       len -= DMAE_LEN32_WR_MAX;
+               }
+               bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+                                addr + offset, len);
+       } else
+               bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
+#else
+       bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
+#endif
+}
+
+static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len)
+{
+       if ((len * 4) > FW_BUF_SIZE) {
+               BNX2X_ERR("LARGE DMAE OPERATION ! addr 0x%x  len 0x%x\n",
+                         addr, len*4);
+               return;
+       }
+       memset(bp->gunzip_buf, fill, len * 4);
+
+       bnx2x_write_big_buf(bp, addr, len);
+}
+
+static void bnx2x_init_wr_64(struct bnx2x *bp, u32 addr, const u32 *data,
+                            u32 len64)
+{
+       u32 buf_len32 = FW_BUF_SIZE/4;
+       u32 len = len64*2;
+       u64 data64 = 0;
+       int i;
+
+       /* 64 bit value is in a blob: first low DWORD, then high DWORD */
+       data64 = HILO_U64((*(data + 1)), (*data));
+       len64 = min((u32)(FW_BUF_SIZE/8), len64);
+       for (i = 0; i < len64; i++) {
+               u64 *pdata = ((u64 *)(bp->gunzip_buf)) + i;
+
+               *pdata = data64;
+       }
+
+       for (i = 0; i < len; i += buf_len32) {
+               u32 cur_len = min(buf_len32, len - i);
+
+               bnx2x_write_big_buf(bp, addr + i * 4, cur_len);
+       }
+}
+
+/*********************************************************
+   There are different blobs for each PRAM section.
+   In addition, each blob write operation is divided into a few operations
+   in order to decrease the amount of phys. contiguous buffer needed.
+   Thus, when we select a blob the address may be with some offset
+   from the beginning of PRAM section.
+   The same holds for the INT_TABLE sections.
+**********************************************************/
+#define IF_IS_INT_TABLE_ADDR(base, addr) \
+                       if (((base) <= (addr)) && ((base) + 0x400 >= (addr)))
+
+#define IF_IS_PRAM_ADDR(base, addr) \
+                       if (((base) <= (addr)) && ((base) + 0x40000 >= (addr)))
+
+static const u32 *bnx2x_sel_blob(u32 addr, const u32 *data, int is_e1)
+{
+       IF_IS_INT_TABLE_ADDR(TSEM_REG_INT_TABLE, addr)
+               data = is_e1 ? tsem_int_table_data_e1 :
+                              tsem_int_table_data_e1h;
+       else
+               IF_IS_INT_TABLE_ADDR(CSEM_REG_INT_TABLE, addr)
+                       data = is_e1 ? csem_int_table_data_e1 :
+                                      csem_int_table_data_e1h;
+       else
+               IF_IS_INT_TABLE_ADDR(USEM_REG_INT_TABLE, addr)
+                       data = is_e1 ? usem_int_table_data_e1 :
+                                      usem_int_table_data_e1h;
+       else
+               IF_IS_INT_TABLE_ADDR(XSEM_REG_INT_TABLE, addr)
+                       data = is_e1 ? xsem_int_table_data_e1 :
+                                      xsem_int_table_data_e1h;
+       else
+               IF_IS_PRAM_ADDR(TSEM_REG_PRAM, addr)
+                       data = is_e1 ? tsem_pram_data_e1 : tsem_pram_data_e1h;
+       else
+               IF_IS_PRAM_ADDR(CSEM_REG_PRAM, addr)
+                       data = is_e1 ? csem_pram_data_e1 : csem_pram_data_e1h;
+       else
+               IF_IS_PRAM_ADDR(USEM_REG_PRAM, addr)
+                       data = is_e1 ? usem_pram_data_e1 : usem_pram_data_e1h;
+       else
+               IF_IS_PRAM_ADDR(XSEM_REG_PRAM, addr)
+                       data = is_e1 ? xsem_pram_data_e1 : xsem_pram_data_e1h;
+
+       return data;
+}
+
 static void bnx2x_init_wr_wb(struct bnx2x *bp, u32 addr, const u32 *data,
-                            u32 len, int gunzip)
+                            u32 len, int gunzip, int is_e1, u32 blob_off)
 {
        int offset = 0;
 
+       data = bnx2x_sel_blob(addr, data, is_e1) + blob_off;
+
        if (gunzip) {
                int rc;
 #ifdef __BIG_ENDIAN
@@ -143,64 +273,59 @@ static void bnx2x_init_wr_wb(struct bnx2x *bp, u32 addr, const u32 *data,
 #endif
                rc = bnx2x_gunzip(bp, (u8 *)data, len);
                if (rc) {
-                       DP(NETIF_MSG_HW, "gunzip failed ! rc %d\n", rc);
+                       BNX2X_ERR("gunzip failed ! rc %d\n", rc);
                        return;
                }
                len = bp->gunzip_outlen;
 #ifdef __BIG_ENDIAN
                kfree(temp);
                for (i = 0; i < len; i++)
-                        ((u32 *)bp->gunzip_buf)[i] =
+                       ((u32 *)bp->gunzip_buf)[i] =
                                        swab32(((u32 *)bp->gunzip_buf)[i]);
 #endif
        } else {
                if ((len * 4) > FW_BUF_SIZE) {
-                       BNX2X_ERR("LARGE DMAE OPERATION ! len 0x%x\n", len*4);
+                       BNX2X_ERR("LARGE DMAE OPERATION ! "
+                                 "addr 0x%x  len 0x%x\n", addr, len*4);
                        return;
                }
                memcpy(bp->gunzip_buf, data, len * 4);
        }
 
-       while (len > DMAE_LEN32_MAX) {
-               bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
-                                addr + offset, DMAE_LEN32_MAX);
-               offset += DMAE_LEN32_MAX * 4;
-               len -= DMAE_LEN32_MAX;
-       }
-       bnx2x_write_dmae(bp, bp->gunzip_mapping + offset, addr + offset, len);
-}
-
-#define INIT_MEM_WB(reg, data, reg_off, len) \
-       bnx2x_init_wr_wb(bp, reg + reg_off*4, data, len, 0)
-
-#define INIT_GUNZIP_DMAE(reg, data, reg_off, len) \
-       bnx2x_init_wr_wb(bp, reg + reg_off*4, data, len, 1)
-
-static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len)
-{
-       int offset = 0;
-
-       if ((len * 4) > FW_BUF_SIZE) {
-               BNX2X_ERR("LARGE DMAE OPERATION ! len 0x%x\n", len * 4);
-               return;
-       }
-       memset(bp->gunzip_buf, fill, len * 4);
-
-       while (len > DMAE_LEN32_MAX) {
+       if (bp->dmae_ready) {
+               while (len > DMAE_LEN32_WR_MAX) {
+                       bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+                                        addr + offset, DMAE_LEN32_WR_MAX);
+                       offset += DMAE_LEN32_WR_MAX * 4;
+                       len -= DMAE_LEN32_WR_MAX;
+               }
                bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
-                                addr + offset, DMAE_LEN32_MAX);
-               offset += DMAE_LEN32_MAX * 4;
-               len -= DMAE_LEN32_MAX;
-       }
-       bnx2x_write_dmae(bp, bp->gunzip_mapping + offset, addr + offset, len);
+                                addr + offset, len);
+       } else
+               bnx2x_init_ind_wr(bp, addr, bp->gunzip_buf, len);
 }
 
 static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
 {
-       int i;
+       int is_e1       = CHIP_IS_E1(bp);
+       int is_e1h      = CHIP_IS_E1H(bp);
+       int is_emul_e1h = (CHIP_REV_IS_EMUL(bp) && is_e1h);
+       int hw_wr, i;
        union init_op *op;
        u32 op_type, addr, len;
-       const u32 *data;
+       const u32 *data, *data_base;
+
+       if (CHIP_REV_IS_FPGA(bp))
+               hw_wr = OP_WR_FPGA;
+       else if (CHIP_REV_IS_EMUL(bp))
+               hw_wr = OP_WR_EMUL;
+       else
+               hw_wr = OP_WR_ASIC;
+
+       if (is_e1)
+               data_base = init_data_e1;
+       else /* CHIP_IS_E1H(bp) */
+               data_base = init_data_e1h;
 
        for (i = op_start; i < op_end; i++) {
 
@@ -209,7 +334,30 @@ static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
                op_type = op->str_wr.op;
                addr = op->str_wr.offset;
                len = op->str_wr.data_len;
-               data = init_data + op->str_wr.data_off;
+               data = data_base + op->str_wr.data_off;
+
+               /* careful! it must be in order */
+               if (unlikely(op_type > OP_WB)) {
+
+                       /* If E1 only */
+                       if (op_type <= OP_WB_E1) {
+                               if (is_e1)
+                                       op_type -= (OP_RD_E1 - OP_RD);
+
+                       /* If E1H only */
+                       } else if (op_type <= OP_WB_E1H) {
+                               if (is_e1h)
+                                       op_type -= (OP_RD_E1H - OP_RD);
+                       }
+
+                       /* HW/EMUL specific */
+                       if (op_type == hw_wr)
+                               op_type = OP_WR;
+
+                       /* EMUL on E1H is special */
+                       if ((op_type == OP_WR_EMUL_E1H) && is_emul_e1h)
+                               op_type = OP_WR;
+               }
 
                switch (op_type) {
                case OP_RD:
@@ -222,7 +370,7 @@ static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
                        bnx2x_init_str_wr(bp, addr, data, len);
                        break;
                case OP_WB:
-                       bnx2x_init_wr_wb(bp, addr, data, len, 0);
+                       bnx2x_init_wr_wb(bp, addr, data, len, 0, is_e1, 0);
                        break;
                case OP_SI:
                        bnx2x_init_ind_wr(bp, addr, data, len);
@@ -231,10 +379,21 @@ static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
                        bnx2x_init_fill(bp, addr, 0, op->zero.len);
                        break;
                case OP_ZP:
-                       bnx2x_init_wr_wb(bp, addr, data, len, 1);
+                       bnx2x_init_wr_wb(bp, addr, data, len, 1, is_e1,
+                                        op->str_wr.data_off);
+                       break;
+               case OP_WR_64:
+                       bnx2x_init_wr_64(bp, addr, data, len);
                        break;
                default:
-                       BNX2X_ERR("BAD init operation!\n");
+                       /* happens whenever an op is of a diff HW */
+#if 0
+                       DP(NETIF_MSG_HW, "skipping init operation  "
+                          "index %d[%d:%d]: type %d  addr 0x%x  "
+                          "len %d(0x%x)\n",
+                          i, op_start, op_end, op_type, addr, len, len);
+#endif
+                       break;
                }
        }
 }
@@ -245,7 +404,7 @@ static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
 ****************************************************************************/
 /*
  * This code configures the PCI read/write arbiter
- * which implements a wighted round robin
+ * which implements a weighted round robin
  * between the virtual queues in the chip.
  *
  * The values were derived for each PCI max payload and max request size.
@@ -315,7 +474,7 @@ static const struct arb_line write_arb_data[NUM_WR_Q][MAX_WR_ORD + 1] = {
        {{8 , 64 , 25}, {16 , 64 , 41}, {32 , 64 , 81} }
 };
 
-/* register adresses for read queues */
+/* register addresses for read queues */
 static const struct arb_line read_arb_addr[NUM_RD_Q-1] = {
        {PXP2_REG_RQ_BW_RD_L0, PXP2_REG_RQ_BW_RD_ADD0,
                PXP2_REG_RQ_BW_RD_UBOUND0},
@@ -375,7 +534,7 @@ static const struct arb_line read_arb_addr[NUM_RD_Q-1] = {
                PXP2_REG_PSWRQ_BW_UB28}
 };
 
-/* register adresses for wrtie queues */
+/* register addresses for write queues */
 static const struct arb_line write_arb_addr[NUM_WR_Q-1] = {
        {PXP2_REG_PSWRQ_BW_L1, PXP2_REG_PSWRQ_BW_ADD1,
                PXP2_REG_PSWRQ_BW_UB1},
@@ -405,14 +564,15 @@ static const struct arb_line write_arb_addr[NUM_WR_Q-1] = {
 
 static void bnx2x_init_pxp(struct bnx2x *bp)
 {
+       u16 devctl;
        int r_order, w_order;
        u32 val, i;
 
        pci_read_config_word(bp->pdev,
-                            bp->pcie_cap + PCI_EXP_DEVCTL, (u16 *)&val);
-       DP(NETIF_MSG_HW, "read 0x%x from devctl\n", (u16)val);
-       w_order = ((val & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
-       r_order = ((val & PCI_EXP_DEVCTL_READRQ) >> 12);
+                            bp->pcie_cap + PCI_EXP_DEVCTL, &devctl);
+       DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);
+       w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
+       r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
 
        if (r_order > MAX_RD_ORD) {
                DP(NETIF_MSG_HW, "read order of %d  order adjusted to %d\n",
@@ -424,6 +584,10 @@ static void bnx2x_init_pxp(struct bnx2x *bp)
                   w_order, MAX_WR_ORD);
                w_order = MAX_WR_ORD;
        }
+       if (CHIP_REV_IS_FPGA(bp)) {
+               DP(NETIF_MSG_HW, "write order adjusted to 1 for FPGA\n");
+               w_order = 0;
+       }
        DP(NETIF_MSG_HW, "read order %d  write order %d\n", r_order, w_order);
 
        for (i = 0; i < NUM_RD_Q-1; i++) {
@@ -481,7 +645,20 @@ static void bnx2x_init_pxp(struct bnx2x *bp)
                REG_WR(bp, PXP2_REG_RQ_PDR_LIMIT, 0xe00);
 
        REG_WR(bp, PXP2_REG_WR_USDMDP_TH, (0x18 << w_order));
-       REG_WR(bp, PXP2_REG_WR_DMAE_TH, (128 << w_order)/16);
+
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, PXP2_REG_WR_HC_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_USDM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_CSDM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_TSDM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_XSDM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_QM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_TM_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_SRC_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_DBG_MPS, w_order+1);
+               REG_WR(bp, PXP2_REG_WR_DMAE_MPS, 2); /* DMAE is special */
+               REG_WR(bp, PXP2_REG_WR_CDU_MPS, w_order+1);
+       }
 }
 
 
@@ -564,6 +741,72 @@ static u8 calc_crc8(u32 data, u8 crc)
        return crc_res;
 }
 
+/* registers addresses are not in order
+   so these arrays help simplify the code */
+static const int cm_start[E1H_FUNC_MAX][9] = {
+       {MISC_FUNC0_START, TCM_FUNC0_START, UCM_FUNC0_START, CCM_FUNC0_START,
+        XCM_FUNC0_START, TSEM_FUNC0_START, USEM_FUNC0_START, CSEM_FUNC0_START,
+        XSEM_FUNC0_START},
+       {MISC_FUNC1_START, TCM_FUNC1_START, UCM_FUNC1_START, CCM_FUNC1_START,
+        XCM_FUNC1_START, TSEM_FUNC1_START, USEM_FUNC1_START, CSEM_FUNC1_START,
+        XSEM_FUNC1_START},
+       {MISC_FUNC2_START, TCM_FUNC2_START, UCM_FUNC2_START, CCM_FUNC2_START,
+        XCM_FUNC2_START, TSEM_FUNC2_START, USEM_FUNC2_START, CSEM_FUNC2_START,
+        XSEM_FUNC2_START},
+       {MISC_FUNC3_START, TCM_FUNC3_START, UCM_FUNC3_START, CCM_FUNC3_START,
+        XCM_FUNC3_START, TSEM_FUNC3_START, USEM_FUNC3_START, CSEM_FUNC3_START,
+        XSEM_FUNC3_START},
+       {MISC_FUNC4_START, TCM_FUNC4_START, UCM_FUNC4_START, CCM_FUNC4_START,
+        XCM_FUNC4_START, TSEM_FUNC4_START, USEM_FUNC4_START, CSEM_FUNC4_START,
+        XSEM_FUNC4_START},
+       {MISC_FUNC5_START, TCM_FUNC5_START, UCM_FUNC5_START, CCM_FUNC5_START,
+        XCM_FUNC5_START, TSEM_FUNC5_START, USEM_FUNC5_START, CSEM_FUNC5_START,
+        XSEM_FUNC5_START},
+       {MISC_FUNC6_START, TCM_FUNC6_START, UCM_FUNC6_START, CCM_FUNC6_START,
+        XCM_FUNC6_START, TSEM_FUNC6_START, USEM_FUNC6_START, CSEM_FUNC6_START,
+        XSEM_FUNC6_START},
+       {MISC_FUNC7_START, TCM_FUNC7_START, UCM_FUNC7_START, CCM_FUNC7_START,
+        XCM_FUNC7_START, TSEM_FUNC7_START, USEM_FUNC7_START, CSEM_FUNC7_START,
+        XSEM_FUNC7_START}
+};
+
+static const int cm_end[E1H_FUNC_MAX][9] = {
+       {MISC_FUNC0_END, TCM_FUNC0_END, UCM_FUNC0_END, CCM_FUNC0_END,
+        XCM_FUNC0_END, TSEM_FUNC0_END, USEM_FUNC0_END, CSEM_FUNC0_END,
+        XSEM_FUNC0_END},
+       {MISC_FUNC1_END, TCM_FUNC1_END, UCM_FUNC1_END, CCM_FUNC1_END,
+        XCM_FUNC1_END, TSEM_FUNC1_END, USEM_FUNC1_END, CSEM_FUNC1_END,
+        XSEM_FUNC1_END},
+       {MISC_FUNC2_END, TCM_FUNC2_END, UCM_FUNC2_END, CCM_FUNC2_END,
+        XCM_FUNC2_END, TSEM_FUNC2_END, USEM_FUNC2_END, CSEM_FUNC2_END,
+        XSEM_FUNC2_END},
+       {MISC_FUNC3_END, TCM_FUNC3_END, UCM_FUNC3_END, CCM_FUNC3_END,
+        XCM_FUNC3_END, TSEM_FUNC3_END, USEM_FUNC3_END, CSEM_FUNC3_END,
+        XSEM_FUNC3_END},
+       {MISC_FUNC4_END, TCM_FUNC4_END, UCM_FUNC4_END, CCM_FUNC4_END,
+        XCM_FUNC4_END, TSEM_FUNC4_END, USEM_FUNC4_END, CSEM_FUNC4_END,
+        XSEM_FUNC4_END},
+       {MISC_FUNC5_END, TCM_FUNC5_END, UCM_FUNC5_END, CCM_FUNC5_END,
+        XCM_FUNC5_END, TSEM_FUNC5_END, USEM_FUNC5_END, CSEM_FUNC5_END,
+        XSEM_FUNC5_END},
+       {MISC_FUNC6_END, TCM_FUNC6_END, UCM_FUNC6_END, CCM_FUNC6_END,
+        XCM_FUNC6_END, TSEM_FUNC6_END, USEM_FUNC6_END, CSEM_FUNC6_END,
+        XSEM_FUNC6_END},
+       {MISC_FUNC7_END, TCM_FUNC7_END, UCM_FUNC7_END, CCM_FUNC7_END,
+        XCM_FUNC7_END, TSEM_FUNC7_END, USEM_FUNC7_END, CSEM_FUNC7_END,
+        XSEM_FUNC7_END},
+};
+
+static const int hc_limits[E1H_FUNC_MAX][2] = {
+       {HC_FUNC0_START, HC_FUNC0_END},
+       {HC_FUNC1_START, HC_FUNC1_END},
+       {HC_FUNC2_START, HC_FUNC2_END},
+       {HC_FUNC3_START, HC_FUNC3_END},
+       {HC_FUNC4_START, HC_FUNC4_END},
+       {HC_FUNC5_START, HC_FUNC5_END},
+       {HC_FUNC6_START, HC_FUNC6_END},
+       {HC_FUNC7_START, HC_FUNC7_END}
+};
 
 #endif /* BNX2X_INIT_H */
 
index bef0a9b19d6826725192024fa5f4e90695f14538..f7d7b48ab0e9c8ccea8447e9c310c6513e1ae895 100644 (file)
@@ -47,16 +47,21 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_1, 0x10100000},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_2, 0x20100000},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_3, 0x30100000},
-       {OP_ZR, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4, 0x4},
+       {OP_ZR_E1, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4, 0x4},
+       {OP_WR_E1H, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4, 0x40100000},
+       {OP_ZR_E1H, PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_5, 0x3},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_0, 0x100000},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_1, 0x12140000},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_2, 0x22140000},
        {OP_WR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_3, 0x32140000},
-       {OP_ZR, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4, 0x4},
+       {OP_ZR_E1, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4, 0x4},
+       {OP_WR_E1H, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4, 0x42140000},
+       {OP_ZR_E1H, PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_5, 0x3},
        {OP_RD, PRS_REG_NUM_OF_PACKETS, 0x0},
        {OP_RD, PRS_REG_NUM_OF_CFC_FLUSH_MESSAGES, 0x0},
        {OP_RD, PRS_REG_NUM_OF_TRANSPARENT_FLUSH_MESSAGES, 0x0},
        {OP_RD, PRS_REG_NUM_OF_DEAD_CYCLES, 0x0},
+       {OP_WR_E1H, PRS_REG_FCOE_TYPE, 0x8906},
        {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_0, 0xff},
        {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_1, 0xff},
        {OP_WR, PRS_REG_FLUSH_REGIONS_TYPE_2, 0xff},
@@ -70,27 +75,32 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_1, 0x3f},
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_2, 0x3f},
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_3, 0x3f},
-       {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_4, 0x0},
+       {OP_WR_E1, PRS_REG_PACKET_REGIONS_TYPE_4, 0x0},
+       {OP_WR_E1H, PRS_REG_PACKET_REGIONS_TYPE_4, 0x3f},
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_5, 0x3f},
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_6, 0x3f},
        {OP_WR, PRS_REG_PACKET_REGIONS_TYPE_7, 0x3f},
-#define PRS_COMMON_END          46
-#define PRS_PORT0_START         46
-       {OP_WR, PRS_REG_CID_PORT_0, 0x0},
-#define PRS_PORT0_END           47
-#define PRS_PORT1_START         47
-       {OP_WR, PRS_REG_CID_PORT_1, 0x800000},
-#define PRS_PORT1_END           48
-#define TSDM_COMMON_START       48
-       {OP_WR, TSDM_REG_CFC_RSP_START_ADDR, 0x411},
-       {OP_WR, TSDM_REG_CMP_COUNTER_START_ADDR, 0x400},
-       {OP_WR, TSDM_REG_Q_COUNTER_START_ADDR, 0x404},
-       {OP_WR, TSDM_REG_PCK_END_MSG_START_ADDR, 0x419},
+#define PRS_COMMON_END          52
+#define SRCH_COMMON_START       52
+       {OP_WR_E1H, SRC_REG_E1HMF_ENABLE, 0x1},
+#define SRCH_COMMON_END         53
+#define TSDM_COMMON_START       53
+       {OP_WR_E1, TSDM_REG_CFC_RSP_START_ADDR, 0x411},
+       {OP_WR_E1H, TSDM_REG_CFC_RSP_START_ADDR, 0x211},
+       {OP_WR_E1, TSDM_REG_CMP_COUNTER_START_ADDR, 0x400},
+       {OP_WR_E1H, TSDM_REG_CMP_COUNTER_START_ADDR, 0x200},
+       {OP_WR_E1, TSDM_REG_Q_COUNTER_START_ADDR, 0x404},
+       {OP_WR_E1H, TSDM_REG_Q_COUNTER_START_ADDR, 0x204},
+       {OP_WR_E1, TSDM_REG_PCK_END_MSG_START_ADDR, 0x419},
+       {OP_WR_E1H, TSDM_REG_PCK_END_MSG_START_ADDR, 0x219},
        {OP_WR, TSDM_REG_CMP_COUNTER_MAX0, 0xffff},
        {OP_WR, TSDM_REG_CMP_COUNTER_MAX1, 0xffff},
        {OP_WR, TSDM_REG_CMP_COUNTER_MAX2, 0xffff},
        {OP_WR, TSDM_REG_CMP_COUNTER_MAX3, 0xffff},
-       {OP_ZR, TSDM_REG_AGG_INT_EVENT_0, 0x80},
+       {OP_ZR, TSDM_REG_AGG_INT_EVENT_0, 0x2},
+       {OP_WR, TSDM_REG_AGG_INT_EVENT_2, 0x34},
+       {OP_WR, TSDM_REG_AGG_INT_EVENT_3, 0x35},
+       {OP_ZR, TSDM_REG_AGG_INT_EVENT_4, 0x7c},
        {OP_WR, TSDM_REG_ENABLE_IN1, 0x7ffffff},
        {OP_WR, TSDM_REG_ENABLE_IN2, 0x3f},
        {OP_WR, TSDM_REG_ENABLE_OUT1, 0x7ffffff},
@@ -109,9 +119,12 @@ static const struct raw_op init_ops[] = {
        {OP_RD, TSDM_REG_NUM_OF_PKT_END_MSG, 0x0},
        {OP_RD, TSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0},
        {OP_RD, TSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0},
-       {OP_WR, TSDM_REG_TIMER_TICK, 0x3e8},
-#define TSDM_COMMON_END         76
-#define TCM_COMMON_START        76
+       {OP_WR_E1, TSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1},
+       {OP_WR_ASIC, TSDM_REG_TIMER_TICK, 0x3e8},
+       {OP_WR_EMUL, TSDM_REG_TIMER_TICK, 0x1},
+       {OP_WR_FPGA, TSDM_REG_TIMER_TICK, 0xa},
+#define TSDM_COMMON_END         91
+#define TCM_COMMON_START        91
        {OP_WR, TCM_REG_XX_MAX_LL_SZ, 0x20},
        {OP_WR, TCM_REG_XX_OVFL_EVNT_ID, 0x32},
        {OP_WR, TCM_REG_TQM_TCM_HDR_P, 0x2150020},
@@ -141,11 +154,18 @@ static const struct raw_op init_ops[] = {
        {OP_WR, TCM_REG_N_SM_CTX_LD_1, 0x7},
        {OP_WR, TCM_REG_N_SM_CTX_LD_2, 0x8},
        {OP_WR, TCM_REG_N_SM_CTX_LD_3, 0x8},
-       {OP_ZR, TCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_ZR_E1, TCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_WR_E1H, TCM_REG_N_SM_CTX_LD_4, 0x1},
+       {OP_ZR_E1H, TCM_REG_N_SM_CTX_LD_5, 0x3},
        {OP_WR, TCM_REG_TCM_REG0_SZ, 0x6},
-       {OP_WR, TCM_REG_PHYS_QNUM0_0, 0xd},
-       {OP_WR, TCM_REG_PHYS_QNUM0_1, 0x2d},
-       {OP_ZR, TCM_REG_PHYS_QNUM1_0, 0x6},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM0_0, 0xd},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM0_1, 0x2d},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM1_0, 0x7},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM1_1, 0x27},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM2_0, 0x7},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM2_1, 0x27},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM3_0, 0x7},
+       {OP_WR_E1, TCM_REG_PHYS_QNUM3_1, 0x27},
        {OP_WR, TCM_REG_TCM_STORM0_IFEN, 0x1},
        {OP_WR, TCM_REG_TCM_STORM1_IFEN, 0x1},
        {OP_WR, TCM_REG_TCM_TQM_IFEN, 0x1},
@@ -162,23 +182,75 @@ static const struct raw_op init_ops[] = {
        {OP_WR, TCM_REG_CDU_SM_WR_IFEN, 0x1},
        {OP_WR, TCM_REG_CDU_SM_RD_IFEN, 0x1},
        {OP_WR, TCM_REG_TCM_CFC_IFEN, 0x1},
-#define TCM_COMMON_END          126
-#define BRB1_COMMON_START       126
+#define TCM_COMMON_END          148
+#define TCM_FUNC0_START         148
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_0, 0xd},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_0, 0x7},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_0, 0x7},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_0, 0x7},
+#define TCM_FUNC0_END           152
+#define TCM_FUNC1_START         152
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_1, 0x2d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_1, 0x27},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_1, 0x27},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_1, 0x27},
+#define TCM_FUNC1_END           156
+#define TCM_FUNC2_START         156
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_0, 0x1d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_0, 0x17},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_0, 0x17},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_0, 0x17},
+#define TCM_FUNC2_END           160
+#define TCM_FUNC3_START         160
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_1, 0x3d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_1, 0x37},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_1, 0x37},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_1, 0x37},
+#define TCM_FUNC3_END           164
+#define TCM_FUNC4_START         164
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_0, 0x4d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_0, 0x47},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_0, 0x47},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_0, 0x47},
+#define TCM_FUNC4_END           168
+#define TCM_FUNC5_START         168
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_1, 0x6d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_1, 0x67},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_1, 0x67},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_1, 0x67},
+#define TCM_FUNC5_END           172
+#define TCM_FUNC6_START         172
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_0, 0x5d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_0, 0x57},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_0, 0x57},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_0, 0x57},
+#define TCM_FUNC6_END           176
+#define TCM_FUNC7_START         176
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM0_1, 0x7d},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM1_1, 0x77},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM2_1, 0x77},
+       {OP_WR_E1H, TCM_REG_PHYS_QNUM3_1, 0x77},
+#define TCM_FUNC7_END           180
+#define BRB1_COMMON_START       180
        {OP_SW, BRB1_REG_LL_RAM, 0x2000020},
        {OP_WR, BRB1_REG_SOFT_RESET, 0x1},
-       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_0, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_1, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_2, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_3, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_0, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_1, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_2, 0x0},
-       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_3, 0x0},
        {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_4, 0x0},
        {OP_SW, BRB1_REG_FREE_LIST_PRS_CRDT, 0x30220},
        {OP_WR, BRB1_REG_SOFT_RESET, 0x0},
-#define BRB1_COMMON_END         139
-#define TSEM_COMMON_START       139
+#define BRB1_COMMON_END         185
+#define BRB1_PORT0_START        185
+       {OP_WR_E1, BRB1_REG_PAUSE_LOW_THRESHOLD_0, 0xb8},
+       {OP_WR_E1, BRB1_REG_PAUSE_HIGH_THRESHOLD_0, 0x114},
+       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_0, 0x0},
+       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_0, 0x0},
+#define BRB1_PORT0_END          189
+#define BRB1_PORT1_START        189
+       {OP_WR_E1, BRB1_REG_PAUSE_LOW_THRESHOLD_1, 0xb8},
+       {OP_WR_E1, BRB1_REG_PAUSE_HIGH_THRESHOLD_1, 0x114},
+       {OP_RD, BRB1_REG_NUM_OF_PAUSE_CYCLES_1, 0x0},
+       {OP_RD, BRB1_REG_NUM_OF_FULL_CYCLES_1, 0x0},
+#define BRB1_PORT1_END          193
+#define TSEM_COMMON_START       193
        {OP_RD, TSEM_REG_MSG_NUM_FIC0, 0x0},
        {OP_RD, TSEM_REG_MSG_NUM_FIC1, 0x0},
        {OP_RD, TSEM_REG_MSG_NUM_FOC0, 0x0},
@@ -222,106 +294,269 @@ static const struct raw_op init_ops[] = {
        {OP_WR, TSEM_REG_FAST_MEMORY + 0x18040, 0x18},
        {OP_WR, TSEM_REG_FAST_MEMORY + 0x18080, 0xc},
        {OP_WR, TSEM_REG_FAST_MEMORY + 0x180c0, 0x20},
-       {OP_WR, TSEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_ASIC, TSEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_EMUL, TSEM_REG_FAST_MEMORY + 0x18300, 0x138},
+       {OP_WR_FPGA, TSEM_REG_FAST_MEMORY + 0x18300, 0x1388},
        {OP_WR, TSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2000, 0x1b3},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x2000 + 0x6cc, 0x10223},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1000, 0x2},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x800, 0x2},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x808, 0x2},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x810, 0x4},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1fa0, 0x4},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x4cf0, 0x80224},
-       {OP_ZP, TSEM_REG_INT_TABLE, 0x8c022c},
-       {OP_ZP, TSEM_REG_PRAM, 0x3395024f},
-       {OP_ZP, TSEM_REG_PRAM + 0x8000, 0x2c760f35},
-       {OP_ZP, TSEM_REG_PRAM + 0x10000, 0x5e1a53},
-       {OP_ZP, TSEM_REG_PRAM + 0x18000, 0x5e1a6b},
-       {OP_ZP, TSEM_REG_PRAM + 0x20000, 0x5e1a83},
-       {OP_ZP, TSEM_REG_PRAM + 0x28000, 0x5e1a9b},
-       {OP_ZP, TSEM_REG_PRAM + 0x30000, 0x5e1ab3},
-       {OP_ZP, TSEM_REG_PRAM + 0x38000, 0x5e1acb},
-#define TSEM_COMMON_END         202
-#define TSEM_PORT0_START        202
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x4000, 0x16c},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x4000 + 0x5b0, 0x21ae3},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1370, 0xa},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x13c0, 0x6},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1418, 0xc},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1478, 0x12},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1508, 0x90},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x800, 0x2},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x820, 0x10},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x820 + 0x40, 0x21ae5},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2908, 0xa},
-#define TSEM_PORT0_END          213
-#define TSEM_PORT1_START        213
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x45b8, 0x16c},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x45b8 + 0x5b0, 0x21ae7},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1398, 0xa},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x13d8, 0x6},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1448, 0xc},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x14c0, 0x12},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x1748, 0x90},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x808, 0x2},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x868, 0x10},
-       {OP_SW, TSEM_REG_FAST_MEMORY + 0x868 + 0x40, 0x21ae9},
-       {OP_ZR, TSEM_REG_FAST_MEMORY + 0x2930, 0xa},
-#define TSEM_PORT1_END          224
-#define MISC_COMMON_START       224
-       {OP_WR, MISC_REG_GRC_TIMEOUT_EN, 0x1},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x2000, 0xb2},
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x11480, 0x1},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x23c8, 0xc1},
+       {OP_WR_EMUL_E1H, TSEM_REG_FAST_MEMORY + 0x11480, 0x0},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x23c8 + 0x304, 0x10223},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x1000, 0x2b3},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x1000 + 0xacc, 0x10223},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1000, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xa020, 0xc8},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1c18, 0x4},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xa000, 0x2},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1c10, 0x2},
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x1ad0, 0x0},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x800, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3678, 0x6},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x808, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3670, 0x2},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x810, 0x4},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5000, 0x2},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x1fb0, 0x40224},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5008, 0x4},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x4cb0, 0x80228},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5018, 0x4},
+       {OP_ZP_E1, TSEM_REG_INT_TABLE, 0x920000},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5028, 0x4},
+       {OP_WR_64_E1, TSEM_REG_INT_TABLE + 0x360, 0x140230},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5038, 0x4},
+       {OP_ZP_E1, TSEM_REG_PRAM, 0x32bc0000},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5048, 0x4},
+       {OP_ZP_E1, TSEM_REG_PRAM + 0x8000, 0x32e80caf},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5058, 0x4},
+       {OP_ZP_E1, TSEM_REG_PRAM + 0x10000, 0xd191969},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5068, 0x4},
+       {OP_WR_64_E1, TSEM_REG_PRAM + 0x11af0, 0x5ca20232},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5078, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x4000, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x4008, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x6140, 0x200224},
+       {OP_ZP_E1H, TSEM_REG_INT_TABLE, 0x980000},
+       {OP_WR_64_E1H, TSEM_REG_INT_TABLE + 0x398, 0xd0244},
+       {OP_ZP_E1H, TSEM_REG_PRAM, 0x310a0000},
+       {OP_ZP_E1H, TSEM_REG_PRAM + 0x8000, 0x355c0c43},
+       {OP_ZP_E1H, TSEM_REG_PRAM + 0x10000, 0x1a3b199a},
+       {OP_WR_64_E1H, TSEM_REG_PRAM + 0x14200, 0x57c00246},
+#define TSEM_COMMON_END         285
+#define TSEM_PORT0_START        285
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x22c8, 0x20},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x2000, 0x16c},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x4000, 0x16c},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xb000, 0x28},
+       {OP_WR_E1, TSEM_REG_FAST_MEMORY + 0x4b60, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xb140, 0xc},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1400, 0xa},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x32c0, 0x12},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1450, 0x6},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3350, 0x64},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1500, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x8108, 0x2},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x1500 + 0x8, 0x50234},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1500 + 0x1c, 0x7},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1570, 0x12},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x9c0, 0x4c},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x800, 0x2},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x820, 0xe},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x1fb0, 0x20239},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x2908, 0x2},
+#define TSEM_PORT0_END          305
+#define TSEM_PORT1_START        305
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x2348, 0x20},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x25b0, 0x16c},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x45b0, 0x16c},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xb0a0, 0x28},
+       {OP_WR_E1, TSEM_REG_FAST_MEMORY + 0x4b64, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0xb170, 0xc},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1428, 0xa},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3308, 0x12},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1468, 0x6},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x34e0, 0x64},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1538, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x8110, 0x2},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x1538 + 0x8, 0x5023b},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x1538 + 0x1c, 0x7},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x15b8, 0x12},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0xaf0, 0x4c},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x808, 0x2},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x858, 0xe},
+       {OP_SW_E1, TSEM_REG_FAST_MEMORY + 0x1fb8, 0x20240},
+       {OP_ZR_E1, TSEM_REG_FAST_MEMORY + 0x2910, 0x2},
+#define TSEM_PORT1_END          325
+#define TSEM_FUNC0_START        325
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b60, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3000, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3000 + 0x8, 0x50248},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3000 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x31c0, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5000, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5080, 0x12},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x4000, 0x2},
+#define TSEM_FUNC0_END          333
+#define TSEM_FUNC1_START        333
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b64, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3038, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3038 + 0x8, 0x5024d},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3038 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x31e0, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5010, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x50c8, 0x12},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x4008, 0x2},
+#define TSEM_FUNC1_END          341
+#define TSEM_FUNC2_START        341
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b68, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3070, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3070 + 0x8, 0x50252},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3070 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3200, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5020, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5110, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4010, 0x20257},
+#define TSEM_FUNC2_END          349
+#define TSEM_FUNC3_START        349
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b6c, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x30a8, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x30a8 + 0x8, 0x50259},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x30a8 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3220, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5030, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5158, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4018, 0x2025e},
+#define TSEM_FUNC3_END          357
+#define TSEM_FUNC4_START        357
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b70, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x30e0, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x30e0 + 0x8, 0x50260},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x30e0 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3240, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5040, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x51a0, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4020, 0x20265},
+#define TSEM_FUNC4_END          365
+#define TSEM_FUNC5_START        365
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b74, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3118, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3118 + 0x8, 0x50267},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3118 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3260, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5050, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x51e8, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4028, 0x2026c},
+#define TSEM_FUNC5_END          373
+#define TSEM_FUNC6_START        373
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b78, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3150, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3150 + 0x8, 0x5026e},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3150 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3280, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5060, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5230, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4030, 0x20273},
+#define TSEM_FUNC6_END          381
+#define TSEM_FUNC7_START        381
+       {OP_WR_E1H, TSEM_REG_FAST_MEMORY + 0x2b7c, 0x0},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3188, 0x2},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x3188 + 0x8, 0x50275},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x3188 + 0x1c, 0x7},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x32a0, 0x8},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5070, 0x2},
+       {OP_ZR_E1H, TSEM_REG_FAST_MEMORY + 0x5278, 0x12},
+       {OP_SW_E1H, TSEM_REG_FAST_MEMORY + 0x4038, 0x2027a},
+#define TSEM_FUNC7_END          389
+#define MISC_COMMON_START       389
+       {OP_WR_E1, MISC_REG_GRC_TIMEOUT_EN, 0x1},
        {OP_WR, MISC_REG_PLL_STORM_CTRL_1, 0x71d2911},
        {OP_WR, MISC_REG_PLL_STORM_CTRL_2, 0x0},
        {OP_WR, MISC_REG_PLL_STORM_CTRL_3, 0x9c0424},
        {OP_WR, MISC_REG_PLL_STORM_CTRL_4, 0x0},
        {OP_WR, MISC_REG_LCPLL_CTRL_1, 0x209},
-#define MISC_COMMON_END         230
-#define NIG_COMMON_START        230
+       {OP_WR_E1, MISC_REG_SPIO, 0xff000000},
+#define MISC_COMMON_END         396
+#define MISC_FUNC0_START        396
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P0, 0x0},
+#define MISC_FUNC0_END          397
+#define MISC_FUNC1_START        397
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P1, 0x0},
+#define MISC_FUNC1_END          398
+#define MISC_FUNC2_START        398
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P0, 0x0},
+#define MISC_FUNC2_END          399
+#define MISC_FUNC3_START        399
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P1, 0x0},
+#define MISC_FUNC3_END          400
+#define MISC_FUNC4_START        400
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P0, 0x0},
+#define MISC_FUNC4_END          401
+#define MISC_FUNC5_START        401
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P1, 0x0},
+#define MISC_FUNC5_END          402
+#define MISC_FUNC6_START        402
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P0, 0x0},
+#define MISC_FUNC6_END          403
+#define MISC_FUNC7_START        403
+       {OP_WR_E1H, MISC_REG_NIG_WOL_P1, 0x0},
+#define MISC_FUNC7_END          404
+#define NIG_COMMON_START        404
        {OP_WR, NIG_REG_PBF_LB_IN_EN, 0x1},
        {OP_WR, NIG_REG_PRS_REQ_IN_EN, 0x1},
        {OP_WR, NIG_REG_EGRESS_DEBUG_IN_EN, 0x1},
        {OP_WR, NIG_REG_BRB_LB_OUT_EN, 0x1},
        {OP_WR, NIG_REG_PRS_EOP_OUT_EN, 0x1},
-#define NIG_COMMON_END          235
-#define NIG_PORT0_START         235
+#define NIG_COMMON_END          409
+#define NIG_PORT0_START         409
        {OP_WR, NIG_REG_LLH0_CM_HEADER, 0x300000},
-       {OP_WR, NIG_REG_LLH0_EVENT_ID, 0x26},
+       {OP_WR, NIG_REG_LLH0_EVENT_ID, 0x28},
        {OP_WR, NIG_REG_LLH0_ERROR_MASK, 0x0},
        {OP_WR, NIG_REG_LLH0_XCM_MASK, 0x4},
        {OP_WR, NIG_REG_LLH0_BRB1_NOT_MCP, 0x1},
        {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT0, 0x0},
+       {OP_WR_E1H, NIG_REG_LLH0_CLS_TYPE, 0x1},
        {OP_WR, NIG_REG_LLH0_XCM_INIT_CREDIT, 0x30},
        {OP_WR, NIG_REG_BRB0_PAUSE_IN_EN, 0x1},
        {OP_WR, NIG_REG_EGRESS_PBF0_IN_EN, 0x1},
        {OP_WR, NIG_REG_BRB0_OUT_EN, 0x1},
        {OP_WR, NIG_REG_XCM0_OUT_EN, 0x1},
-#define NIG_PORT0_END           246
-#define NIG_PORT1_START         246
+#define NIG_PORT0_END           421
+#define NIG_PORT1_START         421
        {OP_WR, NIG_REG_LLH1_CM_HEADER, 0x300000},
-       {OP_WR, NIG_REG_LLH1_EVENT_ID, 0x26},
+       {OP_WR, NIG_REG_LLH1_EVENT_ID, 0x28},
        {OP_WR, NIG_REG_LLH1_ERROR_MASK, 0x0},
        {OP_WR, NIG_REG_LLH1_XCM_MASK, 0x4},
        {OP_WR, NIG_REG_LLH1_BRB1_NOT_MCP, 0x1},
        {OP_WR, NIG_REG_STATUS_INTERRUPT_PORT1, 0x0},
+       {OP_WR_E1H, NIG_REG_LLH1_CLS_TYPE, 0x1},
        {OP_WR, NIG_REG_LLH1_XCM_INIT_CREDIT, 0x30},
        {OP_WR, NIG_REG_BRB1_PAUSE_IN_EN, 0x1},
        {OP_WR, NIG_REG_EGRESS_PBF1_IN_EN, 0x1},
        {OP_WR, NIG_REG_BRB1_OUT_EN, 0x1},
        {OP_WR, NIG_REG_XCM1_OUT_EN, 0x1},
-#define NIG_PORT1_END           257
-#define UPB_COMMON_START        257
+#define NIG_PORT1_END           433
+#define UPB_COMMON_START        433
        {OP_WR, GRCBASE_UPB + PB_REG_CONTROL, 0x20},
-#define UPB_COMMON_END          258
-#define CSDM_COMMON_START       258
-       {OP_WR, CSDM_REG_CFC_RSP_START_ADDR, 0xa11},
-       {OP_WR, CSDM_REG_CMP_COUNTER_START_ADDR, 0xa00},
-       {OP_WR, CSDM_REG_Q_COUNTER_START_ADDR, 0xa04},
+#define UPB_COMMON_END          434
+#define CSDM_COMMON_START       434
+       {OP_WR_E1, CSDM_REG_CFC_RSP_START_ADDR, 0xa11},
+       {OP_WR_E1H, CSDM_REG_CFC_RSP_START_ADDR, 0x211},
+       {OP_WR_E1, CSDM_REG_CMP_COUNTER_START_ADDR, 0xa00},
+       {OP_WR_E1H, CSDM_REG_CMP_COUNTER_START_ADDR, 0x200},
+       {OP_WR_E1, CSDM_REG_Q_COUNTER_START_ADDR, 0xa04},
+       {OP_WR_E1H, CSDM_REG_Q_COUNTER_START_ADDR, 0x204},
        {OP_WR, CSDM_REG_CMP_COUNTER_MAX0, 0xffff},
        {OP_WR, CSDM_REG_CMP_COUNTER_MAX1, 0xffff},
        {OP_WR, CSDM_REG_CMP_COUNTER_MAX2, 0xffff},
        {OP_WR, CSDM_REG_CMP_COUNTER_MAX3, 0xffff},
-       {OP_ZR, CSDM_REG_AGG_INT_EVENT_0, 0x80},
+       {OP_WR, CSDM_REG_AGG_INT_EVENT_0, 0xc6},
+       {OP_WR, CSDM_REG_AGG_INT_EVENT_1, 0x0},
+       {OP_WR, CSDM_REG_AGG_INT_EVENT_2, 0x34},
+       {OP_WR, CSDM_REG_AGG_INT_EVENT_3, 0x35},
+       {OP_ZR, CSDM_REG_AGG_INT_EVENT_4, 0x1c},
+       {OP_WR, CSDM_REG_AGG_INT_T_0, 0x1},
+       {OP_ZR, CSDM_REG_AGG_INT_T_1, 0x5f},
        {OP_WR, CSDM_REG_ENABLE_IN1, 0x7ffffff},
        {OP_WR, CSDM_REG_ENABLE_IN2, 0x3f},
        {OP_WR, CSDM_REG_ENABLE_OUT1, 0x7ffffff},
@@ -340,21 +575,36 @@ static const struct raw_op init_ops[] = {
        {OP_RD, CSDM_REG_NUM_OF_PKT_END_MSG, 0x0},
        {OP_RD, CSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0},
        {OP_RD, CSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0},
-       {OP_WR, CSDM_REG_TIMER_TICK, 0x3e8},
-#define CSDM_COMMON_END         285
-#define USDM_COMMON_START       285
-       {OP_WR, USDM_REG_CFC_RSP_START_ADDR, 0xa11},
-       {OP_WR, USDM_REG_CMP_COUNTER_START_ADDR, 0xa00},
-       {OP_WR, USDM_REG_Q_COUNTER_START_ADDR, 0xa04},
-       {OP_WR, USDM_REG_PCK_END_MSG_START_ADDR, 0xa21},
+       {OP_WR_E1, CSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1},
+       {OP_WR_ASIC, CSDM_REG_TIMER_TICK, 0x3e8},
+       {OP_WR_EMUL, CSDM_REG_TIMER_TICK, 0x1},
+       {OP_WR_FPGA, CSDM_REG_TIMER_TICK, 0xa},
+#define CSDM_COMMON_END         473
+#define USDM_COMMON_START       473
+       {OP_WR_E1, USDM_REG_CFC_RSP_START_ADDR, 0xa11},
+       {OP_WR_E1H, USDM_REG_CFC_RSP_START_ADDR, 0x411},
+       {OP_WR_E1, USDM_REG_CMP_COUNTER_START_ADDR, 0xa00},
+       {OP_WR_E1H, USDM_REG_CMP_COUNTER_START_ADDR, 0x400},
+       {OP_WR_E1, USDM_REG_Q_COUNTER_START_ADDR, 0xa04},
+       {OP_WR_E1H, USDM_REG_Q_COUNTER_START_ADDR, 0x404},
+       {OP_WR_E1, USDM_REG_PCK_END_MSG_START_ADDR, 0xa21},
+       {OP_WR_E1H, USDM_REG_PCK_END_MSG_START_ADDR, 0x421},
        {OP_WR, USDM_REG_CMP_COUNTER_MAX0, 0xffff},
        {OP_WR, USDM_REG_CMP_COUNTER_MAX1, 0xffff},
        {OP_WR, USDM_REG_CMP_COUNTER_MAX2, 0xffff},
        {OP_WR, USDM_REG_CMP_COUNTER_MAX3, 0xffff},
        {OP_WR, USDM_REG_AGG_INT_EVENT_0, 0x46},
-       {OP_ZR, USDM_REG_AGG_INT_EVENT_1, 0x5f},
+       {OP_WR, USDM_REG_AGG_INT_EVENT_1, 0x5},
+       {OP_WR, USDM_REG_AGG_INT_EVENT_2, 0x34},
+       {OP_WR, USDM_REG_AGG_INT_EVENT_3, 0x35},
+       {OP_ZR_E1, USDM_REG_AGG_INT_EVENT_4, 0x5c},
+       {OP_WR_E1H, USDM_REG_AGG_INT_EVENT_4, 0x7},
+       {OP_ZR_E1H, USDM_REG_AGG_INT_EVENT_5, 0x5b},
        {OP_WR, USDM_REG_AGG_INT_MODE_0, 0x1},
-       {OP_ZR, USDM_REG_AGG_INT_MODE_1, 0x1f},
+       {OP_ZR_E1, USDM_REG_AGG_INT_MODE_1, 0x1f},
+       {OP_ZR_E1H, USDM_REG_AGG_INT_MODE_1, 0x3},
+       {OP_WR_E1H, USDM_REG_AGG_INT_MODE_4, 0x1},
+       {OP_ZR_E1H, USDM_REG_AGG_INT_MODE_5, 0x1b},
        {OP_WR, USDM_REG_ENABLE_IN1, 0x7ffffff},
        {OP_WR, USDM_REG_ENABLE_IN2, 0x3f},
        {OP_WR, USDM_REG_ENABLE_OUT1, 0x7ffffff},
@@ -374,9 +624,12 @@ static const struct raw_op init_ops[] = {
        {OP_RD, USDM_REG_NUM_OF_PKT_END_MSG, 0x0},
        {OP_RD, USDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0},
        {OP_RD, USDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0},
-       {OP_WR, USDM_REG_TIMER_TICK, 0x3e8},
-#define USDM_COMMON_END         317
-#define CCM_COMMON_START        317
+       {OP_WR_E1, USDM_REG_INIT_CREDIT_PXP_CTRL, 0x1},
+       {OP_WR_ASIC, USDM_REG_TIMER_TICK, 0x3e8},
+       {OP_WR_EMUL, USDM_REG_TIMER_TICK, 0x1},
+       {OP_WR_FPGA, USDM_REG_TIMER_TICK, 0xa},
+#define USDM_COMMON_END         520
+#define CCM_COMMON_START        520
        {OP_WR, CCM_REG_XX_OVFL_EVNT_ID, 0x32},
        {OP_WR, CCM_REG_CQM_CCM_HDR_P, 0x2150020},
        {OP_WR, CCM_REG_CQM_CCM_HDR_S, 0x2150020},
@@ -401,23 +654,28 @@ static const struct raw_op init_ops[] = {
        {OP_WR, CCM_REG_XX_INIT_CRD, 0x3},
        {OP_WR, CCM_REG_XX_MSG_NUM, 0x18},
        {OP_ZR, CCM_REG_XX_TABLE, 0x12},
-       {OP_SW, CCM_REG_XX_DESCR_TABLE, 0x241aeb},
+       {OP_SW_E1, CCM_REG_XX_DESCR_TABLE, 0x240242},
+       {OP_SW_E1H, CCM_REG_XX_DESCR_TABLE, 0x24027c},
        {OP_WR, CCM_REG_N_SM_CTX_LD_0, 0x1},
        {OP_WR, CCM_REG_N_SM_CTX_LD_1, 0x2},
        {OP_WR, CCM_REG_N_SM_CTX_LD_2, 0x8},
        {OP_WR, CCM_REG_N_SM_CTX_LD_3, 0x8},
        {OP_ZR, CCM_REG_N_SM_CTX_LD_4, 0x4},
        {OP_WR, CCM_REG_CCM_REG0_SZ, 0x4},
-       {OP_WR, CCM_REG_QOS_PHYS_QNUM0_0, 0x9},
-       {OP_WR, CCM_REG_QOS_PHYS_QNUM0_1, 0x29},
-       {OP_WR, CCM_REG_QOS_PHYS_QNUM1_0, 0xa},
-       {OP_WR, CCM_REG_QOS_PHYS_QNUM1_1, 0x2a},
-       {OP_ZR, CCM_REG_QOS_PHYS_QNUM2_0, 0x4},
-       {OP_WR, CCM_REG_PHYS_QNUM1_0, 0xc},
-       {OP_WR, CCM_REG_PHYS_QNUM1_1, 0x2c},
-       {OP_WR, CCM_REG_PHYS_QNUM2_0, 0xb},
-       {OP_WR, CCM_REG_PHYS_QNUM2_1, 0x2b},
-       {OP_ZR, CCM_REG_PHYS_QNUM3_0, 0x2},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM0_0, 0x9},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM0_1, 0x29},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM1_0, 0xa},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM1_1, 0x2a},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM2_0, 0x7},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM2_1, 0x27},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM3_0, 0x7},
+       {OP_WR_E1, CCM_REG_QOS_PHYS_QNUM3_1, 0x27},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM1_0, 0xc},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM1_1, 0x2c},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM2_0, 0xc},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM2_1, 0x2c},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM3_0, 0xc},
+       {OP_WR_E1, CCM_REG_PHYS_QNUM3_1, 0x2c},
        {OP_WR, CCM_REG_CCM_STORM0_IFEN, 0x1},
        {OP_WR, CCM_REG_CCM_STORM1_IFEN, 0x1},
        {OP_WR, CCM_REG_CCM_CQM_IFEN, 0x1},
@@ -433,8 +691,80 @@ static const struct raw_op init_ops[] = {
        {OP_WR, CCM_REG_CDU_SM_WR_IFEN, 0x1},
        {OP_WR, CCM_REG_CDU_SM_RD_IFEN, 0x1},
        {OP_WR, CCM_REG_CCM_CFC_IFEN, 0x1},
-#define CCM_COMMON_END          373
-#define UCM_COMMON_START        373
+#define CCM_COMMON_END          581
+#define CCM_FUNC0_START         581
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_0, 0x9},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_0, 0xa},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_0, 0x7},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_0, 0x7},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_0, 0xc},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_0, 0xb},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_0, 0x7},
+#define CCM_FUNC0_END           588
+#define CCM_FUNC1_START         588
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_1, 0x29},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_1, 0x2a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_1, 0x27},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_1, 0x27},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_1, 0x2c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_1, 0x2b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_1, 0x27},
+#define CCM_FUNC1_END           595
+#define CCM_FUNC2_START         595
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_0, 0x19},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_0, 0x1a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_0, 0x17},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_0, 0x17},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_0, 0x1c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_0, 0x1b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_0, 0x17},
+#define CCM_FUNC2_END           602
+#define CCM_FUNC3_START         602
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_1, 0x39},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_1, 0x3a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_1, 0x37},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_1, 0x37},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_1, 0x3c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_1, 0x3b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_1, 0x37},
+#define CCM_FUNC3_END           609
+#define CCM_FUNC4_START         609
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_0, 0x49},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_0, 0x4a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_0, 0x47},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_0, 0x47},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_0, 0x4c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_0, 0x4b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_0, 0x47},
+#define CCM_FUNC4_END           616
+#define CCM_FUNC5_START         616
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_1, 0x69},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_1, 0x6a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_1, 0x67},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_1, 0x67},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_1, 0x6c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_1, 0x6b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_1, 0x67},
+#define CCM_FUNC5_END           623
+#define CCM_FUNC6_START         623
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_0, 0x59},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_0, 0x5a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_0, 0x57},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_0, 0x57},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_0, 0x5c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_0, 0x5b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_0, 0x57},
+#define CCM_FUNC6_END           630
+#define CCM_FUNC7_START         630
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM0_1, 0x79},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM1_1, 0x7a},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM2_1, 0x77},
+       {OP_WR_E1H, CCM_REG_QOS_PHYS_QNUM3_1, 0x77},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM1_1, 0x7c},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM2_1, 0x7b},
+       {OP_WR_E1H, CCM_REG_PHYS_QNUM3_1, 0x77},
+#define CCM_FUNC7_END           637
+#define UCM_COMMON_START        637
        {OP_WR, UCM_REG_XX_OVFL_EVNT_ID, 0x32},
        {OP_WR, UCM_REG_UQM_UCM_HDR_P, 0x2150020},
        {OP_WR, UCM_REG_UQM_UCM_HDR_S, 0x2150020},
@@ -457,20 +787,23 @@ static const struct raw_op init_ops[] = {
        {OP_WR, UCM_REG_FIC1_INIT_CRD, 0x40},
        {OP_WR, UCM_REG_TM_INIT_CRD, 0x4},
        {OP_WR, UCM_REG_UQM_INIT_CRD, 0x20},
-       {OP_WR, UCM_REG_XX_INIT_CRD, 0xc},
-       {OP_WR, UCM_REG_XX_MSG_NUM, 0x20},
+       {OP_WR, UCM_REG_XX_INIT_CRD, 0xe},
+       {OP_WR, UCM_REG_XX_MSG_NUM, 0x1b},
        {OP_ZR, UCM_REG_XX_TABLE, 0x12},
-       {OP_SW, UCM_REG_XX_DESCR_TABLE, 0x201b0f},
-       {OP_WR, UCM_REG_N_SM_CTX_LD_0, 0xa},
+       {OP_SW_E1, UCM_REG_XX_DESCR_TABLE, 0x1b0266},
+       {OP_SW_E1H, UCM_REG_XX_DESCR_TABLE, 0x1b02a0},
+       {OP_WR, UCM_REG_N_SM_CTX_LD_0, 0x10},
        {OP_WR, UCM_REG_N_SM_CTX_LD_1, 0x7},
        {OP_WR, UCM_REG_N_SM_CTX_LD_2, 0xf},
        {OP_WR, UCM_REG_N_SM_CTX_LD_3, 0x10},
-       {OP_ZR, UCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_ZR_E1, UCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_WR_E1H, UCM_REG_N_SM_CTX_LD_4, 0xb},
+       {OP_ZR_E1H, UCM_REG_N_SM_CTX_LD_5, 0x3},
        {OP_WR, UCM_REG_UCM_REG0_SZ, 0x3},
-       {OP_WR, UCM_REG_PHYS_QNUM0_0, 0xf},
-       {OP_WR, UCM_REG_PHYS_QNUM0_1, 0x2f},
-       {OP_WR, UCM_REG_PHYS_QNUM1_0, 0xe},
-       {OP_WR, UCM_REG_PHYS_QNUM1_1, 0x2e},
+       {OP_WR_E1, UCM_REG_PHYS_QNUM0_0, 0xf},
+       {OP_WR_E1, UCM_REG_PHYS_QNUM0_1, 0x2f},
+       {OP_WR_E1, UCM_REG_PHYS_QNUM1_0, 0xe},
+       {OP_WR_E1, UCM_REG_PHYS_QNUM1_1, 0x2e},
        {OP_WR, UCM_REG_UCM_STORM0_IFEN, 0x1},
        {OP_WR, UCM_REG_UCM_STORM1_IFEN, 0x1},
        {OP_WR, UCM_REG_UCM_UQM_IFEN, 0x1},
@@ -488,8 +821,56 @@ static const struct raw_op init_ops[] = {
        {OP_WR, UCM_REG_CDU_SM_WR_IFEN, 0x1},
        {OP_WR, UCM_REG_CDU_SM_RD_IFEN, 0x1},
        {OP_WR, UCM_REG_UCM_CFC_IFEN, 0x1},
-#define UCM_COMMON_END          426
-#define USEM_COMMON_START       426
+#define UCM_COMMON_END          693
+#define UCM_FUNC0_START         693
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_0, 0xf},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_0, 0xe},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_0, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_0, 0x0},
+#define UCM_FUNC0_END           697
+#define UCM_FUNC1_START         697
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_1, 0x2f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_1, 0x2e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_1, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_1, 0x0},
+#define UCM_FUNC1_END           701
+#define UCM_FUNC2_START         701
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_0, 0x1f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_0, 0x1e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_0, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_0, 0x0},
+#define UCM_FUNC2_END           705
+#define UCM_FUNC3_START         705
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_1, 0x3f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_1, 0x3e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_1, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_1, 0x0},
+#define UCM_FUNC3_END           709
+#define UCM_FUNC4_START         709
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_0, 0x4f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_0, 0x4e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_0, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_0, 0x0},
+#define UCM_FUNC4_END           713
+#define UCM_FUNC5_START         713
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_1, 0x6f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_1, 0x6e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_1, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_1, 0x0},
+#define UCM_FUNC5_END           717
+#define UCM_FUNC6_START         717
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_0, 0x5f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_0, 0x5e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_0, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_0, 0x0},
+#define UCM_FUNC6_END           721
+#define UCM_FUNC7_START         721
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM0_1, 0x7f},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM1_1, 0x7e},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM2_1, 0x0},
+       {OP_WR_E1H, UCM_REG_PHYS_QNUM3_1, 0x0},
+#define UCM_FUNC7_END           725
+#define USEM_COMMON_START       725
        {OP_RD, USEM_REG_MSG_NUM_FIC0, 0x0},
        {OP_RD, USEM_REG_MSG_NUM_FIC1, 0x0},
        {OP_RD, USEM_REG_MSG_NUM_FOC0, 0x0},
@@ -533,87 +914,181 @@ static const struct raw_op init_ops[] = {
        {OP_WR, USEM_REG_FAST_MEMORY + 0x18040, 0x4e},
        {OP_WR, USEM_REG_FAST_MEMORY + 0x18080, 0x10},
        {OP_WR, USEM_REG_FAST_MEMORY + 0x180c0, 0x20},
-       {OP_WR, USEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18300, 0x138},
+       {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18300, 0x1388},
        {OP_WR, USEM_REG_FAST_MEMORY + 0x183c0, 0x1f4},
-       {OP_WR, USEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x5000, 0x102},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1020, 0xc8},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1000, 0x2},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1e20, 0x40},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3000, 0x400},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x2400, 0x2},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x2408, 0x2},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x2410, 0x6},
-       {OP_SW, USEM_REG_FAST_MEMORY + 0x2410 + 0x18, 0x21b2f},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4b68, 0x2},
-       {OP_SW, USEM_REG_FAST_MEMORY + 0x4b68 + 0x8, 0x21b31},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4b10, 0x2},
-       {OP_SW, USEM_REG_FAST_MEMORY + 0x2c30, 0x21b33},
+       {OP_WR_ASIC, USEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500},
+       {OP_WR_EMUL, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4},
+       {OP_WR_FPGA, USEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x5000, 0xc2},
+       {OP_WR_EMUL_E1H, USEM_REG_FAST_MEMORY + 0x11480, 0x0},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1020, 0xc8},
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x11480, 0x1},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1000, 0x2},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x2000, 0x102},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4f00, 0x40},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x8980, 0xc8},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x57f0, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x8960, 0x2},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x57d8, 0x5},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3228, 0x4},
+       {OP_SW_E1, USEM_REG_FAST_MEMORY + 0x57d8 + 0x14, 0x10281},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3200, 0x9},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1c60, 0x20},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x3200 + 0x24, 0x102bb},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4b68, 0x2},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3180, 0x20},
+       {OP_SW_E1, USEM_REG_FAST_MEMORY + 0x4b68 + 0x8, 0x20282},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5000, 0x400},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4b10, 0x2},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4000, 0x2},
+       {OP_SW_E1, USEM_REG_FAST_MEMORY + 0x2830, 0x20284},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x4000 + 0x8, 0x102bc},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4000 + 0xc, 0x3},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6b68, 0x2},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x6b68 + 0x8, 0x202bd},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6b10, 0x2},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x74c0, 0x202bf},
        {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x1000000},
-       {OP_SW, USEM_REG_FAST_MEMORY + 0x10c00, 0x101b35},
+       {OP_SW_E1, USEM_REG_FAST_MEMORY + 0x10c00, 0x100286},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x10c00, 0x1002c1},
        {OP_WR, USEM_REG_FAST_MEMORY + 0x10800, 0x0},
-       {OP_SW, USEM_REG_FAST_MEMORY + 0x10c40, 0x101b45},
-       {OP_ZP, USEM_REG_INT_TABLE, 0xb41b55},
-       {OP_ZP, USEM_REG_PRAM, 0x32d01b82},
-       {OP_ZP, USEM_REG_PRAM + 0x8000, 0x32172836},
-       {OP_ZP, USEM_REG_PRAM + 0x10000, 0x1a7a34bc},
-       {OP_ZP, USEM_REG_PRAM + 0x18000, 0x5f3b5b},
-       {OP_ZP, USEM_REG_PRAM + 0x20000, 0x5f3b73},
-       {OP_ZP, USEM_REG_PRAM + 0x28000, 0x5f3b8b},
-       {OP_ZP, USEM_REG_PRAM + 0x30000, 0x5f3ba3},
-       {OP_ZP, USEM_REG_PRAM + 0x38000, 0x5f3bbb},
-#define USEM_COMMON_END         498
-#define USEM_PORT0_START        498
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1400, 0xa0},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1900, 0xa},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1950, 0x2e},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1d00, 0x24},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3000, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3100, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3200, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3300, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3400, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3500, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3600, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3700, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3800, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3900, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3a00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3b00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3c00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3d00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3e00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3f00, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x2400, 0x2},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4b78, 0x52},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4e08, 0xc},
-#define USEM_PORT0_END          521
-#define USEM_PORT1_START        521
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1680, 0xa0},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1928, 0xa},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1a08, 0x2e},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x1d90, 0x24},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3080, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3180, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3280, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3380, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3480, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3580, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3680, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3780, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3880, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3980, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3a80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3b80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3c80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3d80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3e80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x3f80, 0x20},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x2408, 0x2},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4cc0, 0x52},
-       {OP_ZR, USEM_REG_FAST_MEMORY + 0x4e38, 0xc},
-#define USEM_PORT1_END          544
-#define CSEM_COMMON_START       544
+       {OP_SW_E1, USEM_REG_FAST_MEMORY + 0x10c40, 0x100296},
+       {OP_SW_E1H, USEM_REG_FAST_MEMORY + 0x10c40, 0x1002d1},
+       {OP_ZP_E1, USEM_REG_INT_TABLE, 0xc50000},
+       {OP_ZP_E1H, USEM_REG_INT_TABLE, 0xcd0000},
+       {OP_WR_64_E1, USEM_REG_INT_TABLE + 0x368, 0x1302a6},
+       {OP_WR_64_E1H, USEM_REG_INT_TABLE + 0x3a8, 0xb02e1},
+       {OP_ZP_E1, USEM_REG_PRAM, 0x31fd0000},
+       {OP_ZP_E1H, USEM_REG_PRAM, 0x23a40000},
+       {OP_ZP_E1, USEM_REG_PRAM + 0x8000, 0x32a90c80},
+       {OP_ZP_E1H, USEM_REG_PRAM + 0x8000, 0x31c708e9},
+       {OP_ZP_E1, USEM_REG_PRAM + 0x10000, 0x38c0192b},
+       {OP_ZP_E1H, USEM_REG_PRAM + 0x10000, 0x32a0155b},
+       {OP_ZP_E1, USEM_REG_PRAM + 0x18000, 0x432275b},
+       {OP_ZP_E1H, USEM_REG_PRAM + 0x18000, 0x394a2203},
+       {OP_WR_64_E1, USEM_REG_PRAM + 0x18890, 0x4eee02a8},
+       {OP_ZP_E1H, USEM_REG_PRAM + 0x20000, 0x6e63056},
+       {OP_WR_64_E1H, USEM_REG_PRAM + 0x20e50, 0x3e3602e3},
+#define USEM_COMMON_END         825
+#define USEM_PORT0_START        825
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1400, 0xa0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x9000, 0xa0},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1900, 0x10},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x9500, 0x40},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1980, 0x30},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x9700, 0x3c},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1d80, 0x48},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x2450, 0x48},
+       {OP_WR_E1, USEM_REG_FAST_MEMORY + 0x1fd0, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x2770, 0x2},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1b40, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3080, 0x20},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1b60, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x8000, 0x12c},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x5318, 0x98},
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x3238, 0x0},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4b78, 0x52},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5000, 0x20},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4e08, 0xc},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5100, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5200, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5300, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5400, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5500, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5600, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5700, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5800, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5900, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5a00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5b00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5c00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5d00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5e00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5f00, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6b78, 0x52},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6e08, 0xc},
+#define USEM_PORT0_END          861
+#define USEM_PORT1_START        861
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1680, 0xa0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x9280, 0xa0},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1940, 0x10},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x9600, 0x40},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1a40, 0x30},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x97f0, 0x3c},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1ea0, 0x48},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x2570, 0x48},
+       {OP_WR_E1, USEM_REG_FAST_MEMORY + 0x1fd4, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x2778, 0x2},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1b50, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3100, 0x20},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x1be0, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x84b0, 0x12c},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x5578, 0x98},
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x323c, 0x0},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4cc0, 0x52},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5080, 0x20},
+       {OP_ZR_E1, USEM_REG_FAST_MEMORY + 0x4e38, 0xc},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5180, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5280, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5380, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5480, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5580, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5680, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5780, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5880, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5980, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5a80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5b80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5c80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5d80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5e80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x5f80, 0x20},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6cc0, 0x52},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x6e38, 0xc},
+#define USEM_PORT1_END          897
+#define USEM_FUNC0_START        897
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26d0, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3000, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4018, 0x2},
+#define USEM_FUNC0_END          900
+#define USEM_FUNC1_START        900
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26d4, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3010, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4028, 0x2},
+#define USEM_FUNC1_END          903
+#define USEM_FUNC2_START        903
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26d8, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3020, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4038, 0x2},
+#define USEM_FUNC2_END          906
+#define USEM_FUNC3_START        906
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26dc, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3030, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4048, 0x2},
+#define USEM_FUNC3_END          909
+#define USEM_FUNC4_START        909
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26e0, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3040, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4058, 0x2},
+#define USEM_FUNC4_END          912
+#define USEM_FUNC5_START        912
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26e4, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3050, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4068, 0x2},
+#define USEM_FUNC5_END          915
+#define USEM_FUNC6_START        915
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26e8, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3060, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4078, 0x2},
+#define USEM_FUNC6_END          918
+#define USEM_FUNC7_START        918
+       {OP_WR_E1H, USEM_REG_FAST_MEMORY + 0x26ec, 0x0},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x3070, 0x4},
+       {OP_ZR_E1H, USEM_REG_FAST_MEMORY + 0x4088, 0x2},
+#define USEM_FUNC7_END          921
+#define CSEM_COMMON_START       921
        {OP_RD, CSEM_REG_MSG_NUM_FIC0, 0x0},
        {OP_RD, CSEM_REG_MSG_NUM_FIC1, 0x0},
        {OP_RD, CSEM_REG_MSG_NUM_FOC0, 0x0},
@@ -658,50 +1133,106 @@ static const struct raw_op init_ops[] = {
        {OP_WR, CSEM_REG_FAST_MEMORY + 0x18080, 0x30},
        {OP_WR, CSEM_REG_FAST_MEMORY + 0x180c0, 0xe},
        {OP_WR, CSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x5000, 0x42},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1000, 0x2},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2000, 0xc0},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3070, 0x80},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x4280, 0x4},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x25c0, 0x240},
-       {OP_SW, CSEM_REG_FAST_MEMORY + 0x25c0 + 0x900, 0x83bd3},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x5000, 0x42},
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x11480, 0x1},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
+       {OP_WR_EMUL_E1H, CSEM_REG_FAST_MEMORY + 0x11480, 0x0},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1000, 0x2},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x1000, 0x42},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x2000, 0xc0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x7020, 0xc8},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x3070, 0x80},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x7000, 0x2},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x4280, 0x4},
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x11e8, 0x0},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x25c0, 0x240},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3000, 0xc0},
+       {OP_SW_E1, CSEM_REG_FAST_MEMORY + 0x2ec8, 0x802aa},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x4070, 0x80},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x5280, 0x4},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x6280, 0x240},
+       {OP_SW_E1H, CSEM_REG_FAST_MEMORY + 0x6b88, 0x2002e5},
        {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x13fffff},
-       {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c00, 0x103bdb},
+       {OP_SW_E1, CSEM_REG_FAST_MEMORY + 0x10c00, 0x1002b2},
+       {OP_SW_E1H, CSEM_REG_FAST_MEMORY + 0x10c00, 0x100305},
        {OP_WR, CSEM_REG_FAST_MEMORY + 0x10800, 0x0},
-       {OP_SW, CSEM_REG_FAST_MEMORY + 0x10c40, 0x103beb},
-       {OP_ZP, CSEM_REG_INT_TABLE, 0x5f3bfb},
-       {OP_ZP, CSEM_REG_PRAM, 0x32423c13},
-       {OP_ZP, CSEM_REG_PRAM + 0x8000, 0xf2148a4},
-       {OP_ZP, CSEM_REG_PRAM + 0x10000, 0x5f4c6d},
-       {OP_ZP, CSEM_REG_PRAM + 0x18000, 0x5f4c85},
-       {OP_ZP, CSEM_REG_PRAM + 0x20000, 0x5f4c9d},
-       {OP_ZP, CSEM_REG_PRAM + 0x28000, 0x5f4cb5},
-       {OP_ZP, CSEM_REG_PRAM + 0x30000, 0x5f4ccd},
-       {OP_ZP, CSEM_REG_PRAM + 0x38000, 0x5f4ce5},
-#define CSEM_COMMON_END         609
-#define CSEM_PORT0_START        609
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1400, 0xa0},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1900, 0x10},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1980, 0x30},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2300, 0x2},
-       {OP_SW, CSEM_REG_FAST_MEMORY + 0x2300 + 0x8, 0x24cfd},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3040, 0x6},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2410, 0x30},
-#define CSEM_PORT0_END          616
-#define CSEM_PORT1_START        616
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1680, 0xa0},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1940, 0x10},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x1a40, 0x30},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x2310, 0x2},
-       {OP_SW, CSEM_REG_FAST_MEMORY + 0x2310 + 0x8, 0x24cff},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x3058, 0x6},
-       {OP_ZR, CSEM_REG_FAST_MEMORY + 0x24d0, 0x30},
-#define CSEM_PORT1_END          623
-#define XPB_COMMON_START        623
+       {OP_SW_E1, CSEM_REG_FAST_MEMORY + 0x10c40, 0x1002c2},
+       {OP_SW_E1H, CSEM_REG_FAST_MEMORY + 0x10c40, 0x100315},
+       {OP_ZP_E1, CSEM_REG_INT_TABLE, 0x710000},
+       {OP_ZP_E1H, CSEM_REG_INT_TABLE, 0x740000},
+       {OP_WR_64_E1, CSEM_REG_INT_TABLE + 0x380, 0x1002d2},
+       {OP_WR_64_E1H, CSEM_REG_INT_TABLE + 0x380, 0x100325},
+       {OP_ZP_E1, CSEM_REG_PRAM, 0x322e0000},
+       {OP_ZP_E1H, CSEM_REG_PRAM, 0x321d0000},
+       {OP_ZP_E1, CSEM_REG_PRAM + 0x8000, 0x229a0c8c},
+       {OP_ZP_E1H, CSEM_REG_PRAM + 0x8000, 0x23960c88},
+       {OP_WR_64_E1, CSEM_REG_PRAM + 0xc810, 0x656402d4},
+       {OP_WR_64_E1H, CSEM_REG_PRAM + 0xca30, 0x65200327},
+#define CSEM_COMMON_END         1000
+#define CSEM_PORT0_START        1000
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1400, 0xa0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x8000, 0xa0},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1900, 0x10},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x8500, 0x40},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1980, 0x30},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x8700, 0x3c},
+       {OP_WR_E1, CSEM_REG_FAST_MEMORY + 0x5118, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x4040, 0x6},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x2300, 0xe},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x6040, 0x30},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x3040, 0x6},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x2410, 0x30},
+#define CSEM_PORT0_END          1012
+#define CSEM_PORT1_START        1012
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1680, 0xa0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x8280, 0xa0},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1940, 0x10},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x8600, 0x40},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x1a40, 0x30},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x87f0, 0x3c},
+       {OP_WR_E1, CSEM_REG_FAST_MEMORY + 0x511c, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x4058, 0x6},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x2338, 0xe},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x6100, 0x30},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x3058, 0x6},
+       {OP_ZR_E1, CSEM_REG_FAST_MEMORY + 0x24d0, 0x30},
+#define CSEM_PORT1_END          1024
+#define CSEM_FUNC0_START        1024
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1148, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3300, 0x2},
+#define CSEM_FUNC0_END          1026
+#define CSEM_FUNC1_START        1026
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x114c, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3308, 0x2},
+#define CSEM_FUNC1_END          1028
+#define CSEM_FUNC2_START        1028
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1150, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3310, 0x2},
+#define CSEM_FUNC2_END          1030
+#define CSEM_FUNC3_START        1030
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1154, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3318, 0x2},
+#define CSEM_FUNC3_END          1032
+#define CSEM_FUNC4_START        1032
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1158, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3320, 0x2},
+#define CSEM_FUNC4_END          1034
+#define CSEM_FUNC5_START        1034
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x115c, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3328, 0x2},
+#define CSEM_FUNC5_END          1036
+#define CSEM_FUNC6_START        1036
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1160, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3330, 0x2},
+#define CSEM_FUNC6_END          1038
+#define CSEM_FUNC7_START        1038
+       {OP_WR_E1H, CSEM_REG_FAST_MEMORY + 0x1164, 0x0},
+       {OP_ZR_E1H, CSEM_REG_FAST_MEMORY + 0x3338, 0x2},
+#define CSEM_FUNC7_END          1040
+#define XPB_COMMON_START        1040
        {OP_WR, GRCBASE_XPB + PB_REG_CONTROL, 0x20},
-#define XPB_COMMON_END          624
-#define DQ_COMMON_START         624
+#define XPB_COMMON_END          1041
+#define DQ_COMMON_START         1041
        {OP_WR, DORQ_REG_MODE_ACT, 0x2},
        {OP_WR, DORQ_REG_NORM_CID_OFST, 0x3},
        {OP_WR, DORQ_REG_OUTST_REQ, 0x4},
@@ -720,8 +1251,8 @@ static const struct raw_op init_ops[] = {
        {OP_WR, DORQ_REG_DQ_FIFO_AFULL_TH, 0x76c},
        {OP_WR, DORQ_REG_REGN, 0x7c1004},
        {OP_WR, DORQ_REG_IF_EN, 0xf},
-#define DQ_COMMON_END           642
-#define TIMERS_COMMON_START     642
+#define DQ_COMMON_END           1059
+#define TIMERS_COMMON_START     1059
        {OP_ZR, TM_REG_CLIN_PRIOR0_CLIENT, 0x2},
        {OP_WR, TM_REG_LIN_SETCLR_FIFO_ALFULL_THR, 0x1c},
        {OP_WR, TM_REG_CFC_AC_CRDCNT_VAL, 0x1},
@@ -730,8 +1261,11 @@ static const struct raw_op init_ops[] = {
        {OP_WR, TM_REG_CLOUT_CRDCNT1_VAL, 0x1},
        {OP_WR, TM_REG_CLOUT_CRDCNT2_VAL, 0x1},
        {OP_WR, TM_REG_EXP_CRDCNT_VAL, 0x1},
-       {OP_WR, TM_REG_PCIARB_CRDCNT_VAL, 0x2},
-       {OP_WR, TM_REG_TIMER_TICK_SIZE, 0x3d090},
+       {OP_WR_E1, TM_REG_PCIARB_CRDCNT_VAL, 0x1},
+       {OP_WR_E1H, TM_REG_PCIARB_CRDCNT_VAL, 0x2},
+       {OP_WR_ASIC, TM_REG_TIMER_TICK_SIZE, 0x3d090},
+       {OP_WR_EMUL, TM_REG_TIMER_TICK_SIZE, 0x9c},
+       {OP_WR_FPGA, TM_REG_TIMER_TICK_SIZE, 0x9c4},
        {OP_WR, TM_REG_CL0_CONT_REGION, 0x8},
        {OP_WR, TM_REG_CL1_CONT_REGION, 0xc},
        {OP_WR, TM_REG_CL2_CONT_REGION, 0x10},
@@ -741,24 +1275,41 @@ static const struct raw_op init_ops[] = {
        {OP_WR, TM_REG_EN_CL0_INPUT, 0x1},
        {OP_WR, TM_REG_EN_CL1_INPUT, 0x1},
        {OP_WR, TM_REG_EN_CL2_INPUT, 0x1},
-#define TIMERS_COMMON_END       661
-#define TIMERS_PORT0_START      661
+#define TIMERS_COMMON_END       1081
+#define TIMERS_PORT0_START      1081
+       {OP_WR, TM_REG_LIN0_LOGIC_ADDR, 0x0},
+       {OP_WR, TM_REG_LIN0_PHY_ADDR_VALID, 0x0},
        {OP_ZR, TM_REG_LIN0_PHY_ADDR, 0x2},
-#define TIMERS_PORT0_END        662
-#define TIMERS_PORT1_START      662
+#define TIMERS_PORT0_END        1084
+#define TIMERS_PORT1_START      1084
+       {OP_WR, TM_REG_LIN1_LOGIC_ADDR, 0x0},
+       {OP_WR, TM_REG_LIN1_PHY_ADDR_VALID, 0x0},
        {OP_ZR, TM_REG_LIN1_PHY_ADDR, 0x2},
-#define TIMERS_PORT1_END        663
-#define XSDM_COMMON_START       663
-       {OP_WR, XSDM_REG_CFC_RSP_START_ADDR, 0xa14},
-       {OP_WR, XSDM_REG_CMP_COUNTER_START_ADDR, 0xa00},
-       {OP_WR, XSDM_REG_Q_COUNTER_START_ADDR, 0xa04},
+#define TIMERS_PORT1_END        1087
+#define XSDM_COMMON_START       1087
+       {OP_WR_E1, XSDM_REG_CFC_RSP_START_ADDR, 0x614},
+       {OP_WR_E1H, XSDM_REG_CFC_RSP_START_ADDR, 0x424},
+       {OP_WR_E1, XSDM_REG_CMP_COUNTER_START_ADDR, 0x600},
+       {OP_WR_E1H, XSDM_REG_CMP_COUNTER_START_ADDR, 0x410},
+       {OP_WR_E1, XSDM_REG_Q_COUNTER_START_ADDR, 0x604},
+       {OP_WR_E1H, XSDM_REG_Q_COUNTER_START_ADDR, 0x414},
        {OP_WR, XSDM_REG_CMP_COUNTER_MAX0, 0xffff},
        {OP_WR, XSDM_REG_CMP_COUNTER_MAX1, 0xffff},
        {OP_WR, XSDM_REG_CMP_COUNTER_MAX2, 0xffff},
        {OP_WR, XSDM_REG_CMP_COUNTER_MAX3, 0xffff},
        {OP_WR, XSDM_REG_AGG_INT_EVENT_0, 0x20},
        {OP_WR, XSDM_REG_AGG_INT_EVENT_1, 0x20},
-       {OP_ZR, XSDM_REG_AGG_INT_EVENT_2, 0x5e},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_2, 0x34},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_3, 0x35},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_4, 0x23},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_5, 0x24},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_6, 0x25},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_7, 0x26},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_8, 0x27},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_9, 0x29},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_10, 0x2a},
+       {OP_WR, XSDM_REG_AGG_INT_EVENT_11, 0x2b},
+       {OP_ZR, XSDM_REG_AGG_INT_EVENT_12, 0x54},
        {OP_WR, XSDM_REG_AGG_INT_MODE_0, 0x1},
        {OP_ZR, XSDM_REG_AGG_INT_MODE_1, 0x1f},
        {OP_WR, XSDM_REG_ENABLE_IN1, 0x7ffffff},
@@ -779,9 +1330,12 @@ static const struct raw_op init_ops[] = {
        {OP_RD, XSDM_REG_NUM_OF_PKT_END_MSG, 0x0},
        {OP_RD, XSDM_REG_NUM_OF_PXP_ASYNC_REQ, 0x0},
        {OP_RD, XSDM_REG_NUM_OF_ACK_AFTER_PLACE, 0x0},
-       {OP_WR, XSDM_REG_TIMER_TICK, 0x3e8},
-#define XSDM_COMMON_END         694
-#define QM_COMMON_START         694
+       {OP_WR_E1, XSDM_REG_INIT_CREDIT_PXP_CTRL, 0x1},
+       {OP_WR_ASIC, XSDM_REG_TIMER_TICK, 0x3e8},
+       {OP_WR_EMUL, XSDM_REG_TIMER_TICK, 0x1},
+       {OP_WR_FPGA, XSDM_REG_TIMER_TICK, 0xa},
+#define XSDM_COMMON_END         1134
+#define QM_COMMON_START         1134
        {OP_WR, QM_REG_ACTCTRINITVAL_0, 0x6},
        {OP_WR, QM_REG_ACTCTRINITVAL_1, 0x5},
        {OP_WR, QM_REG_ACTCTRINITVAL_2, 0xa},
@@ -820,13 +1374,27 @@ static const struct raw_op init_ops[] = {
        {OP_WR, QM_REG_WRRWEIGHTS_3, 0x1010120},
        {OP_ZR, QM_REG_QVOQIDX_17, 0x4},
        {OP_WR, QM_REG_WRRWEIGHTS_4, 0x1010101},
-       {OP_ZR, QM_REG_QVOQIDX_21, 0x4},
-       {OP_WR, QM_REG_WRRWEIGHTS_5, 0x1010101},
-       {OP_ZR, QM_REG_QVOQIDX_25, 0x4},
-       {OP_WR, QM_REG_WRRWEIGHTS_6, 0x1010101},
-       {OP_ZR, QM_REG_QVOQIDX_29, 0x3},
+       {OP_ZR_E1, QM_REG_QVOQIDX_21, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_21, 0x0},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_5, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_22, 0x4},
+       {OP_ZR_E1, QM_REG_QVOQIDX_25, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_23, 0x4},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_6, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_24, 0x2},
+       {OP_ZR_E1, QM_REG_QVOQIDX_29, 0x3},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_5, 0x8012004},
+       {OP_WR_E1H, QM_REG_QVOQIDX_25, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_26, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_27, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_28, 0x5},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_6, 0x20081001},
+       {OP_WR_E1H, QM_REG_QVOQIDX_29, 0x8},
+       {OP_WR_E1H, QM_REG_QVOQIDX_30, 0x6},
+       {OP_WR_E1H, QM_REG_QVOQIDX_31, 0x7},
        {OP_WR, QM_REG_QVOQIDX_32, 0x1},
-       {OP_WR, QM_REG_WRRWEIGHTS_7, 0x1010101},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_7, 0x1010101},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_7, 0x1010120},
        {OP_WR, QM_REG_QVOQIDX_33, 0x1},
        {OP_WR, QM_REG_QVOQIDX_34, 0x1},
        {OP_WR, QM_REG_QVOQIDX_35, 0x1},
@@ -853,36 +1421,169 @@ static const struct raw_op init_ops[] = {
        {OP_WR, QM_REG_QVOQIDX_52, 0x1},
        {OP_WR, QM_REG_WRRWEIGHTS_12, 0x1010101},
        {OP_WR, QM_REG_QVOQIDX_53, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_54, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_55, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_56, 0x1},
-       {OP_WR, QM_REG_WRRWEIGHTS_13, 0x1010101},
-       {OP_WR, QM_REG_QVOQIDX_57, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_58, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_59, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_60, 0x1},
-       {OP_WR, QM_REG_WRRWEIGHTS_14, 0x1010101},
-       {OP_WR, QM_REG_QVOQIDX_61, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_62, 0x1},
-       {OP_WR, QM_REG_QVOQIDX_63, 0x1},
-       {OP_WR, QM_REG_WRRWEIGHTS_15, 0x1010101},
-       {OP_WR, QM_REG_VOQQMASK_0_LSB, 0xffff003f},
-       {OP_ZR, QM_REG_VOQQMASK_0_MSB, 0x2},
-       {OP_WR, QM_REG_VOQQMASK_1_MSB, 0xffff003f},
-       {OP_WR, QM_REG_VOQQMASK_2_LSB, 0x100},
-       {OP_WR, QM_REG_VOQQMASK_2_MSB, 0x100},
+       {OP_WR_E1, QM_REG_QVOQIDX_54, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_54, 0x4},
+       {OP_WR_E1, QM_REG_QVOQIDX_55, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_55, 0x4},
+       {OP_WR_E1, QM_REG_QVOQIDX_56, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_56, 0x2},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_13, 0x1010101},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_13, 0x8012004},
+       {OP_WR_E1, QM_REG_QVOQIDX_57, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_57, 0x5},
+       {OP_WR_E1, QM_REG_QVOQIDX_58, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_58, 0x5},
+       {OP_WR_E1, QM_REG_QVOQIDX_59, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_59, 0x5},
+       {OP_WR_E1, QM_REG_QVOQIDX_60, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_60, 0x5},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_14, 0x1010101},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_14, 0x20081001},
+       {OP_WR_E1, QM_REG_QVOQIDX_61, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_61, 0x8},
+       {OP_WR_E1, QM_REG_QVOQIDX_62, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_62, 0x6},
+       {OP_WR_E1, QM_REG_QVOQIDX_63, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_63, 0x7},
+       {OP_WR_E1, QM_REG_WRRWEIGHTS_15, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_64, 0x0},
+       {OP_WR_E1, QM_REG_VOQQMASK_0_LSB, 0xffff003f},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_15, 0x1010120},
+       {OP_ZR_E1, QM_REG_VOQQMASK_0_MSB, 0x2},
+       {OP_ZR_E1H, QM_REG_QVOQIDX_65, 0x4},
+       {OP_WR_E1, QM_REG_VOQQMASK_1_MSB, 0xffff003f},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_16, 0x1010101},
+       {OP_WR_E1, QM_REG_VOQQMASK_2_LSB, 0x100},
+       {OP_WR_E1H, QM_REG_QVOQIDX_69, 0x0},
+       {OP_WR_E1, QM_REG_VOQQMASK_2_MSB, 0x100},
+       {OP_WR_E1H, QM_REG_QVOQIDX_70, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_71, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_72, 0x2},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_17, 0x8012004},
+       {OP_WR_E1H, QM_REG_QVOQIDX_73, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_74, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_75, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_76, 0x5},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_18, 0x20081001},
+       {OP_WR_E1H, QM_REG_QVOQIDX_77, 0x8},
+       {OP_WR_E1H, QM_REG_QVOQIDX_78, 0x6},
+       {OP_WR_E1H, QM_REG_QVOQIDX_79, 0x7},
+       {OP_WR_E1H, QM_REG_QVOQIDX_80, 0x0},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_19, 0x1010120},
+       {OP_ZR_E1H, QM_REG_QVOQIDX_81, 0x4},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_20, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_85, 0x0},
+       {OP_WR_E1H, QM_REG_QVOQIDX_86, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_87, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_88, 0x2},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_21, 0x8012004},
+       {OP_WR_E1H, QM_REG_QVOQIDX_89, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_90, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_91, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_92, 0x5},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_22, 0x20081001},
+       {OP_WR_E1H, QM_REG_QVOQIDX_93, 0x8},
+       {OP_WR_E1H, QM_REG_QVOQIDX_94, 0x6},
+       {OP_WR_E1H, QM_REG_QVOQIDX_95, 0x7},
+       {OP_WR_E1H, QM_REG_QVOQIDX_96, 0x1},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_23, 0x1010120},
+       {OP_WR_E1H, QM_REG_QVOQIDX_97, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_98, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_99, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_100, 0x1},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_24, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_101, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_102, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_103, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_104, 0x2},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_25, 0x8012004},
+       {OP_WR_E1H, QM_REG_QVOQIDX_105, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_106, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_107, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_108, 0x5},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_26, 0x20081001},
+       {OP_WR_E1H, QM_REG_QVOQIDX_109, 0x8},
+       {OP_WR_E1H, QM_REG_QVOQIDX_110, 0x6},
+       {OP_WR_E1H, QM_REG_QVOQIDX_111, 0x7},
+       {OP_WR_E1H, QM_REG_QVOQIDX_112, 0x1},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_27, 0x1010120},
+       {OP_WR_E1H, QM_REG_QVOQIDX_113, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_114, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_115, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_116, 0x1},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_28, 0x1010101},
+       {OP_WR_E1H, QM_REG_QVOQIDX_117, 0x1},
+       {OP_WR_E1H, QM_REG_QVOQIDX_118, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_119, 0x4},
+       {OP_WR_E1H, QM_REG_QVOQIDX_120, 0x2},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_29, 0x8012004},
+       {OP_WR_E1H, QM_REG_QVOQIDX_121, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_122, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_123, 0x5},
+       {OP_WR_E1H, QM_REG_QVOQIDX_124, 0x5},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_30, 0x20081001},
+       {OP_WR_E1H, QM_REG_QVOQIDX_125, 0x8},
+       {OP_WR_E1H, QM_REG_QVOQIDX_126, 0x6},
+       {OP_WR_E1H, QM_REG_QVOQIDX_127, 0x7},
+       {OP_WR_E1H, QM_REG_WRRWEIGHTS_31, 0x1010120},
+       {OP_WR_E1H, QM_REG_VOQQMASK_0_LSB, 0x3f003f},
+       {OP_WR_E1H, QM_REG_VOQQMASK_0_MSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_0_LSB_EXT_A, 0x3f003f},
+       {OP_WR_E1H, QM_REG_VOQQMASK_0_MSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_1_LSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_1_MSB, 0x3f003f},
+       {OP_WR_E1H, QM_REG_VOQQMASK_1_LSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_1_MSB_EXT_A, 0x3f003f},
+       {OP_WR_E1H, QM_REG_VOQQMASK_2_LSB, 0x1000100},
+       {OP_WR_E1H, QM_REG_VOQQMASK_2_MSB, 0x1000100},
+       {OP_WR_E1H, QM_REG_VOQQMASK_2_LSB_EXT_A, 0x1000100},
+       {OP_WR_E1H, QM_REG_VOQQMASK_2_MSB_EXT_A, 0x1000100},
        {OP_ZR, QM_REG_VOQQMASK_3_LSB, 0x2},
-       {OP_WR, QM_REG_VOQQMASK_4_LSB, 0xc0},
-       {OP_WR, QM_REG_VOQQMASK_4_MSB, 0xc0},
-       {OP_WR, QM_REG_VOQQMASK_5_LSB, 0x1e00},
-       {OP_WR, QM_REG_VOQQMASK_5_MSB, 0x1e00},
-       {OP_WR, QM_REG_VOQQMASK_6_LSB, 0x4000},
-       {OP_WR, QM_REG_VOQQMASK_6_MSB, 0x4000},
-       {OP_WR, QM_REG_VOQQMASK_7_LSB, 0x8000},
-       {OP_WR, QM_REG_VOQQMASK_7_MSB, 0x8000},
-       {OP_WR, QM_REG_VOQQMASK_8_LSB, 0x2000},
-       {OP_WR, QM_REG_VOQQMASK_8_MSB, 0x2000},
-       {OP_ZR, QM_REG_VOQQMASK_9_LSB, 0x7},
+       {OP_WR_E1, QM_REG_VOQQMASK_4_LSB, 0xc0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_3_LSB_EXT_A, 0x0},
+       {OP_WR_E1, QM_REG_VOQQMASK_4_MSB, 0xc0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_3_MSB_EXT_A, 0x0},
+       {OP_WR_E1, QM_REG_VOQQMASK_5_LSB, 0x1e00},
+       {OP_WR_E1H, QM_REG_VOQQMASK_4_LSB, 0xc000c0},
+       {OP_WR_E1, QM_REG_VOQQMASK_5_MSB, 0x1e00},
+       {OP_WR_E1H, QM_REG_VOQQMASK_4_MSB, 0xc000c0},
+       {OP_WR_E1, QM_REG_VOQQMASK_6_LSB, 0x4000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_4_LSB_EXT_A, 0xc000c0},
+       {OP_WR_E1, QM_REG_VOQQMASK_6_MSB, 0x4000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_4_MSB_EXT_A, 0xc000c0},
+       {OP_WR_E1, QM_REG_VOQQMASK_7_LSB, 0x8000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_5_LSB, 0x1e001e00},
+       {OP_WR_E1, QM_REG_VOQQMASK_7_MSB, 0x8000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_5_MSB, 0x1e001e00},
+       {OP_WR_E1, QM_REG_VOQQMASK_8_LSB, 0x2000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_5_LSB_EXT_A, 0x1e001e00},
+       {OP_WR_E1, QM_REG_VOQQMASK_8_MSB, 0x2000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_5_MSB_EXT_A, 0x1e001e00},
+       {OP_ZR_E1, QM_REG_VOQQMASK_9_LSB, 0x7},
+       {OP_WR_E1H, QM_REG_VOQQMASK_6_LSB, 0x40004000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_6_MSB, 0x40004000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_6_LSB_EXT_A, 0x40004000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_6_MSB_EXT_A, 0x40004000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_7_LSB, 0x80008000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_7_MSB, 0x80008000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_7_LSB_EXT_A, 0x80008000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_7_MSB_EXT_A, 0x80008000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_8_LSB, 0x20002000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_8_MSB, 0x20002000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_8_LSB_EXT_A, 0x20002000},
+       {OP_WR_E1H, QM_REG_VOQQMASK_8_MSB_EXT_A, 0x20002000},
+       {OP_ZR_E1H, QM_REG_VOQQMASK_9_LSB, 0x2},
+       {OP_WR_E1H, QM_REG_VOQQMASK_9_LSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_9_MSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_10_LSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_10_MSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_10_LSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_10_MSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_11_LSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_11_MSB, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_11_LSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQQMASK_11_MSB_EXT_A, 0x0},
+       {OP_WR_E1H, QM_REG_VOQPORT_0, 0x0},
        {OP_WR, QM_REG_VOQPORT_1, 0x1},
        {OP_ZR, QM_REG_VOQPORT_2, 0xa},
        {OP_WR, QM_REG_CMINTVOQMASK_0, 0xc08},
@@ -893,8 +1594,12 @@ static const struct raw_op init_ops[] = {
        {OP_WR, QM_REG_CMINTVOQMASK_5, 0x80},
        {OP_WR, QM_REG_CMINTVOQMASK_6, 0x200},
        {OP_WR, QM_REG_CMINTVOQMASK_7, 0x0},
-       {OP_WR, QM_REG_HWAEMPTYMASK_LSB, 0xffff01ff},
-       {OP_WR, QM_REG_HWAEMPTYMASK_MSB, 0xffff01ff},
+       {OP_WR_E1, QM_REG_HWAEMPTYMASK_LSB, 0xffff01ff},
+       {OP_WR_E1H, QM_REG_HWAEMPTYMASK_LSB, 0x1ff01ff},
+       {OP_WR_E1, QM_REG_HWAEMPTYMASK_MSB, 0xffff01ff},
+       {OP_WR_E1H, QM_REG_HWAEMPTYMASK_MSB, 0x1ff01ff},
+       {OP_WR_E1H, QM_REG_HWAEMPTYMASK_LSB_EXT_A, 0x1ff01ff},
+       {OP_WR_E1H, QM_REG_HWAEMPTYMASK_MSB_EXT_A, 0x1ff01ff},
        {OP_WR, QM_REG_ENBYPVOQMASK, 0x13},
        {OP_WR, QM_REG_VOQCREDITAFULLTHR, 0x13f},
        {OP_WR, QM_REG_VOQINITCREDIT_0, 0x140},
@@ -910,15 +1615,29 @@ static const struct raw_op init_ops[] = {
        {OP_WR, QM_REG_BYTECRDINITVAL, 0x8000},
        {OP_WR, QM_REG_BYTECRDCOST, 0x25e4},
        {OP_WR, QM_REG_BYTECREDITAFULLTHR, 0x7fff},
-       {OP_WR, QM_REG_ENBYTECRD_LSB, 0x7},
-       {OP_WR, QM_REG_ENBYTECRD_MSB, 0x7},
+       {OP_WR_E1, QM_REG_ENBYTECRD_LSB, 0x7},
+       {OP_WR_E1H, QM_REG_ENBYTECRD_LSB, 0x70007},
+       {OP_WR_E1, QM_REG_ENBYTECRD_MSB, 0x7},
+       {OP_WR_E1H, QM_REG_ENBYTECRD_MSB, 0x70007},
+       {OP_WR_E1H, QM_REG_ENBYTECRD_LSB_EXT_A, 0x70007},
+       {OP_WR_E1H, QM_REG_ENBYTECRD_MSB_EXT_A, 0x70007},
        {OP_WR, QM_REG_BYTECRDPORT_LSB, 0x0},
        {OP_WR, QM_REG_BYTECRDPORT_MSB, 0xffffffff},
-       {OP_WR, QM_REG_FUNCNUMSEL_LSB, 0x0},
-       {OP_WR, QM_REG_FUNCNUMSEL_MSB, 0xffffffff},
+       {OP_WR_E1, QM_REG_FUNCNUMSEL_LSB, 0x0},
+       {OP_WR_E1H, QM_REG_BYTECRDPORT_LSB_EXT_A, 0x0},
+       {OP_WR_E1, QM_REG_FUNCNUMSEL_MSB, 0xffffffff},
+       {OP_WR_E1H, QM_REG_BYTECRDPORT_MSB_EXT_A, 0xffffffff},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_0, 0x0},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_1, 0x2},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_2, 0x1},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_3, 0x3},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_4, 0x4},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_5, 0x6},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_6, 0x5},
+       {OP_WR_E1H, QM_REG_PQ2PCIFUNC_7, 0x7},
        {OP_WR, QM_REG_CMINTEN, 0xff},
-#define QM_COMMON_END           829
-#define PBF_COMMON_START        829
+#define QM_COMMON_END           1434
+#define PBF_COMMON_START        1434
        {OP_WR, PBF_REG_INIT, 0x1},
        {OP_WR, PBF_REG_INIT_P4, 0x1},
        {OP_WR, PBF_REG_MAC_LB_ENABLE, 0x1},
@@ -926,20 +1645,20 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PBF_REG_INIT_P4, 0x0},
        {OP_WR, PBF_REG_INIT, 0x0},
        {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P4, 0x0},
-#define PBF_COMMON_END          836
-#define PBF_PORT0_START         836
+#define PBF_COMMON_END          1441
+#define PBF_PORT0_START         1441
        {OP_WR, PBF_REG_INIT_P0, 0x1},
        {OP_WR, PBF_REG_MAC_IF0_ENABLE, 0x1},
        {OP_WR, PBF_REG_INIT_P0, 0x0},
        {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P0, 0x0},
-#define PBF_PORT0_END           840
-#define PBF_PORT1_START         840
+#define PBF_PORT0_END           1445
+#define PBF_PORT1_START         1445
        {OP_WR, PBF_REG_INIT_P1, 0x1},
        {OP_WR, PBF_REG_MAC_IF1_ENABLE, 0x1},
        {OP_WR, PBF_REG_INIT_P1, 0x0},
        {OP_WR, PBF_REG_DISABLE_NEW_TASK_PROC_P1, 0x0},
-#define PBF_PORT1_END           844
-#define XCM_COMMON_START        844
+#define PBF_PORT1_END           1449
+#define XCM_COMMON_START        1449
        {OP_WR, XCM_REG_XX_OVFL_EVNT_ID, 0x32},
        {OP_WR, XCM_REG_XQM_XCM_HDR_P, 0x3150020},
        {OP_WR, XCM_REG_XQM_XCM_HDR_S, 0x3150020},
@@ -971,14 +1690,18 @@ static const struct raw_op init_ops[] = {
        {OP_WR, XCM_REG_TM_INIT_CRD, 0x4},
        {OP_WR, XCM_REG_XQM_INIT_CRD, 0x20},
        {OP_WR, XCM_REG_XX_INIT_CRD, 0x2},
-       {OP_WR, XCM_REG_XX_MSG_NUM, 0x1f},
+       {OP_WR_E1, XCM_REG_XX_MSG_NUM, 0x1f},
+       {OP_WR_E1H, XCM_REG_XX_MSG_NUM, 0x20},
        {OP_ZR, XCM_REG_XX_TABLE, 0x12},
-       {OP_SW, XCM_REG_XX_DESCR_TABLE, 0x1f4d01},
+       {OP_SW_E1, XCM_REG_XX_DESCR_TABLE, 0x1f02d6},
+       {OP_SW_E1H, XCM_REG_XX_DESCR_TABLE, 0x1f0329},
        {OP_WR, XCM_REG_N_SM_CTX_LD_0, 0xf},
        {OP_WR, XCM_REG_N_SM_CTX_LD_1, 0x7},
        {OP_WR, XCM_REG_N_SM_CTX_LD_2, 0xb},
        {OP_WR, XCM_REG_N_SM_CTX_LD_3, 0xe},
-       {OP_ZR, XCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_ZR_E1, XCM_REG_N_SM_CTX_LD_4, 0x4},
+       {OP_WR_E1H, XCM_REG_N_SM_CTX_LD_4, 0xe},
+       {OP_ZR_E1H, XCM_REG_N_SM_CTX_LD_5, 0x3},
        {OP_WR, XCM_REG_XCM_REG0_SZ, 0x4},
        {OP_WR, XCM_REG_XCM_STORM0_IFEN, 0x1},
        {OP_WR, XCM_REG_XCM_STORM1_IFEN, 0x1},
@@ -1000,28 +1723,116 @@ static const struct raw_op init_ops[] = {
        {OP_WR, XCM_REG_CDU_SM_WR_IFEN, 0x1},
        {OP_WR, XCM_REG_CDU_SM_RD_IFEN, 0x1},
        {OP_WR, XCM_REG_XCM_CFC_IFEN, 0x1},
-#define XCM_COMMON_END          904
-#define XCM_PORT0_START         904
-       {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
-       {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
-       {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
-       {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
-       {OP_WR, XCM_REG_WU_DA_CNT_CMD00, 0x2},
-       {OP_WR, XCM_REG_WU_DA_CNT_CMD10, 0x2},
-       {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
-       {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
-#define XCM_PORT0_END           912
-#define XCM_PORT1_START         912
-       {OP_WR, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
-       {OP_WR, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
-       {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
-       {OP_WR, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
-       {OP_WR, XCM_REG_WU_DA_CNT_CMD01, 0x2},
-       {OP_WR, XCM_REG_WU_DA_CNT_CMD11, 0x2},
-       {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
-       {OP_WR, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
-#define XCM_PORT1_END           920
-#define XSEM_COMMON_START       920
+#define XCM_COMMON_END          1513
+#define XCM_PORT0_START         1513
+       {OP_WR_E1, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
+       {OP_WR_E1, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
+       {OP_WR_E1, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_CMD00, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_CMD10, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
+#define XCM_PORT0_END           1521
+#define XCM_PORT1_START         1521
+       {OP_WR_E1, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
+       {OP_WR_E1, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
+       {OP_WR_E1, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_CMD01, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_CMD11, 0x2},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
+       {OP_WR_E1, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
+#define XCM_PORT1_END           1529
+#define XCM_FUNC0_START         1529
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD00, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD10, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_0, 0x0},
+#define XCM_FUNC0_END           1538
+#define XCM_FUNC1_START         1538
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD01, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD11, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_1, 0x0},
+#define XCM_FUNC1_END           1547
+#define XCM_FUNC2_START         1547
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD00, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD10, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_0, 0x0},
+#define XCM_FUNC2_END           1556
+#define XCM_FUNC3_START         1556
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD01, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD11, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_1, 0x0},
+#define XCM_FUNC3_END           1565
+#define XCM_FUNC4_START         1565
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD00, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD10, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_0, 0x0},
+#define XCM_FUNC4_END           1574
+#define XCM_FUNC5_START         1574
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD01, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD11, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_1, 0x0},
+#define XCM_FUNC5_END           1583
+#define XCM_FUNC6_START         1583
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_0, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_0, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD00, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD10, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL00, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL10, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_0, 0x0},
+#define XCM_FUNC6_END           1592
+#define XCM_FUNC7_START         1592
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_TMR_VAL_1, 0xc8},
+       {OP_WR_E1H, XCM_REG_GLB_DEL_ACK_MAX_CNT_1, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11, 0x0},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD01, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_CMD11, 0x2},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL01, 0xff},
+       {OP_WR_E1H, XCM_REG_WU_DA_CNT_UPD_VAL11, 0xff},
+       {OP_WR_E1H, XCM_REG_PHYS_QNUM3_1, 0x0},
+#define XCM_FUNC7_END           1601
+#define XSEM_COMMON_START       1601
        {OP_RD, XSEM_REG_MSG_NUM_FIC0, 0x0},
        {OP_RD, XSEM_REG_MSG_NUM_FIC1, 0x0},
        {OP_RD, XSEM_REG_MSG_NUM_FOC0, 0x0},
@@ -1065,157 +1876,404 @@ static const struct raw_op init_ops[] = {
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x18040, 0x18},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x18080, 0xc},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x180c0, 0x66},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18300, 0x7a120},
+       {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18300, 0x138},
+       {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18300, 0x1388},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x183c0, 0x1f4},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x18340, 0x1f4},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x55d8, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5000, 0x48},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1000, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5128, 0x92},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x5378, 0x0},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x5380, 0x24d20},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x5428, 0x44d22},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1518, 0x1},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1830, 0x0},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1838, 0x0},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x1820, 0x24d26},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4ac0, 0x2},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x4ad8, 0x24d28},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4b08, 0x4},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x1f50, 0x24d2a},
+       {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18340, 0x1f4},
+       {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18340, 0x0},
+       {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18340, 0x5},
+       {OP_WR_EMUL, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b4},
+       {OP_WR_ASIC, XSEM_REG_FAST_MEMORY + 0x18380, 0x1dcd6500},
+       {OP_WR_EMUL_E1H, XSEM_REG_FAST_MEMORY + 0x11480, 0x0},
+       {OP_WR_FPGA, XSEM_REG_FAST_MEMORY + 0x18380, 0x4c4b40},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3d20, 0x4},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x11480, 0x1},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3000, 0x48},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x28c8, 0x4},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1020, 0xc8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2080, 0x48},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1000, 0x2},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x9020, 0xc8},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3128, 0x8e},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x9000, 0x2},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x3368, 0x0},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x21a8, 0x86},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x3370, 0x202f5},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2000, 0x20},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x3b90, 0x402f7},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x23c8, 0x0},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1518, 0x1},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x23d0, 0x20348},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1830, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2498, 0x4034a},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1838, 0x0},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x2ae8, 0x0},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x1820, 0x202fb},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x2ad8, 0x0},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4ac0, 0x2},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x3010, 0x1},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4b00, 0x4},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x4040, 0x10},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x1f48, 0x202fd},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x4000, 0x10034e},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6ac0, 0x2},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6b00, 0x4},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x83a8, 0x2035e},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x0},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c00, 0x104d2c},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x10c00, 0x1002ff},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x10c00, 0x100360},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x1000000},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c40, 0x84d3c},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x10c40, 0x8030f},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x10c40, 0x80370},
        {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x2000000},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c60, 0x84d44},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x10800, 0x3000000},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x10c80, 0x84d4c},
-       {OP_ZP, XSEM_REG_INT_TABLE, 0x814d54},
-       {OP_ZP, XSEM_REG_PRAM, 0x35774d75},
-       {OP_ZP, XSEM_REG_PRAM + 0x8000, 0x36525ad3},
-       {OP_ZP, XSEM_REG_PRAM + 0x10000, 0x27266868},
-       {OP_ZP, XSEM_REG_PRAM + 0x18000, 0x5e7232},
-       {OP_ZP, XSEM_REG_PRAM + 0x20000, 0x5e724a},
-       {OP_ZP, XSEM_REG_PRAM + 0x28000, 0x5e7262},
-       {OP_ZP, XSEM_REG_PRAM + 0x30000, 0x5e727a},
-       {OP_ZP, XSEM_REG_PRAM + 0x38000, 0x5e7292},
-#define XSEM_COMMON_END         1000
-#define XSEM_PORT0_START        1000
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1400, 0xa},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1450, 0x6},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5388, 0xc},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x5388 + 0x30, 0x272aa},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x55e0, 0x772ac},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5600, 0x7},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1500, 0x0},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1508, 0x1},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3020, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3030, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3000, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3010, 0x2},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x3040, 0x0},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3048, 0xc},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x3048 + 0x30, 0x272b3},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x30b8, 0x1},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x4ac8, 0x272b5},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4b18, 0x42},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4d28, 0x4},
-#define XSEM_PORT0_END          1019
-#define XSEM_PORT1_START        1019
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1428, 0xa},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x1468, 0x6},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x53c0, 0xc},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x53c0 + 0x30, 0x272b7},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x5620, 0x772b9},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5640, 0x7},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x1504, 0x0},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x150c, 0x1},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3028, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3038, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3008, 0x2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3018, 0x2},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x3044, 0x0},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x3080, 0xc},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x3080 + 0x30, 0x272c0},
-       {OP_WR, XSEM_REG_FAST_MEMORY + 0x30bc, 0x1},
-       {OP_SW, XSEM_REG_FAST_MEMORY + 0x4ad0, 0x272c2},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4c20, 0x42},
-       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x4d38, 0x4},
-#define XSEM_PORT1_END          1038
-#define CDU_COMMON_START        1038
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x10c60, 0x80317},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x10c60, 0x80378},
+       {OP_ZP_E1, XSEM_REG_INT_TABLE, 0xae0000},
+       {OP_ZP_E1H, XSEM_REG_INT_TABLE, 0xba0000},
+       {OP_WR_64_E1, XSEM_REG_INT_TABLE + 0x368, 0x13031f},
+       {OP_WR_64_E1H, XSEM_REG_INT_TABLE + 0x3a8, 0xb0380},
+       {OP_ZP_E1, XSEM_REG_PRAM, 0x342c0000},
+       {OP_ZP_E1H, XSEM_REG_PRAM, 0x2ece0000},
+       {OP_ZP_E1, XSEM_REG_PRAM + 0x8000, 0x38620d0b},
+       {OP_ZP_E1H, XSEM_REG_PRAM + 0x8000, 0x38690bb4},
+       {OP_ZP_E1, XSEM_REG_PRAM + 0x10000, 0x3e511b24},
+       {OP_ZP_E1H, XSEM_REG_PRAM + 0x10000, 0x3a2d19cf},
+       {OP_ZP_E1, XSEM_REG_PRAM + 0x18000, 0x22df2ab9},
+       {OP_ZP_E1H, XSEM_REG_PRAM + 0x18000, 0x3b5a285b},
+       {OP_WR_64_E1, XSEM_REG_PRAM + 0x1cba0, 0x468c0321},
+       {OP_ZP_E1H, XSEM_REG_PRAM + 0x20000, 0x12f63732},
+       {OP_WR_64_E1H, XSEM_REG_PRAM + 0x224d0, 0x3b660382},
+#define XSEM_COMMON_END         1712
+#define XSEM_PORT0_START        1712
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3ba0, 0x14},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xc000, 0xfc},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3c40, 0x1c},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x24a8, 0x14},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1400, 0xa},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2548, 0x1c},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1450, 0x6},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2628, 0x1c},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3378, 0xfc},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2708, 0x1c},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x3b58, 0x0},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x27e8, 0x1c},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x3d30, 0x100323},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xa000, 0x28},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1500, 0x0},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xa140, 0xc},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1508, 0x1},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x3000, 0x1},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5020, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5030, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5000, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5010, 0x2},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x5040, 0x0},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x5208, 0x1},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x5048, 0xe},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x6ac8, 0x20384},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x50b8, 0x1},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6b10, 0x42},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x4ac8, 0x20333},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6d20, 0x4},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4b10, 0x42},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4d20, 0x4},
+#define XSEM_PORT0_END          1744
+#define XSEM_PORT1_START        1744
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3bf0, 0x14},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xc3f0, 0xfc},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3cb0, 0x1c},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x24f8, 0x14},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1428, 0xa},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x25b8, 0x1c},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x1468, 0x6},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2698, 0x1c},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x3768, 0xfc},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2778, 0x1c},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x3b5c, 0x0},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x2858, 0x1c},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x3d70, 0x100335},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xa0a0, 0x28},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x1504, 0x0},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0xa170, 0xc},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x150c, 0x1},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x3004, 0x1},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5028, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5038, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5008, 0x2},
+       {OP_ZR, XSEM_REG_FAST_MEMORY + 0x5018, 0x2},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x5044, 0x0},
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0x520c, 0x1},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x5080, 0xe},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x6ad0, 0x20386},
+       {OP_WR_E1, XSEM_REG_FAST_MEMORY + 0x50bc, 0x1},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6c18, 0x42},
+       {OP_SW_E1, XSEM_REG_FAST_MEMORY + 0x4ad0, 0x20345},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x6d30, 0x4},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4c18, 0x42},
+       {OP_ZR_E1, XSEM_REG_FAST_MEMORY + 0x4d30, 0x4},
+#define XSEM_PORT1_END          1776
+#define XSEM_FUNC0_START        1776
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7e0, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x28d8, 0x100388},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x5048, 0xe},
+#define XSEM_FUNC0_END          1779
+#define XSEM_FUNC1_START        1779
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7e4, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2918, 0x100398},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x5080, 0xe},
+#define XSEM_FUNC1_END          1782
+#define XSEM_FUNC2_START        1782
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7e8, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2958, 0x1003a8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x50b8, 0xe},
+#define XSEM_FUNC2_END          1785
+#define XSEM_FUNC3_START        1785
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7ec, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2998, 0x1003b8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x50f0, 0xe},
+#define XSEM_FUNC3_END          1788
+#define XSEM_FUNC4_START        1788
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7f0, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x29d8, 0x1003c8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x5128, 0xe},
+#define XSEM_FUNC4_END          1791
+#define XSEM_FUNC5_START        1791
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7f4, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2a18, 0x1003d8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x5160, 0xe},
+#define XSEM_FUNC5_END          1794
+#define XSEM_FUNC6_START        1794
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7f8, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2a58, 0x1003e8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x5198, 0xe},
+#define XSEM_FUNC6_END          1797
+#define XSEM_FUNC7_START        1797
+       {OP_WR_E1H, XSEM_REG_FAST_MEMORY + 0xc7fc, 0x0},
+       {OP_SW_E1H, XSEM_REG_FAST_MEMORY + 0x2a98, 0x1003f8},
+       {OP_ZR_E1H, XSEM_REG_FAST_MEMORY + 0x51d0, 0xe},
+#define XSEM_FUNC7_END          1800
+#define CDU_COMMON_START        1800
        {OP_WR, CDU_REG_CDU_CONTROL0, 0x1},
+       {OP_WR_E1H, CDU_REG_MF_MODE, 0x1},
        {OP_WR, CDU_REG_CDU_CHK_MASK0, 0x3d000},
        {OP_WR, CDU_REG_CDU_CHK_MASK1, 0x3d},
-       {OP_WB, CDU_REG_L1TT, 0x20072c4},
-       {OP_WB, CDU_REG_MATT, 0x2074c4},
-       {OP_ZR, CDU_REG_MATT + 0x80, 0x20},
-#define CDU_COMMON_END          1044
-#define DMAE_COMMON_START       1044
+       {OP_WB_E1, CDU_REG_L1TT, 0x2000347},
+       {OP_WB_E1H, CDU_REG_L1TT, 0x2000408},
+       {OP_WB_E1, CDU_REG_MATT, 0x200547},
+       {OP_WB_E1H, CDU_REG_MATT, 0x280608},
+       {OP_ZR_E1, CDU_REG_MATT + 0x80, 0x2},
+       {OP_WB_E1, CDU_REG_MATT + 0x88, 0x60567},
+       {OP_ZR, CDU_REG_MATT + 0xa0, 0x18},
+#define CDU_COMMON_END          1811
+#define DMAE_COMMON_START       1811
+       {OP_ZR, DMAE_REG_CMD_MEM, 0xe0},
        {OP_WR, DMAE_REG_CRC16C_INIT, 0x0},
        {OP_WR, DMAE_REG_CRC16T10_INIT, 0x1},
-       {OP_WR, DMAE_REG_PXP_REQ_INIT_CRD, 0x2},
+       {OP_WR_E1, DMAE_REG_PXP_REQ_INIT_CRD, 0x1},
+       {OP_WR_E1H, DMAE_REG_PXP_REQ_INIT_CRD, 0x2},
        {OP_WR, DMAE_REG_PCI_IFEN, 0x1},
        {OP_WR, DMAE_REG_GRC_IFEN, 0x1},
-#define DMAE_COMMON_END         1049
-#define PXP_COMMON_START        1049
-       {OP_SI, PXP_REG_HST_INBOUND_INT + 0x400, 0x574e4},
-       {OP_SI, PXP_REG_HST_INBOUND_INT + 0x420, 0x574e9},
-       {OP_SI, PXP_REG_HST_INBOUND_INT, 0x574ee},
-#define PXP_COMMON_END          1052
-#define CFC_COMMON_START        1052
+#define DMAE_COMMON_END         1818
+#define PXP_COMMON_START        1818
+       {OP_WB_E1, PXP_REG_HST_INBOUND_INT + 0x400, 0x5056d},
+       {OP_WB_E1H, PXP_REG_HST_INBOUND_INT + 0x400, 0x50630},
+       {OP_WB_E1, PXP_REG_HST_INBOUND_INT + 0x420, 0x50572},
+       {OP_WB_E1H, PXP_REG_HST_INBOUND_INT, 0x50635},
+       {OP_WB_E1, PXP_REG_HST_INBOUND_INT, 0x50577},
+       {OP_WB_E1H, PXP_REG_HST_INBOUND_INT + 0x20, 0x5063a},
+#define PXP_COMMON_END          1824
+#define CFC_COMMON_START        1824
+       {OP_ZR_E1H, CFC_REG_LINK_LIST, 0x100},
        {OP_WR, CFC_REG_CONTROL0, 0x10},
        {OP_WR, CFC_REG_DISABLE_ON_ERROR, 0x3fff},
        {OP_WR, CFC_REG_LCREQ_WEIGHTS, 0x84924a},
-#define CFC_COMMON_END          1055
-#define HC_COMMON_START         1055
-       {OP_ZR, HC_REG_USTORM_ADDR_FOR_COALESCE, 0x4},
-#define HC_COMMON_END           1056
-#define HC_PORT0_START          1056
-       {OP_WR, HC_REG_CONFIG_0, 0x1080},
-       {OP_ZR, HC_REG_UC_RAM_ADDR_0, 0x2},
-       {OP_WR, HC_REG_ATTN_NUM_P0, 0x10},
-       {OP_WR, HC_REG_LEADING_EDGE_0, 0xffff},
-       {OP_WR, HC_REG_TRAILING_EDGE_0, 0xffff},
-       {OP_WR, HC_REG_AGG_INT_0, 0x0},
-       {OP_WR, HC_REG_ATTN_IDX, 0x0},
-       {OP_ZR, HC_REG_ATTN_BIT, 0x2},
-       {OP_WR, HC_REG_VQID_0, 0x2b5},
-       {OP_WR, HC_REG_PCI_CONFIG_0, 0x0},
-       {OP_ZR, HC_REG_P0_PROD_CONS, 0x4a},
-       {OP_ZR, HC_REG_PBA_COMMAND, 0x2},
-       {OP_WR, HC_REG_INT_MASK, 0x1ffff},
-       {OP_WR, HC_REG_CONFIG_0, 0x1a82},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS, 0x24},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
-#define HC_PORT0_END            1074
-#define HC_PORT1_START          1074
-       {OP_WR, HC_REG_CONFIG_1, 0x1080},
-       {OP_ZR, HC_REG_UC_RAM_ADDR_1, 0x2},
-       {OP_WR, HC_REG_ATTN_NUM_P1, 0x10},
-       {OP_WR, HC_REG_LEADING_EDGE_1, 0xffff},
-       {OP_WR, HC_REG_TRAILING_EDGE_1, 0xffff},
-       {OP_WR, HC_REG_AGG_INT_1, 0x0},
-       {OP_WR, HC_REG_ATTN_IDX + 0x4, 0x0},
-       {OP_ZR, HC_REG_ATTN_BIT + 0x8, 0x2},
-       {OP_WR, HC_REG_VQID_1, 0x2b5},
-       {OP_WR, HC_REG_PCI_CONFIG_1, 0x0},
-       {OP_ZR, HC_REG_P1_PROD_CONS, 0x4a},
-       {OP_ZR, HC_REG_PBA_COMMAND + 0x8, 0x2},
-       {OP_WR, HC_REG_INT_MASK + 0x4, 0x1ffff},
-       {OP_WR, HC_REG_CONFIG_1, 0x1a82},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
-       {OP_ZR, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
-#define HC_PORT1_END            1092
-#define PXP2_COMMON_START       1092
-       {OP_WR, PXP2_REG_PGL_CONTROL0, 0xe38324},
+#define CFC_COMMON_END          1828
+#define HC_COMMON_START         1828
+       {OP_ZR_E1, HC_REG_USTORM_ADDR_FOR_COALESCE, 0x4},
+#define HC_COMMON_END           1829
+#define HC_PORT0_START          1829
+       {OP_WR_E1, HC_REG_CONFIG_0, 0x1080},
+       {OP_ZR_E1, HC_REG_UC_RAM_ADDR_0, 0x2},
+       {OP_WR_E1, HC_REG_ATTN_NUM_P0, 0x10},
+       {OP_WR_E1, HC_REG_LEADING_EDGE_0, 0xffff},
+       {OP_WR_E1, HC_REG_TRAILING_EDGE_0, 0xffff},
+       {OP_WR_E1, HC_REG_AGG_INT_0, 0x0},
+       {OP_WR_E1, HC_REG_ATTN_IDX, 0x0},
+       {OP_ZR_E1, HC_REG_ATTN_BIT, 0x2},
+       {OP_WR_E1, HC_REG_VQID_0, 0x2b5},
+       {OP_WR_E1, HC_REG_PCI_CONFIG_0, 0x0},
+       {OP_ZR_E1, HC_REG_P0_PROD_CONS, 0x4a},
+       {OP_WR_E1, HC_REG_INT_MASK, 0x1ffff},
+       {OP_ZR_E1, HC_REG_PBA_COMMAND, 0x2},
+       {OP_WR_E1, HC_REG_CONFIG_0, 0x1a80},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS, 0x24},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
+#define HC_PORT0_END            1847
+#define HC_PORT1_START          1847
+       {OP_WR_E1, HC_REG_CONFIG_1, 0x1080},
+       {OP_ZR_E1, HC_REG_UC_RAM_ADDR_1, 0x2},
+       {OP_WR_E1, HC_REG_ATTN_NUM_P1, 0x10},
+       {OP_WR_E1, HC_REG_LEADING_EDGE_1, 0xffff},
+       {OP_WR_E1, HC_REG_TRAILING_EDGE_1, 0xffff},
+       {OP_WR_E1, HC_REG_AGG_INT_1, 0x0},
+       {OP_WR_E1, HC_REG_ATTN_IDX + 0x4, 0x0},
+       {OP_ZR_E1, HC_REG_ATTN_BIT + 0x8, 0x2},
+       {OP_WR_E1, HC_REG_VQID_1, 0x2b5},
+       {OP_WR_E1, HC_REG_PCI_CONFIG_1, 0x0},
+       {OP_ZR_E1, HC_REG_P1_PROD_CONS, 0x4a},
+       {OP_WR_E1, HC_REG_INT_MASK + 0x4, 0x1ffff},
+       {OP_ZR_E1, HC_REG_PBA_COMMAND + 0x8, 0x2},
+       {OP_WR_E1, HC_REG_CONFIG_1, 0x1a80},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
+       {OP_ZR_E1, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
+#define HC_PORT1_END            1865
+#define HC_FUNC0_START          1865
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P0, 0x0},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P0, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_0, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_0, 0x0},
+       {OP_ZR_E1H, HC_REG_P0_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
+#define HC_FUNC0_END            1880
+#define HC_FUNC1_START          1880
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P1, 0x1},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P1, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX + 0x4, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_1, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_1, 0x0},
+       {OP_ZR_E1H, HC_REG_P1_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK + 0x4, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
+#define HC_FUNC1_END            1895
+#define HC_FUNC2_START          1895
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P0, 0x2},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P0, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_0, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_0, 0x0},
+       {OP_ZR_E1H, HC_REG_P0_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
+#define HC_FUNC2_END            1910
+#define HC_FUNC3_START          1910
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P1, 0x3},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P1, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX + 0x4, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_1, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_1, 0x0},
+       {OP_ZR_E1H, HC_REG_P1_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK + 0x4, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
+#define HC_FUNC3_END            1925
+#define HC_FUNC4_START          1925
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P0, 0x4},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P0, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_0, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_0, 0x0},
+       {OP_ZR_E1H, HC_REG_P0_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
+#define HC_FUNC4_END            1940
+#define HC_FUNC5_START          1940
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P1, 0x5},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P1, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX + 0x4, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_1, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_1, 0x0},
+       {OP_ZR_E1H, HC_REG_P1_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK + 0x4, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
+#define HC_FUNC5_END            1955
+#define HC_FUNC6_START          1955
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P0, 0x6},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P0, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_0, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_0, 0x0},
+       {OP_ZR_E1H, HC_REG_P0_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_0, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x120, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x370, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x5c0, 0x4a},
+#define HC_FUNC6_END            1970
+#define HC_FUNC7_START          1970
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1080},
+       {OP_WR_E1H, HC_REG_FUNC_NUM_P1, 0x7},
+       {OP_WR_E1H, HC_REG_ATTN_NUM_P1, 0x10},
+       {OP_WR_E1H, HC_REG_ATTN_IDX + 0x4, 0x0},
+       {OP_ZR_E1H, HC_REG_ATTN_BIT + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_VQID_1, 0x2b5},
+       {OP_WR_E1H, HC_REG_PCI_CONFIG_1, 0x0},
+       {OP_ZR_E1H, HC_REG_P1_PROD_CONS, 0x4a},
+       {OP_WR_E1H, HC_REG_INT_MASK + 0x4, 0x1ffff},
+       {OP_ZR_E1H, HC_REG_PBA_COMMAND + 0x8, 0x2},
+       {OP_WR_E1H, HC_REG_CONFIG_1, 0x1a80},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x90, 0x24},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x248, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x498, 0x4a},
+       {OP_ZR_E1H, HC_REG_STATISTIC_COUNTERS + 0x6e8, 0x4a},
+#define HC_FUNC7_END            1985
+#define PXP2_COMMON_START       1985
+       {OP_WR_E1H, PXP2_REG_RQ_DRAM_ALIGN, 0x1},
+       {OP_WR, PXP2_REG_PGL_CONTROL0, 0xe38340},
        {OP_WR, PXP2_REG_PGL_CONTROL1, 0x3c10},
+       {OP_WR_E1H, PXP2_REG_RQ_ELT_DISABLE, 0x1},
+       {OP_WR_E1H, PXP2_REG_WR_REV_MODE, 0x0},
        {OP_WR, PXP2_REG_PGL_INT_TSDM_0, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_TSDM_1, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_TSDM_2, 0xffffffff},
@@ -1224,13 +2282,14 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PXP2_REG_PGL_INT_TSDM_5, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_TSDM_6, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_TSDM_7, 0xffffffff},
-       {OP_WR, PXP2_REG_PGL_INT_USDM_1, 0xffffffff},
+       {OP_WR_E1, PXP2_REG_PGL_INT_USDM_1, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_2, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_3, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_4, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_5, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_6, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_USDM_7, 0xffffffff},
+       {OP_WR_E1H, PXP2_REG_PGL_INT_XSDM_1, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_XSDM_2, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_XSDM_3, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_XSDM_4, 0xffffffff},
@@ -1245,9 +2304,12 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PXP2_REG_PGL_INT_CSDM_5, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_CSDM_6, 0xffffffff},
        {OP_WR, PXP2_REG_PGL_INT_CSDM_7, 0xffffffff},
-       {OP_WR, PXP2_REG_PGL_INT_XSDM_0, 0xffff5330},
-       {OP_WR, PXP2_REG_PGL_INT_XSDM_1, 0xffff5348},
-       {OP_WR, PXP2_REG_PGL_INT_USDM_0, 0xf0003000},
+       {OP_WR_E1, PXP2_REG_PGL_INT_XSDM_0, 0xffff3330},
+       {OP_WR_E1H, PXP2_REG_PGL_INT_XSDM_0, 0xff802000},
+       {OP_WR_E1, PXP2_REG_PGL_INT_XSDM_1, 0xffff3340},
+       {OP_WR_E1H, PXP2_REG_PGL_INT_USDM_0, 0xf0005000},
+       {OP_WR_E1, PXP2_REG_PGL_INT_USDM_0, 0xf0003000},
+       {OP_WR_E1H, PXP2_REG_PGL_INT_USDM_1, 0xf0008000},
        {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ6, 0x8},
        {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ9, 0x8},
        {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ10, 0x8},
@@ -1257,6 +2319,7 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ19, 0x4},
        {OP_WR, PXP2_REG_RD_MAX_BLKS_VQ22, 0x0},
        {OP_WR, PXP2_REG_RD_START_INIT, 0x1},
+       {OP_WR, PXP2_REG_WR_DMAE_TH, 0x3f},
        {OP_WR, PXP2_REG_RQ_BW_RD_ADD0, 0x40},
        {OP_WR, PXP2_REG_PSWRQ_BW_ADD1, 0x1808},
        {OP_WR, PXP2_REG_PSWRQ_BW_ADD2, 0x803},
@@ -1321,58 +2384,102 @@ static const struct raw_op init_ops[] = {
        {OP_WR, PXP2_REG_PSWRQ_BW_L2, 0x1004},
        {OP_WR, PXP2_REG_PSWRQ_BW_RD, 0x106440},
        {OP_WR, PXP2_REG_PSWRQ_BW_WR, 0x106440},
+       {OP_WR_E1H, PXP2_REG_RQ_ILT_MODE, 0x1},
        {OP_WR, PXP2_REG_RQ_RBC_DONE, 0x1},
-#define PXP2_COMMON_END         1200
-#define MISC_AEU_COMMON_START   1200
+#define PXP2_COMMON_END         2102
+#define MISC_AEU_COMMON_START   2102
        {OP_ZR, MISC_REG_AEU_GENERAL_ATTN_0, 0x16},
-#define MISC_AEU_COMMON_END     1201
-#define MISC_AEU_PORT0_START    1201
-       {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, 0xbf5c0000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0, 0xfff51fef},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_NIG_0, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_NIG_0, 0x55555555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE3_NIG_0, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_NIG_0, 0xf0000000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_PXP_0, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_PXP_0, 0x55555555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE3_PXP_0, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_PXP_0, 0xf0000000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_NIG_1, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_NIG_1, 0x55555555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE3_NIG_1, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_NIG_1, 0xf0000000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_PXP_1, 0x0},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_PXP_1, 0x10000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE3_PXP_1, 0x5014},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_PXP_1, 0x0},
+       {OP_WR_E1H, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0xc00},
+       {OP_WR_E1H, MISC_REG_AEU_GENERAL_MASK, 0x3},
+#define MISC_AEU_COMMON_END     2121
+#define MISC_AEU_PORT0_START    2121
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, 0xbf5c0000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, 0xff5c0000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0, 0xfff51fef},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_0, 0xfff55fff},
        {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_0, 0xffff},
-       {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0, 0x500003e0},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0, 0x500003e0},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0, 0xf00003e0},
        {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1, 0x0},
        {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_0_OUT_1, 0xa000},
        {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_0_OUT_1, 0x5},
        {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_2, 0xfe00000},
-       {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3, 0x14},
-       {OP_WR, MISC_REG_AEU_ENABLE1_NIG_0, 0x55540000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_NIG_0, 0x55555555},
-       {OP_WR, MISC_REG_AEU_ENABLE3_NIG_0, 0x5555},
-       {OP_WR, MISC_REG_AEU_ENABLE4_NIG_0, 0x0},
-       {OP_WR, MISC_REG_AEU_ENABLE1_PXP_0, 0x55540000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_PXP_0, 0x55555555},
-       {OP_WR, MISC_REG_AEU_ENABLE3_PXP_0, 0x5555},
-       {OP_WR, MISC_REG_AEU_ENABLE4_PXP_0, 0x0},
-       {OP_WR, MISC_REG_AEU_INVERTER_1_FUNC_0, 0x0},
-       {OP_ZR, MISC_REG_AEU_INVERTER_2_FUNC_0, 0x3},
-       {OP_WR, MISC_REG_AEU_MASK_ATTN_FUNC_0, 0x7},
-#define MISC_AEU_PORT0_END      1221
-#define MISC_AEU_PORT1_START    1221
-       {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0, 0xbf5c0000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0, 0xfff51fef},
+       {OP_ZR_E1, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3, 0x14},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3, 0x7},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_NIG_0, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_4, 0x400},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_NIG_0, 0x55555555},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_5, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE3_NIG_0, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_5, 0x1000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_NIG_0, 0x0},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_6, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_PXP_0, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_6, 0x4000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_PXP_0, 0x55555555},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_7, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE3_PXP_0, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_0_OUT_7, 0x10000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_PXP_0, 0x0},
+       {OP_ZR_E1H, MISC_REG_AEU_INVERTER_1_FUNC_0, 0x4},
+       {OP_WR_E1, MISC_REG_AEU_INVERTER_1_FUNC_0, 0x0},
+       {OP_ZR_E1, MISC_REG_AEU_INVERTER_2_FUNC_0, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_MASK_ATTN_FUNC_0, 0x7},
+#define MISC_AEU_PORT0_END      2153
+#define MISC_AEU_PORT1_START    2153
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0, 0xbf5c0000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0, 0xff5c0000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0, 0xfff51fef},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0, 0xfff55fff},
        {OP_WR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_0, 0xffff},
-       {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0, 0x500003e0},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0, 0x500003e0},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0, 0xf00003e0},
        {OP_WR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1, 0x0},
        {OP_WR, MISC_REG_AEU_ENABLE2_FUNC_1_OUT_1, 0xa000},
        {OP_ZR, MISC_REG_AEU_ENABLE3_FUNC_1_OUT_1, 0x5},
        {OP_WR, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_2, 0xfe00000},
-       {OP_ZR, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3, 0x14},
-       {OP_WR, MISC_REG_AEU_ENABLE1_NIG_1, 0x55540000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_NIG_1, 0x55555555},
-       {OP_WR, MISC_REG_AEU_ENABLE3_NIG_1, 0x5555},
-       {OP_WR, MISC_REG_AEU_ENABLE4_NIG_1, 0x0},
-       {OP_WR, MISC_REG_AEU_ENABLE1_PXP_1, 0x55540000},
-       {OP_WR, MISC_REG_AEU_ENABLE2_PXP_1, 0x55555555},
-       {OP_WR, MISC_REG_AEU_ENABLE3_PXP_1, 0x5555},
-       {OP_WR, MISC_REG_AEU_ENABLE4_PXP_1, 0x0},
-       {OP_WR, MISC_REG_AEU_INVERTER_1_FUNC_1, 0x0},
-       {OP_ZR, MISC_REG_AEU_INVERTER_2_FUNC_1, 0x3},
-       {OP_WR, MISC_REG_AEU_MASK_ATTN_FUNC_1, 0x7}
-#define MISC_AEU_PORT1_END      1241
+       {OP_ZR_E1, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3, 0x14},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3, 0x7},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_NIG_1, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_4, 0x800},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_NIG_1, 0x55555555},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_5, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE3_NIG_1, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_5, 0x2000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_NIG_1, 0x0},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_6, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE1_PXP_1, 0x55540000},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_6, 0x8000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE2_PXP_1, 0x55555555},
+       {OP_ZR_E1H, MISC_REG_AEU_ENABLE1_FUNC_1_OUT_7, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE3_PXP_1, 0x5555},
+       {OP_WR_E1H, MISC_REG_AEU_ENABLE4_FUNC_1_OUT_7, 0x20000},
+       {OP_WR_E1, MISC_REG_AEU_ENABLE4_PXP_1, 0x0},
+       {OP_ZR_E1H, MISC_REG_AEU_INVERTER_1_FUNC_1, 0x4},
+       {OP_WR_E1, MISC_REG_AEU_INVERTER_1_FUNC_1, 0x0},
+       {OP_ZR_E1, MISC_REG_AEU_INVERTER_2_FUNC_1, 0x3},
+       {OP_WR_E1, MISC_REG_AEU_MASK_ATTN_FUNC_1, 0x7},
+#define MISC_AEU_PORT1_END      2185
+
 };
 
-static const u32 init_data[] = {
+static const u32 init_data_e1[] = {
        0x00010000, 0x000204c0, 0x00030980, 0x00040e40, 0x00051300, 0x000617c0,
        0x00071c80, 0x00082140, 0x00092600, 0x000a2ac0, 0x000b2f80, 0x000c3440,
        0x000d3900, 0x000e3dc0, 0x000f4280, 0x00104740, 0x00114c00, 0x001250c0,
@@ -1464,4823 +2571,346 @@ static const u32 init_data[] = {
        0x003e2000, 0x003e4000, 0x003e6000, 0x003e8000, 0x003ea000, 0x003ec000,
        0x003ee000, 0x003f0000, 0x003f2000, 0x003f4000, 0x003f6000, 0x003f8000,
        0x003fa000, 0x003fc000, 0x003fe000, 0x003fe001, 0x00000000, 0x000001ff,
-       0x00000200, 0x00000001, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x00088b1f, 0x00000000,
-       0x51fbff00, 0x03f0c0cf, 0x3130ef8a, 0x22b1c430, 0x3b0143f8, 0x02ecdd01,
-       0xdc406ec4, 0x19b7c404, 0x23dfd348, 0xf1476080, 0x03343031, 0x032f3731,
-       0x423f2483, 0x4d5011fc, 0x02ef9025, 0xa40cdb15, 0x77280475, 0xf2c060fb,
-       0x77629812, 0x056c1144, 0x58c8f22c, 0x4dde4d11, 0x44af950c, 0xe340ff40,
-       0xfca8b235, 0x6d081948, 0x8b5f150b, 0x95051f26, 0xd0849577, 0xe76964eb,
-       0x00607a36, 0x2726b9d6, 0x00000400, 0x00088b1f, 0x00000000, 0x7dedff00,
-       0xd554780b, 0x333ef0b5, 0x64ccce67, 0x093c991e, 0x20f264af, 0xf09c0682,
-       0x93a8a808, 0x07be3040, 0x0e22a5e4, 0x27902018, 0xf5e8bd48, 0x620c19bf,
-       0x2f06d6b4, 0x93a45a2a, 0xb6968a80, 0x6c1a06c1, 0x822203b4, 0x6b06f5bf,
-       0x368b6d7b, 0x2062a28a, 0xa5ebd8b9, 0xaffadaf7, 0x99def6b5, 0x91332673,
-       0xfebffdaa, 0x5fa7f7df, 0xf7b3ecdd, 0xf5ed7bd9, 0xb3ef6b5e, 0xa66e6547,
-       0x97d8ce5d, 0x9be507f8, 0x232c630a, 0xa1bbd65a, 0xed58cc9c, 0x9ef8731e,
-       0xec66c65c, 0x4f2e44b1, 0x12ab7a87, 0xf4dd42b6, 0x4fda9d92, 0x7af5e56f,
-       0x9743f773, 0xb9fb3b40, 0x05053d99, 0x589bb1eb, 0x6c276309, 0xf2f5ff8c,
-       0xaf3b72fa, 0x5feeb6d6, 0x557fa0cc, 0xe1d995a7, 0x661d13fd, 0x3cd7d63f,
-       0xc01984a5, 0x3eefbb50, 0xbf8c046d, 0xdbb4ac22, 0x0a7f50bd, 0xcafb421e,
-       0xfb18730e, 0x33bbb9f7, 0x4ec64e03, 0x5798da36, 0x937ef843, 0xd8c453d9,
-       0x59eef0aa, 0xaadfa023, 0x04cf8a5d, 0xaadaacf3, 0x8c9f2e44, 0x19b095cf,
-       0xe9dea886, 0x1cb1de60, 0xcd192f86, 0xf358eb4b, 0xe30bcc24, 0x0b45b532,
-       0x4dbe70b8, 0xc515d79a, 0x0f46c9cf, 0xb5eb23cd, 0xf03cc2cf, 0x144fdd5e,
-       0xceb12e1f, 0x30ed82c4, 0xf67de9ff, 0xb89ddb85, 0xa15af5be, 0x258ebf4b,
-       0xab1d717b, 0x2cdaadc2, 0xaad5c227, 0x8e8a2f2d, 0xcd33bd57, 0xfc96d708,
-       0x7b5d4161, 0x91b2796c, 0xb4616f31, 0x7f318abe, 0x0fe113bb, 0x47c7b36b,
-       0x29641f9f, 0x9deacf44, 0x45b5e666, 0x442c67c7, 0x17cccdcf, 0x2eb2bc41,
-       0xb74f4f97, 0xdd231e33, 0x7788a4d6, 0x7df3c013, 0x024d8741, 0xf843df4f,
-       0x7bf64ca0, 0xfeb0abd6, 0xa3cc99e4, 0x26fef10c, 0x1ed85b0b, 0x900bbd67,
-       0x1630a619, 0xb7822664, 0xc26f058e, 0x50d4cfb2, 0x5fc3c005, 0xeb002b24,
-       0xefe14fbd, 0xd4bccf5f, 0x9ad1beff, 0xe9bae91f, 0xe6ed92ca, 0x7496b15c,
-       0xfa7f2fac, 0xb5321801, 0xbf10cfc2, 0x88ade22a, 0x43321e16, 0xca576bbb,
-       0x7abc07c4, 0xc72d95fc, 0x4d93dcf9, 0xa678fa06, 0xa9ea1927, 0xf0635333,
-       0xb89cf4eb, 0x4e01d440, 0x827fa9ab, 0x6958cf9a, 0xedf88db6, 0xe48d6c8e,
-       0x38cb8ee6, 0x3b64775c, 0x7fa821c3, 0x08b85f17, 0x42f05aea, 0xc07c1c4f,
-       0x859626cc, 0xa6c4d065, 0x466f6e0d, 0x941f023c, 0xf8517ce5, 0xa6f5941e,
-       0x2814c2fe, 0x21a52b57, 0xc446cbc4, 0x330e9423, 0x3b75c06b, 0xd4f08cac,
-       0x7b64a63c, 0xfba78748, 0xb94f0173, 0xb7ef71d1, 0x1f316434, 0xca840f63,
-       0xc070ea43, 0xf7102e6f, 0x3cb78462, 0xf7802a12, 0x42c8ef73, 0x9034da7c,
-       0x1afcfd03, 0xf3445fcc, 0x1f1e20b7, 0x9d8c7415, 0xcd3856df, 0xaf3dbf30,
-       0x5dbf30ca, 0x2781f983, 0x2b5d089f, 0x8e3c07e6, 0xec07ec60, 0x96df9a5a,
-       0x6fe68eb7, 0x619558d6, 0xf981a4fe, 0xd3ef38c3, 0x2e6fe609, 0xfeb8d8bc,
-       0xf5c655bc, 0xcffd7c6b, 0xf989e685, 0x3ffd6893, 0xfaf8f362, 0xebe2eef3,
-       0xfab8c2b7, 0xf803ddf9, 0xefbc476f, 0xdb7f804d, 0xeb8dd379, 0xae31afcf,
-       0x7fe7cadf, 0x988b7421, 0xfff349df, 0xd7c2dd82, 0xcd377f9f, 0xf836b56f,
-       0xcd64d03c, 0x23086a49, 0x7fe17b5f, 0x802ca0c3, 0x5942a679, 0xbc18ca94,
-       0x47961dff, 0x2923b878, 0xfff61e78, 0xcdf8093c, 0x2c0bd519, 0xb94151bc,
-       0x5d3c13af, 0xf6896bb9, 0xb2a5783d, 0x064beb93, 0xc00c74fa, 0xb3f3ba77,
-       0xf000ffcf, 0xf628ee56, 0x8f24bd99, 0x265bdf0c, 0xe66f5296, 0x902c60f8,
-       0xfa85db3d, 0x673d9029, 0x59f9353c, 0x4645e826, 0xe3e20e30, 0x13962d65,
-       0x5af93a3d, 0x5f58c5b1, 0x25d63619, 0x24c8a5dc, 0xd8ca8650, 0xf79806d8,
-       0x0623e804, 0xd07df27a, 0x647e5847, 0xdda2b761, 0x15f400f8, 0xb572f4d3,
-       0x4272e89e, 0xb13ff8e5, 0xf8f241c5, 0x1ad5a6f9, 0x1c7847cb, 0x7cdd6480,
-       0x1156f621, 0x58be73ac, 0x04b9e127, 0xcf5f15f5, 0x6bdaaefc, 0xdc02c4c0,
-       0x4ef78669, 0xd416225b, 0xf0b0b75b, 0xfe3059bd, 0xb6ee0f6d, 0xf8ff4904,
-       0xae489a47, 0xc81348d9, 0x968582f5, 0xef747bf7, 0x64d8ec2d, 0x8de50919,
-       0x9bf3e341, 0xd3f58cab, 0x84c5b096, 0xc2a57976, 0x5bfc615a, 0x72ed8c1a,
-       0x54b13f9e, 0xdf31674e, 0xf0c5a07c, 0x06575c54, 0xe1e82fd1, 0x3ebb00eb,
-       0x87da246b, 0x53df14db, 0xfb05bf50, 0x1e3a444d, 0xe2f9f0d6, 0x07be2965,
-       0x997860d8, 0xdf40930a, 0x78dd8577, 0x743cb557, 0xfe183291, 0x7e1c979e,
-       0xebc184d3, 0x56fb8588, 0xdc3a21e6, 0x7cf8ceba, 0x7d762849, 0x3bea0f9c,
-       0xd03ed34b, 0xbf6daf3d, 0x1d03ed32, 0x9cef54bf, 0x0cafa86d, 0xbfe868df,
-       0x4312cb62, 0x9596b2fb, 0x9adbf686, 0x4bea1b57, 0xfa1a7742, 0xbd6ebadf,
-       0x8696fda1, 0x37ed0dfb, 0xd4326d57, 0x6e3e0c6f, 0x6160bfe8, 0x795da1ab,
-       0xfa0e6569, 0x305af537, 0xfde03867, 0xacacefd4, 0xb1f2894d, 0x1b8ff3e4,
-       0xd93ca8b3, 0x3d72a5e8, 0xbfc82bca, 0xeb2f1f69, 0xa0e496db, 0xffbe4b9c,
-       0x8d90d2c8, 0xdfcb1272, 0xcb18f2b1, 0x6837c8c7, 0xf3d91287, 0x5005851a,
-       0x6e14fbee, 0x77f3e48f, 0xec65fe84, 0x1ab7921e, 0xcd63cb8d, 0x50cbc3f3,
-       0x48b46a5e, 0xf1338361, 0xa15dacb8, 0x46d63075, 0x830cace3, 0x9ae81854,
-       0x77b3806f, 0xafe699bf, 0x22e3e743, 0x2581f7b4, 0x791fce0a, 0xf186fb39,
-       0x297f8f08, 0x48333bd5, 0x5636f62f, 0x22a07da4, 0x7e5402fe, 0xca90b8dc,
-       0x2a418d13, 0xa2ac683f, 0x06c6fdf2, 0xd71a7b2a, 0x636ef951, 0x8d63ca88,
-       0xbefe54cd, 0xb7ca85b1, 0xf950b71b, 0x9530c6db, 0x54fd1ba7, 0xb5a9f00e,
-       0x43fd10bf, 0x432b07f6, 0x0ebd9717, 0xcdc816fe, 0x7737e919, 0xe11afaf2,
-       0x4bc22737, 0xe213dd2c, 0x434c858f, 0x89292dd1, 0xc4c923d3, 0xf9c8182a,
-       0xfaf6e303, 0x8abaf296, 0xe008032a, 0x0397fbd3, 0x860d22e3, 0xde3d357d,
-       0xf683bb41, 0xd93365ef, 0x99f9163f, 0x1e9706ef, 0xd423401f, 0x8474bf37,
-       0x35fd029f, 0x7e72f14a, 0x9cbc0af9, 0x8dddbc39, 0x964d747a, 0xa4c1f3c9,
-       0x6dabebc4, 0x7538f5cf, 0x1a77d4f0, 0x945a67eb, 0x7a0fee0a, 0x478ee793,
-       0x3e78f07e, 0x65ba4028, 0x59c72951, 0x3e79a593, 0x617ec348, 0x95db0f5a,
-       0xf105fc42, 0xb6fbf508, 0x4e3448e1, 0x760e8e14, 0x1f27de1c, 0xff713f3b,
-       0xfea17c84, 0x9a3f4349, 0x473e5975, 0xff856abb, 0x1401897f, 0xc72ea953,
-       0x87376fad, 0xf3e217ac, 0xe0f9865d, 0xf58caf3d, 0x8a1bccbe, 0x427654ff,
-       0xa4a807f2, 0xacde22a3, 0x18f769de, 0xa18a75f5, 0xdc39df5e, 0xf8dfd063,
-       0x3657900f, 0x5ed15153, 0xe8b608d5, 0x0acd9d53, 0xf90bb7c0, 0xaf52e806,
-       0xb6b57ef0, 0x8f082d1e, 0xcd3474ce, 0x3d8bc4bf, 0xb1bd685b, 0x3c6c9df0,
-       0xc4d555ec, 0xcf9b57f0, 0xe38811dc, 0xf0ae7f97, 0xc4c6a538, 0x0b665ffd,
-       0x584e51b9, 0x873dc856, 0x07399bf8, 0x0b7143f0, 0xcbaba3cc, 0xe9afc071,
-       0x7acf678f, 0x8dafdc4d, 0x526ad79d, 0x757f09ce, 0xc2ce8ebb, 0xb1e2c775,
-       0xb43ff3ae, 0xcc8dc520, 0xdf894780, 0x6ac04a5d, 0xed57f182, 0xf9434f7c,
-       0x2a12d8fa, 0xc4dce7fc, 0xbf0c19f8, 0x2384eb33, 0x7b35ceba, 0xad5fe45c,
-       0xede224d9, 0x79c6eb10, 0x13134e97, 0x74bd017f, 0x62e58070, 0x26dfa826,
-       0x5dee326a, 0xfe4d51da, 0xa42c87d5, 0x89f53fa1, 0xfd04a5b9, 0xaded5583,
-       0x3ce01f9a, 0x88154cc5, 0x4dec53af, 0xbd1d24f7, 0xd11a4c8a, 0xa366b6e9,
-       0xa6fe00df, 0xa6fe0ea1, 0xcd9cbea1, 0x7638c4c9, 0xb80b66f9, 0x434eb4be,
-       0x879328fb, 0x3582b0e8, 0x7afb446c, 0xfcd263bc, 0x3f0e904b, 0xf104b27f,
-       0x479a14bb, 0x8f1e22a6, 0xd6ff1e12, 0xfbe257f9, 0x1bcf0713, 0x7c98dbe5,
-       0xed43c080, 0x8e1fc54e, 0x991737c3, 0xfe4abf38, 0x4ff080da, 0x2dcdfa89,
-       0x4d6bf531, 0x6b724a8a, 0xe3a46666, 0x642d8f29, 0x5f76a64a, 0x7a12f004,
-       0x026beade, 0x12a3fafe, 0xbb226d98, 0x74c0991e, 0x04a8fefd, 0xf2af79e9,
-       0x013472fa, 0xc04c8d4c, 0x06d80b3c, 0xd04d3be2, 0x60f08ad7, 0x1aa59cbc,
-       0x728f59d6, 0x9dd8e30d, 0xb7df0c1d, 0xf1da637b, 0xc637681f, 0x8e1bb232,
-       0x2776c6b1, 0x87f219b0, 0xbe7c67cb, 0x180fc842, 0x4c3be222, 0xebdfa17b,
-       0x662339b6, 0x34d94bf0, 0xce2077b5, 0xc878c3c8, 0xfe91813d, 0x645e52f3,
-       0xaff787ad, 0xb5847913, 0x4b0d94ef, 0xa97fc21d, 0x84b61b3f, 0xb57574d3,
-       0xa97e435f, 0x12c3bb3f, 0xf40df49e, 0x989617a0, 0x279b9519, 0xca236094,
-       0xd49bc4ad, 0x3c3d517f, 0xcb97a3ca, 0xfef431ad, 0x03a470da, 0xec70753d,
-       0x482d8252, 0xbe3858f7, 0x8359f8f6, 0xadfadfc6, 0x68305f8e, 0xf0f19dfc,
-       0x631c7a78, 0x0337a4dd, 0xfee80cc9, 0xa8f3dd9f, 0x8ff7444c, 0x85233e41,
-       0x58f84fe8, 0x4b79e344, 0xb8f8cbac, 0x59e5ebaa, 0x81575718, 0xfe05eb7f,
-       0x485ac95d, 0x294c448f, 0xb335cfc2, 0x55de0e88, 0xfea6bf5d, 0xff783aab,
-       0xfd4ed66a, 0x3119bf31, 0xe1927bac, 0x7def293d, 0x9cd49ec2, 0x1d11612d,
-       0x790b763f, 0xe087bf00, 0x106bcf93, 0xb26bcc3e, 0xb6a79a6e, 0xcf30cd3d,
-       0xf6735f80, 0xf9d11662, 0x376ab53d, 0xd9ed77f1, 0x019e68cb, 0x6afe067b,
-       0xfc6a1b44, 0xa3b80691, 0xc0334fe3, 0x3a7f1d1b, 0xcfc72bcd, 0xca72039a,
-       0x2be513f5, 0xc293cb42, 0xb7a7804d, 0x91f7c1ac, 0x9b5cb25f, 0x76415f73,
-       0x04f1fa5a, 0x744fc7d4, 0x1d34df6c, 0xea09fae8, 0x9b975c39, 0x739eb9b9,
-       0x92174c86, 0x7c853afe, 0x18bfa030, 0x43f1afe8, 0xb7e8c7b4, 0x8c0af851,
-       0x28f59a3f, 0x3746dfa8, 0x8e50f518, 0xef84dd33, 0x3e33ace5, 0x019ea2f7,
-       0x521b95bd, 0x9f5ce263, 0x6fcfc709, 0x9f4f3e36, 0xc73aba51, 0xd3516e07,
-       0x2798a533, 0xba505f4a, 0xb187a47b, 0x7957d40b, 0xe2d299fd, 0x79ff50e1,
-       0x1532bad3, 0x7ff4d5fc, 0x86ce2d2b, 0x91b2d3ba, 0xca15abd7, 0xb7cc592b,
-       0x89be8594, 0xcac0081e, 0x6294728d, 0x0a9cfc06, 0xccbf9b1c, 0x5fb47a8b,
-       0x9e8478e3, 0xd3d19f80, 0x39467e38, 0xfc46ed8f, 0xd67a98e4, 0xc3f973a3,
-       0x052bff17, 0xe62f4643, 0x1e0f013d, 0xf483c1b6, 0xbed34781, 0x8ebfc21c,
-       0x5f2533f5, 0xf305b14c, 0x4b938e10, 0x167f7ec7, 0xeaa27d3c, 0x5b0dc500,
-       0x71f9fe44, 0xf46eb710, 0x326f55bb, 0x3364e3f2, 0x0965d7cf, 0x378ceebf,
-       0xfd487937, 0xa195959e, 0x53eae0ea, 0x9fc8ddfb, 0x5f1c5f7d, 0xd6237e8c,
-       0x13d08653, 0x32a359f5, 0xa3139254, 0x749e667e, 0xc14aa3e2, 0x5b378847,
-       0xb6cf3466, 0x7e510942, 0xc0b5fa44, 0xbf5c1e01, 0x7f31aa12, 0x8edfc179,
-       0xe0d6e3a7, 0x775866d5, 0x83c85985, 0xbdb0b98b, 0xf08f2ab7, 0xf6836e96,
-       0x6b3d688c, 0xe809cee9, 0x0398a4e7, 0xc37be2d7, 0xc6cd9f97, 0x43d98e7a,
-       0xb4a2dbf8, 0x00f8470c, 0xc3cfb48f, 0x569d82f6, 0xdcc93168, 0xcf26f64f,
-       0x69ce2219, 0x1f4acc6b, 0x55cf2fca, 0xde718b83, 0xf7bebdfc, 0xf1fc619b,
-       0xf70f9a95, 0x9bafc65b, 0xccf88e99, 0xc03d7132, 0x72f390ee, 0xf82f5f3d,
-       0xf8aacfae, 0x77ded0fd, 0x8435a7bb, 0xda0b33ed, 0xb519afd1, 0xfdc3ebce,
-       0x42873e80, 0x7a35f7ef, 0xe7282f29, 0x1c95dd1d, 0x9e49bbb1, 0xf3c8373f,
-       0xd07d633a, 0x3b7a5f7c, 0x7fbc707b, 0x9c42f8f6, 0x1d0f949e, 0x67d9e82d,
-       0x725dfbe6, 0xb42cd1be, 0x7391fd1f, 0xcc5fef9d, 0x7fda74ae, 0xba037410,
-       0x925e9084, 0xfbdf402e, 0x121b5f10, 0x78bef7d3, 0x6b6e5df4, 0x5db946c8,
-       0x659f6815, 0xe625e781, 0xafd883e0, 0x21f76166, 0x50decd0b, 0xe927fc88,
-       0x70d0d4ce, 0x740353d4, 0xfc21497f, 0x7c717667, 0xb7361fd6, 0xcb1e7ee2,
-       0x40b7ae0a, 0x42ca99fb, 0xa22627ca, 0xfe75f8f3, 0x017cbd74, 0xfce2b7dd,
-       0x9a8ebbe3, 0xef493e10, 0x49de44c7, 0xffecadca, 0xbdfa598c, 0x0f76be62,
-       0xfc55f7cd, 0x166eb457, 0x7c780b8d, 0x80dfcf56, 0xff9c76c7, 0x1fe166c7,
-       0x3b63c60f, 0x3c073ff6, 0x3c1739ee, 0x939de87e, 0xcfe30799, 0x7f093b32,
-       0x87329f2b, 0xbea4b0ad, 0xf52fd2d9, 0x333c335f, 0x5e5627aa, 0xd71fb0d4,
-       0x8549f2b9, 0x6bb2acf8, 0xc26c35c5, 0xf96378e0, 0xe3e910c2, 0xd903b8d8,
-       0x5ab2f912, 0x7f13178e, 0xff07b354, 0x734e4cc3, 0xf54ef498, 0xbffb634e,
-       0x9b30f945, 0x24ce04f2, 0xf1b1b79e, 0xf1d0b2f1, 0xe248be47, 0x8b26717c,
-       0x619e1c91, 0xd0f7c429, 0xbb608bee, 0x33fca2e6, 0xdc6291db, 0x314cac9f,
-       0x6e8e4fec, 0x4ff21930, 0xc9b1f3b1, 0x5fec4cca, 0x6730e42a, 0x6fb0c99d,
-       0xee321b97, 0xa737e5eb, 0x5a63ea1a, 0x9ffa1846, 0xd0cf25b7, 0xbe7c2e3e,
-       0x9d82fda1, 0xf1f50d13, 0xfa1b17ed, 0x6659d85f, 0xae4717a8, 0x749ff432,
-       0x3ea18e78, 0x4326fba5, 0x2f6fa9ff, 0xd45fb435, 0x7ed0cab3, 0x0c6bc7c9,
-       0xeffb4bf5, 0x2c8ff432, 0x00ac38a9, 0xff025efd, 0xe086f314, 0x67c8a857,
-       0x99acfe07, 0xfc0e4f90, 0xa8c4d0b9, 0x2bc867dd, 0xa673f81e, 0xf81f9f1f,
-       0xfb1f8973, 0xe7cb3295, 0x5952e2f1, 0xdb19b0ce, 0x0be05553, 0xc0d96fb4,
-       0x569a9817, 0x7203f28d, 0x39454235, 0x0fc3a7fb, 0x469d0215, 0x46482cac,
-       0x34f20d3b, 0xbd373d42, 0x27ef8394, 0x962da792, 0x290f1b96, 0xac7ded83,
-       0x38e590be, 0x5bade655, 0xbad37de8, 0x65a7616c, 0xb230f17d, 0x5f9f9233,
-       0x7a1c5333, 0xe3d70366, 0x86a43667, 0xdf9efef9, 0x0fe75c39, 0x24e8399e,
-       0x9efdcefe, 0xaf01db93, 0x892cebd3, 0x7f2901da, 0x323f22f9, 0x7945582a,
-       0xe3fe418f, 0xb8f59ea2, 0x1ff573ce, 0x99c6fd63, 0xff021e92, 0x05d1d709,
-       0xf1f68972, 0x27da1483, 0x7161e35a, 0x36b6eff7, 0x16770f36, 0x4b2e7e0c,
-       0xdce1cd65, 0xb40f30fb, 0xe159f14f, 0x1fd86dfd, 0xbc587bec, 0xb5ea26d7,
-       0xbd454d21, 0xebe22b56, 0x521e71d8, 0x7e466f4b, 0xdd96a1d8, 0xc5d14eac,
-       0xdc5a0dd3, 0xd077c7bc, 0x0473c089, 0x0d80efaa, 0xcf5fefe6, 0xff306d7c,
-       0x0ca78b1a, 0xf4ee6beb, 0x9af21d12, 0x7ae1667b, 0x5dc13a73, 0x73fbd9d7,
-       0xc056a780, 0xd4f08b53, 0xa714fda9, 0xb0a8bff5, 0x879c5cb6, 0x5f66bb8f,
-       0x487e432e, 0xd51ce704, 0x72057c42, 0x738e3770, 0x4ed09aa7, 0xf28e7ddf,
-       0x638d5eb0, 0xf2ec065f, 0xf15bed52, 0x137072c7, 0x9eb44a78, 0xe196d0ff,
-       0x9d39b728, 0xc0a89fa5, 0x60e039b7, 0x9f22a726, 0xd1bef632, 0xebef623f,
-       0xf344d0fc, 0x7689557e, 0xf1157def, 0x0631f7ce, 0xc7231dc1, 0xe46f75de,
-       0xebe9a417, 0x4c17e7af, 0x10950012, 0x306c14bc, 0xe5e2db88, 0x95f6738b,
-       0x2427561e, 0xbdefe786, 0x377881ce, 0x4bfd5e46, 0x7c8f5ec7, 0xb311fb77,
-       0xb2845562, 0xc84178c1, 0xe677b2eb, 0xf0e8a664, 0xe5b1b5b3, 0xaf27556a,
-       0xf7f012a3, 0x9ff72a9b, 0x5c3635b6, 0xe380595d, 0x3d7a4c7a, 0xca13dd90,
-       0xd27988dd, 0x8c2f870e, 0x9327acfa, 0x702b58f0, 0xbe0a6c90, 0xf4bcfc89,
-       0xd7ca6ec2, 0xe97c88e6, 0x297e7168, 0x2ae3be76, 0x97f847cf, 0x8c2958da,
-       0x16cda7fb, 0x34b277f2, 0x08e28798, 0x5a5b9d07, 0x0a6c0636, 0x93db2fb4,
-       0x0c53f5c6, 0xd0c6e15c, 0xa20a1bd5, 0xc71c02f3, 0x3dbc1e51, 0x7f3859c1,
-       0x4451c22e, 0xe11276f2, 0xe84d48fb, 0x473c9dcf, 0xd21beb79, 0x43c6c4fe,
-       0xf0e2fd09, 0xa7e485fd, 0x7e4dffe6, 0xa1c3fa31, 0x0c3fa8a2, 0xd058b2eb,
-       0xeb8c594e, 0x8b55d9d2, 0x95d6dce5, 0xaeda1964, 0x92416e3e, 0x32407389,
-       0x9ae1230f, 0x57f2e169, 0xe618d1ef, 0x4e51ead3, 0x54d9f0e3, 0xbb88628b,
-       0x3138adbf, 0xede6553f, 0x7887bda4, 0xe5c2e311, 0x33a3e24e, 0x0bfbd6de,
-       0x877c7327, 0xc8f7c086, 0x04322375, 0x0f887d5e, 0x16f1c789, 0xbc069ea3,
-       0xb5e2e2fa, 0x326af006, 0x57ca75e0, 0x95fc95e0, 0xa98f9daf, 0x9cefee34,
-       0xa5dff816, 0xde703304, 0x5bbc3753, 0xbab0f982, 0x086b9f79, 0x679ed7d7,
-       0xe7e9b32e, 0x981ef991, 0x9cf383c7, 0x9aafe1be, 0xe825a7d0, 0x39ed3667,
-       0x35cf192f, 0x93f38ad4, 0xfd5af6a7, 0x3e5f8e8a, 0x1e70f2fd, 0x1b4fa5ea,
-       0xf2c7ccaf, 0x5bcf2a54, 0xf53bda9e, 0xa9d5f210, 0xb12d1c9f, 0x9ea738c0,
-       0xd2a25a3f, 0x60d85b3e, 0xef2f6a7f, 0x203b412e, 0x7c03daf3, 0xdfaf8b67,
-       0xfcfe0b56, 0x4aafebda, 0xc8d5e788, 0xef1ca707, 0xebfae096, 0x0f09675c,
-       0x7cb9db0f, 0x6da1923c, 0xd32332c4, 0x17fa10f4, 0x4fc1a45a, 0x5b8788db,
-       0x75265822, 0x7971fbb7, 0x23bbb7ce, 0xfa7bba58, 0xbd7618fd, 0xe201fe05,
-       0x67b1f3d5, 0xbe1fd63f, 0x33e504f2, 0x1ab017d9, 0x80916380, 0x3b59f7e3,
-       0x3a04a91e, 0xf37d2efc, 0x7e86e423, 0xf685eb01, 0xa0dff19b, 0x1e818e87,
-       0xdc6c80f2, 0x7cfb72a4, 0xb512a553, 0x191ff853, 0xe9187947, 0x8a3545d3,
-       0xeea5aec1, 0xd3f94199, 0x6429af3e, 0x61a47581, 0xbff81a56, 0x66ceeb4f,
-       0xc5cec0df, 0x3883bf96, 0x9d9d7de5, 0x0952acfa, 0x67df30a9, 0x7fac8f42,
-       0xd3f1127d, 0x178a65e6, 0xfefb18f1, 0xcb5eeb63, 0x727a099f, 0xf3879dd8,
-       0x6efc8267, 0x90027916, 0xa7cf0537, 0x80f22c3d, 0x877b866b, 0x9ae3ede9,
-       0x8252f323, 0x46defaba, 0x89d6dfbe, 0x7ca15ee7, 0xed7b9c41, 0xfaa2cc6a,
-       0x2a5e8d4b, 0xe9638d23, 0x434b66f9, 0x7bdf9e0a, 0x3342c2cd, 0x77bf97c1,
-       0xe51bff78, 0x1ddb42e0, 0x699b2fbf, 0x33d6f187, 0xd6f8cf3a, 0x13ddefbd,
-       0x1df00e9a, 0x1929a4f8, 0xd2a740ed, 0xa61c478e, 0x23fdbe2a, 0xcb5d4f51,
-       0x75a54f48, 0x306e742a, 0x3611cbad, 0xb7d3fce9, 0x765edc2c, 0x72de785b,
-       0xb442da2a, 0x7fa5b32f, 0xef413fd7, 0x0fea0cc7, 0x7b9e1f81, 0xa98f9d8e,
-       0x4ecf94fd, 0x7c30def4, 0xbfb9fc6f, 0xad4c77d7, 0x2a89f3a0, 0x66a77fb7,
-       0x903eb667, 0xcfebfbcb, 0x79e1f497, 0xfa7238ce, 0xbdef3117, 0xc7f74e16,
-       0x64768d72, 0x8fdb9597, 0x1df316ff, 0xa392dc68, 0x9651bf3f, 0xffe8dfc0,
-       0x335ff2a6, 0xe488ff68, 0x68f596be, 0x3f72bcfc, 0x11fc49e5, 0x3619af8e,
-       0x577d470e, 0xca04b2b1, 0x97ae4e19, 0xe50eb0d2, 0xeb9c550c, 0x689cfc66,
-       0x2b56455a, 0xe28e5f9e, 0x5a73af81, 0x1c16bf4f, 0x7dc3dfcf, 0x7c0fb4df,
-       0x29ebf20a, 0x7fee39a4, 0xfd11b6cc, 0xaa825b67, 0xbc52f486, 0x9d22578f,
-       0x3a238cf6, 0xec958fd9, 0x5c3a464f, 0xde4cf2cb, 0x2dec1f28, 0x9c627a05,
-       0xb6f14fb4, 0xa73ee8b1, 0xe340bf9c, 0x23e595f8, 0xc877e04a, 0xea5a05e7,
-       0x784fdc0c, 0x82581ec4, 0x7e113247, 0x678c165b, 0x478cde0f, 0x5debedd2,
-       0xf4e0154d, 0x3b40b5ed, 0xba360bd4, 0xfe00369b, 0x4704a6f6, 0x6b9796e2,
-       0x30e9a3bd, 0xb970a7b6, 0x68e8d828, 0xd1c8b942, 0xe61f3c3c, 0x5f22e7f4,
-       0x503dd40d, 0xdbabaf1f, 0xaf2aea62, 0xbed575cb, 0xc843e7fc, 0x5c5d75a7,
-       0xd6f006be, 0xfea0ac59, 0x7e135f3c, 0xf4398392, 0x547fddfb, 0xbe341382,
-       0xedc85d8f, 0x4a07dc98, 0x81f62ed0, 0x828b58b2, 0x1e04767a, 0xff47cb60,
-       0x6cca9bba, 0xdca54fd6, 0x59dbc8df, 0xea04607c, 0x76605353, 0x35e7d239,
-       0x18f7970b, 0x72b1efbc, 0x2d6bdd3e, 0xf985659d, 0x63d01e1e, 0x46ba5f7c,
-       0x81b669e8, 0xc15eedeb, 0x9b369fbb, 0xc9c01a42, 0x79e83876, 0x553f388d,
-       0x4c81cef3, 0xd4f8d7dc, 0xc9e22acf, 0x7b085cc5, 0x5b5f8f11, 0xb946822e,
-       0xef907fa8, 0xcc7c819b, 0x21d57c45, 0xd937505c, 0x847ce9ba, 0x87f69ee5,
-       0xff3718cc, 0x73c1e2d8, 0xbeb9d58e, 0xa2fe78fd, 0x0fae5f7a, 0xc3bde555,
-       0x9d577c79, 0xd1399ed2, 0xbacbe519, 0x21d94dce, 0xfb27f7c0, 0x95f2477f,
-       0x61ec878f, 0xa38edafc, 0xd79e105a, 0xa1a7bc75, 0x4524fd61, 0xda3e81fa,
-       0xb877bdb7, 0x9c12f92f, 0x3c6657ef, 0xa7803859, 0x14ee96d1, 0xc3c979fd,
-       0xa0fde7a0, 0x3d035fcf, 0xd021e58f, 0xf3d07eff, 0xd7f8be47, 0xaf3fd44c,
-       0xccd7c25a, 0xcd9e71c1, 0xe15e60f7, 0xc1f84f53, 0xb4ff5089, 0x3d6f8c60,
-       0x6b3e57d4, 0x7fbc600e, 0x96716d44, 0x6083ff40, 0x9dfde847, 0xc2f4eaff,
-       0xdb0583f3, 0xf471bd33, 0xd36795dd, 0x60981f99, 0x7cef997b, 0x36078f94,
-       0x976c9bfa, 0xbeb9f802, 0xea18ac55, 0x0d93795a, 0xa99365e4, 0x1f62d1fd,
-       0xc73867d5, 0xce597f81, 0xf2b187e5, 0x278e52a6, 0x71b4dfaa, 0xdfdc0cd3,
-       0x8a7bbb5b, 0xc89a7c82, 0x7d9d56de, 0xc825ce8e, 0x6b263e7a, 0xd4aaef80,
-       0xaa59e510, 0xce84fece, 0x271acc33, 0x61fe68f3, 0x1f2dc68c, 0x8edd7886,
-       0x13177c7b, 0xbdf843c9, 0x68b2f6c2, 0xabc1f51d, 0xd0be02a9, 0x41334d8d,
-       0x0cb11fbe, 0xdcf1fbb4, 0xe12b9aa0, 0x523c2167, 0xfb26aafc, 0x099a6e2f,
-       0xcd76ea41, 0x36867e38, 0x02afdfd0, 0x249abe1f, 0xfc682beb, 0x6293fd41,
-       0xf1c997fa, 0xf3c2e3eb, 0xb75a3d88, 0x2ff57f41, 0x59fbe8d6, 0x3b68ff88,
-       0xc727978d, 0x56f0475f, 0xf6f3370f, 0xbf65e850, 0x4dcfa51a, 0xeb4dfdda,
-       0xdaaf6f01, 0x97a8a57d, 0xa465affa, 0x7cff916f, 0x49b87e3a, 0xb3aad9e8,
-       0x39fd3157, 0x58b49b92, 0x90c75cba, 0xde3ee76e, 0xa2f186f9, 0x7a604ce3,
-       0x7e047ffa, 0x6fb7584d, 0xedd762bf, 0x03ce90b3, 0xc510b3f3, 0xf35b55f3,
-       0x07a75859, 0x5f1c3ffe, 0x027f0e17, 0x5ffe6638, 0x61ac6386, 0x451c28be,
-       0xfefef806, 0x80259470, 0x02b7d663, 0x959dac47, 0x67617ee5, 0x0d5452fb,
-       0xbdb63bf7, 0x8ffda564, 0x96c85374, 0xceba7687, 0x5b7a7644, 0xbf1f8b6a,
-       0xc6b6d8bf, 0x1ee1e74b, 0x722a04b1, 0xdd0a7fc1, 0xabfda269, 0x6ebe796d,
-       0xf6dadfdc, 0x26be792f, 0x8b3d349c, 0x071662ec, 0x3c5b6d81, 0x087e2aff,
-       0xa3efef8d, 0x3e3b44e9, 0xf646c532, 0xe59cdb72, 0x9f4fff94, 0xda1c7673,
-       0x0a7e9d49, 0x66531d91, 0xf3353f93, 0x3c26d6be, 0x149191ef, 0x2ffd1c78,
-       0x74dad425, 0x76bc7878, 0x58667fae, 0xbe6066db, 0xcf595b68, 0x73938c38,
-       0x803e702e, 0xfcf5abaa, 0xff311311, 0xbc1adc73, 0xbb780ad6, 0x1bf22aca,
-       0xf2852c29, 0xc9051562, 0x6dd2c2a8, 0x5a253ed0, 0xa7caf87f, 0x3191cf29,
-       0xefc860af, 0xaf814b18, 0xa67a3abc, 0xf641ffa9, 0x461afeb9, 0x8bf47179,
-       0x172feff5, 0x027d7d7e, 0xb4e81dff, 0xad1ce11c, 0xd4c21cf4, 0xd1e75d61,
-       0xd45f18d9, 0x139955ae, 0xe46d496c, 0x8bffdc77, 0xfd6207f1, 0x22de595a,
-       0x7c44acfc, 0xf3958cf1, 0x25ff80e5, 0xe40fadfc, 0xb3f0a37e, 0x1ea2ed2a,
-       0x9e506e73, 0xfe13ec17, 0xfc62df4f, 0x37d61268, 0xd769978c, 0xee7ce904,
-       0xe5deb172, 0xd1334a5b, 0x7fdca9bf, 0xd963ad23, 0xf7e4d9e6, 0x84bcdf2f,
-       0x784a7bce, 0x9bfc632a, 0x51265acf, 0x1d112bbe, 0xfd221fa4, 0x273f5899,
-       0xde157bd1, 0x41cfa256, 0x58edafcf, 0xe67cc36e, 0xf67fa8c4, 0x7367c42a,
-       0xf1a6dca0, 0xb31e09ef, 0x1b6d38f3, 0xb6005f7e, 0x399650ff, 0xb957d715,
-       0xdf092329, 0x716b623f, 0xf91e5ca2, 0x61d7d7e2, 0xf093f43f, 0x9529ccbc,
-       0x9eb2a5fb, 0xb72b9e08, 0x55e93f70, 0xe1accf31, 0xeff3661f, 0x1879c4ab,
-       0xe97ca696, 0xec7efc48, 0xa69d9879, 0xaf903bb2, 0x9d7810ef, 0x873e0b62,
-       0x155793f5, 0x5ea79f12, 0xc7cdd079, 0x79d79e37, 0xd3a5c44c, 0xee4dc3fb,
-       0xbfdf3a74, 0x71e5e1db, 0x23ac1946, 0x653e4fed, 0x7f1e8ea9, 0xaf8978b1,
-       0xc528fe31, 0x47d7a438, 0x702ce0f1, 0x0579f82f, 0x7e48df23, 0xa6f3eafb,
-       0x2dff066d, 0x69f4de7a, 0x8b4edbf2, 0xacf5e5b8, 0x724be6c8, 0x51ef6c31,
-       0xdebd4e31, 0xbf416e99, 0x16bcc030, 0xf5ae4b8c, 0x16eb9cc5, 0x11aedae7,
-       0x7dc209fa, 0xfa0daefa, 0xaf15f619, 0xcfac669f, 0x37eb1bf6, 0x7effc454,
-       0xee374d8b, 0xdf169fdb, 0xf0299e75, 0xb10ca726, 0x002d82de, 0x3bbd6eb4,
-       0xae127f54, 0x9bcb4777, 0x26fe7d6e, 0xb0584f36, 0x4f212345, 0x900eee34,
-       0xbca43c0f, 0x9d688580, 0x99dda94f, 0xc0a0b8fa, 0xb579ce22, 0x12f33aff,
-       0x36c391a0, 0x9fea266c, 0xe7eb955e, 0x4afefbbe, 0x4b18ebf1, 0xcefc0de4,
-       0x168bcc78, 0x2853ee2f, 0xff285a2f, 0x4edb3f51, 0xa5bf03df, 0xf7a1935c,
-       0x3900c7c7, 0x5d33ae10, 0x5f3c8663, 0x9bacf73a, 0xb79ec5fa, 0xe7cdfbff,
-       0xcec73c24, 0xe23e5ec7, 0x16007bc6, 0xf9d1366c, 0x5c8b85ab, 0xa4889df4,
-       0x6338ec6f, 0xe171a8b6, 0x84ff844e, 0xb8f4b774, 0x74e6ff71, 0x4af299bb,
-       0x6de3edb1, 0x5f8b37ca, 0xbaf31a17, 0x43fd9ea7, 0x57d60461, 0x375cf4ab,
-       0xd8e2972e, 0x638c36f1, 0x5f719d37, 0x3fbe7a49, 0xaefba033, 0x86fdb7a9,
-       0xe3cf20a4, 0x4903be18, 0x2f128fc4, 0xea70f089, 0x7e16edf0, 0xd164327e,
-       0x28c6d7e7, 0xef9439fe, 0xa7b2a4db, 0xd1a77ce2, 0x7be71364, 0xc44c9ed5,
-       0xfda5dd57, 0x2f2ab714, 0x41eee87e, 0x7ef160bd, 0x23e0e29f, 0xe97b0710,
-       0x3c775efb, 0xfc1bfdfb, 0xc4ec10ee, 0x8fb71b02, 0x12f3edb1, 0x17f8a39c,
-       0xecdf8741, 0x9bd1e4ff, 0xd013e087, 0x6f30733c, 0xd551ef35, 0x3aaef983,
-       0xdbc90f4b, 0x3718affc, 0x76fc7f11, 0xa0f29dbf, 0xe9da160b, 0xf9d888fe,
-       0x8f3dab4e, 0x9df30cde, 0xff707806, 0x00a8f4ff, 0x66f4f1e1, 0xf6fb83d5,
-       0x983ae7f3, 0x54ffd74d, 0x08f9f1c7, 0x0cce99df, 0xba701f3a, 0x49df3e2b,
-       0xfb655d3c, 0x45c57986, 0xf209fcc6, 0x8eadca1f, 0x3c57feff, 0xc70abbfe,
-       0xd7e1c29e, 0xd53a8b9f, 0x8f1c9f91, 0x7c1f72ae, 0x1cf18b4c, 0x2ee80955,
-       0x775eb71e, 0xb180acb0, 0x0c8eb261, 0xa075f30e, 0x7071e39e, 0xfb24f104,
-       0xdd7cd43f, 0x8577dc4c, 0x03f11fba, 0x9d5bf9ef, 0x7762bfd4, 0xe8cfc211,
-       0x059ab9bb, 0x3b01e64e, 0x74a399f4, 0x54f00db3, 0x43407dd2, 0x6475857f,
-       0xc46bfad0, 0x6ef0b1fb, 0x68fd8bb3, 0xe4ca87bb, 0xc23ffdb7, 0xba3a4a7b,
-       0x49f8bc93, 0xfc6a4756, 0x5d9a0073, 0x60039c31, 0xf1e50f6a, 0x3cf06632,
-       0x473eff6b, 0x87894db8, 0x3bfcf59f, 0x2abb18af, 0x8d46b7e5, 0x11ad7d90,
-       0xe6abf5f6, 0x5bdf10ef, 0x9ac492be, 0x355df46d, 0xbfe013e0, 0xb41717fe,
-       0x7af9403d, 0x1cac9dfe, 0xf31164a7, 0x47fae9b7, 0xe33cf26c, 0x833d7cc3,
-       0xbd70e7de, 0xfb033a02, 0x4cf6a667, 0x01bff250, 0x7e316e1f, 0xeb6b5267,
-       0xf43d4429, 0x15fc1284, 0xedfeadd2, 0x77ac4c9e, 0xfc9279bc, 0x67c573ae,
-       0x7f3205ee, 0xeed0d114, 0x3a5dddac, 0xb57f286c, 0x9d40e306, 0x7de28c7e,
-       0xf187c516, 0x5abcc3c6, 0x2c11d9cd, 0xdd143694, 0x126859b2, 0x9fdf33c7,
-       0xdf8099e8, 0x6e3ac1ef, 0x2ff5039d, 0x3fccf462, 0x69e9fc2a, 0x574cffdc,
-       0x730d41d9, 0xdd376a6c, 0x214bf0bf, 0xf214bf2f, 0x33dff1d2, 0x74fa46ae,
-       0xdcf269bc, 0x97e3ab93, 0xc1b21624, 0x7b5bd77b, 0x8efe827e, 0xebf6cbac,
-       0x869d2fc1, 0x72e36afc, 0x66b5e523, 0x7d397c51, 0xfe26e6d2, 0xc476f61c,
-       0xc7ce798d, 0xff23e951, 0x7f271fb7, 0xccd3a3a1, 0x61cd93f0, 0xa0e6828b,
-       0xc1ff8a33, 0x2a3d70e3, 0x96a21de5, 0xde425c0b, 0xe57bdf91, 0x951e59f7,
-       0xc2b5c7fc, 0x3c65ec7f, 0xfb11a87e, 0xf02a7fac, 0x1afe39d3, 0x5c600b3b,
-       0x3f8f27f7, 0x78fc8539, 0xdf2d9fa3, 0xbdf67e93, 0xa55e39eb, 0x38a362de,
-       0xf266647f, 0xaf296bfd, 0xf687ab2c, 0x207f24b1, 0x03d3c4ff, 0xd47a0a97,
-       0xe819359c, 0x46a7a51a, 0xdfcf94f4, 0xd2127b07, 0xfa5cc39d, 0x377d0171,
-       0x51f31b73, 0x66b6e33e, 0xe4e90b07, 0x3e51e3b6, 0xc63dc76f, 0x798967f9,
-       0x3e38925b, 0xf877c43b, 0x91dfaa1d, 0x37d5145a, 0xae075f80, 0xabcbfd4f,
-       0x79498f14, 0x95dce390, 0x7ee1f7c4, 0xadf357f1, 0x2bb67db2, 0x76a5deba,
-       0x2f24b7d3, 0x27de437e, 0x24999f8a, 0xc5e58947, 0x92f215f3, 0x4d05f84e,
-       0xf97b46ea, 0x9f1ff09c, 0x68aa6c3b, 0xdb7fc38b, 0xe73d7c6d, 0xec01a867,
-       0xdb844177, 0x32fd44b3, 0x15f9c553, 0x3c589781, 0x3fc7e7a4, 0xd056b2ff,
-       0x7f8ca6a5, 0x22f78ccf, 0xca0c3e60, 0xd78c1f6c, 0xd10ce65b, 0xef22cbf3,
-       0xcd493ee2, 0xca2f56f3, 0xf6f3ef6f, 0xf49bcc2a, 0x6aad6f3e, 0xc7a60e73,
-       0x1e8d6fe6, 0xebfd6f7f, 0xf42bf49f, 0xbecd3b63, 0xf3c1de31, 0x845dd927,
-       0x93bd019f, 0x68d83fc0, 0x3b3c7273, 0x792d9e38, 0x5ba78f5c, 0xb1ff788d,
-       0x33748790, 0xd7a0b644, 0xfe7905a6, 0x90bb39e9, 0x5b87900f, 0x4eec2f90,
-       0x2c7efe03, 0xafa969fc, 0xc6575f1e, 0x7ee1a78e, 0x6ff6886c, 0xc91f7e3b,
-       0x4b7a79c6, 0xb56fdfe3, 0x6309f05b, 0xea6eff46, 0xfb42af4c, 0x678aede8,
-       0x9ff68b0c, 0xe7bfceda, 0x061ddb35, 0xf02cdbbf, 0x7638e521, 0x3cc40f9e,
-       0x90cfa81d, 0xc31ece2e, 0x03e4bb3e, 0x7ae4d7a9, 0xfd911da4, 0x67f82f7e,
-       0x8ccfe0ba, 0xfc1f3e26, 0xca9ac2b3, 0xdeff01ed, 0x7841eb9d, 0x9da2b21e,
-       0x78f34160, 0xaddd67a0, 0x16f7d18c, 0x33fc1f62, 0xbb2df047, 0x07e81d6e,
-       0x7e16fe92, 0xd738875f, 0xd407fd28, 0x7a9d134f, 0x0e1c43b8, 0x55f5c2b3,
-       0x70927e8c, 0x7cfc3ac0, 0x138d171c, 0x8edc6fb5, 0xb58f42a9, 0x6322ef8a,
-       0xfe7fe6e5, 0x569b911f, 0xe9025e71, 0xbcdf4f10, 0xc96eec25, 0x0562fedb,
-       0xc04c6bf8, 0x624fc3e9, 0x1ce7ba4a, 0xb0bd40b0, 0x37cb414b, 0x82855720,
-       0x45bc70df, 0x18f8a3e3, 0xf032e49d, 0x3e2a3fdf, 0x0366df0a, 0xa3a2dff0,
-       0x2e2494e7, 0xf32a19c7, 0xc3fedf13, 0x80381fc2, 0x00d4efdf, 0xdf34505d,
-       0x969bf01a, 0xbf4763dc, 0x43e66de7, 0xfb74e9bf, 0x8c78d312, 0xbf70b75f,
-       0x6e2f4065, 0xbd07ebe6, 0x6d7a8ed6, 0x477edbcc, 0x2167d411, 0x5bce30fd,
-       0xd379f8c4, 0xe3185776, 0x198f2925, 0xe0667b73, 0xa39d473e, 0xf75dbd61,
-       0x277fa07c, 0xca8dcff4, 0x35ca0d75, 0x82b53bcc, 0x2b4eb3b7, 0x8b160fdd,
-       0x47bec62f, 0xeff226f3, 0x7ae24c6e, 0xd234f50d, 0x6ec21ca9, 0x4afdc03b,
-       0x798cc86e, 0xe4c657d4, 0x957dc44e, 0xa2c14943, 0xa67ef035, 0x29983738,
-       0x26669bce, 0x126b72f1, 0x0e99cbd7, 0x5c1d065e, 0x79ba67bf, 0xef79d8ff,
-       0x54defd12, 0xed7f064c, 0x7c3c8204, 0x38af9f30, 0x327e88cb, 0xed42bf4f,
-       0x8002cdff, 0x9997456f, 0x4d3b07f2, 0xea24fac1, 0xfb1d12a7, 0x0f8b3d4c,
-       0x1ef10123, 0xf3128ba5, 0xb167d493, 0xa3ea34fe, 0xfcf20d9b, 0x3be3825d,
-       0x9190afb8, 0xfafcbfd8, 0x027e7d7c, 0xb7c26b7f, 0xfa496fe2, 0x8c80bccb,
-       0x307f25bf, 0x6bad20f6, 0xbfce4cea, 0x6177afa0, 0xbafa0afc, 0xebc91a68,
-       0x6bbc780f, 0x719178e3, 0x4f66667c, 0xc0b7c61d, 0xbc9ef487, 0xe4f729f7,
-       0xe41e749b, 0xf537248d, 0xb7f0e5db, 0x5bc9c526, 0x6869a88d, 0x8487fba2,
-       0x42f795dd, 0xafdf6a8d, 0x19be3aa8, 0xfee1c555, 0x60c59269, 0x7d443a17,
-       0xd3971277, 0xa5115551, 0xd88dfa00, 0x015143ba, 0xfced119e, 0x0688f77c,
-       0x0c9ff746, 0xf0e61bcc, 0x95870d8e, 0x70a28adb, 0x17669b37, 0xe69e0079,
-       0x09af874c, 0xe0ce699e, 0xcd77080b, 0x039d08b1, 0x5bac7a9d, 0xd32978c5,
-       0xf205ffe9, 0x6bd7849b, 0xbcc08cf6, 0x8718e3bd, 0x9fc065b3, 0x79e6c9ef,
-       0x3c0aefc9, 0xc9fb09b7, 0x4efdd30e, 0x336f6e4e, 0xa6db19ef, 0xfd26673f,
-       0xccd7e858, 0x72e3ee28, 0x614f799e, 0xb8ba03db, 0xb03f3cb1, 0x0f979f03,
-       0xbf11371b, 0x307fcfb7, 0xc73ee2a2, 0x154d5b0b, 0xf6fc38e1, 0xa75394b6,
-       0x2eb8d7ff, 0xc957ff09, 0x4967ec87, 0x1def9a1a, 0xb7060f82, 0xa5ed443f,
-       0x84dfa64f, 0xd06cd6f0, 0x48f16e18, 0x033a67bc, 0x239f1027, 0xc4155bda,
-       0x9f8e63c9, 0xae0e7828, 0xce798aba, 0xaef6d203, 0x7bc1cb6b, 0x7cee6a97,
-       0x79ef072e, 0x38c0f092, 0x98d6ef84, 0x0fd28b73, 0x67e11ff9, 0x67033b94,
-       0xcebafc70, 0xb7bfb44d, 0x5fbf0772, 0xcfbae127, 0x9eb02f11, 0xd5bfc8f5,
-       0x5478bfc0, 0x8dfb0147, 0x6859acf4, 0x6a26efa3, 0x63fe7176, 0x18f0b41b,
-       0x8eefb7ac, 0xe47da098, 0xa61f7edd, 0xed77abef, 0xf0e99656, 0x4c26b235,
-       0xb9e77bfb, 0x97227ee4, 0x4bed11f7, 0xb38f886a, 0x63e43e1c, 0x71d92fcc,
-       0xfdcecf3f, 0x1e52deaa, 0x425af49f, 0xafd0bd63, 0x87c93737, 0xbabd3bdf,
-       0xdefa0afb, 0x35bcf5d0, 0x7ca3b8a2, 0x6f7ac0f3, 0x40f9c229, 0xdf20f339,
-       0x835fde80, 0x2726f2f5, 0x1a9fbe43, 0x77a9c743, 0x3bf6be73, 0xc31ef2dc,
-       0x63d7c889, 0x81aedc1d, 0xeebf205d, 0xf3c38590, 0xdd74e33c, 0x75c8149a,
-       0x87f7e064, 0x54f18611, 0x86bb454a, 0x387608f9, 0xbd5bf095, 0x37d683b5,
-       0x7bf71772, 0x92b577aa, 0x82fd4a3c, 0x7b7bc0f8, 0x457be2a7, 0x47040fc4,
-       0x943b93e9, 0x927fd0e3, 0xbcf3ccc3, 0xc7ec775b, 0xf019887b, 0xd02fc60b,
-       0xce4affbe, 0xe96e2a3f, 0xce3dc80d, 0x59e7c453, 0x097b93a6, 0xbff91c77,
-       0x1e77e118, 0xe5c83eeb, 0x6fefc23f, 0xe921fc12, 0xf5c1c330, 0x21c7a48f,
-       0xe300e80d, 0xa24bca1c, 0xa23ca471, 0xfa11ccfc, 0xc68ce4c9, 0x090e1249,
-       0xd9472ee7, 0xb8298e15, 0x775a6eee, 0xe09556ed, 0x0502d72e, 0x3b7c75ab,
-       0xfbf9c1cf, 0xb57782c0, 0xf9be781e, 0x9f0947e7, 0x3f0a2db5, 0x5472dac7,
-       0x3e7a879b, 0xe319acf4, 0xff19ab9d, 0x51cf747b, 0x7757cfd2, 0x76d7bc70,
-       0x736f56ec, 0xf728f946, 0x74c581e4, 0x95bb751f, 0xe9923fa1, 0x788cde0c,
-       0x024fc418, 0x25cf520f, 0xf4871392, 0xf91a4253, 0xe421e029, 0xf520dc62,
-       0xdf1156e4, 0xfe7f2730, 0x515d624f, 0x41ac10fd, 0xf927947c, 0xdf50d80e,
-       0x3ce8544d, 0xe933b487, 0xf51e3833, 0x37bdc4f0, 0xd287e64f, 0xb25f8c98,
-       0x63bee8e7, 0xe2b7d018, 0x5d04bbfd, 0x3f8479e1, 0x37687967, 0x74b1dc25,
-       0x6bf081fb, 0x1351f0e2, 0x476b1fc2, 0xfac05f24, 0xf73db19a, 0x41ec89a4,
-       0x86d6c86d, 0x98af26fb, 0x75df90e6, 0xf09b8160, 0xdf90b357, 0x67f9bc63,
-       0x84d4af5c, 0x777f749c, 0x256e704d, 0xdba543ed, 0xc50fb87d, 0x79b50782,
-       0xf774c1ae, 0xce9fbf3e, 0xcedd5c31, 0x8f4060e5, 0x4bfa73b6, 0x1fd72efd,
-       0xcfc7375d, 0xec858d2c, 0x6dbc51a9, 0x7d08f24d, 0xdfe5cc10, 0x3ccd7fa3,
-       0x7b1666f7, 0x88b3d29f, 0xcf5b5a8f, 0x2faadc21, 0xd35fbb79, 0xf2c727ef,
-       0xd7baf557, 0xac2ed10a, 0xa54c3aca, 0xb7a0ff3e, 0x7d057b57, 0x8be5149e,
-       0xa7985f48, 0xc93b727a, 0x0d07f54d, 0x0ace6f24, 0xc79c67ae, 0xd6307a8c,
-       0xb4772a5f, 0xdefdc2cf, 0x9e2a1ff2, 0x5ed89626, 0xde7850ac, 0x2fada3f3,
-       0xc19cf1bb, 0xe26bbdc0, 0x0e1bf03c, 0x3bbdffce, 0x97c4e101, 0xfe50da0d,
-       0xc78d57e2, 0x74296f22, 0x7dc0808f, 0x1719aeef, 0xd2e7887d, 0x7e532677,
-       0x375dd3e7, 0xc021f9dc, 0x72e3bbdd, 0x4de943b2, 0xfe9fe201, 0xf70fbb0c,
-       0xa97e20df, 0xebee8050, 0xe3765fdb, 0x3f27e4fe, 0xda2270ba, 0x9c050fb7,
-       0x5e667f27, 0xe7b97887, 0x865e9f99, 0x2561d5ed, 0xef6cf50d, 0x15fe1fce,
-       0x8ed570f5, 0x9a9f8a7a, 0x0d4bf47e, 0xe14d39f7, 0x677cfe56, 0x7dfb07b2,
-       0x65d37db2, 0xf6a6ef88, 0xb93f6a26, 0x07ea95bd, 0x4be9f99e, 0x33f68dff,
-       0xbf61f6e0, 0x4fdb3f93, 0xaa09a974, 0x04f0defc, 0xeee8fd7c, 0xa19f5cfd,
-       0xb07287bf, 0xc919eb90, 0x3f7f92d7, 0x8bd6e679, 0xc6bbfaf4, 0x60a5181c,
-       0x1f5661ff, 0x7d07d79e, 0x15fbfa4e, 0xc4ed533b, 0xce9cadf7, 0xaf74d5e6,
-       0xd73e7943, 0xdc61883b, 0x72febaf7, 0x91477d07, 0x4afb10e1, 0x293f1176,
-       0xbcc3ed0a, 0x6d05e972, 0x217dba4d, 0x9457bf49, 0x1756a3d9, 0x8b379f45,
-       0xb8939b79, 0xf514f93d, 0xd539c430, 0xac1efc65, 0x5f6c7f4f, 0xd6b5fe48,
-       0xd76bf743, 0x34be7114, 0x9a3d393b, 0xb7e57e45, 0x39630ee0, 0xcf02e41e,
-       0x8eeb40d5, 0xfadf292f, 0x1a6fd913, 0xbed357c2, 0x784752da, 0x0e7f11f9,
-       0x8ee7c658, 0x354b06a2, 0x1b592f3c, 0xe91c5e3f, 0x3dfd3274, 0x663a2376,
-       0xde92f28f, 0xe8c6fab1, 0x5511d2fc, 0x27dc26c1, 0x906d6ab8, 0xe17ea9ee,
-       0x5ee937e3, 0x2ac667e3, 0x30df8893, 0x2f76847f, 0x6a79a4e4, 0x70078f31,
-       0x7114ef9e, 0x17a987a3, 0x32aff1eb, 0x75fb49d5, 0x6a97a4fd, 0xdc5d859b,
-       0x5b19e221, 0x6bde367f, 0x2f39ef0a, 0xc09bedd6, 0xd5274e7b, 0x8fe7b3fb,
-       0x5a143b47, 0xabc87648, 0xa527bc11, 0x09a161fe, 0xa1e2e8b7, 0xf51738d8,
-       0xca77e61b, 0xe77ea59d, 0xe3296894, 0xdd3c58df, 0x3877da25, 0xea277efd,
-       0x16e79dc7, 0x7a09d687, 0x2cf4aa3f, 0xed0e3e47, 0x2f907bb3, 0x29eb2eeb,
-       0x3bb1ebd4, 0x0b4e9e04, 0x41dfc13e, 0x64cdb8a0, 0xb5df110a, 0xa4dad05d,
-       0xe77bb60c, 0x44757f09, 0xba41e2a7, 0xc73ad88c, 0x9bf03f40, 0x7f686bd6,
-       0xe4252ac6, 0x7eae76cf, 0x11e61c6d, 0xaf586e81, 0x495d98eb, 0x833b03f8,
-       0xe75d6cfe, 0x73840eec, 0x3eb5fa64, 0x3f0797dc, 0xe77d1664, 0xa0a6c351,
-       0xda3a3efc, 0xad246fbf, 0x1e786143, 0x384b51f3, 0xa3f7ed0b, 0x787d0ae3,
-       0x582ea63e, 0x0af24359, 0x2f7d2d7e, 0xfe40dc15, 0x26f79d6b, 0xc6a7ed1f,
-       0x853ef9ca, 0x1be054fc, 0xab8b1dfa, 0x7c2cbbf1, 0x7920ec3f, 0x2dccebaf,
-       0x9eaef845, 0x9e60f3e9, 0x8fc494ed, 0xf4dd2d2c, 0xf7a7183b, 0x27485958,
-       0x03eeaf97, 0xf80266bf, 0xafc17b35, 0x3fdf8099, 0x1571d9fa, 0x0d7a71c6,
-       0x5deab779, 0xcdef74b9, 0x7f8ed129, 0x2d7ddd5e, 0xe21195b5, 0xcfe11acb,
-       0xc5fd5ba6, 0x26e8ebb7, 0xfa5894fd, 0xf6e4ee3f, 0xe727bce8, 0x00463d12,
-       0x239f103d, 0xa26e9ab6, 0x863485f5, 0x8aaabbeb, 0xbe01ea45, 0x229ab6ab,
-       0xfa884f97, 0x3de3b131, 0x4f7114e9, 0xf518a05a, 0xa702f95b, 0xca87af4f,
-       0xbb26fc93, 0x2c628fce, 0x92e31930, 0x845d338f, 0xaf4e1df7, 0x7e0c87f4,
-       0xd3b8e0cf, 0xe1f8c3ee, 0x04d0969a, 0xaf0e87dc, 0xf2885a4f, 0x49d47a08,
-       0x781eebfb, 0xb6d6e31f, 0xb8f3b64b, 0xf9d689b5, 0xc247a77d, 0xe301b937,
-       0x5ac0fcdc, 0xbe5c7f6e, 0xe5d6fb78, 0x2ee7e94e, 0xbef3c62e, 0x3e9d7375,
-       0xff36af8c, 0xe38a5942, 0x746c85d7, 0x705d6e39, 0xf2579bed, 0x5fdf8038,
-       0xbaa2fc23, 0x347d1bf4, 0x7a7e20ff, 0x4e8ddb8f, 0x4ebaaf4e, 0x1c642f6e,
-       0x5e217a8b, 0x29ca5ede, 0x6b8c63ea, 0x39497f24, 0x3c79573d, 0xfc90096d,
-       0x2375869c, 0xe1f00e3f, 0x630f9c0b, 0xff8934e3, 0x8bc2f8d8, 0xef7506c2,
-       0x8f7d0776, 0xe69af52f, 0x3d451c0c, 0x6476d754, 0xd0abb123, 0xdc2f7543,
-       0x3f94385f, 0x78f95365, 0x3d2b9036, 0x1359e0df, 0x432a44d7, 0xc0df3a4e,
-       0xc6df5fb8, 0x1d8e8fef, 0x4f42b7ef, 0xbf4a7c49, 0xcf82f319, 0xc29ff943,
-       0xfa227d7e, 0xcf29d5fd, 0xfc0d8457, 0xdf0535e7, 0x44f17dc3, 0xf7be56fa,
-       0x7226f34d, 0x63efa97c, 0x99f325e9, 0x45d98eb8, 0xecb5fb89, 0x0c48f117,
-       0x3e0b14ff, 0x80e7037e, 0x07724f75, 0xbea0b917, 0xd3f99928, 0x7e8bdf00,
-       0x29f7e569, 0xc42fed8c, 0x655aaa78, 0x5797cc21, 0xf584b4ef, 0xa1f736e7,
-       0xf5ef040f, 0x33216cb9, 0x3bb95df0, 0x0671c1e8, 0xcbbd87ee, 0xc1e1e74e,
-       0x7282994d, 0x481ed23b, 0xf7e06575, 0x4f743d89, 0x1e0e63ec, 0x311ff44f,
-       0xc5cbcf87, 0xe87bbe7b, 0xacce84f7, 0xea7ca7cd, 0x61fc2f3b, 0xede01fcf,
-       0x1a3e7b53, 0xd493cfad, 0x55364cd9, 0xad3c6f97, 0x2b67dfc4, 0x167d7176,
-       0xf3f65bcd, 0x438be5bc, 0x63eb41e7, 0xf3d1fbf2, 0xfdf9b1b3, 0x6fa878e8,
-       0xfbf263eb, 0x6f5c5d07, 0xf9e7df47, 0xf14c77fd, 0xc7bd6fbf, 0x8bafdc65,
-       0xc5cfbf6d, 0x8f23abf9, 0xe3ff45cb, 0xe4fd184a, 0x115d6be5, 0x396b8fbc,
-       0x63bf463c, 0x311427b9, 0xf9ae51b9, 0xcdfc323e, 0xbe5f81b5, 0xe807d844,
-       0xbe474ea7, 0xff68790c, 0xd0f42831, 0xff57ce92, 0x72f4f18c, 0xc3a6d995,
-       0xbe6d4b38, 0x13fbf843, 0xba673a1f, 0x7e56ed51, 0x744c86e7, 0x6a2d86e6,
-       0xf455bca0, 0xf374f57c, 0xfabe72df, 0x57302bb0, 0x7fd21bf2, 0x5f5cedd1,
-       0x9756fec8, 0xe467373c, 0xd01377b7, 0x665dc739, 0x3ababe46, 0xc698b029,
-       0x4194fdbd, 0x7a569caf, 0xf201fe9e, 0x7bfe6ae3, 0xd7efb147, 0x8afaf98a,
-       0xc53ee9bb, 0xc97fd5be, 0xebaebf26, 0xff51b7d5, 0x817bcad5, 0x7b862c3b,
-       0xfc932b81, 0xf7efc4d5, 0xfba14f4d, 0x73c186ce, 0x1ab82782, 0xf6fe41e1,
-       0xdbf9eba7, 0x2ce78c9b, 0xba01b5ea, 0x921ef7d0, 0xcb946c2e, 0x23ae8f48,
-       0x36a58f44, 0x701bdd3f, 0xf0403f9b, 0x4c8e4a2d, 0x5ff018f1, 0xf7dd37f4,
-       0xf6e42958, 0xfdfe2d1d, 0x3e09f7e2, 0x8dfb283c, 0x4efafce0, 0x1e7aab36,
-       0xff234ccb, 0x2ce42c3e, 0x71cbde2c, 0xbc421ffb, 0x18795e80, 0x8e7400f1,
-       0xcaf5e8a4, 0xe7ba7ee4, 0x374a6fa2, 0xae7d1f7d, 0x80ac66f8, 0x8e784bd6,
-       0xd1385e73, 0xf0b56f7a, 0xb5df0075, 0x47af48b9, 0x87bfebc6, 0x5b80b9ff,
-       0x493be5ca, 0x142cbc46, 0xe091fbeb, 0x87974a93, 0xfd7c1be7, 0x3bce38d9,
-       0xb8f1f1a9, 0x768f8a28, 0x7fb583c2, 0x6fd01a71, 0x6d35d83e, 0x12a7e122,
-       0x938a0f9f, 0x49ff228a, 0x5c6b6dfb, 0x0bc5ed0c, 0xfdc9be72, 0x963f8f3c,
-       0x885a0bcf, 0x57d96eff, 0xc2bd6de0, 0x3145e77f, 0x2b6844c3, 0xdf2f32c7,
-       0x7fce980f, 0x203ecaaf, 0x195c8797, 0xcec4fc51, 0xc09b0c7b, 0xc4bb779e,
-       0xe63e40f7, 0x1f16f7c3, 0x8b75ccfd, 0xf43df0d7, 0xef4e385b, 0x1fc8479d,
-       0x0a45a63b, 0xda719c5b, 0xc7b6c8b5, 0x6b3b6894, 0xadc17ee0, 0xbbe99acf,
-       0x9ea66398, 0x2d7f7047, 0xfc99a6f4, 0x3dde3fa8, 0xfa2bbe83, 0xffa30ef4,
-       0x45d0527a, 0x20309f7e, 0x830b783f, 0xc5eff079, 0xcb9ce6dc, 0x3ee629e5,
-       0x14164af6, 0xfb13fbbf, 0xe103427d, 0x893df079, 0xe73c87eb, 0x7ce6e995,
-       0xf38269f3, 0xebfb8a19, 0x3ee327da, 0xc4bed45d, 0xf1f1d3ee, 0x474e6edc,
-       0xf6fea769, 0x304aaef9, 0xe77175df, 0xba7cf393, 0xb3bafe3c, 0xd58edcdc,
-       0x461becc7, 0xb3e795c7, 0xa49fa85a, 0x2cd9fd77, 0xd2eb2e7a, 0x37be8a8f,
-       0xfd8bc68a, 0x13e6472e, 0xa7beff25, 0x9efd1b30, 0xf224db11, 0x78099e86,
-       0x687bd0bf, 0x06df412f, 0xf52f60af, 0xfe4b8800, 0x9aa17879, 0xd8efe517,
-       0x9d5f0075, 0xd51effd4, 0x4fb8b704, 0x217642ef, 0xf821177d, 0xe59df179,
-       0xf25aee74, 0x854f546f, 0x71adbc78, 0xa7319e3f, 0x18b3ff41, 0x13a4b0fb,
-       0xb204c1ec, 0xfc0e74cb, 0x12378bf8, 0x5f32571f, 0x17d1e926, 0xe93f74ad,
-       0x120bb5d7, 0x4b421b9e, 0x8adefc2c, 0x6bc7ba74, 0x86ff988e, 0x981fee2e,
-       0xfbfe7e6c, 0xf5e67e55, 0x03dff264, 0xca05fb21, 0xa5fa855d, 0x00cc8eb2,
-       0x3162e9f5, 0xf00fbe0a, 0xb64a2a5f, 0xf2859834, 0xb7ffef26, 0x961670b3,
-       0xbcf9174d, 0x04ae5e58, 0xa7070e54, 0x30d62cf3, 0x6c9bfb0a, 0xff9c663d,
-       0x58da7991, 0x4fa01fbc, 0xdf89f249, 0x74fba3fb, 0xf3f303ad, 0x9dd64bba,
-       0x0eefc32e, 0x7dc5bbd4, 0xa366360f, 0x4673ebdf, 0x057da13e, 0x616cda51,
-       0x0701ddfa, 0xcdba448b, 0x8c00fbf8, 0x614f9bbe, 0x3dfc112d, 0xff17be8c,
-       0x1e1c518b, 0x76fc0fbd, 0xef2194f7, 0xc7b6370b, 0x2a9e17dc, 0x7e634ae0,
-       0xad221fba, 0x635f78c2, 0x42ad7386, 0x3016e13f, 0xc444cf3e, 0x0b61ff43,
-       0x6f0bef63, 0xe1fc7051, 0x1b73e341, 0x5f7a463b, 0xbeb20489, 0x93de8b4c,
-       0xdf8920b4, 0x22eff44b, 0x115b9c8e, 0x6f015728, 0xafd88bf3, 0xe8de50fc,
-       0xe1177e09, 0x4370f1bf, 0x17d40d6d, 0xe3c6cebe, 0xc9c530f7, 0x185dea9e,
-       0xefcadd7f, 0x3efe2d6b, 0xec361d67, 0xf0c78a3c, 0xc9b51707, 0x2b2ace78,
-       0xb17d718c, 0xd48fb443, 0x7f18bda8, 0x3fdf1100, 0x95f74bcf, 0x74f38bd4,
-       0x9a7987f8, 0xc333f3d6, 0x67d30768, 0x7ac46ff4, 0xee8cfdff, 0x19f79059,
-       0x408ec76d, 0xbf4afa9f, 0x87da0325, 0xe23e64cf, 0x03bed149, 0xebcf9dff,
-       0xdf889797, 0x5d47c08d, 0x2733ca9b, 0xc6fa9b13, 0x5cfcc1b0, 0x18bb35df,
-       0x73f954f3, 0x297f13a7, 0xba0a2f82, 0x7c51ff14, 0x3f68c22f, 0x972bbeb5,
-       0x1c17dfce, 0x719e51f6, 0xd4e1a981, 0x1bdf5c1e, 0x13effe3c, 0xc84cc6fb,
-       0x7918d4f3, 0xafca24b9, 0xe72c5ed4, 0x7accfb97, 0x3ce046be, 0xfc44a0f0,
-       0xc7bd12c4, 0x1662ece5, 0x6671c3fd, 0xbd25c744, 0xbdb45332, 0x3fdf0b72,
-       0xf646aa9b, 0x225e1ca3, 0x4e5162ca, 0xe2330166, 0x7f73c4ab, 0x5177ce13,
-       0xf21a68e0, 0xaf9b74fd, 0x9f46af19, 0xb86150bb, 0x4e9cc4af, 0xffb17ebe,
-       0x3d8af52d, 0xfb67e799, 0xddbab3dc, 0xdf997dba, 0x30df85ba, 0xb98d8d96,
-       0x24f7ff67, 0x3bffa517, 0xdb18dc91, 0x4066e463, 0x7d3f313f, 0x7dfb18b7,
-       0xff3f3ce1, 0xc05e6a6e, 0x7e3e7cf8, 0xe71f97d7, 0x15d0ec77, 0x0b8e8ccb,
-       0x78416472, 0x6ec77f62, 0x2ab7f48e, 0xa2d6fe8c, 0x8522fa7f, 0xa7b0c0ec,
-       0xc1ccbf6b, 0xe25ce67c, 0xb12ebacb, 0x43fc0f3f, 0xfd89e3df, 0xe34efaf9,
-       0xd77d7cfe, 0x74337b92, 0x9d75f3fb, 0xcf3fb55f, 0x5bbfeeed, 0xd30f74c2,
-       0xd604afbf, 0x165e7982, 0x7107c2fb, 0x9462783f, 0x3cc5aeee, 0xe35073af,
-       0x3107f4fb, 0x4bcba37f, 0xfcf070cc, 0x340b8ce8, 0xe5573e7a, 0x2129f2fb,
-       0x0b92f927, 0x665defc4, 0x7e41d998, 0x1fe7847e, 0xeb3e22c2, 0xb40d7e16,
-       0x47fca06f, 0xa465dc8c, 0x6547ca31, 0xf2963cdc, 0x8abb0b3a, 0x0d3e6327,
-       0x7fe533f4, 0x7a5eddbb, 0x98b0617f, 0x395723f2, 0x8af3a46f, 0x6aad5df5,
-       0x7adf4ea5, 0xf5f78d93, 0x9a5df9c4, 0xfa29e482, 0xe019a5df, 0x489e7a27,
-       0xa7dfcb0f, 0x9bbe62ac, 0x7de2e597, 0x9d774001, 0x3194b79d, 0x53fb4f7e,
-       0x5d2b9d0a, 0x76483ce5, 0x630ed578, 0xd45b943f, 0x6bafd57b, 0xcd537f74,
-       0x467c41ae, 0x5de52d72, 0xa1b517de, 0x3ee0afd4, 0xe611df4f, 0x77fa436b,
-       0xc05b8cc4, 0xe04f98ed, 0xa5e858b3, 0x3666f349, 0x24e53ee1, 0x565f9713,
-       0x7fc91be9, 0xe7917377, 0xc7551d84, 0xfe50cad3, 0x63eb9f40, 0x067dfcb3,
-       0xc4531fd4, 0x717ab1f8, 0x2e03f08a, 0x137d6153, 0x0a7d76a3, 0xa683f5e3,
-       0xbddd332e, 0x3c9ce02f, 0x9fdc4720, 0xd24a7a90, 0xc6e5ef03, 0x92cb5df3,
-       0x63c87e85, 0x184f4879, 0xc157f89f, 0x8d2a73cc, 0xbca1521f, 0xf407cc44,
-       0x84df210e, 0x9dfa364c, 0x034a8d8f, 0xfa1b79e9, 0xa03e508d, 0xfd7f4904,
-       0x46642abc, 0x1ac45ebc, 0x1726b86e, 0x03b758f5, 0xb07c05e9, 0x4d1fcf52,
-       0x5bbd922c, 0xb509f031, 0xe8c4a6f7, 0x3d12a61d, 0xc238304c, 0xa5ad7669,
-       0xc42bf47d, 0x6e53a273, 0xc9d51fb4, 0x3fb4618f, 0x87c01fea, 0xf52fddb1,
-       0x93ea3309, 0x8f05f65c, 0xf43feed3, 0xfb0f8c1d, 0x8c5fc22c, 0xa1dd4ba1,
-       0x641f8b93, 0xbe49fa51, 0x983598ba, 0xca1f00b3, 0xf75e792f, 0x2a5ba462,
-       0xfc8c51fa, 0x892c69a7, 0xe64d8be4, 0x57c907f9, 0xa2255e92, 0x4fa484f6,
-       0x7841cb0e, 0x53b4ed2f, 0xa462e9de, 0x58bdd013, 0x4aed2f8c, 0x6af4e4c4,
-       0xb0174879, 0x7ec1e61b, 0x97aa665e, 0xe4c933e8, 0x614cfa27, 0xdba434be,
-       0xd7ddf6cf, 0xe8eb7084, 0xe3192db0, 0x80e80545, 0x3ed8357c, 0xe463db18,
-       0x94bbe259, 0x2c9fc979, 0x9c394665, 0x670d04e1, 0x8dcafba2, 0xa0b363f7,
-       0x7b94f08a, 0x6f8fdd06, 0x41b1d232, 0xc8ae7845, 0x444bf632, 0xa7a41ccf,
-       0x89690fb4, 0x6ae529e9, 0xa9d39db7, 0xfa84e81e, 0xd2afd266, 0x34813867,
-       0x25ccade7, 0xc53bb0fb, 0xfaf584db, 0xc5f4851a, 0xcbdf6ee4, 0x106fcf58,
-       0x337eb9ed, 0xafd683ee, 0xde53ede5, 0x7ac0cc0a, 0x5ede3ac1, 0xc9b04f7c,
-       0xaddfe385, 0x2fd8bdd0, 0xcbc7727c, 0x47be1ed8, 0xcfca5fbc, 0xe06fd6e1,
-       0xf9847fef, 0x3cf10bde, 0x7c0ccb44, 0x9739ae3e, 0xf0b00eff, 0xfc172e67,
-       0xe3695bb2, 0xc83c20f7, 0xc8715dc7, 0xce28c496, 0x65cafee1, 0x6f979d62,
-       0x3f4cebe5, 0x1785557e, 0x37b2a9f8, 0x2d95d740, 0x1109c164, 0x3372ef58,
-       0xf1f9f204, 0x10bc1be4, 0x0d288f28, 0x500aa744, 0x72fbf49d, 0xc0b67cd3,
-       0xc7ef9e78, 0x92fa79ef, 0xf329bc79, 0x35ffb8e5, 0xfb4f675b, 0x469e7992,
-       0x654ccbf6, 0x09ef3f7c, 0x91a3f917, 0x7c8298c7, 0xfec0b88f, 0x57faf289,
-       0xbd9037e4, 0xe64722ba, 0xa5d47bf3, 0x97f15f30, 0x178acd9f, 0xcc9e7f07,
-       0x62c7e4ed, 0xaf3e4f1f, 0xbdfdf30a, 0xf4cbc8dd, 0x30e9ad7d, 0xe19853d5,
-       0xb9ddab1e, 0xfe7aaebc, 0x28f35f7a, 0x06b35dfc, 0x36ca8435, 0xcc7da15b,
-       0x679fe0eb, 0xffe14627, 0x2830d93f, 0x00800092, 0x00000000, 0x00088b1f,
-       0x00000000, 0x7dedff00, 0x45947c09, 0xf37f78b2, 0x093215cd, 0x87213b93,
-       0x98884013, 0x861c2184, 0x4109264b, 0xe8098414, 0x720d7282, 0xeb22dc85,
-       0x97f75763, 0xd9110441, 0x73d6f8dd, 0x0160763d, 0x18896151, 0xc3824830,
-       0x12a20882, 0x75040411, 0x0844ae22, 0xf1e20c49, 0xabaf2e1e, 0xbe667bba,
-       0xfc38666f, 0xddbf7ffb, 0xdb2e23f7, 0xaaefafa9, 0xeaeaeaea, 0x084c8eaa,
-       0x908238b9, 0xadc4b45b, 0x9680a1cf, 0xc8401bfe, 0xd5fa25dc, 0x3f02242b,
-       0x213c6376, 0x33fe1277, 0x192d7aec, 0xf01dc844, 0x289085bb, 0x2afda4b3,
-       0x9fdefe83, 0xd328bff4, 0xf3bfcf72, 0xc84d94a3, 0x3a558caf, 0xd50a1dd2,
-       0x8459ece8, 0x9c9b359c, 0x7c84be9a, 0xcce2392e, 0x7d690903, 0x965cff76,
-       0x64beceef, 0x47e696be, 0xb048d4d0, 0xefde62df, 0x13d2e27c, 0x977cdfda,
-       0x918f0bee, 0xfd22ed0d, 0xa43a6a57, 0xae9a1a27, 0x232f7e57, 0x41e93d1e,
-       0xf2ad7948, 0xe271257b, 0xe57acaf7, 0x91d99277, 0x845efd06, 0xf69f8a1f,
-       0x5907cb67, 0xcfff6932, 0xe6147fbc, 0xb9346c57, 0x97129a65, 0xc193d5ae,
-       0x1e7ce1eb, 0x4e157f34, 0xc8fba793, 0x64246f17, 0x6cc89752, 0xbb9095d2,
-       0xe67e8ecc, 0xf99c4238, 0x146529e6, 0xe1e9cebf, 0x5c5025d6, 0x4c396536,
-       0x6308fdb4, 0x8bce9b96, 0x4cc588d8, 0x79f12df1, 0x9f0c0d4a, 0x3c52471f,
-       0x4832f8c3, 0xe699e006, 0x14d1f53b, 0x8448e3ee, 0x93881bf1, 0x88c23e00,
-       0x4252112b, 0xbf1846ac, 0x42475e1f, 0x2179adff, 0x57ccaef1, 0x1f027de1,
-       0xd36244cf, 0x47137f41, 0xa775f12b, 0xfbd22169, 0xfbf2bb4e, 0xcb1388af,
-       0xc2ac9a4f, 0x24c9b12f, 0xe0aed7de, 0xca1cbb93, 0x9e041372, 0x3cf1ab47,
-       0xc515fccc, 0x01309d2f, 0x54d24c7c, 0x58c9e3fd, 0xb30d6f0a, 0x1cf6c5ae,
-       0xb852178f, 0xbac12eb3, 0x4b44c002, 0xfdb409d7, 0x926c404a, 0x3d22ae8f,
-       0xab189d58, 0xe707e9ed, 0x93761991, 0xee389e0f, 0x1499a0d8, 0xcfe5d22e,
-       0x06913c03, 0x29837ffa, 0xd210c53f, 0xb2f80994, 0x18262574, 0x52d47107,
-       0xde92d3b8, 0xd814da35, 0x132b488f, 0xfdb4e313, 0xdb4bf8fd, 0x3e066911,
-       0xb0cf20b8, 0x2a383267, 0x53f552f3, 0xc131b4e2, 0x5acf37fa, 0x91787809,
-       0xa38e81e1, 0xadf943de, 0x2b5f7d73, 0x2a7210e5, 0x942468ce, 0xa67467de,
-       0x1f5f52e5, 0xea2ee63e, 0x4a95ed86, 0xd0b6efae, 0xc764836f, 0x52cf3023,
-       0xf8cf5b8d, 0xa13a6aa9, 0x6f3f96ed, 0xf748adb0, 0xf8d43fcd, 0x2d23f008,
-       0xc93bffa2, 0x1d7ad2d0, 0xeaeb1752, 0x0bdefc74, 0xddca2ce8, 0x2b17451f,
-       0x9185ef5d, 0xdd60278e, 0xe8b8c3b7, 0xa309697a, 0xaf8e86eb, 0x01932245,
-       0x74e2549f, 0x7e02ca2d, 0x04eba3bc, 0x951297ca, 0x81d1c953, 0x351856fd,
-       0x5e1fb764, 0x757d78db, 0x096655b9, 0x9989f7c7, 0x4dc7ff60, 0xdf30d5b6,
-       0xae293d16, 0xe96c78a5, 0x9a48d3c2, 0xa01bfad2, 0xcf2840fc, 0x70e0edea,
-       0xabe5868b, 0xbee517db, 0xdd9236ac, 0x545fac74, 0xf29bb213, 0x4369e597,
-       0x4bb68b95, 0x147fd2a6, 0xa2dbed2f, 0x453e0156, 0xbce67dbd, 0xdd1c604f,
-       0x802df64d, 0xcd35d98f, 0xfb5f877a, 0xe01f30ed, 0x579b1d13, 0x454b187b,
-       0x45ccfb7f, 0xef1e209f, 0xbcdd20f2, 0xdb0160f0, 0xe1f6fdb1, 0x1fd21e4c,
-       0x72c3ac0d, 0xc5cb0ebe, 0xae53ab7a, 0x04a64937, 0x63f9468d, 0x5aa0b941,
-       0xc67a957f, 0x17ef844f, 0x4ebac4d3, 0xfb42d089, 0x64535953, 0x1fbec35a,
-       0xa64248a5, 0x64b2c91b, 0x21a33f9a, 0x7175e501, 0x1997b3a4, 0x0cd23ce9,
-       0x0ce489fb, 0x5f862f97, 0xe4b4bf8a, 0xd93e312b, 0xa9ed6fc7, 0xf6cf384d,
-       0x81a63f55, 0x786f2ebc, 0xa875e507, 0x191f3979, 0x48f38516, 0xd6e0fb60,
-       0xd9391b6a, 0x059787d3, 0x428f3666, 0x0f40acb9, 0x313664f2, 0x7ea7e81b,
-       0xc3d3fba4, 0x57b95c28, 0x6f285c47, 0x93901a6c, 0x9c63c397, 0x7e2c435d,
-       0x72612df2, 0xf0c96217, 0x688e49c1, 0xdc5c9c05, 0xb53e514d, 0xff22bbaa,
-       0x147d45ba, 0x1ccee9f9, 0xf963dc05, 0xebf94510, 0x7015f26b, 0x536e67ef,
-       0x35c1bf94, 0xc2770141, 0x9e3f202f, 0xca4e5d97, 0xbfae37a7, 0xde7f515b,
-       0xbf4859be, 0x895ebe3a, 0x4994d6d3, 0xd05b30f1, 0x80686e9f, 0x670e52c7,
-       0x68a3ded5, 0xb725b89f, 0xe1cfcb44, 0x69bb31fc, 0xf94258ee, 0x897d6fa3,
-       0x67221fa2, 0xd28e30ca, 0xa18912ed, 0x46a73eac, 0x7bcc4fb9, 0x37170946,
-       0x992cbe3c, 0xf407ea04, 0xdb4b4327, 0xac5d2129, 0xf5a8dfa0, 0x11519e84,
-       0xdd0fc8b1, 0x57c63748, 0x79303e6a, 0x074861f1, 0xf4f5e83e, 0x3e3e01b0,
-       0x19ebe2f0, 0xb9d5f109, 0x7b8e07b7, 0xee3a36de, 0x18fc40f4, 0x10fc9512,
-       0x43f25166, 0x1f928678, 0x7e4aac22, 0xe4ab9ae8, 0xa3be3507, 0x20fe4a6c,
-       0x105ffa1e, 0x568cc77c, 0xbca94df2, 0xefe00f72, 0x5f9e7872, 0x1fe90abf,
-       0xf0a987a0, 0x1af01e3a, 0xff6bc3ee, 0x2625b6dd, 0x61df660b, 0xe478041c,
-       0x197620f8, 0x046c52e5, 0x3e561dea, 0xcca7a14e, 0x107ae288, 0xd69fa76f,
-       0xf7d613bd, 0xa049c932, 0x967fd09e, 0xdcd3bae4, 0xc639df14, 0xd520a02a,
-       0xa2b3ec6f, 0xd32c1ca8, 0xdf21b3bb, 0xefc1ef4f, 0x417bd2ad, 0xa7411ef5,
-       0x7281c439, 0xa61f0025, 0x2f50f427, 0x3f40ff80, 0xff8411ed, 0xed077ea8,
-       0x5179f256, 0x7234b93a, 0x06a4be20, 0x0d911dc9, 0x72106cd3, 0x3fb171d6,
-       0x157ca366, 0x4a0da2f8, 0xe84772fe, 0x817da28f, 0x448f211f, 0x255206bb,
-       0xab7f0227, 0x50c913e4, 0xa9371de2, 0x223ff841, 0x35e80bd8, 0x416f9bc4,
-       0x0899037e, 0xbc4de94a, 0xd30f723f, 0x06a48d4b, 0xb242b2e9, 0x7f69972e,
-       0x4be975f2, 0x7f4ba508, 0x64ffd533, 0xa69b42d8, 0xd18d77c0, 0x773ec329,
-       0xfe60b91d, 0x3f5a06ea, 0xc5f95d61, 0xbff2d098, 0x5b8d8dfc, 0x281f549d,
-       0x2464f4d9, 0x5afaf4a1, 0xa56f135b, 0x2ed6cbf5, 0xb4d1b48d, 0x7d44eb45,
-       0x3c976bea, 0x7f6415da, 0xed8a3f7e, 0x264274df, 0x7c153f90, 0x795fa72a,
-       0xd7ac1c6c, 0xccead6ef, 0xb9522d32, 0xd036e0de, 0x375151f5, 0x46c92c7f,
-       0x8fc199b8, 0x54f8037c, 0x5e4a1b9f, 0x82de327a, 0x5933a3fb, 0x3ba90893,
-       0x62b4d099, 0x81463fcd, 0x3a49567e, 0xd4b8c196, 0x1fffa0f5, 0x595afee8,
-       0x77d4cf2b, 0xe11e720d, 0xb5d05aeb, 0x6fb1eeb2, 0xcdf848e4, 0x557e07a3,
-       0xbd062f97, 0x3b67ea8e, 0x89bb3c84, 0x45eb04dc, 0xe2b883e0, 0xdf93ef50,
-       0x99bb2178, 0xf66badc2, 0x787e4a47, 0xc421e422, 0xaced674f, 0x0969bcbf,
-       0xaa36874d, 0xfe5e90d7, 0xcf585cf5, 0x9ee12f52, 0x5a581a4a, 0x0e4773a6,
-       0xb654aca5, 0x687a874a, 0xaebfc6d9, 0x33c533fb, 0x5eb06639, 0xdd2fdb4f,
-       0x43c7f6f8, 0xa6bfbe40, 0xa6cb1d8b, 0x7de29261, 0xffa4a974, 0xe8f8e516,
-       0xdbfaf250, 0xfb164b7a, 0x8fb460fe, 0xedafa51e, 0x40ac93d4, 0xeed4147c,
-       0x414c7bd4, 0x3cdb52e8, 0x1e02648a, 0xdd03d27e, 0x9121debf, 0xf820f484,
-       0xa476f55c, 0xe909e383, 0xa5e4e9c8, 0x5cfabd5b, 0x412bf4c9, 0x2bbe7527,
-       0x0afa8cca, 0xca7a87b4, 0xf6ff1b1b, 0xf14fc526, 0xcc2b0627, 0xf76ff8bf,
-       0x4e3cc245, 0x5f18ab69, 0xde34b0bf, 0xd62dfb46, 0x98cde339, 0x2fc5efb2,
-       0x6df91afe, 0x8ebf87de, 0xd93fa827, 0x38b93492, 0xdf9824cf, 0xc4efe79c,
-       0x0e25cdf9, 0x17e2bbe4, 0x9fe83b64, 0xf464b5e7, 0x45d6416b, 0x175b3441,
-       0x15d356a7, 0x4a77e74d, 0xf38044cf, 0x8b5aeca0, 0x517bd287, 0x28dafc18,
-       0x8402ffd6, 0x9d191bcf, 0xf86b45ba, 0xdf4ba2ba, 0x3cd75f9f, 0x39f404d2,
-       0x004b6a9d, 0x6892af3d, 0xd21f1c9d, 0xfcaeda45, 0xa3026161, 0x8568b10f,
-       0xa8f2a47c, 0xf943be00, 0x2c2d9d26, 0x5c8f515b, 0xbff5f74c, 0xc74ff790,
-       0xd0f405dd, 0xf5c1f153, 0xa668caf2, 0x269fd327, 0x7e5fc7e2, 0xf7ad9beb,
-       0xf5b28f35, 0xabbbd62d, 0x7fe43468, 0x1fad887b, 0x839c97a8, 0x602772e3,
-       0x243bcefe, 0xe2060794, 0xd7aeb60e, 0x56baf8e8, 0xa13e0be6, 0xb9c2d6e3,
-       0x842fcbc7, 0xf14e6f9d, 0x27dcc8f3, 0x7dbf3d68, 0x8bfa12be, 0xac4f6c0c,
-       0xfd7c79db, 0xf7cd1cdf, 0xc9febe5d, 0xcf4171f3, 0x5b73eabf, 0xeeb5ce99,
-       0xe95eb0cf, 0x605a74fa, 0x30eceabd, 0x761b33ef, 0x5d377c7d, 0xc56a6727,
-       0x4fca553a, 0xde2d3af5, 0xa7f236fc, 0xa99e9d7a, 0xe83e3b7d, 0xeded7d3a,
-       0xb0664f78, 0x2bbffa75, 0xe6fe053f, 0xa7e52b46, 0xf0a18790, 0x728796a8,
-       0xa9f105b4, 0xe7f48796, 0xc8141910, 0x04ef827f, 0x5abc95bf, 0x1dc81d7e,
-       0xbe0a5f2f, 0xe0a5f2f3, 0x957cf53b, 0x5be753f8, 0xf9472ce1, 0xf0edbec4,
-       0xcf4a64a8, 0x6ac906b2, 0x3dbd60b0, 0xd93c5300, 0x35231b70, 0xfd63927b,
-       0xae0a9761, 0xa9b79555, 0xbcaabb60, 0xa9570543, 0x5c70bbca, 0xf4bbf565,
-       0x5b81e504, 0x10f75e51, 0x3d804671, 0xad7651a1, 0xa76ca8a6, 0xeb465e63,
-       0x47486fb7, 0x12697b7d, 0xc474dbb3, 0xfc8197e9, 0x4477376a, 0x75fc5346,
-       0xb373f184, 0xca3223bd, 0xdcd32ecf, 0xf5fca320, 0xdae8c8b8, 0xaa1af620,
-       0x3cfd2249, 0x62fe5424, 0x4d90bf66, 0xef408b69, 0xa0ad91af, 0x3c5ecd0b,
-       0xcef41229, 0xe31e86f6, 0x73efd327, 0x43baa1f6, 0x903db9da, 0x49b4039e,
-       0x38b3fe94, 0xe710b63f, 0x7ce8c353, 0xa2943566, 0xa57b3e3e, 0x4d735e92,
-       0x9ccf510b, 0x1efd04fb, 0xe12fdf44, 0xaf3f14ed, 0x2b212fcc, 0x1d289f91,
-       0x297760f5, 0x77cca359, 0x2ecffb70, 0x48fde7c1, 0x87b9c53f, 0x3942d5cb,
-       0xb064fc73, 0x0995ec57, 0x836749f0, 0xdcef788c, 0x9e08b920, 0xa83d986b,
-       0x3ca07482, 0x8569f813, 0x2d0fa0f5, 0x7cb75a6f, 0x5a01e83a, 0xf1eb6ca4,
-       0xda68e7ec, 0xaf58f5ba, 0x71bf00ed, 0x0938ed24, 0x08ed3fb2, 0x64dda1b3,
-       0x00cb8447, 0x3f7c6ff4, 0xa3b401ed, 0xce30ac18, 0x67df1df6, 0x3fb4df03,
-       0x79062864, 0xecca9ed5, 0xbf1a4b23, 0xe57266cf, 0x5b57a461, 0x37e99eb4,
-       0x99fdff0d, 0x06fae704, 0xf7d82b3a, 0xf9e38477, 0x30cdf2ad, 0xbff6c117,
-       0xfd30e41f, 0xd0a9f372, 0x61f20713, 0x19bc9904, 0x704517c6, 0x07db953e,
-       0xed3175ff, 0xa76ebcbf, 0x2fcd167e, 0x6ca7eb78, 0x37db0fd8, 0x4da67d33,
-       0x5dd2b847, 0xad1e68f2, 0x61c616d7, 0x056eefe7, 0x160db77d, 0x9e423747,
-       0xab70d98e, 0x4f0c14d3, 0x5e21a53f, 0xd13f10ae, 0xfbe47a31, 0x48fc7d7f,
-       0x2bf28236, 0x609465c2, 0x767e3fde, 0x0ec1e41c, 0x98a9f203, 0xc5da99ef,
-       0x6e5c7fa8, 0xfe62fdde, 0x4ae2f85d, 0xafb92de7, 0x7ff6de64, 0xe21f7a71,
-       0x5d7aa8fb, 0xe379f204, 0x8c6f08fd, 0xaf78e2b0, 0xfeabdf90, 0x337dd1af,
-       0xe5e47ba5, 0x7fc7fde7, 0xa68779f1, 0x9ce9befb, 0xc3b066ee, 0x13f5be55,
-       0xe56aef8e, 0x537fa6dc, 0xba7a17be, 0x3890befa, 0xf0a5a225, 0x744f0e70,
-       0xd2e79e4a, 0xc388f77d, 0xd2113a79, 0xdd475048, 0xcad38f27, 0x2a4b24c3,
-       0xde132828, 0x7a071dec, 0x8aa932cb, 0x4737eca8, 0x6476d3b7, 0x940c474d,
-       0x2d0e242b, 0x217217bb, 0x3c91df1e, 0x15f9d768, 0xb4852db1, 0x9a8ed482,
-       0x3bdd6902, 0x97b42547, 0x923f2184, 0x9e3df57a, 0x0d11f516, 0x1de8019d,
-       0xce2b00a5, 0xbe9f5a77, 0x8bc20722, 0xa293d8e9, 0x313f7f2f, 0xcfccd63a,
-       0x58bd1d7d, 0xc46fd33e, 0xfbe8727d, 0x66f8e55c, 0x4ba76699, 0xf36f41dd,
-       0x8c15c71b, 0x291e0093, 0x3ca6de9e, 0x7bfaa463, 0xd1d1dc12, 0x618fecf1,
-       0x72ef2df4, 0x141b63e2, 0xe694d01b, 0xa9563f7f, 0xec193627, 0xae0d5b24,
-       0xad4fd0b5, 0x1b4ddef2, 0xa1dbcecb, 0xef13d0f1, 0x421e0453, 0x3efaabf1,
-       0x1be80665, 0x667c6103, 0x74c6f8c5, 0x29631bb1, 0xf3d47a9c, 0xd5f1a495,
-       0xd75b942f, 0x60fa073d, 0x2b7fd33d, 0xf57bb386, 0xda326d8a, 0x0c1ada0f,
-       0xb18e892e, 0xde177eb8, 0x1b56b4c7, 0x9eb7dc09, 0xab48eba6, 0x55fe04bd,
-       0x371c0df3, 0xcd67075b, 0xea86a746, 0xee5896d5, 0xb24d908f, 0x3fd31e61,
-       0xcd31173c, 0x9ede7682, 0x5e76feb1, 0xab37fdef, 0xedcf9017, 0xedef54c0,
-       0xcce2f20a, 0x65ef04fd, 0x6d23b689, 0x1cbf9642, 0x23a3ce50, 0xa9e3d186,
-       0xb4167b68, 0xf294dcd7, 0x2857b414, 0x06e9ec37, 0xcec859f8, 0xc40c2359,
-       0x64e94619, 0x56b5ef90, 0xde95c9f9, 0x9cf196bf, 0xfbc2e9fd, 0xfa6567a2,
-       0x692dedda, 0x741eecec, 0xa5bf67f3, 0x988ef4ed, 0xd3daf78a, 0x93bcec0c,
-       0xbbb87f7e, 0x6f5f5d07, 0xf81189e9, 0xeabdd74b, 0x4e70ade0, 0xabad928a,
-       0x32b17f69, 0x217c0919, 0xce1b1bc6, 0xe7be23e6, 0x0246b0bd, 0x8fbe22f9,
-       0x7fd1d258, 0xb1f54d01, 0xf8c53f8c, 0xf4741446, 0xf0f932af, 0xe7e466de,
-       0xd716b319, 0xb4c3b093, 0xec0979c1, 0xeb0e7024, 0x3db7c84b, 0x5e1f786d,
-       0x20ec4611, 0xdb35bef7, 0x7ce146ba, 0xb66f782c, 0xb7acacd0, 0x04fcd3f0,
-       0xa0571f28, 0xe91787bc, 0xc76658ac, 0x4341fb29, 0xe2767e9c, 0x0f5bad32,
-       0x1fb281f6, 0x77e9c4f4, 0x9d05fc0f, 0x5cefd3b7, 0x4f4b4f7e, 0x22cc27b4,
-       0xcc27b456, 0x9c4e1e5a, 0x3aa2e77e, 0xbd350e3e, 0x56fa71cf, 0x96896944,
-       0x2242abce, 0xdb954bf6, 0x9f764ffe, 0x23ff1eaf, 0x70e36eb0, 0x779fb87e,
-       0xab5c1a34, 0x9dcb03d3, 0xb8f6618b, 0x3dc51bf4, 0xc5cf07bf, 0x25e5b70b,
-       0x8aed2090, 0x1b07e2b4, 0xa5e1f971, 0x7983d682, 0x9230fc56, 0x6f07fab8,
-       0x66f982cf, 0x81cede05, 0x5fe81a7c, 0x4df1163f, 0xb091c44f, 0x97a95e7e,
-       0xf13d8347, 0xd19abd95, 0x678c83ab, 0x9f679f03, 0xf5f22d38, 0x5b626e8d,
-       0xa29e8415, 0xdb347c5c, 0x459f0117, 0xa8788159, 0x074cf7cb, 0x2469b87e,
-       0xefeb05b1, 0xc42f9c2f, 0x19a2ebb8, 0x18762b7e, 0xdb405ed0, 0x011455ed,
-       0x71733ddf, 0x74959b3d, 0x8d863cfb, 0x4f36eea3, 0x76d3f41a, 0x083ff72b,
-       0xe173df41, 0xe018f68e, 0x30b449c3, 0xda4187e5, 0xb7ecc92a, 0xbe94ae3e,
-       0xd6ac3f15, 0x102bd3f9, 0xae74ebef, 0xc576befe, 0x22f3643d, 0xe6def519,
-       0x95fefc83, 0x62eee3db, 0x499a4cac, 0x97b02ed5, 0x68495734, 0x41dbbbc7,
-       0xdeba22c8, 0x14b87aef, 0x97d34ded, 0x8234bebe, 0xca907f7f, 0x0912bb8d,
-       0x77a699b9, 0x09da56cf, 0xb70596a6, 0x3f7839a7, 0xfa0748d3, 0xa85f4cf9,
-       0xfb702fb2, 0xe541e383, 0x17e02ff7, 0xc60fd72a, 0x0e43bb72, 0xbd7901c9,
-       0x3d39e960, 0xf8a109a8, 0xc3ca85ba, 0x8b905a9e, 0xab5b4c46, 0x157e98cd,
-       0xf604fb6b, 0x8eb1f3a5, 0xb6ee414f, 0x52e4c87f, 0x4c73cae7, 0x418f2f9e,
-       0x2ef2c73b, 0xd78dff6c, 0xd3ea3b58, 0x3e3efe41, 0x8fc51c71, 0xeb5a2fe1,
-       0x9b878a12, 0xc0d3353c, 0x35e84525, 0x905aac8f, 0x127e8b11, 0xefc041d6,
-       0x32deafb1, 0x7133ec1a, 0x00db86af, 0x5cf22b7f, 0x62b18f78, 0xe7f41771,
-       0x0fcdd232, 0x0d8f7ae4, 0x3fb81a79, 0xb16ea1bd, 0xd76d1ba6, 0x0dd3b0dc,
-       0x35cb0efe, 0x6b3da0df, 0xf984cdf9, 0x287ef17f, 0x6919fb3e, 0x4c13f13b,
-       0x171d2f78, 0x50d44aee, 0xbd46ee38, 0x17ea0975, 0xe0a95f4c, 0x2c976834,
-       0x7e0a1c7f, 0x8264fb64, 0x16b13e7e, 0x087daf94, 0x0b92bfb3, 0x0f945f14,
-       0x8fc40c60, 0x2dab5aef, 0x92fc9f68, 0xd0fb29db, 0xce8ea1f3, 0x4f8a2be7,
-       0x6a1ecb80, 0xebe3051a, 0xabac48d8, 0xb7d89169, 0x912df292, 0xea337780,
-       0x13aba7bb, 0x16e31531, 0x6bd947fb, 0x3f41a36b, 0x9999229e, 0x43d7095f,
-       0x10121f05, 0x4c9e1456, 0x8bbf9c98, 0xa8539feb, 0xe3a30dd8, 0xd35887bd,
-       0x46dddea0, 0xf8a1a912, 0x3b50529f, 0x5299f710, 0xe7ec145d, 0xe30542a0,
-       0x8bfa5087, 0x72ea2758, 0x81af41a7, 0xc98db8f5, 0x11758a83, 0x6bbbb44e,
-       0xecffb03a, 0x7b1ebe38, 0xd22e3f31, 0xfd60d893, 0xbde8ec54, 0xa062e80a,
-       0xa5e303fc, 0x9b98ca72, 0xd19cfa83, 0x7f3fe748, 0x8a5b987b, 0xd9a7a3f4,
-       0xfa034fd6, 0x1c9484fc, 0x4a3a97f4, 0xd80447e5, 0xb8693c71, 0xeb47419e,
-       0x7d5cc306, 0x54ebdc1b, 0xfb30dc50, 0xee0ccbce, 0x2d6761c6, 0x7978d383,
-       0x777066e2, 0xdbddff51, 0xc743fec0, 0x621fcbcb, 0x1f011f70, 0x45b3e566,
-       0xce0c63f9, 0x1927f911, 0x7fb4483c, 0x1843c18a, 0xd3c9fc7c, 0x0f4139b7,
-       0x8ffae289, 0xaee783d5, 0x6b7b378a, 0xde96fdfc, 0xf3726389, 0x772b1874,
-       0x98cc9d3a, 0x08cbf400, 0x5e55fe5e, 0x02c5e85e, 0x493ea27f, 0x266f5e0c,
-       0x80bf37af, 0x64e129eb, 0x5bf31879, 0xba524675, 0xbde86eee, 0xc617ca1a,
-       0xd03a7345, 0xdaf80676, 0xed11f411, 0x244b7e89, 0xe9b497a6, 0xbbd89d98,
-       0xfdb1c66f, 0x30f3f684, 0xd293d3f6, 0x909bda15, 0x81f80fd2, 0xf39681f2,
-       0x80f81681, 0x7c6c5590, 0xc028ddb4, 0x3fa3b9b9, 0xbeedbff8, 0xfba7cb40,
-       0xcbe6adc6, 0xcddf3807, 0x81cec25f, 0x703d511d, 0xce1118bf, 0x403244f4,
-       0x380f8f39, 0x8b89de1e, 0xd2f4f362, 0x7ec24125, 0xa63c7096, 0xc84d7a78,
-       0xff79faba, 0x97e78f9e, 0xbd1fb79e, 0xd7e4326c, 0xcd9ab0df, 0xd60bd187,
-       0x85ea3447, 0x3bda2b8f, 0x3f5558bd, 0x98702e97, 0xac0f746f, 0x311848ff,
-       0xdab277e2, 0x9b3d2f5b, 0xc7a0abe9, 0x27ca2f96, 0x74ff6127, 0x85f78cde,
-       0x952a5c65, 0xe3d26f2f, 0x64ad6bfd, 0xef3cbf43, 0xe00ec73c, 0x79f334f3,
-       0x5d3cd99a, 0x87257e0a, 0x88eed23a, 0x2f63e408, 0x65edbdfe, 0x14f6f0e6,
-       0x7b582372, 0xd1422720, 0xd34bfdc5, 0x85538c45, 0x559e2f4f, 0x84f813e3,
-       0x32f58df5, 0xc6297c95, 0xf5a87af9, 0xfb33fe9d, 0xcaf563cb, 0x08e9437f,
-       0xc945a7fa, 0xe975e5d7, 0x7d327b9a, 0xae8036f5, 0xf3f3e717, 0xfdc71939,
-       0x0a485286, 0x7cce0fec, 0xfec37562, 0xfb80d9b9, 0xfd92e7fe, 0x505c5c54,
-       0xaefc20ff, 0x47b6173e, 0x1bec09e9, 0x7b40fb6a, 0x06c9b59c, 0x0967e5f7,
-       0x550edffa, 0x6fc033d9, 0x57c9b373, 0x295fb7cf, 0x4cf111e1, 0xc3b40cbf,
-       0xe68a7dd0, 0xb868300f, 0x018dd73c, 0x5c203d79, 0xf0d57705, 0xe0c8c4fd,
-       0x293b0e04, 0x2034f14c, 0x3187e459, 0x3f513af8, 0x51bf958c, 0x5f70e794,
-       0xa208fe55, 0xfdb28784, 0xb0a9e624, 0x20ff7031, 0x78d8a0f4, 0x2e43ce0b,
-       0x4be010d0, 0x80d53803, 0xc196f5be, 0xa08d7a05, 0xce94a853, 0x3dd82ab3,
-       0xf0bc6a7e, 0x977e6033, 0xbb40f2e8, 0x047615ca, 0x4761568f, 0x3a348f68,
-       0xc768aee5, 0xadf605eb, 0xf747788c, 0x32bf5a78, 0x3a7a75bc, 0xff0a1f85,
-       0x256cfd0c, 0x258fd31b, 0xa54c998b, 0x575a95e3, 0x23df41d8, 0x16a35625,
-       0x4aedc4e9, 0xe94bf770, 0xcbc77db1, 0x6eb3240f, 0xc18e30ec, 0xee54ae5c,
-       0xe3bbf1f8, 0x369fffb0, 0x7dfae159, 0xf7b3c370, 0xb838be81, 0x4c8fff61,
-       0x5fa1304f, 0x60f718ac, 0xdfa29bf0, 0x380deb73, 0x370dc1fe, 0x43f281cc,
-       0x01e86a3f, 0x84fc377c, 0x9988097b, 0x9237c6f6, 0xb91f281d, 0x25392c9f,
-       0xd5c19c41, 0x7c5e45ea, 0x7e8f43fc, 0x231f141e, 0xcc2e3e19, 0xc5b4fc05,
-       0x41e65c1d, 0x8b0a62a3, 0xe9f5e067, 0xb9fd03b9, 0x2b17493b, 0x23db5dd8,
-       0x3b6a3b58, 0x3a22d1e4, 0x787dfa3f, 0x9f811d07, 0x07e23fde, 0x3e4c1523,
-       0x29448f38, 0x926302e0, 0x39a17ca2, 0x4b7f915d, 0xfc8a0de2, 0x14fd2d5b,
-       0xc18c98f0, 0x5bb7f28a, 0xf8f014f3, 0xe5155bdc, 0x0a456c8b, 0x56bb9fb8,
-       0xdeffbe51, 0x21fe657a, 0x721d0322, 0x41775a8e, 0x1b4bf03a, 0xb507359a,
-       0x7482ed54, 0x1d0cb7f0, 0x90ec3b6a, 0xc1776a1f, 0x15876177, 0xce30f0fa,
-       0x3b2ec22f, 0xf4b93649, 0x89afedc1, 0x959e9a5a, 0x649f283c, 0xafed1d8d,
-       0x078e61c9, 0x473d29e2, 0x2814aa91, 0xb0ec0237, 0x33850894, 0xfc01fece,
-       0x32a73aad, 0x2051dc7b, 0xbbbbc80c, 0x788ed022, 0xf1b55754, 0xce43ea38,
-       0xc3a39054, 0xe62b263b, 0x8707e23d, 0x6479de62, 0xf74e8abe, 0xf342e02a,
-       0x6fe5146f, 0xc8ac5c49, 0xa8f2d5bf, 0x2b8f4e8a, 0xcfaddbe0, 0x4ab4e8aa,
-       0x1597a745, 0x1bbf82f9, 0x076c7db8, 0x3a68b5d8, 0x0054d3cc, 0xa5b9b874,
-       0xdb91e903, 0x74005354, 0x16b4721a, 0x6dc035e9, 0x3bf1002f, 0x2ed56f68,
-       0x5cf4dd48, 0x4efef503, 0xee9035cf, 0xb023e7a6, 0xcea9ed8f, 0xb56f74c0,
-       0x5bbfbf15, 0x7be98b9d, 0x3f4c36d5, 0x698d1ea8, 0xd31db553, 0x2c5aeada,
-       0x9ebab9bf, 0xf862d7d9, 0x0bf1473e, 0x38368c76, 0x9cbca253, 0x0db2f28a,
-       0x5f2850ce, 0x177066ef, 0x0c29930e, 0xebe5648e, 0xf2829a9f, 0x8cf83f74,
-       0x30bf81c4, 0xd824cf4b, 0xdd3409ec, 0x8186e70b, 0x5a89b8be, 0xe4a7688d,
-       0xb1eb9031, 0x525fbc31, 0x4296c632, 0x5ec5d2c8, 0xc18431f8, 0x2307eb28,
-       0x1bc1f8b3, 0xe21b6b61, 0xc61edfab, 0x97c6f7f2, 0x4173818c, 0xf330fae9,
-       0x29747e97, 0xc0528daf, 0xe649f595, 0x88e8fd2f, 0x7654c97e, 0xe5091492,
-       0x36c3d09f, 0x20438e48, 0x1e8dca7f, 0x1aa627f4, 0x6c2bfa30, 0x8044b16c,
-       0x85e0ea5d, 0xcf8011de, 0x672edc83, 0x3374fd23, 0xeda79a69, 0xff7d83a7,
-       0x124f4aa8, 0xef2941e9, 0x56b76853, 0xf413bd63, 0x3a6de724, 0x413ffc02,
-       0x51007662, 0xa604ddee, 0x6edfb4af, 0x21e0f3c0, 0xc60e6d8d, 0x9f024811,
-       0x149f718b, 0x11c2f7f3, 0x7489df22, 0xf9128f6b, 0xe5538e1c, 0x1d60a927,
-       0x5f19df2b, 0x05fe748d, 0x904ff9f1, 0xca7c6a0b, 0x97a66609, 0xa0a96db9,
-       0x50f808c7, 0xe41cad91, 0xdb3ca1c7, 0x83ef30f5, 0x17930376, 0xf5d708f6,
-       0x0db33768, 0xfecfd3bc, 0xc3a09d55, 0x1f00777a, 0xddc4fdc3, 0x3515ca32,
-       0x604a5ffe, 0x15f22afa, 0x0aefbb9c, 0x21cd73c7, 0x1cde290d, 0x387b5e84,
-       0x0974ce1d, 0x277df76e, 0xf9fbed81, 0x6e37cb13, 0x85cf7b81, 0xbb74d861,
-       0x93ea37bd, 0xf31255ed, 0x3aa96903, 0x560df2cb, 0x33f4128e, 0xd1bf029f,
-       0xf70d8dfc, 0xcb4c3f9d, 0xdc30b67f, 0xb9967b8a, 0x6eefe20f, 0x8c5a785e,
-       0x69bff511, 0x61f35213, 0xfdc29e1f, 0x6847a79a, 0x59bdd1e3, 0xd337a51b,
-       0xfa9b6676, 0x2418a32d, 0xf48b6373, 0x4e2e1451, 0xa41977b9, 0xd71f3d25,
-       0x595dd5c3, 0x40cb6be6, 0x22a72f0d, 0x5bca2063, 0x74d5fbcf, 0xc916335c,
-       0xe51e7616, 0xf4adb8fb, 0x045de2aa, 0xf1e21fbf, 0x78091447, 0xf1cbdede,
-       0xe5edea2d, 0xe0482af8, 0x245922f7, 0xb8aca2eb, 0x0125b8f7, 0xbda63dee,
-       0xbdc42bdf, 0xeb9f3288, 0x59eb1fbf, 0x75eba5bf, 0xb9104f2e, 0x9d812fbc,
-       0x89e90f9b, 0x9d55ee0d, 0x277db377, 0x87b9f27b, 0x67f9d206, 0xe8359837,
-       0x7ca33457, 0xb3a1d00b, 0x4751d39e, 0x4dfd61ea, 0xecfcce74, 0x96261230,
-       0x5e1fc7f8, 0x36b67f6e, 0xf7fc0b99, 0x7b1e01e7, 0x9cfeff81, 0x005351db,
-       0x8fd8b0fb, 0xbba83dc5, 0x03ef98ba, 0x77bf2855, 0x78422f57, 0xd313b54f,
-       0xf9cbd5bd, 0xf983503e, 0xc33f55ef, 0xdf1701f7, 0xf7e3d607, 0x98c9ea86,
-       0x6076a8ee, 0xbd8ba63a, 0x1df4e402, 0x47c60746, 0x81acfdbe, 0x675e7dc0,
-       0x47e30183, 0xf1788ae8, 0x538858b9, 0x58579832, 0xd495e302, 0x1f978afb,
-       0xb3fb7e54, 0x0b7ed8bb, 0x99e378fd, 0x2ebd3f40, 0x241d3f34, 0xdf390e5c,
-       0xd0743945, 0x07d6e42c, 0x7808b60c, 0xa2ad833f, 0xf72807fc, 0xbe78da0e,
-       0xed833f73, 0x601c9f3c, 0xefc043b0, 0x944ab831, 0x73dac03f, 0x063df80a,
-       0x4df288d7, 0x7831760c, 0xa21fd3ed, 0xd223cc5c, 0x056f586e, 0x2091f4c6,
-       0x79cd0b62, 0xdd9d61bb, 0x24733892, 0x826333ac, 0x56fcf905, 0x00dde2cb,
-       0xa558c98f, 0xcdba1305, 0xa861efd4, 0xa45b1f97, 0x53237a85, 0xea187dee,
-       0xb8f9ea8d, 0xe8debfd6, 0x061ed7cc, 0x9575ac78, 0x236bf416, 0xbe81c5c8,
-       0xf22c0476, 0xe2213ec5, 0xd836faf0, 0xaeca3f71, 0x247ee3b7, 0x477f9cf0,
-       0x9c3352d1, 0xb325ea03, 0x43b8e304, 0x404f06f2, 0x05c5630c, 0x1e291aba,
-       0xe13c12ea, 0x2b3ce98b, 0xf0821e01, 0xd97f8b63, 0x109dd5fd, 0xc2383f64,
-       0x2be807e5, 0x23ffb445, 0x3f835d74, 0x4bc70442, 0x88ccc365, 0x755e7899,
-       0x189e8044, 0x0490f5c3, 0x2dfe6948, 0xbfcb1d3c, 0xef6c941f, 0x30f8bc82,
-       0x03b79f81, 0x1861cde5, 0x73279507, 0xe40238d9, 0xcb9f328d, 0xdf62239b,
-       0xb2e2c01a, 0x8b0d49cb, 0x7c4cbee7, 0xb8dc405f, 0x84a71e2a, 0xa5b1eed4,
-       0x6f178b07, 0x2e2f1a0a, 0xfd031bfc, 0xb0b9f96d, 0x93cf930b, 0xc3d17641,
-       0xb9686760, 0xab971dfb, 0xcca0f0a1, 0xe0e285ff, 0xf90e2389, 0xbc3c5423,
-       0xf9c08be0, 0xb6f3b0d5, 0xea9fe196, 0x81c4c69f, 0x8823bf20, 0x6794ab1c,
-       0xcf212f87, 0x97f1f2d4, 0x6693bb92, 0xfdc1a794, 0x98b91043, 0xcb54e30a,
-       0xc93e6745, 0x7505fb80, 0x0a68f42a, 0xd3de213b, 0xed0c23b9, 0x8e31f514,
-       0x0fd0448c, 0x83be3bf3, 0xeb122d78, 0x371c3c41, 0xf6846e39, 0xbff33d25,
-       0x2dcdf110, 0x753f7d5e, 0x7923c62c, 0xfb0a7bf5, 0x9efdf7e9, 0xf20b1d49,
-       0xdec9bbad, 0x1921da1f, 0xc85d1fcc, 0xbef1508f, 0x3ed91343, 0xff92981f,
-       0x8e5838b7, 0xae7a369f, 0xf4e74dda, 0x62bf86ce, 0x57d9ccdc, 0x56c1c79a,
-       0x265dba5c, 0xb68f8a46, 0x0dc4110d, 0xe52d1be7, 0xd4969a3f, 0x2b8c36c9,
-       0x4d07bad2, 0x5bd7f08c, 0xe974ff98, 0xcadc08a6, 0x5c1b364b, 0x92fd6963,
-       0xd1b327ad, 0x0ea1f5af, 0xbe730fbc, 0x22d75922, 0x13d93cfa, 0x1b594fc1,
-       0x353e4edc, 0xad87e991, 0x8327c2db, 0xbf5a56bd, 0x25deed13, 0x707493b5,
-       0x4dca2a0f, 0x3e21d44c, 0xa7b43968, 0xb8965f3b, 0xe41eeb1e, 0xfc2caf7f,
-       0x665f5bb7, 0x7a92a976, 0xc60c2b9d, 0x36b5feb7, 0x3929c788, 0x4dfb406a,
-       0xf46ffae5, 0x4d82c740, 0x1f01231b, 0xd932f595, 0x550fbcad, 0x97ac41c6,
-       0xe3f006dd, 0x7f472baf, 0x23370a6e, 0x1e3c1b5c, 0xfafe72e8, 0xb71a9ba5,
-       0x4b0a293a, 0x12297f5f, 0x374e29e2, 0xbc048dad, 0x192f76d3, 0xf7101487,
-       0x25e8fb50, 0x134e1ee3, 0x134b03c6, 0xeb237155, 0xcb71b863, 0x3fdfc83d,
-       0x274787c9, 0xf3c6f3a3, 0x5e5c422f, 0x2f33e6eb, 0xfecb78c2, 0xf045ee79,
-       0xc23b26cf, 0xad0f60cc, 0xc630e57c, 0x7f7a8935, 0x627a6449, 0xe12fcbdb,
-       0x31db6a3d, 0x35b7afa6, 0x6dbe429e, 0x78c7ed7b, 0xd85af388, 0x0efe8858,
-       0x2414b70b, 0x02e72090, 0xbadf0291, 0x4d1e20ae, 0x755daf4d, 0xfc8fd0bb,
-       0xe837a52c, 0x9638dea1, 0x171672da, 0x2bf1e164, 0xfdc7821b, 0xd4abc405,
-       0x1c3f1c4d, 0x3a75e2ec, 0x415c85ab, 0x4a21cadc, 0x4057bec7, 0x728f0dbf,
-       0xf4e0fe7f, 0x50bf0b3b, 0x2a26353a, 0xd7ce56e3, 0x9fcbf9cd, 0x262eaf21,
-       0xfb8adc64, 0xe226f00a, 0xda24570a, 0x6c3c82f6, 0xc62afcdd, 0xc6dd0109,
-       0x6db689d2, 0xf1069f3c, 0x8eba2d98, 0xc1efdce9, 0x25acf70c, 0xfd70478d,
-       0x10f96db4, 0x8f08f6e3, 0xde236bef, 0x258f161f, 0x89ae79f1, 0x1c2ef160,
-       0x030f10ff, 0x3bf4d0f7, 0x7c617b8f, 0x4261e22c, 0x4c5cc1c5, 0x2df6ceec,
-       0xbe58ef1e, 0x2b8f38e6, 0xca4bd1f1, 0x5f353a05, 0xe048be32, 0xb8780cc1,
-       0x2bae3fc9, 0x3791bc78, 0x0bd38ffe, 0x5cf107e8, 0x0a2db8de, 0x3a58430f,
-       0x83c88242, 0x1e2c55b6, 0xe3ff7d4c, 0x3843cfa3, 0xd152ffaf, 0xf433cc59,
-       0xd3ad9239, 0x6aff8dcb, 0xd12673f1, 0x127388a2, 0x10bd6a78, 0x26a78e5c,
-       0x67eafdb1, 0x00b6b7eb, 0x092536fd, 0x66badbf4, 0xe62b7e85, 0x05754adb,
-       0xafadef90, 0x960c77b0, 0x3942eed5, 0x141796ae, 0xf760b62f, 0x98937d0d,
-       0x67a8aa9c, 0xe6eb44fb, 0xb6899708, 0x6df7fad3, 0x1b15cfc8, 0x8fb0f59a,
-       0xbaff59ef, 0xb317f99e, 0x84fb03f5, 0xadfc6fcb, 0x8d99db7f, 0x09fa1b72,
-       0xbce1d742, 0xe086ca9f, 0xf86e54fd, 0xa94fd146, 0xfccf56b3, 0xdfdd2e8d,
-       0x126dad69, 0x49ba77b4, 0x7269a607, 0x6df996ba, 0x24b7fba9, 0x4abdf8e9,
-       0xa8f7d70d, 0xc83f47bc, 0x9c271e61, 0x51c3735b, 0xc5e6b63e, 0x35a45da3,
-       0x6965af55, 0x7fff842f, 0x935bfbdb, 0xbfac8d72, 0x371f1851, 0xd6e8c62e,
-       0x8073f5d0, 0xaf513fbf, 0x00fff677, 0x8707cfee, 0x78e3dfa1, 0x4dbefcc9,
-       0x6827bc0a, 0xdf3537dd, 0x5f781d92, 0x91912ad0, 0x65279512, 0xf0a59acd,
-       0x0fef6aed, 0x477d16ca, 0xa19d1de0, 0x78102e8b, 0xefeae7df, 0xb3a29a13,
-       0x70b7602d, 0xfa6d812c, 0x829ad6a6, 0x597216ae, 0x0edcef3f, 0x67b012d7,
-       0xdec0b88c, 0xba4a18b7, 0x4daae158, 0xfccfddca, 0xbeaa79be, 0x31ae9877,
-       0x83ddf4b9, 0xe7909fbc, 0xdc82481e, 0x867b8837, 0x8ac730e4, 0xf71081a4,
-       0xc01beecf, 0xe4f915f3, 0x3fa6c7b7, 0x3081e780, 0xe71573f4, 0x27f58d99,
-       0x9fac60e3, 0xb93dc537, 0x34af7e9d, 0x79f8877f, 0x8f9f8932, 0xf28ac4ac,
-       0xf50f7e4b, 0xfb25cff8, 0xfb8a49b3, 0x08b9ef58, 0x63efabbf, 0x8cee7f85,
-       0xec276597, 0x0dbf85a3, 0xc608781b, 0x03961751, 0xc31fd8e3, 0x980641fd,
-       0xf1401f6f, 0xf5cb7673, 0x5b3fe039, 0x9eefb5e4, 0x88bcbd47, 0x338963db,
-       0xafd876f3, 0xd7bd848a, 0xdcf961e9, 0xd9febbde, 0x3ac3b7de, 0xa1c1fe14,
-       0xa2c56de4, 0x421f9137, 0xda12cbe6, 0xa6e4c939, 0xbd3f22b4, 0x072e4df9,
-       0x397efdc4, 0xa78b0bf7, 0xf68dc8d3, 0xbc5791f9, 0xba46e611, 0xcec4d97e,
-       0xe976dbc5, 0x09af1d99, 0xa78f21cf, 0x7c02de3a, 0x81da2c55, 0x762626f8,
-       0x6c96396e, 0x1d31fee6, 0x0eae5099, 0x6eb027ce, 0x7da184b6, 0xd1eb4136,
-       0x2ab8e95b, 0x8bf4128e, 0x33c7c638, 0xd40be9a8, 0x70e6bff7, 0x37e67ad7,
-       0xd7c3c6a1, 0xf1aa1149, 0xc60c37bf, 0x2231f02f, 0xfdc2d49c, 0x958f9d30,
-       0x98aac7cf, 0x814fd78f, 0x6ff74bd6, 0xebf0a2d7, 0x5b2af312, 0xdffc49d4,
-       0x1c5d6ad3, 0xe311df7c, 0x97dbdf56, 0x840f7698, 0x2ae4a37d, 0x02a7fafd,
-       0x3e01c46f, 0x871eaa59, 0x7ee32d3a, 0x17efea1d, 0xf67dc492, 0x7fae3b2f,
-       0x69bd7bb7, 0xf9153b55, 0xbbed1633, 0x713f7ba2, 0x75bff71f, 0xdeea17ff,
-       0xf66ec1ef, 0x8e946ecc, 0x29fcdfe3, 0x9df108f3, 0x1105eddb, 0xbe51c718,
-       0xc8156135, 0x7e470fe5, 0xc2f60f14, 0xf71231fd, 0x1cb4bde7, 0xf7bb52b9,
-       0x717bd567, 0x393f625c, 0x5846ed51, 0x3a9f076d, 0xa7bc31e2, 0xdb2dfc1e,
-       0xb05e8637, 0xf2c9b91d, 0xc231edf3, 0x32ec230e, 0xd4cf3b6a, 0xefe4666e,
-       0xec29bfe9, 0x9417fcca, 0xac472e7c, 0xffdc83d1, 0x17ee7cb9, 0xd65d3347,
-       0xe2877b40, 0xce89bda1, 0xb0475ee6, 0xc23de51d, 0x7b8e2e98, 0x73134e80,
-       0x88863f99, 0x5b942a5b, 0x7a049c9f, 0xfb8c934e, 0x7ddfc2d7, 0x2ce7b7f4,
-       0x34a8f481, 0x131ca277, 0x5eeb1774, 0x86a543f0, 0x14e7b1f9, 0x097fd058,
-       0x57d811e4, 0x0d34746b, 0x299ee742, 0x3c600bf9, 0x0e3afded, 0x8abf024f,
-       0x669dff2d, 0x09aebd41, 0xb39779cf, 0xbffd80df, 0xd73b105b, 0xe8393cb2,
-       0x298977fb, 0x6aceff4c, 0xbbfbb0d6, 0x7aeb92f9, 0x347973b0, 0x39acaa88,
-       0xe0192ee9, 0x559f963a, 0x2892e51e, 0x8c38359c, 0x851bdfe5, 0x88d3df71,
-       0xf3fb0747, 0xa60af00c, 0xc1624ce9, 0xf1b11674, 0xba3ae5f7, 0x9cfeb44b,
-       0x83f32306, 0x309e9e25, 0xfa10ec9f, 0xcc6eceef, 0x3bb7d3be, 0xf37ddf93,
-       0x19fc7295, 0x726eff9e, 0xef9849fe, 0x67b66ee9, 0xdd1bed21, 0x704fe2b4,
-       0x21a2dcde, 0x1a9df7a0, 0x9bb41bfc, 0x24df7a8a, 0x8dd8bfe7, 0x3124dbd6,
-       0x23674aff, 0x1d22a78f, 0xb6f6fef1, 0xd60b93d7, 0x02af7b40, 0xae3c815f,
-       0x29be462d, 0x935c3332, 0x457cec91, 0xca5da5eb, 0xf857d20e, 0x5c87c2f7,
-       0x86e117ec, 0xfdba4f3f, 0xbeef3a61, 0x073dfa1a, 0x02d8e5c6, 0xf74beae3,
-       0xff8c1373, 0x40a71e05, 0xdee0d2aa, 0x068bde6c, 0xc79bec0d, 0xbf03bca8,
-       0xa7e0e3eb, 0xb94fd34d, 0xdce7f63f, 0xfc19bb1f, 0x927a69ba, 0xe7482dca,
-       0x842560fc, 0x64c8e7f2, 0x95f2235b, 0x883bf82e, 0x21e726ef, 0xb4ebb31e,
-       0xd7678fb8, 0xfae7227b, 0x377f65d1, 0xb59a1f16, 0x5848cbe5, 0xef666d4f,
-       0xed126cbc, 0x73b71c6a, 0x0736efee, 0xb26ef5e7, 0xe7cc24ed, 0x01c764f5,
-       0xa3feb76c, 0x753f04ff, 0x7fde3eda, 0x4f1d4bb4, 0xf102950d, 0xa37f9dea,
-       0xe39fcd9e, 0xd3545379, 0x69bfa80a, 0x2cc0774b, 0x2c7ee2c9, 0x0527e804,
-       0xe7b33fc3, 0x0c74378d, 0xf8d17380, 0xff50728b, 0x3fef3131, 0xf38b3a0a,
-       0x286ba70e, 0xcf9287ba, 0x80cc78de, 0x442e1377, 0xe22f5c82, 0xbafa9376,
-       0x6fd0079e, 0xe04caf7f, 0x27ca23dd, 0x498efe0a, 0x48807a66, 0xf8f51ab3,
-       0xc6a6cf5e, 0x36ce7aaf, 0xce7a1d21, 0xe4e5e5a1, 0x507a15eb, 0xff1fe0d6,
-       0x2c58a7fc, 0x92412f0f, 0x42aac8bb, 0x629af7b8, 0x4c36f9dc, 0xb9b99a61,
-       0x66bdee10, 0x207b4a24, 0x1f49699d, 0xe25df705, 0x232b38dc, 0xecb00f6f,
-       0xca116b58, 0xc4583ce1, 0x814bfb7e, 0x1eee1c31, 0x39a170bc, 0x92df0146,
-       0x7f28ac98, 0x2287a5ab, 0x8dc64c7f, 0x9faf7c8a, 0xefbfb5bc, 0x47c0777b,
-       0xc3b07747, 0x9ca079d3, 0xb4656b21, 0x396d66db, 0x148ddb74, 0x4eeeb71e,
-       0x9b036c2b, 0xcdb8fe78, 0x4fd82e05, 0xb00a5de1, 0x3ee4b463, 0xa09fd4fa,
-       0x5f7b2d31, 0x74611e63, 0xebfc6b28, 0x799b6028, 0x3da1e6c3, 0x8c9de036,
-       0xd5dfc135, 0x52c1f610, 0x65e9ecc2, 0xbbf6d41b, 0x550ecc95, 0xe54faca7,
-       0x3c827fd1, 0x0ef5bbea, 0x6e97f833, 0x3763fc1a, 0x64d6e790, 0x284bbc65,
-       0xbff2f17e, 0x1fe03964, 0x17e6a1e7, 0xe9120761, 0x6e2c83b8, 0xc5e56ae1,
-       0xf85e403f, 0xe57917c5, 0x31fb9e98, 0xc41278f1, 0x3f1f0f47, 0x628e4b4f,
-       0x5aaf67e5, 0xd0b8ef0a, 0x13c4277c, 0x4b9db291, 0x85efaec1, 0xf32b3617,
-       0x2996941f, 0x95d387e0, 0x65bccaf0, 0xad43f5fe, 0x66fa8abb, 0xefca83bd,
-       0x39d8278a, 0x639f7024, 0x992ee8eb, 0x6fdb0554, 0x4a31fe44, 0x7853f40b,
-       0xc70bed83, 0xfef47aba, 0xc96527fe, 0xbb3b4f4c, 0x7ddff1ed, 0x6de27607,
-       0xce46fd04, 0x5cfb3146, 0x8d29dd76, 0x177ae406, 0xb36caf86, 0xec7e0347,
-       0x4ee1c5ed, 0x9cac83f0, 0x24fe811f, 0x866ce17d, 0xbfedc9e7, 0x7843d1b7,
-       0xbf09efe5, 0x03ff0f57, 0xd13f379c, 0x46fb1468, 0xff9589bb, 0x6cede48f,
-       0xeb67c8df, 0x83d03a63, 0x974261cb, 0xe252e566, 0xeeb0cb95, 0xbf003e60,
-       0xf78edcf6, 0xd37b009f, 0x5a3eb63e, 0x29e3fb89, 0x4cd8bfb8, 0x95a3ebfe,
-       0x7e77b2d4, 0x427dec2d, 0x7218bf71, 0xd1aeecbd, 0xbf8dfbc3, 0x2279baf4,
-       0x843bdf99, 0xc7071f5e, 0xdca93e50, 0x3b1afcc6, 0x4aefae1b, 0x804bd6fc,
-       0x068cf69e, 0x6dc05af9, 0x3bfdfc0d, 0xd8a17c55, 0x17b58837, 0xf78b13fa,
-       0x3ae80f3e, 0x541fa026, 0xc6fd16a3, 0x092ce816, 0x6fea9751, 0xfc5886b9,
-       0x68dbebfa, 0xe62df940, 0x73666ed1, 0x3e78dbed, 0x8171de1a, 0xc3ea3174,
-       0x87fd8a35, 0x58ba73ee, 0xec455810, 0x6370ec5e, 0xe1d03e42, 0x199c44b0,
-       0x309a9839, 0x35fb9bce, 0x27fc244d, 0xffeb4331, 0x6fd0b6ae, 0xf3bc6cef,
-       0x3e87d07a, 0xcee7bbae, 0x24fbf401, 0xe29b9778, 0xfb7740f7, 0x81df9834,
-       0x73f4255f, 0xfa91fc2a, 0x77f7acfc, 0xf307e50b, 0x65dd80c6, 0xfe83312a,
-       0xfa665e3c, 0xad8b7916, 0x2a37212b, 0xe868a6a5, 0x09e4f5ff, 0xbce99287,
-       0x01fd1613, 0x3df569f5, 0x5bea95f3, 0x26b0f285, 0xebede81b, 0x6e7f1625,
-       0x31577c65, 0x9393ccec, 0x7d508e40, 0xf28ff41e, 0x1ef89dfa, 0xe6dcfa81,
-       0xe7d5abd5, 0xf38dabef, 0xedcbd00f, 0x7071c96d, 0x7877388e, 0xcfd40912,
-       0xcd56f27d, 0x021f5477, 0xdc36b479, 0xa6aef8c5, 0x6fce94ad, 0xb364dac1,
-       0xf6e78a13, 0xa2d6f162, 0xdba7f0fc, 0xcbf3437e, 0x83370a5e, 0x9d30bdda,
-       0x818de138, 0xa37aab85, 0xdeafbbbd, 0xd006eaf2, 0xa1d65eaf, 0xe06bf45d,
-       0xbd7f0a1d, 0xd81706f9, 0x2c69e783, 0x8cf7847f, 0xf9193ac9, 0x060bd4ed,
-       0x1fe75fdc, 0x2bfb81e9, 0xa50b23ac, 0x4254a9cf, 0xfcdeb4cc, 0x5db193d7,
-       0xaf7625f9, 0x02537f3b, 0xfa0aa1c6, 0x8610bcb6, 0xd9c591f1, 0xf4dcbdb5,
-       0x47449edb, 0xbc1c4a54, 0x975ae7ff, 0xf054f144, 0xc01f4fd2, 0x537f36be,
-       0x47cbd21c, 0x61fbe0e7, 0xb60f4367, 0x84be39ce, 0xef05fedc, 0x0653120f,
-       0x87895f82, 0xeece77bf, 0x7db8720f, 0xd977cd4e, 0x7e32ffbc, 0xd840c3ce,
-       0x67cff058, 0xdca24cf1, 0x628d14a8, 0x4f942d3f, 0x3e076c54, 0xf9e037ad,
-       0xb82c35b2, 0x0a486a9d, 0x8c2b57db, 0x49ec2adf, 0x507e8b15, 0x322b13d8,
-       0xe7bbde09, 0xbff4b12c, 0x71f7a697, 0xd9c4a7fc, 0x4a7cc387, 0xfadf1f6a,
-       0xf9f1e21e, 0x7e813ffb, 0x3bd89af7, 0x7c31ef6f, 0x6f02ff0b, 0xbe0ec67b,
-       0xf429570e, 0x476db6cb, 0x7f781db2, 0x382bfc77, 0x3c6d9f0f, 0x25a654f2,
-       0xc7cc7ec8, 0x658cec2b, 0x60fede30, 0x4b8db487, 0xb473b3f1, 0x5efc1d7f,
-       0xeeaff44b, 0x53646cf7, 0xb6dbbc36, 0x07698200, 0x46cff2fa, 0x3ec36537,
-       0x4437fc2b, 0x14cccedc, 0x4a947fee, 0xfbc44352, 0x0b8949cc, 0xdf83ef1a,
-       0xe7de3aaf, 0x19f78b3c, 0x7de333fe, 0x0c9f393a, 0xef1e0988, 0x5fcf04f2,
-       0x43d96a42, 0x43ee5c72, 0x077f0dd8, 0x67bc5658, 0x8899e5c9, 0xc0da18f3,
-       0xb943ffec, 0x6364ab1f, 0x88432e71, 0x7aa7b59b, 0xe5640597, 0x89119054,
-       0x113ae237, 0xc606fdef, 0x7be13425, 0x0e9337cd, 0xacc46d4c, 0x1ba29485,
-       0x8ec491d3, 0x855228e9, 0x835268e9, 0x16a46de9, 0x09a4b1d3, 0x8dc7d253,
-       0xff78c7ef, 0xf3adc67e, 0x0cffb034, 0x6f5c1498, 0xbfaf837b, 0x5243e04b,
-       0x9578afbc, 0xd84518f8, 0xf121c5fb, 0x7e819292, 0xea2f0258, 0x9c31bfbf,
-       0x119db078, 0x80f651b0, 0xef0594f3, 0x0d880a4f, 0xc42bc2e1, 0xa1c7ae47,
-       0x2532f665, 0xe0e9025e, 0x1bd4854c, 0x19ee4607, 0x2b038ca7, 0x5e718719,
-       0x5cec39fd, 0xe26ff2c0, 0xb1f79de5, 0x2824507c, 0x82ca45fc, 0x5c71fe71,
-       0xef190f72, 0xb187261d, 0x6ef17ab8, 0x4230e4c9, 0xb5bf809a, 0xcf9438ce,
-       0xde297a8b, 0x392530f3, 0x355ca00e, 0x142d23ba, 0x16670b7f, 0xb1c6ffa2,
-       0xdb8dcb38, 0x7e3c5f25, 0xd75b0a4b, 0xc4aaa547, 0x8f1e743e, 0x77dfa7e4,
-       0xbfafba7f, 0x04e7e82b, 0x3f755bac, 0x3c3ac46f, 0xf6313fd0, 0x2cfcf3c2,
-       0xde6cafbe, 0xaadb343c, 0xaccd7e81, 0xdd67dfdf, 0x32cd3f77, 0x424edaa7,
-       0x821496f9, 0x5da44deb, 0xf02dece2, 0x893bc45d, 0xbf33edef, 0xbe26eadf,
-       0x531faa38, 0x5ca1671c, 0xd693c6a5, 0x571d0e5f, 0x5c46c4b6, 0x655be47a,
-       0x2e3a993c, 0x3df7b68b, 0xee52abcc, 0xd3fc0b98, 0xfe91f516, 0xcaefea2c,
-       0x1dc6acb8, 0x687114fb, 0xe3781d62, 0x1c593ad0, 0x438850da, 0xbff1f48b,
-       0x7c134388, 0x10c3d62c, 0x72c34388, 0xf281cc37, 0x813a3fc3, 0x4e236871,
-       0xda1c7878, 0x9a1c6511, 0x159ffbed, 0xb1de2687, 0xbd85b058, 0xdb80bfa7,
-       0xfd060077, 0x5f7894e2, 0xc4579f86, 0xdf7ca4b9, 0xdf9eecdb, 0x041bff49,
-       0xa7ec907e, 0xe859f9f8, 0x0fe0122f, 0x0cb5c279, 0x0fe01dc6, 0x09aff2a9,
-       0x568277fd, 0xe9fbf506, 0x2bcfca93, 0x5c219f7c, 0xcbc7997f, 0xaec0fcc0,
-       0x8f51a0b5, 0x1782d1fa, 0xfe82b3ee, 0x64d520b4, 0xf2b77945, 0x514be43e,
-       0xfccf3c9e, 0x9b7ac473, 0xdea09cbf, 0xac4f3de5, 0xeff0d833, 0x404bac23,
-       0x3e7bcafd, 0x0814f6e7, 0xebfb84d3, 0xdd1d514d, 0x536ddee1, 0xf4158663,
-       0x5b220fbb, 0x71b14256, 0x5e9f0ce1, 0x0e98797d, 0x9603aff5, 0x74888298,
-       0xf3b13adf, 0xf99e4275, 0x3af98335, 0x7bb136b3, 0xf6a39c85, 0xdc0b4882,
-       0x84fbb02b, 0xefc12d41, 0x4ae7c7a9, 0xc08a7b8a, 0xcb16c9f7, 0x7fb8255d,
-       0x6a10f760, 0xbfb8bd3b, 0x2985b22e, 0xdd423fee, 0x0ef38b67, 0x1e89efdd,
-       0x118d7bf6, 0xc48337fd, 0xf7233dd3, 0xf663bdf0, 0xf3c0e48e, 0xa6c61dd0,
-       0x4fabe034, 0x53731c63, 0xcb6e20e3, 0xce39416a, 0xf17ceae3, 0xbca06f40,
-       0x073ef114, 0x20e32da5, 0x54deea1e, 0xa3d40547, 0x067b30d3, 0x9947def9,
-       0xc5f27b99, 0xa7682dd7, 0xb7f54caf, 0x3bbff3d3, 0x1e2f5ea2, 0x59e3058d,
-       0x5095bf9c, 0x8d0338af, 0x15f3c60c, 0x8a674ff2, 0xdbf98729, 0x4adefeaa,
-       0xdfe5576c, 0xf167a95b, 0xad89a50d, 0x59b3af4c, 0xfa6e2cad, 0x959dfde7,
-       0x9553ddcb, 0xf428b626, 0xe621b255, 0xbea6ec8a, 0xfdae5df9, 0x5a7f6c36,
-       0x7e0a87d5, 0x98e8b198, 0x3a66cf82, 0xb5f9959b, 0xaf7838d2, 0x1567d28c,
-       0x35b3c7d0, 0x0b14d469, 0xf01801f8, 0xf7cbbf5d, 0x77f11a7b, 0xcf09baa2,
-       0x9f5e628b, 0xd8451f55, 0xc651ed53, 0xa979f067, 0x704f8bfd, 0xdc1399bf,
-       0xf704e66f, 0xfdc1399b, 0xbf704e5a, 0x7c87e116, 0x4c8aa242, 0xe47f5074,
-       0x828f8137, 0xc23723f8, 0xc8fe90f7, 0x0a71c7e4, 0xb7e7647f, 0xe47f0b08,
-       0x91e7a95d, 0xec9bbb8f, 0xc43b436f, 0x9ffbd1e6, 0x23f943bb, 0xeeca9fbf,
-       0xa5503e93, 0x22f3d29f, 0xb4f1a9fa, 0x0bd95e50, 0x37ac59df, 0xcb879010,
-       0xf1a6d924, 0xb0f18fbf, 0x16ce5377, 0x1dfc28a5, 0x8b7f962a, 0x0f7e17f8,
-       0xd0196f39, 0xdf7ca04f, 0xd7405ec1, 0xe71d53c7, 0x1dfd9952, 0xab2e87df,
-       0x5fbfb033, 0xbf21cfc7, 0xebf139e0, 0x718181d4, 0x77e6a114, 0x53d34e76,
-       0xe55e7499, 0xef153b91, 0x8af18b22, 0xfa718979, 0x5f8cb9da, 0xc50ef2c9,
-       0xf6db6b3a, 0x63e02f48, 0x9c167ef1, 0xa904275b, 0xe8c69f1f, 0x5287cf42,
-       0xa4bfed1a, 0x7d0f9d8a, 0xffb9adf4, 0x3ec7a013, 0x509dca13, 0x2cf3d5f5,
-       0xf10fb1df, 0xd2173ea1, 0x0b4d7679, 0x3b9fcf32, 0x6bf5abbf, 0x4e217437,
-       0x715097e0, 0x9b250751, 0x2d77c605, 0x4b5e96bd, 0xd2d7a5af, 0xf4b5e96b,
-       0xbd2d7a5a, 0xaf4b5e96, 0x6bd2d7a5, 0xf4e5ffe9, 0xfffd007f, 0x8000c102,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x30001131, 0xafb00408,
-       0x521cae88, 0x11447fea, 0x992c9a42, 0x326ebaf3, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0x7f6db6db, 0x98a102fc, 0x80005382,
-       0x00008000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-       0xffffffff, 0xffffffff, 0xffffffff, 0x00002000, 0x000040c0, 0x00006180,
-       0x00008240, 0x0000a300, 0x0000c3c0, 0x0000e480, 0x00010540, 0x00012600,
-       0x000146c0, 0x00016780, 0x00018840, 0x0001a900, 0x0001c9c0, 0x0001ea80,
-       0x00020b40, 0x00022c00, 0x00024cc0, 0x00026d80, 0x00028e40, 0x0002af00,
-       0x0002cfc0, 0x0002f080, 0x00031140, 0x00033200, 0x000352c0, 0x00037380,
-       0x00039440, 0x0003b500, 0x0003d5c0, 0x0003f680, 0x00041740, 0x00043800,
-       0x000458c0, 0x00047980, 0x00049a40, 0x00008000, 0x00010300, 0x00018600,
-       0x00020900, 0x00028c00, 0x00030f00, 0x00039200, 0x00041500, 0x00049800,
-       0x00051b00, 0x00059e00, 0x00062100, 0x0006a400, 0x00072700, 0x0007aa00,
-       0x00082d00, 0x0008b000, 0x00093300, 0x0009b600, 0x000a3900, 0x000abc00,
-       0x000b3f00, 0x000bc200, 0x000c4500, 0x000cc800, 0x000d4b00, 0x000dce00,
-       0x000e5100, 0x000ed400, 0x000f5700, 0x000fda00, 0x00105d00, 0x00000028,
-       0x00000000, 0x00100000, 0x00000000, 0x00000000, 0xffffffff, 0x40000000,
+       0x00000200, 0x00000001, 0x00000003, 0x00bebc20, 0x00000003, 0x00bebc20,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0x00000000, 0x00007ff8, 0x00000000, 0x00003500,
+       0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000003,
+       0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff,
+       0x00000003, 0x00bebc20, 0x00002000, 0x000040c0, 0x00006180, 0x00008240,
+       0x0000a300, 0x0000c3c0, 0x0000e480, 0x00010540, 0x00012600, 0x000146c0,
+       0x00016780, 0x00018840, 0x0001a900, 0x0001c9c0, 0x0001ea80, 0x00020b40,
+       0x00022c00, 0x00024cc0, 0x00026d80, 0x00028e40, 0x0002af00, 0x0002cfc0,
+       0x0002f080, 0x00031140, 0x00033200, 0x000352c0, 0x00037380, 0x00039440,
+       0x0003b500, 0x0003d5c0, 0x0003f680, 0x00041740, 0x00043800, 0x000458c0,
+       0x00047980, 0x00049a40, 0x00008000, 0x00010380, 0x00018700, 0x00020a80,
+       0x00028e00, 0x00031180, 0x00039500, 0x00041880, 0x00049c00, 0x00051f80,
+       0x0005a300, 0x00062680, 0x0006aa00, 0x00072d80, 0x0007b100, 0x00083480,
+       0x0008b800, 0x00093b80, 0x0009bf00, 0x000a4280, 0x000ac600, 0x000b4980,
+       0x000bcd00, 0x000c5080, 0x000cd400, 0x000d5780, 0x000ddb00, 0x00001900,
+       0x00100000, 0x00000000, 0x00000000, 0xffffffff, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
-       0x40000000, 0x00088b1f, 0x00000000, 0x51fbff00, 0x03f0c0cf, 0x65e21f09,
-       0x63e62860, 0x88237860, 0xcc2b4e2a, 0xfe9942ce, 0x0c0cccf3, 0x32f88117,
-       0xe2055f10, 0xe9a48cd3, 0xb045e2b7, 0x30327377, 0x7df90358, 0x9b8b5a40,
-       0xc8014181, 0xb3e201b6, 0x204bfe40, 0xadc40afe, 0xdc0c0c3c, 0x6a0c0c5c,
-       0xc4042c40, 0xcdf8bcb6, 0xff2023b7, 0xaf951b9f, 0x17ca83cd, 0x3fafc6e6,
-       0x7cbf0789, 0x6c790106, 0xf928b3f8, 0x4620e1f1, 0x2d43749f, 0xca86aeac,
-       0x6065522f, 0xe7c40df8, 0x681ae2a1, 0x10aac5f2, 0x03329cfa, 0x7e1ab243,
-       0xc80853b3, 0x000c060f, 0x4022bae9, 0x00000400, 0x00088b1f, 0x00000000,
-       0x7dedff00, 0xd554780b, 0x733ef0b5, 0x27bcce66, 0x20212793, 0xf0841e4c,
-       0x04242074, 0x11093a8c, 0x5076c403, 0xc2ab16fe, 0x25786784, 0x5ae5a911,
-       0xc0133bff, 0x51b91688, 0x7e2da5a8, 0x68bc104e, 0x01226f69, 0x903a4483,
-       0xbd08a5c0, 0x168b6ad1, 0xe088786d, 0x7e929205, 0xcfe956de, 0xe7dad6bf,
-       0x9939cccc, 0x77e8f881, 0xbf41ffbf, 0xdecfb3ba, 0xd7b5ef67, 0xcfb5ef5e,
-       0x30733d1e, 0xd7632776, 0x73941ff1, 0x4158c645, 0xf81d0ca4, 0x614b3ce2,
-       0xc18b72ec, 0x6c64cc65, 0xe8431eca, 0x68afa84e, 0xd7588214, 0x3633301d,
-       0x5b2bb181, 0xec46bd79, 0xb41b78dc, 0xb645d7b3, 0xd3b60a03, 0x8c8563a6,
-       0xfe31379d, 0xb1d76f4f, 0x9916c634, 0xe3457579, 0x7e3839c1, 0x9991ab55,
-       0x2df3fde1, 0x2beb07a2, 0x26410877, 0x27befb40, 0x7f180ca5, 0x32685071,
-       0xe3bea0bb, 0x6765c959, 0x2f81cd6c, 0x0abce0ae, 0x4dfa9f5c, 0x7c2125cc,
-       0x8d75a5ef, 0xb0696c66, 0x8c066a79, 0xe09774b3, 0x4b3cc1d6, 0x3ba10ab7,
-       0x2173e027, 0xcbb8c228, 0x2b995a76, 0x9d70c38f, 0x8eb4bcd1, 0xbcc02f95,
-       0x83670899, 0xe647b5e4, 0xa9f3f053, 0x72b981bf, 0xaf15f523, 0x5ef03cc0,
-       0x3704aff5, 0xc75ab12e, 0xff304d7c, 0xd9e67d95, 0x7d70d92f, 0x3dae5275,
-       0x7b951d7a, 0x834b1d71, 0x1b54d28d, 0x2d28d5c2, 0x6f191d1a, 0xcc4dced9,
-       0x6b828a65, 0x5f00f64b, 0xfcb6bb54, 0xf054cfd4, 0xd3cc652c, 0x83f84364,
-       0x9131ccd2, 0x22422de7, 0xbe38a963, 0xb19f1aa8, 0x99173d00, 0x6778843b,
-       0xf477766d, 0xaa755dbe, 0xa2656df7, 0x781c6efc, 0x87de45fe, 0x2a4efd67,
-       0xa9d3f937, 0x45dfb1fc, 0x9fc4fe70, 0xfd4fe547, 0x73fe7a6e, 0x2f95117f,
-       0xbe543df8, 0xb2a72fe8, 0x7ea5efd1, 0x5367f92f, 0xa3efc3b9, 0xafeaffe7,
-       0x7f15f2a2, 0x85ff3d2d, 0xbf95357f, 0xf9e807f4, 0x53d7f9bf, 0x04fb8cd9,
-       0x16ff6ee5, 0x83f8f72a, 0xff75efd4, 0xf9f72a4e, 0x33f9e89b, 0x13283f88,
-       0x3d3ace3c, 0x19424fec, 0xb0790273, 0xceb7af64, 0x59e4f500, 0xd7c03ebc,
-       0x7e012750, 0x3a802c06, 0xdaa0dfec, 0xb4233ace, 0xdbc55a0f, 0x6b9c0687,
-       0x743ed04c, 0x6ecf6f1d, 0x4331aef0, 0xde66f67b, 0xb0d83c3e, 0xc3ed02c6,
-       0x51f6f3b7, 0xac6b9d4d, 0x85aa3ed0, 0x721adfb7, 0xfd41b5ae, 0xcf5e0ed6,
-       0xb5aef4ef, 0x5dff3d43, 0xd5d89f5e, 0xef01d6b0, 0xdfc73c4f, 0xd9bde2d7,
-       0x60cf9ce0, 0xee0736af, 0x4207e8f2, 0xc23e725d, 0x1cbd8cdc, 0x77d516f8,
-       0xded4dc1b, 0x47aef81a, 0x92ea093f, 0x058fda9b, 0xc7bed47c, 0x53f6a5e0,
-       0xbed42581, 0xfb52f247, 0x6a4ac095, 0x4b50dd7f, 0x87eeaced, 0x54bafed4,
-       0x7549ed4b, 0xcfbea8eb, 0x8c196d00, 0xe33dd4e5, 0xcdfd0009, 0x511b7c11,
-       0x6aeb747e, 0x12ca18ab, 0xf91d287d, 0xcd8149e9, 0x5d80fe46, 0xf27bba23,
-       0x7c83c916, 0xc29bfcd7, 0x994cc497, 0xbeb052d6, 0x05a7e5e8, 0xd827e71a,
-       0x71825baf, 0xce3e6fb2, 0xaa4563b8, 0xab1dc671, 0x1209c652, 0x8dfe963c,
-       0xb26c7cd3, 0x4b639e1a, 0xa15e7195, 0x5bfd1c71, 0x8ab7b8d7, 0xb5bcf0d5,
-       0x35e7195c, 0x7fa9271a, 0x1b7eecf0, 0xc64423f0, 0xe036fdd9, 0xd9c69327,
-       0xf5a4e34f, 0x77fc9e0f, 0xe4e3548a, 0x8ca553bf, 0xce7841d3, 0xbb38dfe8,
-       0x86ac99df, 0xcaa59de7, 0x9c682738, 0x575bfd21, 0xd58aeffe, 0xb96efcf0,
-       0x69efce32, 0x8dfeac9c, 0x357de7b3, 0x3f79ecfd, 0xa27f3f4c, 0xb7fb7271,
-       0xd40f82ae, 0x41f053f4, 0x102e7e98, 0x6ff6479e, 0xa81f3d9c, 0x07cf67e9,
-       0x33f9fa61, 0x7fb633c1, 0xa3f82aeb, 0xfe0a7e9a, 0xcf9fa618, 0xfdf19e09,
-       0xd3f5e783, 0x7ebcfc6a, 0x511f8c3a, 0xfb0a7840, 0x33c4cf07, 0x3c4cfc6a,
-       0x8d8fc613, 0xbfdc99c6, 0xa33f5e71, 0x67ebcfc6, 0x1549f8c2, 0xf4775d70,
-       0xcf135d6f, 0xf133f1aa, 0x433f186c, 0x19529e08, 0x8ce3061e, 0xbece3f89,
-       0xecfc6a8b, 0x33f1c8bb, 0x3a27d3be, 0xce90dda0, 0xe4ce08dc, 0x0080de0b,
-       0xa814faed, 0x30f4b0bb, 0x3d3bc81f, 0xf8d1ddea, 0x84405772, 0xc4aefb76,
-       0xa2bb4ff1, 0x58e96ff5, 0x8263975c, 0x3877654e, 0x7aaa2d8b, 0x4a925952,
-       0x6454a73f, 0xb369eaa8, 0xf4f554b2, 0xdeaa4707, 0x5e3058cf, 0x7cbc1f55,
-       0x643eaab2, 0x7deaa955, 0x55d3e3d7, 0xeeeb59ed, 0x3673d555, 0xcf554f7c,
-       0x554f3cdd, 0x54badbcf, 0xedc8de35, 0xd1f5552b, 0xd5531ebb, 0x51acb6c7,
-       0x4f6dddd5, 0x3be3eaab, 0x3f8d539e, 0x54cff8e1, 0xb777c2f5, 0xa745eaa9,
-       0x3fbd555e, 0x1a6bdcf9, 0x3ce6c6fb, 0x8bae4a3f, 0xc95acf68, 0x910e33ce,
-       0x192d5ec8, 0xa3faa262, 0x7f546c43, 0x70df0ef4, 0x8fe3ec27, 0x6bd005f0,
-       0x5bbe4a8f, 0x2fec319d, 0x4b1d39d8, 0x63a7d2c7, 0xd7db7d45, 0x80ce801b,
-       0x5e874a2e, 0x650d3dcb, 0x3727ae8d, 0xe8dfca11, 0x2e916a4a, 0x4474151f,
-       0xd591567f, 0x8d58dd22, 0xfd70e88c, 0x0297c2b0, 0x54f87451, 0xcaf39726,
-       0x6a194fb8, 0x3eef51d3, 0x0066f756, 0x9993f2f5, 0x664cbc60, 0x9bc287ec,
-       0xbc0e40a1, 0x3a68f99f, 0x09268bda, 0xf9e8d0ec, 0x347f9825, 0xf9c01fcd,
-       0x6fcce3eb, 0xcd522dca, 0x52aace6f, 0x60966fcd, 0x4f63277e, 0xe7961dd7,
-       0xffde9137, 0xe6987091, 0xa6ad6537, 0xac4bd7f9, 0x25bf354a, 0xf2037f3c,
-       0x7f38f3c1, 0xe7f58c41, 0x3faf564e, 0xfd7aa96b, 0xcfff5f12, 0xf3c84eea,
-       0x3ffd685b, 0xf5f04e17, 0xd7c63d67, 0xa371846f, 0xf18477e7, 0x5ff9c41f,
-       0x69bf338e, 0xfd7ab178, 0xebd5cbd9, 0x5ff9f237, 0x9e4f7bad, 0xfff346df,
-       0xaf8f7842, 0x9a71fb3f, 0x75ac68df, 0x38c9a13b, 0x441b52d4, 0x2fe600b9,
-       0x050c801b, 0xc6444cf3, 0xde0c6248, 0xd164285f, 0x016a3c3e, 0x9ffe83ba,
-       0xd0de8059, 0x72ed977e, 0xd017ac16, 0x6996af0e, 0x4aaec17a, 0x657819e9,
-       0x57f72b41, 0xc333f818, 0xad2bbe00, 0x11fd9fbd, 0x7db05de0, 0xa025c91c,
-       0x2def8674, 0x23529794, 0xe6307c72, 0xe413321d, 0x877bd329, 0x9a863bdc,
-       0x2fd7683c, 0x1f630466, 0x60d85e3a, 0xc515df38, 0xa8b78b6f, 0xea824beb,
-       0x097702ba, 0x81940912, 0x0b579652, 0x7f079ef3, 0x7ddd8180, 0x2c6dec06,
-       0xb9b0313f, 0x0e7e785e, 0x452605fc, 0xed1d55f3, 0xabbd79cb, 0x73d61d3e,
-       0xc3704abe, 0x0d81ec88, 0x3a196395, 0x7bcf0172, 0x77ef0039, 0x852ff298,
-       0x7273e9d6, 0x003617f8, 0x7ff1477f, 0xb0bbc88d, 0x0ee08517, 0x7fbfe790,
-       0xba054573, 0x83d7d0bc, 0x5e577def, 0xc92de2f7, 0xde98f7aa, 0xa9cdef44,
-       0x1ea20c4c, 0xc36ceef8, 0x3b552eb9, 0xf1c03f30, 0xdd0fec91, 0xf1eebacf,
-       0xdfb99e82, 0x75d7eea7, 0x8dd1eac0, 0xbb4b7285, 0x3dbec181, 0x8719a550,
-       0x1f7f6879, 0xa878e192, 0x973edd56, 0x5fd42539, 0x9fab5773, 0xe3b40657,
-       0xcf00f800, 0xf81c793c, 0xe6f844e7, 0xd7f36dcb, 0x7daa021b, 0x0a947a02,
-       0xa22cf6e5, 0xbd0f5a02, 0x3fb7dd9f, 0x434041d0, 0xfb588107, 0xf9f7fffe,
-       0xae7d8dff, 0x3e492d69, 0x8ad70517, 0xe7c969a6, 0xdb2dfaa2, 0x5f555339,
-       0xd55fbc12, 0x4a96f17f, 0x86c2fb55, 0xf9f6aa25, 0xd5561feb, 0xa4ff032b,
-       0x75773fea, 0xa1fdaa9d, 0xed54a7da, 0xab3d540f, 0xfbefdfaa, 0x77ffaaa9,
-       0xdaaa3767, 0x864b0385, 0x46a8dc62, 0x881d0df2, 0x8df7aef1, 0xa1109b6c,
-       0x2fae855b, 0xfca9d3f8, 0xb2a2efd4, 0xc830e50e, 0x5e3edd75, 0x1cab6cd6,
-       0xa15bf28a, 0xb50c4ff3, 0x69fe5043, 0x672b55e9, 0x6325d0fb, 0x88bed083,
-       0x2e596717, 0xf3ca2f30, 0x19db816e, 0xb213f3ca, 0x0d6c675e, 0x8972d7f1,
-       0xd7f2dff3, 0x3f229606, 0xb942972c, 0xe3f8b6b5, 0xd68126b2, 0x1a36d8c1,
-       0x10704967, 0xfbd17918, 0xf382ad9a, 0xe69141d2, 0x6e1f46af, 0xdec1da12,
-       0x3f9c3a0d, 0xbee43ed4, 0xe78f0831, 0xc1c01d19, 0xdf49535a, 0x2797f25d,
-       0xfe23d39f, 0xf05e54bc, 0xbcf2a6cf, 0x39e547df, 0x6795157f, 0x7654b5fc,
-       0xf95357f9, 0xe5403f91, 0x2a7aff29, 0x5037f03f, 0x85bfd279, 0x83fbdfca,
-       0x7bf15e54, 0xf4e854a8, 0xb57d96ff, 0xf2bdb8e8, 0xffafb8df, 0x16afbd1e,
-       0x23c3939d, 0x0d06ebef, 0x55794abc, 0x61797027, 0xf31676e4, 0x788e2958,
-       0xc3078955, 0x94571448, 0xf0ddc1e3, 0xd3f62777, 0x1831e537, 0xcfe8eaef,
-       0x7b8e3173, 0xb191a4f5, 0xd3ebf8cc, 0x3c5c5fee, 0x46ee80b0, 0x3858b7f8,
-       0x72aa015e, 0xdcec1e36, 0xf3dd7b11, 0x92cf5d78, 0x7726fdf0, 0x3c355c74,
-       0xc072e22e, 0xd16af1cd, 0xdacf7b71, 0x847c722e, 0xb3efbb76, 0xc6b5e847,
-       0x718b93d8, 0x2347f662, 0x36c63d43, 0x055871cb, 0x575e015f, 0x3a7ff5f0,
-       0xfda04e3e, 0x1f1f105b, 0x47e0a5dd, 0x32bff0c4, 0x574aafc5, 0xae90439d,
-       0x7bf4cab6, 0x027865b5, 0xe7191d1b, 0xd38b9d6e, 0x7ef04df5, 0x0e4be8f5,
-       0xa657f3b4, 0xf2e79ceb, 0x456fe3e3, 0x16d3a653, 0xaab4a76d, 0x841b57eb,
-       0x70371e72, 0x831acc25, 0x3ce9d1f2, 0x2c728397, 0x9c654a9d, 0xf392e995,
-       0x0bf6325c, 0x2576f872, 0xea7e5f12, 0x6fbf5137, 0xe3788e1a, 0x6168e044,
-       0x247de167, 0xf1d9ebd1, 0x3ba5c7fb, 0x8c245ffd, 0xc336b0c7, 0x985f6867,
-       0xd1d7ffe0, 0xaa7a63ee, 0x34d6e32b, 0xade30189, 0x6a977cf8, 0xa5cf783e,
-       0x67ae94e4, 0xf5be88dd, 0x7f42bcec, 0xa0e7ca20, 0x1079489d, 0xbf6d53b3,
-       0x35eaaa24, 0x2a9d03ad, 0x00ff067b, 0x04cac739, 0x72c1d23d, 0xf5ba2c99,
-       0xc002f5b6, 0x2e9d0937, 0xf78147a4, 0x92ea615b, 0xafa42e7c, 0xcdb9dfb5,
-       0x681b3d85, 0x60f85abd, 0xf5ea66ff, 0x265fe1f1, 0x1bd47d5e, 0x22d7fe83,
-       0xd01ea3fd, 0x999f3f71, 0x43e40e02, 0xdc701e96, 0x6cc3fc4b, 0x9ae0fc61,
-       0x5513cc19, 0xff01c657, 0x5f6d47ad, 0xa4bbbe72, 0x76bbfee3, 0xbcf2cdde,
-       0xf55fc337, 0xe2a7b7ae, 0xac78b5ba, 0xe4b3fd6e, 0x5314fca3, 0xefc151e1,
-       0x59bbd124, 0xee97f984, 0x7f212d3c, 0x7204305d, 0xb903787f, 0x5b7e17df,
-       0x646b79fa, 0xd8f72b9d, 0xf95fbec9, 0x0bd79cac, 0x779c4eb0, 0xf13c915e,
-       0x0515e835, 0xa67c6807, 0xd3d88c2b, 0x5e6d7e4a, 0x27f232cb, 0x0901663e,
-       0xc51792e3, 0x9fb44286, 0x4a353697, 0x32f3801e, 0xbe2395d3, 0x1c77b32e,
-       0xb5fb51f9, 0x9f08944f, 0x899f6760, 0x6cec1386, 0x6cec1d55, 0xbb117d55,
-       0x51f30d37, 0xc01b368b, 0xaa75a7c5, 0x9d115fda, 0x5662ee34, 0xc9768f5b,
-       0xeffc96d9, 0xf0fb86dc, 0x88850bfa, 0x3cd079df, 0xf8f10928, 0xcbf1e136,
-       0xdf04bfce, 0xde77df1f, 0xf26add08, 0x561e328e, 0xc13c14ec, 0x44737418,
-       0x7d0ad796, 0x5f8641fd, 0xc59c0f89, 0xdea4417a, 0xa17fa9ad, 0xfe657fa9,
-       0x4bba014d, 0x24f7ec8b, 0xe91677d1, 0x38f906ad, 0x5fb7c221, 0x3ef4fc79,
-       0xa37f77e3, 0xf3560fe3, 0xc5ff8c0d, 0x4e7e3a37, 0xfa8df81f, 0x77e3be82,
-       0x59631d9b, 0xc4a9d902, 0x3a71815f, 0x1fe9bbf2, 0xd2136bda, 0xc0a69fc9,
-       0x39ddd638, 0xd9a38c41, 0x14e99dcd, 0x54bf07d7, 0x6024f30f, 0x0edf907f,
-       0xf9f016e6, 0x2cd37ed3, 0xf8ca8794, 0xe55eb776, 0xe914267f, 0x7b28fe35,
-       0x61f00737, 0x38a6a793, 0xfcedd41b, 0x5b6b666f, 0xe30b7c4c, 0x04e8fca8,
-       0x2ffe45d6, 0x9e7aa78c, 0xa1d59a38, 0xa8f44a1a, 0x6d154f9f, 0x9c4b6f14,
-       0x9c4e28c6, 0xfad7ae5c, 0xd2c315f7, 0x4740e0a2, 0x32c9ea1b, 0xcfa6e01c,
-       0x67fde014, 0xf08cf4cb, 0xc5ff8012, 0xbc593380, 0x01f9c216, 0x39df155e,
-       0x65f540f2, 0xe7aabc11, 0x4d19e700, 0xe50f207c, 0xb8b31246, 0x53801e71,
-       0xdbd1eed5, 0x0e1e2853, 0xa3e517f2, 0xc989d4cd, 0xaaef9c7f, 0xf4ebaf0a,
-       0x190b23e9, 0xfc385085, 0x942fa601, 0x83ef8bf7, 0xd313bfaa, 0x8f04d9d4,
-       0xd8361c7a, 0x6f8f2d19, 0x8309fd95, 0xe9133bc1, 0xad6870aa, 0xa717f388,
-       0xaec872bb, 0x3a214b68, 0xca5d5acc, 0x685d42ce, 0x9cf78460, 0x39ef1c0d,
-       0xf71e3a3d, 0x0e09675c, 0x268cb183, 0x9c833016, 0x301cad02, 0x8259c78c,
-       0x5ae49fb2, 0xcd3cc3a3, 0x7829a07a, 0x54a7adaf, 0xa73610b7, 0xfc609b09,
-       0x3e3de96f, 0x67c1c63d, 0xe375d2fa, 0x9ae161f0, 0xa5a0c18e, 0xb8211b19,
-       0x05080b41, 0xc2de8e87, 0xdf184a43, 0x790f4185, 0xd72ed46c, 0xdaed0859,
-       0x2faf0b06, 0xae9417d7, 0x988ff787, 0x5d71cbbc, 0x891ce4cc, 0x4a162b79,
-       0xb7c6f5a2, 0x0724024f, 0xb6f2b815, 0x4cb54d77, 0x2814fe40, 0x1ecc3fcf,
-       0x24255bb6, 0xa5361dae, 0x6ed0921e, 0x2dbcb6f5, 0xa2bb7fa1, 0xd76a6de9,
-       0xa1ca1d61, 0x07535dc9, 0xd4f88981, 0xf4d2b2ba, 0x4b5e3011, 0xd60eba65,
-       0xb2badcf5, 0x4f75ea43, 0x1c51d35b, 0x775eb759, 0x77dd66b7, 0xcfdd70df,
-       0x5d2eefe9, 0x75ffdc5f, 0x8b3fbec2, 0xa25199f8, 0xeefe510b, 0xf0282da4,
-       0xec99bb78, 0xc69c7941, 0x1287f638, 0x7e718437, 0xe850eb8a, 0xa14f7947,
-       0x9174789b, 0x79239ccd, 0x1f4d503e, 0x6d9ef4c7, 0x7a4bd708, 0x4054894f,
-       0x787b25eb, 0x2ee7cf86, 0x2dd08fcb, 0xd1f2f9b3, 0xe61832be, 0x57e702fd,
-       0xb2519ae0, 0x7802cc52, 0x21ec6177, 0xd49eb235, 0x2e7301d5, 0x03d533ac,
-       0x7be177d8, 0xcf7c66be, 0x8427bb31, 0x32262647, 0x4620be5f, 0xaf995ee8,
-       0xdf1e4dfe, 0x05d4afaf, 0xed5c90d7, 0x08bc7012, 0xe869743d, 0x43d387a1,
-       0x87a269eb, 0x9cd3b6ea, 0x4aeb5a1e, 0xdbaa9e91, 0x85d1a704, 0x8719eaeb,
-       0xebeffcfb, 0x61ea97e6, 0x7b5a879f, 0x1d0107ea, 0x69655818, 0x7af09985,
-       0xb3ebe118, 0xca7c323f, 0x6fede2ba, 0x1facd1c3, 0x707d468d, 0xe61ee75c,
-       0xe94de08a, 0xd12f4977, 0x7c906c3e, 0x295e90ef, 0xcb823aea, 0x3be8ed7f,
-       0x1c5bb40e, 0x883defc7, 0xc1663bef, 0xf322b90e, 0x535f1c36, 0x1a67e78a,
-       0x64381d60, 0xa009eb02, 0x1f1f13dd, 0xf8c25f9c, 0xf84d3968, 0x9e1d61d1,
-       0xa7e72abf, 0x5ec8cf80, 0x7ee56a19, 0x1e7ac7ee, 0x5e9bfb3f, 0xef6e4b94,
-       0x2abf1ea6, 0x5c4fd0b9, 0xa9fea3a7, 0x5e8e8e58, 0xf7ea3aff, 0x055e5437,
-       0xfb287c11, 0x4813d0a9, 0x5fe62b4a, 0x577c5996, 0x6493f4d5, 0x4f1a8acd,
-       0x9fa36f79, 0x7f8017b9, 0xde63b137, 0x81ff2823, 0xf543fe7e, 0x198318de,
-       0x47f4a6f1, 0x3fb58cfa, 0x14331ef0, 0xd05c79f0, 0xa563b9bf, 0x7f617688,
-       0xf650b5f7, 0xacad0b8f, 0xbf7835f6, 0xac4a0130, 0x01f5cb27, 0x2f107d72,
-       0x75b94fb3, 0x946f3c02, 0x6e9effb8, 0x7a92e390, 0x3bcc48e7, 0x3db81ba5,
-       0x923e9c58, 0xb7c2bee4, 0x2484be88, 0x58021b32, 0xe964f566, 0x3e14df70,
-       0x42e8f7d6, 0x594a5076, 0x0dce977a, 0x61f98fcf, 0x9ff037dd, 0xbd108fa6,
-       0xd1d1ecb1, 0xfcbf5d06, 0x5276b898, 0x6c3b1f57, 0xec9521b4, 0x42f78da3,
-       0xaf447abd, 0xc6b5fb84, 0x8ddb7d5a, 0xe169efce, 0x13ed763f, 0x577bfa07,
-       0x8f2c6afe, 0x5078f715, 0xff51dbc6, 0xb14f7a6c, 0x30ab68a3, 0x3ec0cfbe,
-       0xd70bf0e2, 0x7d92548d, 0x3c890774, 0x3e80c7dc, 0x55a7f509, 0x777e73a0,
-       0xebb3fa46, 0x8477e7c0, 0xb1b05696, 0xb72bf950, 0x3ff04c6f, 0xe98faff4,
-       0xed1e747d, 0x9a79e318, 0x3b6d6b42, 0xd33199d6, 0xf985c3bd, 0xa29e753e,
-       0x2ca1a130, 0x42489509, 0xc533cd26, 0x0e4f69a4, 0xb2fe51e8, 0xe71e4cec,
-       0x945f3062, 0x44f40e9f, 0x7c3658f9, 0x3395d924, 0x65dd2af2, 0x48bdfbf2,
-       0x731b7eac, 0xfae44426, 0xeefdd734, 0xd1dd9532, 0xfd3946e0, 0xe245dfd6,
-       0x7f1e2d6b, 0x7d7ce065, 0x9775efd4, 0x63c5f4e5, 0x67584ba9, 0xa7c5f577,
-       0xfc5a5f16, 0xc95fc3c6, 0x52597729, 0xf1693c0c, 0x46ff0c72, 0x06368f3c,
-       0x9de20203, 0x4b98e9e3, 0x78188160, 0x29d2ec52, 0xa4683176, 0x9dd90f76,
-       0x68f0c977, 0x4f17d6f1, 0xd2bb8a9e, 0x411ff022, 0x4e91e87c, 0x884aefdc,
-       0xdb0304ff, 0xdd0ceb81, 0x6ab7f949, 0x434c1fb9, 0xf93bb579, 0x8375e150,
-       0xf087707c, 0x386301bd, 0x6d55fd7d, 0xb83dde7f, 0x14a0dd72, 0xfb9803c4,
-       0xd4671f1c, 0xf1b8c374, 0x7da4cd61, 0xdba8fc07, 0x587e3993, 0xcbbf6f32,
-       0xd0d769a9, 0x0abd768d, 0x3e1bfcdd, 0x3f17d498, 0x30ecdd0a, 0x067276c8,
-       0x1e788c1b, 0x02426fbb, 0x78da2dc5, 0x4f4b5ede, 0xc37a4f13, 0x47f4c8e3,
-       0x5f3025f4, 0xfb33b9f8, 0x569bc86b, 0xf25166d0, 0x7be8b866, 0x51bc9623,
-       0x7976fff6, 0x81676e9f, 0x4b03a283, 0x74c25ffd, 0xff591993, 0xda275c21,
-       0x20d883e7, 0x8318e75c, 0x7969cb8b, 0xcb75e19d, 0xe58a09e7, 0xb64d8bf9,
-       0x7acb8e10, 0xf8c297f4, 0x5cf8a2cf, 0xc08a4a40, 0xb3fb9061, 0xdb8cb521,
-       0x79d20f5d, 0xbb0bc01c, 0xf1c08d6e, 0xa7a08307, 0xc70c9578, 0x80a69de5,
-       0x57ac2b78, 0xf511fdf4, 0xf8e125d6, 0x3e9f5a58, 0x4a7a8b94, 0xdadbdedb,
-       0xd0ed8d51, 0x93f5116f, 0x71865fe1, 0x9ea7a007, 0x6dc18d37, 0x8a48e231,
-       0x4a6c093d, 0x83e15cf2, 0x6505513b, 0x92dfa5f7, 0x1c7af1d6, 0xa5b74b5f,
-       0x1da159e0, 0xbbd7a5aa, 0x7c1ccf58, 0x4553a5ae, 0x7a597eaf, 0x30a9ec50,
-       0x74d4845d, 0xd003d0a1, 0xfa42ffc7, 0xf1f09ee8, 0x9efe68f3, 0x169bd098,
-       0xbd810f4b, 0xeca293a7, 0xb3f678e8, 0x48273762, 0xc7da333e, 0x595d797a,
-       0x9e1d2e79, 0xf25dba8f, 0x62b9f058, 0x0fccdc4f, 0x80e01d60, 0x91cc7d02,
-       0x83a4ddf1, 0xc0dbe006, 0xf288214a, 0x63d621e6, 0xaa1ef9c0, 0xc9fca835,
-       0x8f9ee639, 0xe6fd087e, 0x3d270dd4, 0xbf28c3e4, 0x38f3ef48, 0xffcf3d44,
-       0x5c9ebcb3, 0xaee6bff4, 0xd1fc6836, 0x39e3a224, 0x23ecfe4e, 0x09303be8,
-       0x4d4aedc7, 0x76f94d1a, 0xfced7f55, 0xe3b43aca, 0x91abdf6a, 0xee78b2e3,
-       0xf7851dca, 0x83b71251, 0x131ef0c2, 0x6f80bc39, 0x6aebac1d, 0xd3e088db,
-       0x2954e831, 0x8e5d267d, 0xef52393e, 0x3b38d37a, 0x955f6318, 0x3f7c1479,
-       0x7c153ac8, 0x0e8b1e7e, 0xffdc7d8b, 0x910e6dd6, 0x2f1dacbd, 0xec8ca7a7,
-       0x81269cb0, 0x4de5deec, 0x2af9ba25, 0xa3fb9bfb, 0xa6efec7d, 0xf2de3483,
-       0xfedc8396, 0x3b23aa6e, 0xf70b797e, 0xa43ec047, 0xc80463f3, 0x15cbb268,
-       0x7983d33f, 0xb79815a2, 0xbd21ede4, 0xf3d5cf0b, 0x78d235fe, 0xf21ca9f1,
-       0xc0ff7913, 0xa7e8b5c4, 0xa85afd86, 0xbab5fb47, 0x9576c2ba, 0x6c281b5f,
-       0x5b5f91bf, 0x05385f53, 0x8fe05afd, 0xcdc15245, 0xe4b663f9, 0x797fa1ba,
-       0x41ade4c4, 0x02e2533e, 0x6abffdda, 0xfd202572, 0xbdfb253d, 0x23cf57d3,
-       0xfc3cde7b, 0xa37990da, 0x7df2de51, 0x76e24c7f, 0x7be88a4b, 0x3eebc70c,
-       0xcf172d74, 0x7fb4d4cb, 0xbcf911ba, 0x1ec3ce4d, 0x5d9157f7, 0x13dfeca3,
-       0xa777b712, 0xa077688f, 0xc14f7ffd, 0xcfe81cef, 0xbcf3d65c, 0x4922a5cf,
-       0x18f66f65, 0xd7027aee, 0x1e8094ad, 0xf16ee511, 0x82938e84, 0x8ffcbe23,
-       0x808f77c8, 0x7b5d9df2, 0x5bd70d3b, 0x81d872d3, 0x7e84bef8, 0x5bc9c610,
-       0x8f30d3da, 0x77f9a2b8, 0x9e7bf40e, 0x7b5db897, 0x40e9df59, 0x1ef96ebf,
-       0x5fc9dbb0, 0x003da50a, 0x32d4ba78, 0x3e69f0bf, 0xbf5a298d, 0x85f57fe1,
-       0x76edbb11, 0xeb282053, 0x284e253b, 0xefa1875c, 0x663d116c, 0xedfb5f47,
-       0x4dacd1f2, 0xcc0fb815, 0x0f861ee0, 0xec83acf5, 0x09962539, 0x21cf0a92,
-       0xbf2b901d, 0xefbde96e, 0xe7162236, 0xda0251ba, 0x0c14be3d, 0x8db69592,
-       0x9188375b, 0x73d950be, 0x12ef7b5a, 0x1b77dd73, 0x7aa3b9ca, 0xd6b37686,
-       0xfdd163fe, 0x9f7fe387, 0xd6bcbc25, 0xfdc56d92, 0x59d320da, 0x54ef4b4d,
-       0x166a97e4, 0x6f7e0efa, 0x3a22dd55, 0x7246ec43, 0xf85bdd77, 0x9b7753fd,
-       0xd8f485c1, 0x34d876dd, 0x22adeb16, 0x4e6a99c5, 0x3a428f14, 0x2866d2ba,
-       0xbcd7bc47, 0xf903b1f9, 0x57cfd15b, 0xde7a44da, 0x9e9676dd, 0x695ee32b,
-       0x7a851e4d, 0xfdc759a5, 0x9f238ebc, 0x7fdf915b, 0x326aed7d, 0x7eb297f9,
-       0xaaa7618d, 0xddad4eec, 0x6e19e53a, 0xb5494e47, 0xec579c93, 0xf8fa3ecb,
-       0x67675b14, 0x6b1f425f, 0x4919f0f4, 0x616ef3b6, 0xd8af31e3, 0x19792d7a,
-       0x9b7765f2, 0xe286b9d5, 0xe88edc1e, 0xb9f4f8ee, 0xb8fcf819, 0xee9c7148,
-       0xf1d1226b, 0x86cb03a1, 0xf1a2d976, 0xf5fb4f5c, 0x5f3fc0d9, 0x3ffd0fd9,
-       0x07716c3b, 0xf77a7d70, 0xd63daf28, 0x78e504be, 0x97432841, 0x4320658e,
-       0xec35f457, 0xe27d93c4, 0x7f91d7f7, 0xa67a9857, 0xddcd18a2, 0xfe425a7a,
-       0x057920df, 0x2687e923, 0x8075f22b, 0x73c20e95, 0x561655cc, 0x53d4f48a,
-       0xa0db9cc7, 0x9d51cf75, 0x30fb04ce, 0x1ba64761, 0xf955edb7, 0xa692f35c,
-       0x4a332906, 0xbf912c5e, 0x0860bb3b, 0x7a8a490c, 0xcb91a4fe, 0x97870bab,
-       0xeef248be, 0x161b237d, 0x362dbf43, 0x5bb57d72, 0x85d8cc0a, 0xe8e8cefd,
-       0x238ec1fb, 0xf3c11c6f, 0xba4e4b10, 0x28bea1c6, 0x6ffa7231, 0x3d6afe3d,
-       0x3d690b9e, 0x76f478c5, 0x83a8a57b, 0x1733f779, 0xabbd3f8f, 0x1c23ff23,
-       0x649e63b7, 0x461de75c, 0x1ff6672e, 0xc74795d5, 0xe7cbf605, 0x1a356e1c,
-       0x4661fc68, 0x8ed7ca91, 0x23cf2696, 0x19e5f3be, 0x75ceef91, 0x915c3bd5,
-       0xef629578, 0xb5f77a4c, 0xcfe06319, 0x4e749749, 0xbbd76edc, 0xaf5c44db,
-       0x896302eb, 0x07fb5f42, 0xf88f1bc6, 0x7fdbc657, 0x70078f89, 0x54be421c,
-       0xf41a0ff0, 0xbea1a347, 0x849f53bf, 0xf82813df, 0xcca1d657, 0x9e626aef,
-       0x8eb11b46, 0xc41bb5e7, 0x8f52314d, 0x54ef91f4, 0x7449cef8, 0x29e486f9,
-       0x1810f4e5, 0x870bf582, 0xec57642d, 0x4b11f596, 0xf88a1caf, 0xbe69f653,
-       0x0513eb91, 0xcff3789e, 0xca54e191, 0xafd74b2f, 0xa2015c1a, 0xc5023d9b,
-       0x90815c19, 0xfb053b29, 0xe739d365, 0x37d8de48, 0xbd87f707, 0xd6ffa6ab,
-       0x8ace9d2e, 0x214df1f2, 0xfde0d291, 0x74c34fb4, 0xfa226fa6, 0x88c93d6b,
-       0x7cee978f, 0x58cdc798, 0x728e9068, 0xc84181c8, 0x9c3fc8b7, 0x0503437f,
-       0x35b52728, 0xf8441dae, 0xaf90390d, 0xbe027822, 0x41b6b2c1, 0xb25d7a42,
-       0xe58b978a, 0x6c9647ef, 0x2e7f11f1, 0x15395ada, 0x98d5a7ed, 0x28bd40f4,
-       0x59d32bd3, 0x4ebcf032, 0x85df6caf, 0xdd3897e1, 0xd4d96c5e, 0x7d02f38e,
-       0x63e233fd, 0xcfb3eb72, 0xbd0ab823, 0xa06edc5e, 0xde90aa71, 0xad74f8a3,
-       0xde7bafbc, 0x693ef4e5, 0x7bf4a1bb, 0x0149eeb0, 0xec38c4e6, 0x443bedfe,
-       0x91fbdf94, 0x9f39339e, 0x70be9ea3, 0x63eb69f8, 0xeb4ecfa8, 0x777bc618,
-       0x39aaac4b, 0x1a3a2f8a, 0xeff1575f, 0x33759dd2, 0x95dcae28, 0xa66ba024,
-       0xf782adf0, 0x1a7b92dd, 0x34b7fff1, 0xdfc65ffc, 0x81ff87df, 0xfe649b7e,
-       0xfc0e54df, 0xb7128f0f, 0xce380a27, 0x79f6296e, 0xfd8d57a1, 0x5710b73b,
-       0x23ef1eae, 0x72355f57, 0x0d91dbff, 0x73df57f3, 0x30effc95, 0x6cdd327c,
-       0x26e8532a, 0x7b71f053, 0xf8839753, 0x3d22bc02, 0xf289bd93, 0xb82b24b6,
-       0x8f45884d, 0x967c946b, 0x72236f8a, 0x5f5fe14d, 0x5853c21b, 0xed16bb56,
-       0x008ae4e4, 0xc145e9d1, 0xf4093437, 0xe7e445da, 0x67e17218, 0x333e5e32,
-       0x1be754f8, 0x32c1c2fb, 0xc0abae90, 0x69f3a2e3, 0xee27055b, 0xdaeed28f,
-       0xf782fdca, 0x9e573e65, 0xf915ffbf, 0x53f78c3e, 0xeface27d, 0x933eb91b,
-       0xdcceb04c, 0x4c67d720, 0x60be2528, 0xc819e9ba, 0x8f404b6f, 0x8f4a2f7d,
-       0x1034345d, 0x38782abd, 0x67fbd32b, 0xcfdd7c89, 0xc41e70c9, 0x5be12998,
-       0x7a0947ce, 0x5af9c0bd, 0x8bbf3814, 0xc3c5fe38, 0xdd11a793, 0xee9b13df,
-       0x246aed97, 0x772c4cfa, 0xb3b9438e, 0x2736ef49, 0x8f258e8e, 0xec765483,
-       0x49f909f8, 0xf7c8c748, 0x0aa0f8f1, 0xa0c580f9, 0x7fd020ff, 0x7429fed4,
-       0x1d717400, 0xd73ca5f1, 0x379285d2, 0x5bb2f053, 0x669b7793, 0x601a78e2,
-       0x25def2e2, 0xfa78a9cb, 0xf3ef2be5, 0x2bf87dbb, 0xe6a054cd, 0x456fdc2f,
-       0x13717c4e, 0xe2679b3e, 0xfa644fed, 0x780ede4e, 0xe4a0627a, 0xeb720b5a,
-       0xe766d809, 0xa63e48f8, 0x595f9e49, 0xa09348c7, 0xf368dbca, 0x6f830629,
-       0x9f0a2984, 0x8d73f798, 0x334bd08e, 0xd81cfce3, 0x43cf946e, 0x5f765538,
-       0xc6912981, 0x40c1ea77, 0x967fd405, 0x0361d959, 0x0ceeeeb8, 0xe1718c54,
-       0x5981db77, 0xbae264f7, 0x853e829c, 0x53ace5d6, 0xdf20ce8e, 0x7c50b71d,
-       0x3ddb3f24, 0x974cfc8a, 0xf7c71f3b, 0xeca4fbc8, 0x6b75bc67, 0xfdbc5cf5,
-       0x21e3279c, 0xcad76e55, 0x2e26418f, 0xf9657a37, 0xf83fe5a1, 0x526f9317,
-       0x3b242fb7, 0x6d8c9d90, 0x326fde07, 0xff5179f0, 0x00d4bf40, 0x23ddfeff,
-       0xdcec27ef, 0xc343c41c, 0xa39d2376, 0x31d7f850, 0xf18e9bcb, 0xe48a4713,
-       0xaeb8c176, 0x7e1a6c59, 0xe8f2efbf, 0xd651bfc8, 0x26e1ff5f, 0x7ea26fba,
-       0x7da19187, 0x57ef209f, 0x0c162cc2, 0xbaf9f109, 0xb1e80763, 0xd3fe2894,
-       0xee89eb07, 0x5103bf80, 0xd93437fc, 0x2d806e97, 0xdbfac1fe, 0xc0b74cca,
-       0x8ccc993c, 0xa82aea16, 0x347c006f, 0x96047924, 0xb675f548, 0x0fe3f181,
-       0x2e4d303f, 0xbf04f3c3, 0x6fbe7a32, 0xc438a54a, 0x1c2cb00f, 0x28b22b50,
-       0x1d99bdbe, 0xb1f955f3, 0xb0738e46, 0x69469036, 0x9ce2f8aa, 0x2f8a2e9d,
-       0x507c8d3e, 0x79fe719d, 0x8da6ae1c, 0x078beb9f, 0x678c8a47, 0x17c4e790,
-       0x115ade29, 0xcf857ffd, 0xc925379e, 0x3011ebfb, 0x1dd0aefe, 0x93da29f2,
-       0xe31d7e4a, 0x2f8a762e, 0xb0ee8907, 0xc23e309e, 0x742a1b7f, 0x61e2b1e5,
-       0xafb64cbb, 0xf23487a7, 0xb17db589, 0x4bd031f7, 0x48b7f835, 0x29976af2,
-       0x54d81eca, 0xc78d2671, 0x439d19cd, 0xe39e447e, 0xffee35c5, 0xe1f28e18,
-       0x947efcb7, 0x80294671, 0xfdc0aae7, 0xe4d33975, 0xda9d90f1, 0xfc1d9084,
-       0xd1cf9add, 0xf37f0173, 0x2f951d73, 0x3cb7b3fe, 0x56d9ed13, 0x032c1b9d,
-       0x5c93ebcc, 0x41650f70, 0x9373d013, 0x2a9b9f85, 0x9079b769, 0x1305bbfe,
-       0x13e99b9d, 0x19ea2f8f, 0xd7da0bb2, 0x411f01b6, 0xb184bbb5, 0xef57844e,
-       0x0ad0f3a6, 0xd89ec77e, 0x63df4794, 0x37dc1be9, 0xcbc55b8a, 0xb6af16df,
-       0x894adc50, 0xf4f71593, 0xb5649d10, 0x61f8ea65, 0x5e8f3e29, 0xd792af5e,
-       0xbef1926d, 0x226be8fb, 0xb2c2b1ea, 0xef68b586, 0xef7d1867, 0x2e4ddd23,
-       0x1339db56, 0x3b76da84, 0x4634d7d2, 0x1fc2827e, 0x20ec5dc9, 0x4f12a986,
-       0xcfd07976, 0x73c17c9a, 0x04a9fd10, 0x77f8132f, 0x24f3e192, 0x58ff70e7,
-       0x07b8478a, 0x13fc29c6, 0xe328bc23, 0x2a5a3eec, 0xd2919da0, 0x46b82659,
-       0x2defa5f7, 0xe04e77e8, 0x5f701ee7, 0xe8687f15, 0x6196462f, 0x2fe9487c,
-       0xbd5cb99a, 0x429be7cd, 0xafa34fa1, 0x349de717, 0xa98ed83b, 0x81558997,
-       0x84f10c76, 0xd184b3d7, 0x02ba8378, 0x27818eb4, 0x9658257d, 0xf7048948,
-       0x3a210be4, 0x96a0312f, 0x5b9231d1, 0xfb25df3a, 0x4eda96e1, 0xf771f701,
-       0xef0443d1, 0x5e0ecee0, 0x9af57cca, 0xb814ffac, 0xa27f644a, 0xd5c38e44,
-       0x8e9f9e5f, 0xecd181fe, 0xa338c12b, 0x12fa8eb2, 0xbf9e3a5f, 0x3ce782dc,
-       0xe73fc426, 0x14966691, 0x8cc1373f, 0xaeecee7e, 0x5a7b4823, 0xf8ed39bf,
-       0xb48fda19, 0xdd1ddcd5, 0x80a57c72, 0xc1e5b5f4, 0x22b37ed8, 0x71c8b62f,
-       0x14f3a8c4, 0x7ad1cd83, 0x9ac932b9, 0xc28f2515, 0x9e722672, 0x9e7cb762,
-       0x6f7aa6c2, 0xa46613cc, 0x27834ea7, 0xdf2b9f07, 0xdf2abce1, 0x71f8a01b,
-       0x961ebe0a, 0x9e68d3f7, 0x1086e749, 0xe3a04e4f, 0xbfb1cd57, 0xd6685987,
-       0xd3977ac9, 0xf4e4eb0b, 0xb688eb82, 0xb999a633, 0xe3cdbd5e, 0x74e7a29b,
-       0x9c788452, 0x476c1454, 0x1e589dba, 0xbffa4768, 0x5274c985, 0x4b44e9ce,
-       0x939bf7ef, 0xa1e93a64, 0xe0260a7b, 0xe43145f7, 0xdb998563, 0xa59d2977,
-       0x0fc03f44, 0x857ce177, 0x03456a83, 0x339cd0a5, 0xf0f8ef50, 0x9e7822f2,
-       0x4769e45f, 0xbc7a737a, 0xa8db8e22, 0xc9ba7277, 0xb8c49ef4, 0xe4aa7d77,
-       0x38d02b5e, 0xe0c736df, 0xa7e416ab, 0x4a7e11d1, 0x5a47e391, 0xc3229cba,
-       0x1cf193e5, 0x43df1e7f, 0xa74a4f38, 0x33f783ce, 0x4c25b9e0, 0x055c4e46,
-       0x96f912fa, 0xd2f9d275, 0x09672aa4, 0xe5a0ddf2, 0xf9f7016e, 0x016fbd25,
-       0x3c76b3ee, 0x350c9f45, 0xbffe8879, 0x6268deb2, 0xf2ff8d26, 0xb5db99b0,
-       0x7e512b1b, 0x8499f2bf, 0xf0a5d5f2, 0xd6f1d1e5, 0xf3745179, 0xf83a5f74,
-       0xa07458a7, 0x3a5a7f95, 0xb50bc888, 0xadbc03fc, 0xedc3fbe5, 0x55ce94dc,
-       0x6a1b9722, 0x7f6f1779, 0x0d0dc8fa, 0x3de98f1e, 0x097ae0cf, 0xf39105e9,
-       0x74f4f1db, 0xae1ff9a3, 0x31cd1ba7, 0xd4ceb4f4, 0x9f3c1bf3, 0x744da2bb,
-       0x5f225c61, 0xf6ba8f3e, 0x4f3a24f1, 0xe09362f0, 0xd1439746, 0x502244d3,
-       0x6127b2bf, 0x4a15bb2c, 0x6ae78078, 0xb2250302, 0x08c759cf, 0x24d633ca,
-       0x1bac70ca, 0xdbb7fa41, 0x51e600a9, 0x256063eb, 0x91d3fa01, 0x684b181d,
-       0xf310783a, 0x988b6b2c, 0xb77000cf, 0x80f3f1b7, 0x485bd62f, 0x7e3eef9f,
-       0x400f37f5, 0x1d71e73d, 0x0e047f1d, 0x4ab673a6, 0x03b145de, 0xe8590e3a,
-       0xb32f703c, 0x7754d1b8, 0xf8790d8b, 0x21fbec02, 0xe8d983c4, 0xe2281fcb,
-       0x77aec439, 0xf1eca38a, 0xccbfd6de, 0xe48ae439, 0x7d0e9a97, 0xdf6d185e,
-       0x14a9f929, 0x3996f7d1, 0x963fdfca, 0x77cb9677, 0x055fb9cd, 0x9c5e309e,
-       0x5da27f1c, 0x2375f04f, 0x48bf687c, 0x10fb861e, 0xe3d648f8, 0xfb94de32,
-       0x0adbba0f, 0xbe80fa4e, 0x98393c5e, 0x7b5be1c7, 0xef7768cd, 0x214ef932,
-       0xf4b7899d, 0xf6a9f9d0, 0xe811deb6, 0xf9fc834f, 0x1ef79f08, 0x9d149b3f,
-       0xeb12feff, 0x3f5a24fb, 0x729f5bc4, 0x1f4b5e3e, 0xda167dda, 0x184dfe0e,
-       0x50c07c4b, 0xb086054e, 0xf567fa20, 0x17adc663, 0x31672371, 0x341dc517,
-       0x999fb479, 0x8e65ffbc, 0x4c679fe2, 0xde21bfde, 0x4efc1e71, 0x05f9d603,
-       0x989ec7d6, 0xdb478f9f, 0xf53ac2be, 0x18fb9896, 0x215afda2, 0xe60567af,
-       0x537cf0fd, 0x3852e18b, 0xef231ddf, 0x8091fb07, 0xdd4a05e3, 0x9fb87d27,
-       0x6bdcd81f, 0x4efa1f11, 0x0091da27, 0xb3b6227f, 0x97ba4aa2, 0x50f060c7,
-       0x3ad5f47e, 0x5bbd7e7e, 0x1e31b8b0, 0x6491dcd6, 0x33f87941, 0xfb1d2f93,
-       0x9d5dd48f, 0x09fa7183, 0x3cdd5e9d, 0x41be53d2, 0xe753b216, 0x8e09eaf7,
-       0xdfda315a, 0xcfeb12fe, 0xe7dcc4b1, 0xc790fb3e, 0xa1f7c5d7, 0xf462e7df,
-       0x3e9c7bfc, 0x45d651f9, 0xfb83f6f1, 0x3cc5c93e, 0x4f81f552, 0x7ead3fc8,
-       0x5b9b48c3, 0x0488c6f6, 0x252be3a4, 0x4b89edb1, 0x1eb75afe, 0x967199ec,
-       0xcb9b922c, 0x23dd2759, 0x61e9a2b0, 0x5e4a3eb7, 0x71d3f62a, 0x8e056743,
-       0x6440bc7f, 0xbd774075, 0x580389ee, 0x94ac390c, 0x097b45bf, 0xfd1f7f60,
-       0x9f9bd4d2, 0x9de6d283, 0x338fb4fb, 0x42a11c53, 0xb3cc8763, 0x88f73d70,
-       0x8fbc325c, 0xbcbce005, 0xe0e74ed7, 0xcf7f8f2e, 0x5c4b1f81, 0x7e5df96e,
-       0xb0ffcf00, 0xbf3047ce, 0x8d8bf816, 0x718aa8fc, 0xd9d7e5ef, 0x3b76fc23,
-       0xdbb0418f, 0x70e13f5f, 0xe68aff41, 0x144094f6, 0xa1e7b4fe, 0xc7d7911e,
-       0x6e745df4, 0x98bfed84, 0x563ef786, 0x829c3bec, 0xec37fdeb, 0xaedfc318,
-       0xf44d5d58, 0x9f22d533, 0x1960caa3, 0x8bfa0f28, 0x0573ed07, 0x5dc7c70f,
-       0xf77a821c, 0xd23b1c4a, 0x75ebf72f, 0xf6801a4f, 0xca14854d, 0x55bf1589,
-       0xbc2d2bfc, 0x3b373b37, 0x58f7e243, 0xb6af9f6a, 0xebdf3d70, 0xf000b336,
-       0x068d23e9, 0xc4eeaefa, 0xcacc3fb5, 0x64f8fd87, 0x06b9c1ab, 0x85eaadf8,
-       0x309bc1f6, 0x48ce395e, 0x5c4f97f1, 0xcba41ca1, 0xf3f02fc5, 0x7d6c9fb8,
-       0xc8f30d24, 0xb5f409ff, 0xdc58e01c, 0x55e7a068, 0xe7a7df8d, 0x5bba6517,
-       0xe52a42fc, 0x3c744f97, 0xaceb869d, 0xdf93fbfa, 0x966ffe41, 0x41c6a39c,
-       0xa0977cb9, 0x74b7773a, 0x575559bb, 0xbacad2f2, 0x8f391099, 0x7e7802e7,
-       0xe79af969, 0x89f57780, 0xc2d2fe5b, 0xdd6f8bed, 0x2eaeeb07, 0xaefb25e8,
-       0x8c8588fd, 0x44db5fa8, 0x71a1dfd2, 0xadd6f5ff, 0x77f29f50, 0xd31f9bbd,
-       0xb239274d, 0xece5c4c8, 0x70fa7d94, 0xff719cbe, 0x615776dd, 0x08797cfc,
-       0xdbd200e4, 0xe18a9f94, 0x79f479bc, 0x5cde6d54, 0xf36b8fc9, 0x029c78e6,
-       0xf2cdf1e5, 0x1c3f0ae6, 0x49cf84b3, 0x1fb7dd12, 0x45f279e1, 0x2f6e45c7,
-       0xfc4e44dd, 0xe3d6e116, 0x107b1efe, 0x6427dde3, 0xf6b89c6c, 0xafbc3ac9,
-       0x012293e1, 0x93ec2033, 0x58f2c66b, 0x2287707c, 0x659cf02f, 0xef5f645e,
-       0xd7092f71, 0x5dbe0d91, 0x1ceab0f4, 0xd5e5ff68, 0x49f0f98d, 0x419eff0b,
-       0xfcb4cf2b, 0x67928ff2, 0x0f0ee315, 0x7ca9d809, 0xcd4bcb19, 0xe568ae5c,
-       0x14a7581b, 0xe4e55a87, 0xa5c0a2f4, 0x5fc57785, 0x3f3058b3, 0xf5177e1a,
-       0x94efa15b, 0xf8acbe50, 0x260b2e6b, 0x50fea37f, 0x3f8635b2, 0xf095fa04,
-       0x07d42815, 0xfd408fd1, 0xdb46fd8f, 0x0025c95c, 0x96673ad2, 0x2772e515,
-       0x416b7fe8, 0x6a313e24, 0xe50e8357, 0x376fd845, 0xc577fda8, 0x72b2c95f,
-       0x795a31ba, 0xddfc98fd, 0x5df3bc4f, 0x3c4af8ca, 0xf184bea4, 0xb91273ef,
-       0x839ca6fd, 0x3967eb5c, 0x933e3df8, 0xd26bc3bf, 0xc8f0eff1, 0xfcf5c4a7,
-       0x83fdc8d8, 0x5c5574bc, 0x29bf09f0, 0x792def07, 0xf7a4efd2, 0x53a7f29f,
-       0x8bbf23f9, 0x79fc67ca, 0x135efc39, 0xc7c8fe46, 0xd18d2c87, 0xe49b04e7,
-       0xb093cdbc, 0xd062d7de, 0xe55623e1, 0xf497a03c, 0xd8d2c2db, 0x567bfdf2,
-       0xe4a5e13d, 0xa087fbf9, 0xc1f1f1dd, 0x097dd1ef, 0x83e26b1f, 0x6e6f250b,
-       0x13f37d2c, 0xc9379f99, 0x32c7e5fa, 0xfd900d7f, 0x9e729047, 0x4f78d1e6,
-       0xff773f30, 0xc31dfcac, 0xa9abfd4f, 0xf3cad3bc, 0x8ff76923, 0xf0073b7f,
-       0x3f036e75, 0xa4ce749f, 0x6cf3bf23, 0x85bcadad, 0xfd8ef0e0, 0xde76511f,
-       0xf1dc329d, 0xfd6355d6, 0x057e726a, 0xdea072eb, 0x876fd30a, 0x5c3e1e3a,
-       0xfa432df4, 0x695d66eb, 0xe846afd8, 0x2315ddcc, 0x79209b8f, 0xff84ac6b,
-       0x5f28219e, 0xed02fd95, 0xfefa2a31, 0xe72b228c, 0x7ce38fcb, 0xa65ab6ff,
-       0xcf25dbdb, 0xfa9e3e6a, 0x195fc37e, 0xf2b43f3d, 0xb4ffe678, 0x8c02f9ca,
-       0xce4894df, 0xdb9d7c70, 0xd635dedb, 0x78997118, 0x8e16bf7e, 0x9e9c6c5b,
-       0xa500f1b4, 0xcf01e254, 0x65044da0, 0x7049d5a6, 0x1803e36b, 0x07158d27,
-       0x8f2b4ff8, 0x3c7ba61f, 0x9f15d5a2, 0xcef8272f, 0x6c9b7dd0, 0x7bf3a336,
-       0x0e9b8a03, 0x60643c62, 0xd90eb059, 0xcb513ea5, 0xc63301a7, 0xba7cb249,
-       0xa4dbcc34, 0xa33f0275, 0x6a9781bd, 0xd69d22a5, 0x4f5d21d6, 0xf168e9f0,
-       0x412c3a13, 0x54e67141, 0x660266e7, 0x0bfeef39, 0xda82f3c2, 0x1db718b5,
-       0x797fbcb4, 0x9f7936f7, 0x84d9bc95, 0xc3c206ed, 0xa63fed84, 0xed84d6fc,
-       0x2885eb77, 0x35693efe, 0x878bff50, 0xff250e97, 0xaa39ce38, 0x26dc794e,
-       0xfc417bc4, 0xadc710f3, 0x8879f8df, 0xb8a8d6e3, 0xab8af54a, 0x5a77c724,
-       0x39f8feb9, 0x9f0169e6, 0xe4a05f3f, 0xfe291b69, 0x9a6a5bb6, 0x40887986,
-       0x43ce8eb5, 0x0bdcf386, 0xf08f79f8, 0x86ef98fb, 0xe2af3fe7, 0xc181eef9,
-       0xf6df2967, 0x03e79999, 0x6461db3f, 0xf25d2798, 0xefe51376, 0xb1d72cb6,
-       0xc364f758, 0x9cf9064c, 0xefcf018e, 0x7ca3fee0, 0x081df653, 0x08fdc24b,
-       0xf9b5c3e7, 0x8bae193f, 0xe9723e72, 0x4869e6ce, 0x93cb1927, 0x563fbc04,
-       0xeaebeb81, 0xbf506f91, 0xe5f7975e, 0x6f55fa66, 0xb55fa18b, 0xe0d3b57a,
-       0x6f52da31, 0x641b5fae, 0x2ab5eafa, 0x78e406e7, 0x6247e637, 0xd633cbec,
-       0x34ce713e, 0x738857db, 0x3149adfa, 0xf7ca9ce3, 0x6c490d9e, 0xfc18ccee,
-       0x37cc98f0, 0x743dcdba, 0x4da5230e, 0x4a972988, 0x17c94924, 0xc545b08d,
-       0x35f2b5c7, 0xd8dd7e06, 0xd0aec47f, 0x3e35ec21, 0x668ac731, 0x9c73e000,
-       0xf2719f0a, 0x9533bf0c, 0xe4a27d90, 0xd49a2e15, 0x6c77dbf6, 0x6dcf3f4a,
-       0xc4b78fb8, 0x6c53db91, 0x297f0282, 0xc5594bf6, 0x2572f154, 0x1b529e4e,
-       0xaffbf010, 0x3f230f14, 0xafb26862, 0x7afd00ce, 0x36f73126, 0xe83c27a8,
-       0x9779412c, 0x883ee554, 0xcbfadda1, 0x0fcaf7f2, 0x395efa33, 0x65f5ef9c,
-       0x7883bd91, 0x4f0efe8f, 0xfaca0fd1, 0x6bdd6f40, 0xb2cd70e3, 0x7d6f40dd,
-       0xcf317c83, 0x58be3fd6, 0xf769708c, 0x81ef1b2d, 0x7fd98d4a, 0xb0feac45,
-       0xd9fdd5cf, 0xbc720de7, 0xa4f9bfbf, 0xf5f0bd46, 0xf17de5e2, 0xbc2c44f2,
-       0xe5d0a86c, 0x009479e1, 0xe963b8b3, 0x7fb62d9d, 0x8b7edc78, 0x9edc462d,
-       0xfebf24dd, 0x49773fe2, 0xe2560f18, 0x507b61cf, 0x9e575793, 0xf909b757,
-       0xb49597e8, 0xb7fb235f, 0x64e7e0fb, 0x8fcdf6ff, 0x025779f3, 0xdc7f2279,
-       0xbf6f9f25, 0xf7fb95ba, 0xa4fd7322, 0x39a8e018, 0x6841606a, 0x606f8abf,
-       0x882116fb, 0x3d5f0bf7, 0x8bea853a, 0x192c09f7, 0xe9e02409, 0x160cefc4,
-       0x425e3e30, 0x8f754e91, 0x7d47a275, 0x7972784f, 0xea9eaa92, 0x3e13df55,
-       0xaa967660, 0xa46fa07d, 0xd5507daa, 0x96fd5578, 0xe13df55a, 0x457f4143,
-       0xd30333d7, 0xd7b3fd55, 0x0faaabdf, 0x13df506b, 0xcbadf8ae, 0xdf0cf5e4,
-       0x2f7d4f32, 0x61084877, 0xbca163be, 0x38e40bdd, 0x52e088c5, 0xc4cb38d5,
-       0xbbf0470d, 0x57de9b8a, 0x7448dad4, 0x68afbdaa, 0x7d754ed9, 0x46fb89ec,
-       0x5e0cf3f1, 0xc675373a, 0xdc5f8ea6, 0xc3035f74, 0x1abed6bf, 0x6afbd5d3,
-       0x886e5976, 0x7a9e6b37, 0x6f7c999f, 0x766f168c, 0xbfff7ab7, 0xed19bc69,
-       0x0c193c6a, 0xe31d8b3e, 0x44abad80, 0x5cb2defa, 0x4bee4e7d, 0xed93ddc4,
-       0xcaeee231, 0xcf376abd, 0x0dffb4a7, 0xd04664f3, 0x173c0634, 0x8536e455,
-       0x48e627f3, 0xaf2b5d9c, 0x75e41294, 0x2af29d8e, 0x5ad3bc91, 0xff21df86,
-       0x2b708bde, 0xf7588979, 0x05ce6880, 0xbe71c68e, 0x4d0afdea, 0xd240e7f8,
-       0xae76f983, 0x51ec0b07, 0x8739507a, 0x78c1e8a2, 0x897928e3, 0x4870a578,
-       0x0f44b8a4, 0xc86257e6, 0xbfdb6ff1, 0x7be93ea6, 0xf6dbf38e, 0xe0bf2882,
-       0x5047bdfb, 0xefde039e, 0xedd9f5c5, 0x888527a0, 0xd589fc9e, 0xf3d3fc41,
-       0x3c38311b, 0x48be7233, 0xe1689fc9, 0x0f7cd62d, 0x87b9a6d9, 0xb73c7eb4,
-       0xb9dae63b, 0xdf2c3d5e, 0xd7235143, 0x7a76346b, 0x8fee7acd, 0x6d15bde2,
-       0x8d5ff651, 0xe7fd4edd, 0x106a4be8, 0xf70b46ee, 0x8105eaab, 0xa67d78f4,
-       0x6e3ef340, 0x71f6a52a, 0x5c6a92f6, 0xacb930f7, 0x2a5e58c1, 0xed443bdd,
-       0x5efb1892, 0x6e765582, 0x7896cf2f, 0xddfd2fff, 0x0ee60ad4, 0x9bbe44a5,
-       0xd3be7162, 0x3d83c6d7, 0x140ece79, 0x3bf55f8b, 0x9a1fc42a, 0x3f1d0ade,
-       0x43e70f63, 0xfaf9fbe8, 0x66e7aecc, 0x109ebee0, 0xdb1e78dd, 0x1d602a75,
-       0x57c7829b, 0xa02256f1, 0x8d6cad93, 0x038bea19, 0x18f78a2e, 0x8fb25fc0,
-       0xcbddf08f, 0xc7c24cf6, 0xd3219398, 0x789f6858, 0xe3107bca, 0x58b3b9c3,
-       0x06ed8a12, 0x7f0530d6, 0x55b0291f, 0x5ab31bce, 0x19abfdfa, 0xe8a52b25,
-       0x5ba94073, 0xe2f3a61f, 0xf87579ca, 0x28fc4167, 0x9e47dff7, 0x4338f3f3,
-       0xe32f654d, 0x98e5297e, 0xc578ec60, 0xccbbf96c, 0x5ddef587, 0x5a63dfb8,
-       0xbddee8ba, 0x5b1c8ac5, 0x9defa3a0, 0xe1f793ef, 0x0f3cadbe, 0xbf5daecc,
-       0xce46162e, 0x0cf8c1fd, 0x2cf173f9, 0xb3bbdd3b, 0xbe932db8, 0x815e668b,
-       0x6d351be2, 0xbf497b6f, 0x44e0984c, 0x01f3d37f, 0x4b7ef013, 0x039701c4,
-       0x952efbea, 0x95efd37b, 0xa77ca7d7, 0x8372f20a, 0x78bbf015, 0x81a1dd6b,
-       0x2f7bde30, 0xa18fba31, 0xf240acf0, 0x37168981, 0xcb85edda, 0x05cfba04,
-       0xbdd1f40f, 0x6d862314, 0x7e3b8e8b, 0xb78bcb2a, 0xe5a078fe, 0x9c297404,
-       0x2a48f952, 0xfda768ec, 0x5dfc54c2, 0x95fdc2a8, 0xa338648f, 0x7b2a9bea,
-       0xde11bb07, 0x80cb530b, 0xe760fe4e, 0x85d74cf0, 0xd9bbfcf4, 0x543fca4e,
-       0xd20f24d8, 0x9d2d8569, 0x80ae37ee, 0xf400bdad, 0xdfa3fd35, 0x9f2e51eb,
-       0x05f7cbb2, 0x5c5cb2e4, 0x77c3b267, 0x2accf89e, 0xaf10339f, 0x0fb68d8d,
-       0xe539f4a3, 0xacdbba47, 0xf9586994, 0x3fe53666, 0xfbb4f795, 0xdf9f9cfa,
-       0xf0ec9873, 0x57fdc79c, 0xfade81fa, 0x93ddeb1c, 0x1db97f3f, 0xfc52bdc6,
-       0x17082197, 0x677e8fe0, 0x4ebfb941, 0x296dc719, 0x3f2762b9, 0x3f717986,
-       0xf9e3936e, 0xbb6d9d93, 0xebb7dd71, 0x0e516b42, 0xa9fef9be, 0x28671c64,
-       0x3eb8e078, 0xf5d573f8, 0x4570bee4, 0xbf7abee4, 0xf9f0a70b, 0xef2bbf0b,
-       0x8bc79b9b, 0x500df7bb, 0x0eed8bc5, 0xbfb86fbe, 0xc0937fd4, 0xcfd9f1ef,
-       0x937c564b, 0x9055fef7, 0x05824f7f, 0xe577e844, 0xc00fde4d, 0x66a87f21,
-       0x13a270ff, 0xb3cb839f, 0x51e7acc9, 0xb6e4e75c, 0x87efa77f, 0xf2792b27,
-       0xb93cea0b, 0xe2a59f0f, 0xf43d23b5, 0xb5f7701d, 0x63796fde, 0x43a95bf0,
-       0xfbf0fbc9, 0x837ec3f0, 0xf87e1f7c, 0xec5342bc, 0x7197f0fb, 0x89f120ca,
-       0xc52f0fdf, 0xe12fe03a, 0xe907f9ef, 0xc166c1fc, 0xb04c798d, 0xcfef5483,
-       0x87ded3c8, 0xf17fefcf, 0xe3df93c9, 0xc91f33ee, 0x1e194adf, 0x5dff1b5f,
-       0xcf3c0e82, 0xdeea7803, 0x51377fc0, 0x777fcf7b, 0x05b7e739, 0x4ba085eb,
-       0x553bfba0, 0xd6650bed, 0x6776085e, 0x3cec9328, 0x3dc477cd, 0x5c5f6c5e,
-       0x041befcc, 0xded34fbb, 0x754fe0a0, 0xf961ec4f, 0xfe1671f7, 0xf237d658,
-       0x64f32fbd, 0x590f31f8, 0xaf591692, 0xf9147fa2, 0xe16050b9, 0x1abee9f7,
-       0xed463ef9, 0xbb95e7fa, 0x36f3cf09, 0x761c6e08, 0xd067aff1, 0x078053f7,
-       0x2f995e95, 0x837e73af, 0x6ff3e740, 0xb2a98f76, 0xeeb845ee, 0xaef6becc,
-       0x50587ef6, 0x5f842e6f, 0xc6b1f990, 0x49afe1c8, 0x885f7466, 0xba25ec90,
-       0x125dc780, 0xf83b0f94, 0x0de10b39, 0xe627c923, 0xf2937b05, 0xe44e6574,
-       0x85058143, 0xcffaa3eb, 0x30fbe1af, 0xf842e7c2, 0x12c98efb, 0xc74cdbf9,
-       0xca3b6dfd, 0xd223d01d, 0x4e10dac9, 0xf2b126b7, 0x67bc0731, 0x20f06aea,
-       0x342e58cb, 0x2cdcb085, 0x3e7bbbc7, 0xaffc1134, 0x846cbe0b, 0x2a18a27f,
-       0xe79af927, 0xee93341b, 0xcaf9e3af, 0x167f328d, 0xaefa06b1, 0xa26b3260,
-       0x527598b2, 0xa1eb0779, 0xac5f83d2, 0xe03da364, 0x798cb2a6, 0x6aca9ca9,
-       0x0d672ca9, 0x712b7e54, 0xc002625e, 0x51359d35, 0x39e402bd, 0x32890bdd,
-       0xf74de319, 0xeecec89a, 0xac1cd37e, 0x0e6af800, 0x38bcb918, 0x577d2560,
-       0x08466073, 0x1fddf9e3, 0x7bf85cd9, 0xa7b176a0, 0xbf48e29a, 0xf7f93ab6,
-       0xbdd52e34, 0x2bb935dc, 0x78e3f77b, 0x7c7f421f, 0xbaad9e90, 0xafe27ba7,
-       0x7a8f907f, 0xe1ade260, 0xe81cf27b, 0xcb6d5fcf, 0xcafe3f26, 0x9446dd40,
-       0x5219d5d3, 0x7ab7e23d, 0x95ee8598, 0x05d3cee9, 0x415b2824, 0xe9fde3fe,
-       0x05efe06f, 0xff26d940, 0xf901c05e, 0xde10f57e, 0xdab60eaf, 0x951e7f21,
-       0x95377e1d, 0x5445fc47, 0xa87bf51e, 0x397f31df, 0x5efdc795, 0x9d1eaf2a,
-       0x77c7df4f, 0x839e9fa7, 0xc87427bf, 0x19a4f951, 0xb28fe1f4, 0x44fc2e7c,
-       0xfdf4eb08, 0x45aec0c8, 0xd508fdf8, 0xd7d67f41, 0xd19dd2f9, 0x555352ed,
-       0x92ea1db8, 0x7008fdfc, 0x629e93d2, 0xea4527a8, 0x118dfdf8, 0xbc199ce3,
-       0x57f3065e, 0xfb5220bf, 0x303f7811, 0xc72bd618, 0x2e094ca3, 0x03461f2e,
-       0x74e18cbd, 0x7c65df83, 0xea99d5d8, 0x69762310, 0x4e5c13e5, 0xedc0be54,
-       0xec67cace, 0x9eeef7f2, 0xef0d2132, 0x89cb511d, 0xf94c45f9, 0xbded13fd,
-       0xea2c45a5, 0x83b9983e, 0xe60f2475, 0xd3f756ae, 0x4ce807ca, 0x95aad3bf,
-       0x643a1f0b, 0x8d9733fb, 0x97faefc1, 0x1d93b1cf, 0xa76ec976, 0x763f7a73,
-       0x0164a475, 0x44fbd5bc, 0x0ab413ca, 0xb5b07640, 0xeab8de7f, 0xced0136e,
-       0xd7a7159d, 0xbeb1b8a6, 0xaefc49fa, 0x4ff352e2, 0x233aa4a7, 0xf4ec59f5,
-       0xdda007c6, 0xddf56eb9, 0x2ffac0f7, 0xb8c0bd23, 0xfc0d5b97, 0x12939b1e,
-       0xded32efd, 0x0b21af4c, 0x763f7bea, 0xa6ff3c33, 0x99bbf5e0, 0xbddbfbfc,
-       0x2b41be99, 0xa7deab47, 0x1afd61df, 0x6bf133ef, 0x00dc2fbe, 0x8a7bed7e,
-       0x7efbdb5c, 0xa77f0dee, 0x6dead976, 0xcea27243, 0x37d32c15, 0x658279d1,
-       0x921e5fab, 0xa5cdf603, 0xe88d96e2, 0x7835ef77, 0xf942ef12, 0x71e06cd5,
-       0xec904366, 0x89af4f80, 0x02466f34, 0x0609fbd7, 0x7c249f6e, 0x3d446a68,
-       0x1382f603, 0x6bdcafbf, 0xa439f0e6, 0xc112572e, 0xc2c3ebc9, 0x86f1f1ef,
-       0xf7b97025, 0xb25eb5e9, 0xd76e7ba7, 0x8082efd3, 0xc4faa07c, 0x6884523b,
-       0x226f67bb, 0x8af3de7f, 0xcc52fd48, 0xf1e8c49e, 0x2f1debb5, 0xdcd7b7cf,
-       0xc53f1aa3, 0xd653dfc0, 0xe36f9da3, 0x9de51324, 0x496e289e, 0xb2ebfcc3,
-       0x207bfe12, 0x8abc3245, 0xa3f1357d, 0xe1a3dba9, 0xeeff289b, 0x26e4ceb0,
-       0x557079fa, 0x7dfa38e2, 0xe297a742, 0xe71e73fb, 0x38f269f5, 0xe08e4520,
-       0xdcb9e772, 0xf20cd153, 0x28657c39, 0x79e417b7, 0x8afd608f, 0xf510a7a1,
-       0x24aab886, 0x33de0030, 0x9f495e3c, 0xd5d719f7, 0x6f34b005, 0xe1036468,
-       0xcdcdc2f9, 0xa13df70c, 0x8a176cf9, 0xefe69499, 0xaf6d7c53, 0xd813a641,
-       0xfe51998f, 0xa96736d7, 0xd7e60137, 0x391db939, 0x4245ac7d, 0x467a607b,
-       0xf5f9d906, 0xcc1cc1a5, 0x308cf70f, 0x3a627c53, 0x9f80258c, 0xc5886c72,
-       0xd412fe83, 0xcf58893d, 0xa7fd4c98, 0x86591d8f, 0xc658f87a, 0xb78c74f7,
-       0x9e2bc7af, 0x5fc0658e, 0xc21fda0e, 0x8969cf57, 0x963eafbe, 0xf92a74b1,
-       0xbd382315, 0x6c78cb1f, 0xd22bf62a, 0xc2cbee05, 0xf289a176, 0x70278fae,
-       0x0c5d3f3d, 0x09efc71d, 0xcef819ef, 0x566ff471, 0xc77ec826, 0x622b9018,
-       0x5c981fc4, 0x9f8edcd4, 0xde7b15cb, 0xeaea829e, 0xb73ff28e, 0x26f1e963,
-       0x2f7aa196, 0x03ae3d9d, 0xccdf32cb, 0xe8731032, 0xf88e3caf, 0x70f55a9e,
-       0x01ffd607, 0x88e3cafe, 0x55c992e7, 0x9f37fbf4, 0xa3e5dfdd, 0x7024e93c,
-       0x7dc463d4, 0x4b09f622, 0x781af7e2, 0x485f5092, 0xdf7db86b, 0x7b244fb3,
-       0x39751582, 0xea6e5c74, 0x33aafe90, 0x9e90d2bb, 0x38f207eb, 0x976715cb,
-       0xfdf2ea83, 0xf322ff02, 0x57624541, 0xc561d21a, 0x9e0261be, 0xe1e2bd3b,
-       0x56a04a76, 0x3061e7e4, 0xff2694cb, 0xd51678ee, 0x93fceec9, 0xfcf5ebc0,
-       0xf3d676ee, 0x23ed237d, 0x2f10cf8c, 0xe30f0f3d, 0xeabe0170, 0xb92f5ef1,
-       0xb983c33f, 0x52abf748, 0x87f21ee9, 0xfc24a72c, 0xe3302469, 0xae3e50d2,
-       0xe276ca68, 0xef06cdf3, 0x15f71a4c, 0x96e389c1, 0x3c966cef, 0x2a4fd236,
-       0x90f41e3b, 0x7ba7eed6, 0x3e32e687, 0xd126dcdf, 0x9aba0663, 0x03fcd2db,
-       0xeecd2e81, 0x8ff7c832, 0x4d6bdea9, 0xfa9f74e0, 0x4fba66cb, 0x87ce1976,
-       0xee81ab65, 0xab365d95, 0xf1443245, 0x3dd6b2cb, 0x577cafd4, 0xcbc5e533,
-       0x2f64ecf3, 0xeb0d634f, 0xdf2d5f28, 0x53e3e457, 0xc9add3b0, 0x65003fcf,
-       0xbe399fc5, 0x3efc53d8, 0x0f83f9b5, 0xbb2f91d9, 0xfc53960a, 0x942143e7,
-       0xf8bd001a, 0x0ee76650, 0xc92e1ff4, 0x0fd68ef6, 0x0b1dfad1, 0xa2a7335c,
-       0xdfd7d149, 0x38e8b660, 0xb03f168a, 0xdef11b1d, 0xa24d45a3, 0xd131ef13,
-       0xfe0a23fa, 0x953f78b4, 0xc7db2290, 0x3f706320, 0x20eca69b, 0xfa71933f,
-       0xd6017b20, 0x987dc971, 0xd39ab3ee, 0x6279efc4, 0x8a14a13d, 0xb3f06b03,
-       0x8cda1f41, 0xd60549f7, 0x02fee819, 0x5c02fe1f, 0x8dfdac52, 0xec4a27ba,
-       0xeb2d3f5b, 0x5bcf3ecb, 0x7a775fb9, 0x1b9f28bd, 0xdbcfb751, 0xb3247f97,
-       0x26fbe31f, 0xeed27df0, 0xcfd002c7, 0xdf8217e4, 0xafa97287, 0xdfa5e85f,
-       0xfed9b883, 0xdffff828, 0xc7a90a29, 0x00008000, 0x00088b1f, 0x00000000,
-       0x7dedff00, 0xc554780b, 0x3d9cf0d9, 0xcd8dcd7b, 0x09c246fd, 0xb8094404,
-       0x9fb1dc24, 0x4a34021b, 0x414045d0, 0x2dc8d812, 0x088d9242, 0x59b6b696,
-       0x5a4062e4, 0x7da5aac1, 0x2c142ea8, 0x11a0d05a, 0x86ec5d43, 0xba8b4508,
-       0x8ad45cb1, 0x14178026, 0xb16d0042, 0xfbdfad1f, 0xbb2733be, 0x6a2364e7,
-       0xffefefd5, 0x27a3cbff, 0x9cccce73, 0x997ef799, 0x6318c399, 0xb17fc39f,
-       0x50dff876, 0x261d8ac6, 0xd8c21b27, 0x4fab569c, 0x8a6c61c9, 0xef74676b,
-       0xa79cc624, 0x18564c0d, 0xedfd2e6b, 0xd543262f, 0x8ad79b24, 0xcb7693f7,
-       0xcd942f0e, 0x3b58eef1, 0xdaf4b7b4, 0xd5f6c468, 0x512c490f, 0x6724ac62,
-       0x618b126f, 0x9b0e576c, 0x7783cae5, 0xd0daefe1, 0x950ed135, 0x6cdb1992,
-       0xfb622577, 0x1b32dee7, 0x1ec60f58, 0x87f5e78c, 0xe3db99bd, 0xfd5098b6,
-       0x687f5841, 0xd5b23ca8, 0x467f58c0, 0xe8c79c3f, 0xb318a30f, 0xebdfca86,
-       0xaf94d048, 0xa9a198bd, 0x68fac85f, 0x0759179e, 0xb38f9e68, 0xdfca6817,
-       0xa9ad1b4f, 0xa4529d7f, 0x3fe84f29, 0xa27f5341, 0xbca6b263, 0xeb8ac8d6,
-       0x63675e61, 0x8f4b5e8c, 0xd8463cd0, 0xb787040d, 0x478702d3, 0x683b584b,
-       0x8576c572, 0xa98d5957, 0x7dec35a3, 0x9c38da0f, 0x819c5d58, 0x4eec630d,
-       0xffa899f5, 0x58df0143, 0x7be0d599, 0xdd46a303, 0xb5bc046f, 0x160d941f,
-       0x42f32fc0, 0xcec614bb, 0x1a17768b, 0xbe207a0b, 0x7f7e01d8, 0xdfdf8d91,
-       0xded1f025, 0xc335e0df, 0x816b5bb8, 0xde85fa26, 0x660c56e3, 0xdd7e1843,
-       0x8259b28d, 0x730370f2, 0x17dd7be3, 0x1059cccd, 0x5163071a, 0xde76bdfc,
-       0xe64e3abf, 0x8defe68c, 0xaedff7e7, 0xec62e245, 0x5d2b5a9d, 0x82cf0e7f,
-       0xc0633e38, 0x691fa0cc, 0x34f8cc74, 0x06f6b7a0, 0xfa016ec9, 0x366c6cac,
-       0xed17f8e3, 0x316549cc, 0x5ea7e15d, 0x31a6d78f, 0x5aabfa05, 0xd52ab2dc,
-       0x1f6ef401, 0x682bf752, 0xe303555f, 0xb1a91200, 0x965bab0f, 0xbb62d8cb,
-       0x6716f442, 0x7f43f981, 0xbff4feef, 0xf0073ccf, 0xd4b3fe3b, 0xfd07e47c,
-       0xffb559f3, 0x17e8f4fc, 0x27f77f3c, 0x83f63f7f, 0xd3ff6a2f, 0x65fbdecf,
-       0xc6eef3d8, 0x932ebb3f, 0x30746129, 0xace1cccc, 0xe90cb7af, 0x3b3ffa0a,
-       0x358f1fea, 0xb2497f43, 0xe01d997b, 0x27cd7edc, 0xc51e0cd9, 0xcc34bf0e,
-       0x37e2131d, 0x095ffb7d, 0xb1bc037e, 0xfb338018, 0x15b7cd81, 0x0ddf06e9,
-       0x924b63e5, 0x5e906b7d, 0x669ac15d, 0x95b1f718, 0xe06b1c7d, 0x0ec7e53d,
-       0x86f7338e, 0x2f3cb1f2, 0x24cbfbc3, 0x2cfb8307, 0x3a446acd, 0x5703899d,
-       0x2b2ef868, 0xd31674e0, 0xf9d02dd2, 0x7c61adfb, 0xb6a96b33, 0x96d5ee5c,
-       0x61fce387, 0xd899cf1e, 0xbc30fab4, 0xeffcc4fb, 0x047c2f89, 0xce3b8be5,
-       0x5376e54e, 0xfac85dc7, 0xbfb4f58c, 0x81fa2d1f, 0x32008e39, 0xb7b2f1c5,
-       0x9fcf34ac, 0xf89183e1, 0xf2266f3f, 0x4f82dbe3, 0xd6c4c4cf, 0x6707c049,
-       0x6f070e14, 0xd2e1cc8d, 0xed056013, 0x6e2777ab, 0xdfc0b822, 0xb3ee5451,
-       0xa4c7cb19, 0xde17b240, 0xfb07265b, 0x28cffbe2, 0x1d630fad, 0x4668e2ef,
-       0x53b491ed, 0x10fa7c04, 0x30f3148c, 0xe7801f01, 0x69d946cc, 0xf1f0441b,
-       0x29a3e0ea, 0xa8d0fe8f, 0x43af7f29, 0xa2f6be5b, 0xb4c85cb6, 0xdaac8bed,
-       0x8e02cbf2, 0xfbdaece3, 0x96d34fdf, 0x1e3a55df, 0x1d8bf2e2, 0xf3c30dca,
-       0x259521cc, 0xcfe00e2c, 0x179c66ec, 0xb864f78c, 0xc11e2b1c, 0x3adb78e1,
-       0x21cbe7c9, 0x5f9e6afc, 0xecab1cc7, 0xdaf74879, 0x418bf0fb, 0xe82b9a7a,
-       0xed3aee67, 0x19dfebf3, 0xbc019e35, 0xe325d84e, 0x207f78fb, 0x4e78881b,
-       0x419f738c, 0xc744f03e, 0xc37d420d, 0x46b9ede4, 0xabd9ff78, 0xe3990e6c,
-       0x3b21cb81, 0x3938ff1f, 0xe7c011c6, 0x058768fe, 0xd3da2d6e, 0x8fe51527,
-       0x37cf5eda, 0x52dc800f, 0x9c7be1fa, 0x99af4867, 0x25d20559, 0x28fa021b,
-       0xe4c2c81d, 0xf6878f8c, 0xceb71dcf, 0x3be04772, 0xef955ce0, 0x77c8259c,
-       0x35f4e63f, 0x1ec8cda6, 0x352c71c7, 0x9c20b26d, 0x8fc427eb, 0xb999fa03,
-       0x5b9df38c, 0x3064ac0a, 0x647b99bf, 0x25cce782, 0x44498f92, 0xf435e72f,
-       0xbea0f022, 0x5e71f00f, 0x329a5fc7, 0xfdd12850, 0xecc62683, 0x678ebef0,
-       0x1466df25, 0x648d53d9, 0xbb6d542f, 0x337047c2, 0xef1117b2, 0x2a8f816e,
-       0xa81e2323, 0x0658fe04, 0x4bd4e7f5, 0x178fae34, 0xa8067c5b, 0x261db55f,
-       0xae3fcf08, 0x2824f931, 0x3328dc7f, 0xbeb10fce, 0x7db550be, 0x7c2f2f3b,
-       0xf82d96fc, 0xff3c5dbc, 0x2db8fb78, 0xa2b5bef8, 0x9062ef7f, 0x6ddf504b,
-       0x3e6b5664, 0x0259b75c, 0x63b7a076, 0x4757f651, 0xe8ed3d21, 0x3e0cf0f3,
-       0xc618c524, 0xab59c74f, 0x85d0e109, 0x9f03b69f, 0x2be575c5, 0xa0f1d237,
-       0x50b9f4ae, 0x839039aa, 0x9267e372, 0x95d2ab63, 0xa974f54e, 0xc17cedd2,
-       0xd9b3d01f, 0x1bca1035, 0x1d38f5f4, 0x1fd635ac, 0xb9e715b9, 0x3bfea642,
-       0xb71009e7, 0xdc2d4902, 0x28c8f7d1, 0xdabe5e78, 0x32efe884, 0x33f3aecf,
-       0x6ce6fcd1, 0x673274e7, 0xa453e4a9, 0xcfd5f3ae, 0x98bccbb3, 0xa63d956b,
-       0xcebafceb, 0x218fd383, 0xf1104876, 0xa2d1be75, 0x9dd1fda0, 0xab5d3b7e,
-       0xff411b64, 0x675adbb6, 0x238c0732, 0x2575bb7e, 0x907688c8, 0x179fa8c1,
-       0xec5ddfac, 0x2d39be05, 0x4a6f7971, 0xf95874e6, 0x5926ea74, 0x6953f50a,
-       0x4073f40e, 0x15e3bbbd, 0x81a56382, 0xc1fa09eb, 0x4e0f4e38, 0xc606bcd8,
-       0x856de601, 0x32679fa6, 0xe361c937, 0x8604b4ab, 0x3b41fa69, 0x7c9fbc26,
-       0x1c19cfde, 0x9fa85e4f, 0xf1da5daa, 0x9a839954, 0xfb0954f1, 0x0ce7ed48,
-       0x9fea078e, 0xf784f1c1, 0x3c769cf3, 0x66a09655, 0x769d553c, 0x9f27e895,
-       0xae55d3f7, 0x73f634f8, 0xb64e7d55, 0x2b4f0c31, 0xfb1631af, 0x0f4dd822,
-       0xbff973c4, 0x7ecd9b70, 0x557eac32, 0xeca6bc7d, 0x9fb74c69, 0x859fa30c,
-       0x3bc807f8, 0x032418b6, 0x314ad3c8, 0xfbb291c4, 0xa3d47881, 0x011faf49,
-       0x5b559a0b, 0xa748cc3b, 0xfcfa5d8c, 0x865861f3, 0xcf1c653f, 0x38450394,
-       0x1d93469f, 0xf00cfd59, 0x71e017bf, 0xf5f061c6, 0x7fddf986, 0x119b83e9,
-       0x4dbb313e, 0x7940f709, 0xab45e3ad, 0xdb5fe302, 0xe5f62a68, 0x67dddea1,
-       0x5f261d9d, 0xfdb93ad7, 0xeb019ccd, 0xfba181e4, 0x8f5f8331, 0x0cf17b43,
-       0x5e2316b3, 0xd6031ad7, 0x587061c1, 0x3eaa2a0b, 0xc5765c02, 0x5fd744cb,
-       0xb54b2e1b, 0x01e15170, 0xf085d9f0, 0x535b58f1, 0xffbb4ed0, 0x6871e39a,
-       0x360d15a7, 0x9ca7a44a, 0x9721e912, 0xabaff39f, 0x0d7f2644, 0x08525626,
-       0xf441bbf0, 0xfa0ad677, 0xdbf06ae9, 0xd885091c, 0xbc71c6ee, 0xd2f978dd,
-       0x9e50c9a1, 0xca993dfc, 0x4d99eeaf, 0xe2600d72, 0x27bc0008, 0xbf258d4f,
-       0x3863fa0e, 0x9fa8a9be, 0xe126d481, 0xa937682d, 0xe005f258, 0x308e377d,
-       0xf3e70f1d, 0x796d4e49, 0x0cb6b172, 0x335f91fd, 0xafbda5d5, 0xe28759da,
-       0x07de9363, 0xb1458c17, 0xfed1cf8c, 0x6632fa11, 0x1f6b5ef0, 0x11d9d718,
-       0xebcd0766, 0xeca9dfd2, 0xb6c0c6bd, 0xa7337b62, 0xb28d9ffb, 0x84e796fa,
-       0x443dfbd3, 0x030e4db7, 0x37fb6133, 0x9bd43e2c, 0xbb33db7f, 0x77a08b17,
-       0xd198ed43, 0x35e34690, 0xdcfeb832, 0xfd8c51d4, 0x067bfcff, 0x8ffa0cb6,
-       0xfb76651b, 0x27bfb422, 0x4231f85e, 0xef072dde, 0x2f2dfd0f, 0x256c728b,
-       0x3f2148bb, 0x58b7f54d, 0xab2a1f5a, 0x340c967e, 0x34fa4419, 0x9e3d1076,
-       0x81e9f7f7, 0xe68d8ce3, 0xa07f3c78, 0x2f6e1ed9, 0x047fa234, 0xd01fc676,
-       0xa36b823f, 0xb5fd7fb0, 0x00bf2a76, 0x035e0e7e, 0x4ff90ab5, 0xd3fb6b7b,
-       0x075ac5f5, 0x8ed7f75d, 0x5a81eba0, 0xb97bd527, 0x07ae98b6, 0x75745d6b,
-       0xf9f025c7, 0xec5db918, 0x920afe79, 0xdbafe073, 0x88e28612, 0x3e20066b,
-       0x793e3bcf, 0x0af0b7f2, 0xafd3a8cf, 0xacf5c116, 0x735771d4, 0x3ff9fc98,
-       0x3f074fcd, 0x7fc71728, 0xef5d7f39, 0xb73d542f, 0x70179763, 0x87a9e0b4,
-       0xfbcc18e2, 0x0a5d7194, 0xadcae1ca, 0x709ce32b, 0x0e3bb305, 0x9f29e1f5,
-       0x3e891c5c, 0xfa54134a, 0x2848c670, 0xabe718e7, 0xefb89e8f, 0xbfabe406,
-       0x51d9356d, 0x7ec0785f, 0xae7e80b1, 0xf89db86e, 0xbc6dca12, 0x1939ef7c,
-       0xfe5a8dcb, 0x87bbf059, 0xa2589452, 0xb74e4cbb, 0xdba44c81, 0x8def2dea,
-       0xb0f23a47, 0xfad3d20e, 0x8bfef876, 0xbd4f7a00, 0xbd7e8e5c, 0xffcab9fe,
-       0x9eae411e, 0xc9cefb86, 0xab57f871, 0xafaef119, 0x0e34815f, 0x41313c7c,
-       0x3670f1f0, 0x156ded1c, 0x4c97cc1e, 0xf73f2cfc, 0xa86d419b, 0x39fcb7bf,
-       0xcaebca4e, 0x67ebe7af, 0xa507fa3f, 0x176cfe7b, 0x6bd7af74, 0x200c234a,
-       0x7e7e8a15, 0xe20534ad, 0xb9fda346, 0xacf244c9, 0x1f6fc772, 0xd3da35fb,
-       0x7d1c5a6f, 0xf69bb415, 0xe505191d, 0x494d3b85, 0x311a7c25, 0x2f084a52,
-       0x696ff81e, 0x0b0f087e, 0x5667d99e, 0x77fbf206, 0xb1f08427, 0x99936770,
-       0x8f0aec0d, 0x7326faa2, 0xbc044c6b, 0x478db7d4, 0xfb9f96be, 0x7ef119a7,
-       0xa58905ea, 0xe78044e6, 0x6e717da6, 0xa3c22701, 0xde2753c0, 0x803df574,
-       0x1553a417, 0x57e7fa4f, 0xc67a7027, 0xa23c94fe, 0x00ff27e7, 0xcb78a9f0,
-       0x57f9c0e2, 0x1c67793c, 0x6303e3ce, 0xdfeba70d, 0xc2714cac, 0xde4c2b7b,
-       0xf95d3b14, 0x96478afd, 0x6fcdbd10, 0xc8c29259, 0x1ba670ee, 0xd33cd046,
-       0x37737e71, 0xcdf9a54e, 0xbba26e63, 0x2ec8df8a, 0x353e2bb4, 0x119de2b2,
-       0xc175e2f8, 0x066c1f17, 0xfbf3046d, 0xef73c840, 0xcb8fb2eb, 0xca183bcd,
-       0xdcaa25c9, 0xfca88b64, 0xe9e395a9, 0xe08304f1, 0x70f2e02b, 0x6f72dd7a,
-       0x51f3f110, 0xfd153396, 0xbf030f47, 0x7d21f797, 0x2dcafd0e, 0x7e3952e3,
-       0xed4cbdb8, 0xc2290ec0, 0x683f58fb, 0xac3b7f22, 0x273cfb1d, 0xe2c5fef4,
-       0x28ee30fd, 0x07f3e409, 0xd36edc29, 0x095fefcf, 0xbf028e3c, 0xafa30b20,
-       0xfce6fe30, 0xe73565be, 0x7ddf956f, 0xf9f18a93, 0xff388727, 0x7cccbb60,
-       0x9520571a, 0x914d379e, 0x58581e48, 0x6f5f1220, 0xd6be0931, 0x04e9573e,
-       0x38c46dc6, 0x60bd2746, 0x7f0409ff, 0x3de787b2, 0xe4c2ed08, 0x17df07a1,
-       0x953fb5d7, 0xfe0be76f, 0x3ff9057f, 0x6cffc43a, 0xeefbe723, 0xf097adf5,
-       0x3df26957, 0x57e46bf6, 0x82af4fe0, 0xe1726afc, 0xdede3fbc, 0xf456e47c,
-       0x3e55eb1b, 0x3d4fcad5, 0xbd3c569f, 0xcf53e88f, 0xefd71fa7, 0xa7c8894b,
-       0xb4a5f73b, 0xd3e245e6, 0xaa7e56ef, 0x2754fbf0, 0xd879553f, 0xf2f51c1d,
-       0x250481f0, 0xdf843ca2, 0x2bac3621, 0xa774a9fd, 0xdf82dbd2, 0xb942f557,
-       0x2a9749d3, 0xa5d275dd, 0xf9fa774a, 0x7fa7e16a, 0x158047fe, 0xb90df9e2,
-       0xf7da1863, 0x45b8c153, 0x03054dbc, 0x6b1f34a3, 0x4d5f11a5, 0xfef3e311,
-       0xb7184983, 0x79c21241, 0xf4bff54d, 0x0df7be19, 0xdfa2f313, 0x2dcf767b,
-       0xab57da0a, 0x990ead92, 0xe68f84e4, 0x5eec8efd, 0xb00f7189, 0x8e51aaa3,
-       0xdb47f74c, 0xddb96ed1, 0x32709eea, 0x7f448411, 0x8dcbe489, 0x07b2656b,
-       0x2e3c79ad, 0xf2611ae1, 0x9efa5fa1, 0x2be345c1, 0xfd5e1829, 0xf73d1a23,
-       0xb93dd1cf, 0x2157c606, 0x8c3f87c6, 0xc2ceddd7, 0x0f5faa7e, 0x46bbce5d,
-       0xa1c5440a, 0xe3b12c3f, 0xddb87061, 0xefe32da7, 0xfd4252bf, 0x777eae5e,
-       0x5f4df47c, 0x3aba05df, 0x1b787e0e, 0xba7c8d5e, 0xcb3cf4e1, 0xa9e8e1cf,
-       0x031fc894, 0x615c9bbc, 0x44bad57e, 0xbddef72e, 0xcce280bb, 0xec0ff785,
-       0x2e6de5c1, 0x423cd7c5, 0x2af79e7e, 0xa8af503d, 0x03f9eef6, 0xe8efe445,
-       0xe822d3c7, 0xdec22ffc, 0x5a563b3d, 0x9ddf0327, 0x3f641d65, 0xd8dac779,
-       0x6f7e08d6, 0x7ea7624d, 0xd430f260, 0x86afea4b, 0x4f13b0f8, 0x329e276b,
-       0x7f0aea0e, 0xe5571dfc, 0xc3effca0, 0xe109f915, 0x1d6b62d9, 0xcf308aef,
-       0x4adc047b, 0x46667ef6, 0x3f937639, 0xb8f084c7, 0xb1acac69, 0x28947f63,
-       0x2b0144e4, 0xec9571c0, 0x246e2ebd, 0xec80e3e2, 0x3d5c01b0, 0xf76673fe,
-       0x11c3cbc0, 0xf5fb47fb, 0x0f31c984, 0x67e278e1, 0x3e05e636, 0x45c44578,
-       0xf51391e0, 0x44e5741a, 0x225f7dfd, 0x9bbc078f, 0x4eb82768, 0x2534292e,
-       0x1af37bc3, 0x6f3183ec, 0xbfea2191, 0xf3d0a89b, 0xad4ed14c, 0xebc95197,
-       0xd5ed99b5, 0x23dfe691, 0x6a5f53b9, 0xdefb35f0, 0x0fe8cd3b, 0xabe16fff,
-       0xc0d8fef0, 0x8d5f8c18, 0x746e4895, 0xfc4663a5, 0x63fc1e70, 0xfbcf13f4,
-       0x7cf2bc79, 0x02c38f09, 0x735db93c, 0x8d764493, 0xf87ae74a, 0xabe0273e,
-       0x28a8ffbe, 0x9db913fb, 0x8557c2a4, 0x6abc7eab, 0xd757907d, 0x1bfbcb86,
-       0x293f071b, 0x2fc23e61, 0x55d00dd9, 0x8cd5b1b5, 0x5c69e77c, 0x667f426f,
-       0x65fbc2ba, 0x29a0d746, 0x6ef37461, 0xdbde91a2, 0x267a3f9c, 0xb585c7d2,
-       0x77f38616, 0x871739ce, 0x8315f37a, 0xc8d1b5e3, 0xe4caaf7f, 0xc707778f,
-       0xafdad6bf, 0xef0c6b1f, 0x39c68737, 0x84d0b2b9, 0x654669ea, 0x8c352993,
-       0x4c4dde8e, 0xfdeae7a0, 0xf2854a8c, 0x1a3ef062, 0x16e7f787, 0xd5e49bca,
-       0xc344c707, 0xf13519f3, 0xc02afe9c, 0x8e72a6f0, 0xbea68f26, 0x5347cf47,
-       0xe535a24a, 0x3dad45d9, 0x96252e11, 0x044762c0, 0xa926f4fa, 0xf535f9f4,
-       0x37e81382, 0x5ffedd02, 0xab1617a7, 0x9355a17a, 0xa92ebecf, 0x8d485e8b,
-       0x2d1617a4, 0x0f115253, 0xd165be6a, 0x2252e34b, 0xb5c385e9, 0x1472df3c,
-       0xcf5e19e4, 0x70bd014e, 0x985e9875, 0xd13a2362, 0xba482bb7, 0xf1505e8c,
-       0x99cb1df4, 0x2217a8c3, 0x24f8f5f0, 0xd9b85ead, 0xe17a4e5f, 0x533229e6,
-       0x497df3c2, 0x56eefec2, 0x4ca6142f, 0x11c9b2a7, 0x106e811d, 0x3a17189e,
-       0xf8eef22a, 0x3f0fd41e, 0xbc13b24e, 0x3ba27af4, 0x39799e39, 0x04bffe39,
-       0x2f8e555f, 0xbd912a9a, 0x18ee95d7, 0xe9a2efd1, 0x16ade512, 0x7c72e1ed,
-       0xf1c81951, 0xae45d61c, 0x0eae50ba, 0xbcab9709, 0xeb9bb57d, 0xce634f01,
-       0xf9e14b2f, 0x0e4cebad, 0x35bfd42b, 0x85876724, 0x271fd9cb, 0x2b672375,
-       0xe0bd9cb8, 0x45f1e82f, 0x4263cb71, 0xcafc82be, 0x8ba04475, 0x9ad1a569,
-       0x06270375, 0x19ef29ff, 0x64578fe4, 0x27bc878a, 0xc1c1fdf4, 0xf6821a7f,
-       0x0f1c61ff, 0x49b7efe0, 0x9f80ef5c, 0xe058fd71, 0xdc39a2fb, 0x2edaae5e,
-       0x1baafc13, 0x6f57bf38, 0x3d0e2893, 0x3333ff3e, 0xf0f6ede5, 0x971a86b8,
-       0xf0bff156, 0x9955d695, 0xc4937cf8, 0xfc0acce3, 0xcd87cb0b, 0xbf242c73,
-       0xad06fe64, 0xe96250ff, 0x4aed8fd8, 0x3639277e, 0xec8bfc91, 0x7e89556f,
-       0x3ed36e16, 0x16ac72af, 0xe48057fe, 0xf6bd5576, 0x5fc15ef9, 0xde40e573,
-       0x7bcf9833, 0xd244764d, 0x4ebd6a67, 0x9bfc5478, 0x780168f0, 0xf0eaf90c,
-       0x44dfddb8, 0x0baf9379, 0x5ffcfd07, 0x3e46e554, 0xf6fc821b, 0x7249c19e,
-       0xcf32fbc3, 0xdf59ce3b, 0xfe3c3537, 0x8ba0bafc, 0x55ee0c57, 0x9aaf58e9,
-       0x6fe73fe7, 0xca1a8704, 0x306cf5a5, 0x37f36efa, 0xa76bf568, 0x48506f3e,
-       0xecd6975f, 0x43cb6e94, 0x5abcf3b8, 0xf8fd6f85, 0xb65e780c, 0xd437f414,
-       0x716f9d9f, 0xc5a8fc63, 0x517241d6, 0x05cfcfa5, 0xe053fcbf, 0xc74644e3,
-       0x8d3bd258, 0x2ef89d92, 0x087ae360, 0x728362f0, 0x8fbfc8f3, 0x5bb07817,
-       0xde392f88, 0xe427803c, 0x517ef1db, 0xddf6e7ae, 0xee39ff0c, 0x4c9bfbff,
-       0x91a2aed8, 0xa0236baf, 0x8c3be986, 0x84a61447, 0x1b4f73e1, 0x92adefa7,
-       0xe0f86e83, 0xe7c197df, 0xdaa8f065, 0x9f165f23, 0x4f3e5c2a, 0xc0827e12,
-       0x582d8b6b, 0xfc798052, 0x3363923d, 0x53c7f656, 0xbae4e15c, 0xd8df843e,
-       0x3d578e64, 0x80dfa3dd, 0xf2d4a6eb, 0xfa201c24, 0x7636c5f4, 0x6f6f7d42,
-       0xcb855f6e, 0xa3be351d, 0xbe6abf5e, 0x1482c3cc, 0x66f352af, 0x83f76523,
-       0x7257a889, 0xa44f5a25, 0x4660cfe6, 0x40dfd7c4, 0xbe9313ff, 0x66967fa0,
-       0xecedebe7, 0xe13b7dea, 0x6e5136e9, 0xb4761ace, 0xa17be014, 0xbae0764e,
-       0xca0c5bb4, 0x9e506b91, 0xe43131ac, 0x4d070b8f, 0xa3df2e4e, 0xbf949f49,
-       0xfa84c272, 0x82731cb0, 0x09ffc798, 0xc4271bd7, 0x3d02de78, 0x2898c4ec,
-       0x093a1fab, 0xd1c53fde, 0x9cf30e34, 0xacb48753, 0xe4ee38c4, 0x2391fb22,
-       0x32d5cf88, 0xaf1e7c43, 0xeb3f222b, 0xe2243bce, 0x6f0037af, 0x94ea7ed8,
-       0xe047239c, 0xc97565bd, 0x75295314, 0x0d3cdf26, 0x6507a5ca, 0x66f50287,
-       0x831b18df, 0xfd09d7f1, 0x830ee665, 0xae0b194f, 0x6957f8c4, 0x71531dcd,
-       0xe7a015dc, 0xe15d1f30, 0x8a97196f, 0xb5128de5, 0xe6dd78f7, 0xe09d2054,
-       0x21e67386, 0x5079fef0, 0xd9eec10f, 0xb679ebc8, 0x754c0e48, 0x27aff3cd,
-       0x8b6f3879, 0x598970c4, 0x2b58ec10, 0x8567d7ef, 0xa11b837e, 0x63e7943d,
-       0x4b77ec7b, 0x90d3cdfc, 0xd49c618f, 0xfdb2c47e, 0x41e72f28, 0x82cc783b,
-       0xfea0ee5b, 0xb128df6e, 0x62afe834, 0x47cfce44, 0x4d077f60, 0xb47e7c0e,
-       0x671457e9, 0x4bef099f, 0xcb67fe87, 0x9d68e3ad, 0x3b258fd7, 0xb92abbad,
-       0x5677f099, 0x9b4b19f0, 0x47baf64a, 0x6f3daa62, 0x3edb8f0c, 0xe89bdc96,
-       0x65d2de78, 0xad5e70ab, 0x031ce4de, 0x5a39d5d1, 0xe0127897, 0xf43b06ed,
-       0x83c79984, 0xcc27bd9b, 0xb37261ad, 0xf10fb939, 0x42c69ce5, 0x3aea2f92,
-       0x6e32f70a, 0xb4adb467, 0x36987ad1, 0xef1b3d93, 0xd0b4af37, 0x5c1df6fd,
-       0xb567b4bf, 0xdc7e83be, 0xcc4d1b07, 0xbe5c630b, 0x88c3cfb1, 0x9bb60fc7,
-       0xdfe4de88, 0xcd8e4898, 0x5be3c1df, 0xbf791bcd, 0x72e36c1f, 0x5337e8ad,
-       0x9ebca3c7, 0x42c9f20f, 0xafcad3f3, 0x1e02ca79, 0x89b75d47, 0x9557cbf4,
-       0x53e45d53, 0x5f1455cf, 0x7aef4eec, 0x77aa8c58, 0x5ebe31f2, 0x7335955e,
-       0x196fd203, 0x03068c4f, 0x087d3fbb, 0x2c6569f5, 0x46d53bc3, 0xa712c3fb,
-       0x96c7ca07, 0x8a7e77fa, 0x6a515ff4, 0xde1e2073, 0xbf23f847, 0x78a44dac,
-       0x395f3cea, 0xab3e79c1, 0xdfcf3821, 0x356fa5a0, 0x2ddd386e, 0x9eb86733,
-       0xce6688aa, 0x7f477ab0, 0xef0a7402, 0xf928d599, 0xdb96126c, 0x42192ff6,
-       0x6b8d3b65, 0x6bfbd0a9, 0x8f8e8963, 0x4adcf0fe, 0x7799d3a4, 0x6eed0c4b,
-       0x42af75e6, 0x41bd57bd, 0xd6bd7052, 0xfb79bbfc, 0xc71ed0f9, 0x9c57f47d,
-       0x15ae809e, 0x8deafba4, 0xfd53f7eb, 0xfd82922d, 0x4e54dd1f, 0x57854276,
-       0x4b7cf466, 0xa001f91b, 0xd30f2897, 0x905395ec, 0x5857abee, 0x57d798ec,
-       0xc7a547e9, 0x661f9136, 0xc9a0c756, 0xb2516ed0, 0xe50e9112, 0xdea75269,
-       0x78f17a44, 0xedb57d39, 0x25903930, 0x7c8f4f2e, 0x6f4a825d, 0x90dbd232,
-       0x6f35bd10, 0xfd23322c, 0xebe3e07d, 0x5e908a11, 0x571f1e91, 0x262c2ae3,
-       0xe9523edc, 0x07e80ab1, 0xe8e5f4e5, 0xd3fa3bb1, 0x02f81dd3, 0xcee47eb4,
-       0x771a3695, 0x37ddaad1, 0xc47ce52f, 0xab459c70, 0x8179487e, 0xff1e4679,
-       0xeb88e156, 0xd24f30da, 0x2e0f1c65, 0x997fa733, 0xf1c6e8f1, 0x10d8e48b,
-       0x96e803fd, 0x01bac59b, 0xe5039443, 0x5698c4d3, 0x31e304a3, 0x51187525,
-       0xe14f0f3f, 0xc23979fa, 0x3325eb0a, 0x67281f5a, 0xacee081a, 0xa3d7c297,
-       0x876476e6, 0xa67b63c7, 0xb06efea8, 0x189fde27, 0x5851e50d, 0xff404db6,
-       0x5745a26e, 0x60a061ee, 0xbc516313, 0x5eca2a9c, 0x4c9d0328, 0x479f54cc,
-       0xd12f72f3, 0xebcd1bde, 0xc79f500f, 0xead5f2f0, 0x7f5e18f3, 0x99e7a334,
-       0x7013b129, 0x14cf573d, 0x237c66bb, 0xfd0d4951, 0x62d957fa, 0x6eb489a8,
-       0x9a8a6fa7, 0xaf146787, 0xf4fff976, 0x5cb5e606, 0xf90098d6, 0xe9d34e07,
-       0x867b30d6, 0x13ca7589, 0xa4b23d04, 0xae0bb238, 0x2f01bfc7, 0x26818c13,
-       0x06b06f6c, 0xb0573f08, 0xfbf7f615, 0xf65222e3, 0xdd05e7e0, 0x56a86bfb,
-       0x6ff30fde, 0x4b632725, 0xc524ae81, 0xe590f94e, 0x46db994b, 0xed4b94eb,
-       0xcc49bf68, 0xaf9cf869, 0xfbe17657, 0xefa8f1d5, 0x802e32ef, 0x7c2131b4,
-       0x1fa91b5c, 0x07675c75, 0xb798bc5b, 0xfd618ef4, 0x74e0c26b, 0xf08ae916,
-       0xe22264b4, 0x098daced, 0xac728bbc, 0x8447fcfa, 0xeaf1b3d7, 0xd64e5173,
-       0x95d74f3d, 0xa4febc4d, 0x78272b94, 0x64b3bde1, 0x6814a4e7, 0xd0c73163,
-       0x28baeaba, 0xbee5debe, 0xed17b764, 0x5a73a023, 0x32cde497, 0x76317f93,
-       0x5f0ce488, 0xd043315f, 0xb114b1f5, 0xaeb2d94e, 0x0ded05a6, 0x4196c3f0,
-       0x0ba5cf7d, 0x4c4f8c66, 0x9199b7f4, 0x401baaee, 0xcb15e26e, 0x68dd5798,
-       0xf75a4676, 0x56452a76, 0xf59a17e3, 0xfab2fbc0, 0xb9424cad, 0xafcb873c,
-       0xc7e3bb45, 0x39517961, 0xbd6ff7b7, 0x0438e766, 0x69ab9941, 0xb1675e25,
-       0x8a687dd6, 0x74517ea3, 0x4edc25fa, 0xd449ab2e, 0x03ad6794, 0x75c20e6c,
-       0xfef5da99, 0xa7b9e44c, 0xe30fd0b3, 0xde04d38d, 0xa5ada7a7, 0xb774f7bc,
-       0x44e73d76, 0x026332ff, 0x2246bb8e, 0xb8e6093d, 0xf066ed82, 0x6c35c219,
-       0x7dc0385d, 0x67d0a35c, 0x97ce5c95, 0xb4a97f0a, 0xdd17af82, 0xc2666597,
-       0x7f71f2df, 0x84d8fd6a, 0xa3f71421, 0x7f1efef5, 0xcfeb098b, 0x137e0258,
-       0x4ec97bf7, 0xda0ea598, 0x86e60ceb, 0xe3c61b8d, 0xe755fa45, 0x3ee50d35,
-       0xf5edc3ae, 0x10ed09be, 0x5d668f98, 0x6d0a8ce9, 0x5b46acb9, 0xf733afd6,
-       0x3b3908a5, 0x7e400d80, 0x19229adb, 0xf944ff89, 0x5791d674, 0xefae0a03,
-       0x194b6d74, 0x0747eb4a, 0x295ca1a1, 0xf9dca9bb, 0xe6a81cdc, 0xc78c07fb,
-       0x25cf895b, 0x26e5dfe2, 0xe310bda7, 0x0fdc5529, 0x35cf819e, 0x7d7806eb,
-       0xcb5dcb2a, 0xfee14d7f, 0x6b9b72da, 0xc12dc531, 0xc13cc54f, 0x98d3a358,
-       0x307c4790, 0x7b3c922d, 0xabffd05b, 0x8c15b40c, 0x25121fab, 0xe4dfa5e0,
-       0xcf8c3e1e, 0xb963fbf5, 0xfd53e317, 0x0aef000a, 0x779e05ca, 0xaef2209d,
-       0xb33e8037, 0x5c9fb5c1, 0xc7f48d3f, 0x176e66d5, 0x2aac7c8b, 0x6b8f9c4f,
-       0x7a13b1f3, 0xe50cf81e, 0xd61b0dce, 0xdb99ff92, 0x1ebf99c7, 0x8d9f77c6,
-       0xddbeffbf, 0xcea98fdc, 0x35f24fdb, 0xf4f229d5, 0x36ce4269, 0xe7559c82,
-       0x454df80f, 0x64fe87b9, 0x37bd1e49, 0x87bd73bd, 0x14a4e493, 0x1cf86318,
-       0x78aa57e4, 0x0a599def, 0x41652bc1, 0xcef384bd, 0x6865de62, 0x6819ff37,
-       0xd7abef0a, 0x533ebdaf, 0x56ebf491, 0x541d2067, 0xf58ab5a5, 0xdfcf5faa,
-       0xe7fe82fc, 0xf7d41ca2, 0xebe7d30f, 0xec4ced04, 0xf144b847, 0xde2e3540,
-       0xad917e9d, 0x30dc8d06, 0xf234a3d9, 0xad7f4265, 0xd0e899bc, 0x471b99ca,
-       0x9f3cd1f4, 0x79a01ce4, 0x40b8b93e, 0x1aea9e53, 0xcb7fa9ad, 0xd94d22b4,
-       0xa6bd7692, 0x49b94dbe, 0x7fee8e53, 0xac7ea6ab, 0x73cd36e3, 0x4ecf4bcb,
-       0x662e0093, 0x0dd5b7ab, 0xde03a870, 0xd2109118, 0xace2031b, 0xaa287eb4,
-       0x6c7e46c0, 0x004b60dd, 0x832ea4e9, 0xbcb0d3ef, 0x002d24b4, 0x6c7b58fd,
-       0xf5c216b7, 0x0c6f92f7, 0x62ac73c6, 0x7755f61d, 0xf95e8d33, 0x2be70665,
-       0xaa657af5, 0x5c1a687b, 0x9929b6f3, 0xf068048c, 0x358fc42a, 0x6bbb718a,
-       0x7437df17, 0x91cfea35, 0x64967ea1, 0xc54a0e15, 0xaf3b7776, 0x91b3bf23,
-       0xbd42fbd9, 0x91bf62cd, 0xda999777, 0x1ab635e5, 0xfdfc619c, 0x0f2e5487,
-       0xb98d721e, 0x32f8898e, 0x0deac3ea, 0xf7e8cdc7, 0x689bfb57, 0xd720e1dd,
-       0x16f7da71, 0x9af42fba, 0xd70a23b1, 0x1f553d3d, 0xc2e23d79, 0x6bcd3354,
-       0x65e390bf, 0x7f61644b, 0x2aa4f8f3, 0x7676cb97, 0x1b8c6404, 0x93e36954,
-       0xf20d397a, 0xded76359, 0x7140223a, 0x11d3900d, 0x0f5545fd, 0x3cd6dc80,
-       0x3af6859f, 0x7943275f, 0x9ae39023, 0x4553d3e7, 0xcb006b3c, 0x6fc275c3,
-       0xe7110cb8, 0x1e0cdbf7, 0x5dc37ebf, 0x087f7044, 0xc21216e3, 0x0e2f0f53,
-       0x69c1cbc7, 0x15bf9a87, 0x7bd7d2f8, 0x6be3832a, 0x3a723747, 0xceedca90,
-       0x1f3052cd, 0x15c7a885, 0x033af445, 0x2014a5d7, 0x0ab6fe1e, 0x67b2a8fd,
-       0xf4fa8625, 0xd12f4daf, 0xae33263a, 0xa438c24f, 0x6954bf58, 0x7fa19652,
-       0x40e0f400, 0x31baa6fb, 0xaaafe340, 0xfbc2682f, 0xce3c8d55, 0xf1e069e2,
-       0x4ad66acb, 0x6ee6dd7e, 0x2a6f75c6, 0x5207efa7, 0xc7bf1a15, 0xbd44ef0d,
-       0xf9f160de, 0x2b7fc424, 0x76ca57c5, 0x941d6c4b, 0x4eb6af37, 0x3d2f648b,
-       0xe2fde02f, 0xf5c3336a, 0x1ed095e6, 0x6b3fb1e7, 0x3be319bf, 0xca253b65,
-       0x5bea7867, 0xd6be62a6, 0xd0c4d8b3, 0x77c7508e, 0x7e482b26, 0x84739be4,
-       0xc787391f, 0xcc5cde2d, 0xee790fed, 0x9d57147b, 0xc8fc255e, 0x0e281739,
-       0xf08566f4, 0xb8f2e723, 0xd43bf4c7, 0x8e968ebc, 0xd3d53a55, 0xf56e9e9f,
-       0xe955faf4, 0xa76a4773, 0xf508319d, 0x1c7be03a, 0x1fdef1fa, 0x4c27ca32,
-       0x426cd4bb, 0x2af7bf3f, 0x281ee3bb, 0x2b7d940f, 0x9ace5e31, 0x95c1f3f9,
-       0x5f2e249b, 0x3e715b94, 0x86667599, 0x020239fb, 0x53c4014f, 0x43a94e32,
-       0x357e468a, 0x1ca37b06, 0x0175c1ca, 0xc1a7c700, 0xf949dfcf, 0x065f2e25,
-       0x69b6973e, 0xd6bd184d, 0xcaa2b908, 0xe66601bd, 0x017189de, 0xc6067d63,
-       0xf8987717, 0xd16c963e, 0x1d3edf5f, 0xb5c127e3, 0x65ffbc4d, 0x7fcb5571,
-       0x94fe10c9, 0x75c11673, 0x5da3c8a2, 0x8a5034bf, 0x744ec8f3, 0x6f315307,
-       0x12a47d99, 0xef5d5af5, 0x1fd0f397, 0xabc3d751, 0x91e6f471, 0x13bc6c1f,
-       0x32bb6be6, 0xdb69f08a, 0xf48edeb3, 0x243beb6b, 0x57de5235, 0x2a2e7abd,
-       0x53fc0dcc, 0x5d37b17d, 0xbda4f2d5, 0x6dfd68a7, 0x78dcffb5, 0x698b8fe2,
-       0xf76d5f74, 0x81ee3127, 0xf32cff62, 0x065e9127, 0x911c6cb9, 0xc2a7aa1f,
-       0x68e75d41, 0xf085bbeb, 0x3c1de775, 0x7ad8c1bf, 0x654667ea, 0xfd0e548b,
-       0x9a7262dc, 0x47de0062, 0x709b4c7a, 0xd5d71732, 0xc1c1b8f3, 0xa5c52b5a,
-       0x53b5ad5e, 0x469b5839, 0x156bd7e5, 0xec915eba, 0x34e104fa, 0xbe9ac5f5,
-       0xace6b708, 0xa7985d87, 0x44d07b3c, 0xaecc60f0, 0xc17de7d9, 0xea3c532f,
-       0x5f5f0342, 0xe67f8ea2, 0x4ee60cc5, 0x8a6371e4, 0x0bfd2c57, 0xc54739c9,
-       0xf7e8f1b9, 0x5b6cae0c, 0xd2cf6585, 0xee9d694f, 0x282fa03b, 0xe3c8d1ef,
-       0x2d8d55a7, 0xf4b9ceb4, 0xb3f50262, 0x1e31d0c3, 0x82fbccf9, 0xde3beb44,
-       0x4e673c69, 0xd288fae5, 0x7c451b3a, 0x3c5a4879, 0x1fe3c1c1, 0xe5f8e06c,
-       0x8245d579, 0xfaae9a1e, 0xc3e21c47, 0xf5a154ba, 0x6407d522, 0x19acb38a,
-       0x8f6711d3, 0x6e317720, 0xde93eb8d, 0xf494eb12, 0xbd99a7cf, 0xc07d717d,
-       0xfde44334, 0x50b48ecf, 0x75d71f7e, 0xc7f53297, 0x3f83d7f7, 0xca88eb43,
-       0x8ca745fc, 0x6ef9ad78, 0x196acff2, 0xfdf0c1fd, 0x320fe806, 0x34bdfbcd,
-       0xae564b7e, 0x85d6ef26, 0x98335bfe, 0xaeaa7802, 0x20173003, 0xd7455f9d,
-       0x2af7ddf6, 0xa8d637c8, 0x2f51878e, 0xf2067eb0, 0x5abcaa27, 0xe84b273b,
-       0xee0cacad, 0x89a7173f, 0x2fc2b2fd, 0x4267ff02, 0xe27ff71a, 0x5f8d32f6,
-       0x7e4fbfa4, 0xc7ec5591, 0x7978001e, 0xafb8c23a, 0xc2e318cc, 0x1d6cd976,
-       0xfa0337d1, 0xcfd2ba46, 0x1f1a4673, 0xd3cfca97, 0x28f39f91, 0xacfc4ece,
-       0x464877ef, 0xcfb40ce1, 0x5fb37756, 0xefc12aeb, 0xc1181b55, 0x8121b3cb,
-       0x6d8674e0, 0x7a018d70, 0xd8e3033c, 0xd678f40c, 0x878e8ae5, 0xaedd67f6,
-       0x109884e8, 0x886f57ff, 0x73ab76a2, 0x872c4a6f, 0xf7a08d72, 0x2b22c6f6,
-       0x06e679c2, 0xfbea77ce, 0x4f4c09de, 0x6a1a3e44, 0xde6330ea, 0x2dbfa7ae,
-       0xa1bbed0e, 0x222727bb, 0x4e3775ff, 0x779f3a77, 0xb445d2d5, 0xb87f155e,
-       0xd0a1627e, 0x3a7b9e63, 0xd57ca11e, 0xdbf44652, 0xd5afebb4, 0xfeedbfc8,
-       0x9e6bca68, 0x7a4d13d9, 0x3cd3ecf0, 0xd4c679af, 0xaa60eb4a, 0xf476cb77,
-       0x7c2f3d07, 0x9ff230fc, 0xa1459767, 0xdeffbd78, 0xb6aeb873, 0xad1d7fd2,
-       0xfedca8c3, 0xd541f2dd, 0xfec8bbd2, 0xd71fcb51, 0x37285d5a, 0x2e5c8ddb,
-       0x867c6c2c, 0x9785d9ec, 0xfcc20c2e, 0xff3d99ef, 0x98e50c3d, 0x86178fe7,
-       0xe7ec3ed1, 0xe7c30c2f, 0x6ba2e79e, 0xef25d922, 0x8e38f066, 0x0e731faa,
-       0x9ef13519, 0x73fe8209, 0xc62bac56, 0xb6864d73, 0xaf84714c, 0xd7da1b1b,
-       0x8617fb40, 0x389b1e1e, 0x8addac37, 0x392fdf20, 0xf46c65a4, 0x747a309c,
-       0xb8d49866, 0xd38ad7d1, 0xa11fb130, 0x34132e33, 0xd5843ed0, 0x6f3f2341,
-       0xa1f242a0, 0x8a7600ff, 0x4bd91dbe, 0xe44f6f67, 0x5d1832e7, 0x1d220613,
-       0xf697dedc, 0x75af3387, 0x3d986e5f, 0xa0683d34, 0xfcd3ddf5, 0xefd90096,
-       0xefad2341, 0x99a4ed56, 0xcd883ee7, 0x5dc42291, 0x0e3ebffa, 0xfe3eb6e5,
-       0x6ec6b3d2, 0x2fef0898, 0x08ecc15d, 0x063c7d3f, 0xfb9db17e, 0xf8d75992,
-       0xd07c128c, 0x5c95ed8a, 0xa7c71d83, 0xb78899da, 0x3efc0886, 0xb3f39d2d,
-       0x822b47ca, 0x8ac7c206, 0x2e6b18e0, 0xe789275c, 0x7136a00d, 0xff0ae8df,
-       0x1f18ade4, 0x96e97158, 0x9ef081e8, 0x626e8715, 0xdbbf20f7, 0x62fb58c7,
-       0xb7df4bbb, 0xd10bcd4e, 0x4a7dfe89, 0x2127d73a, 0x7eb2207b, 0xfbfc178b,
-       0xd8b9e95d, 0x3d6cfff4, 0x52757e07, 0xabf250fa, 0x07b8f067, 0xfaf5abf7,
-       0x6abb9541, 0x7e04e3bf, 0x53ddcabb, 0xff80bf64, 0x5c77724b, 0x7af542ba,
-       0x922527fa, 0x4a687c5f, 0xb5d312a2, 0x87463eff, 0x6baf2121, 0xe69daaff,
-       0x59f73af1, 0xf2717fd1, 0x8a6796fc, 0x90a493e4, 0x4971e75d, 0xa9649f7c,
-       0xd4f587c9, 0xf0a70571, 0xa754e9b8, 0xaa86f289, 0x87daa7fd, 0x3c1dcf9d,
-       0x8bdaa8af, 0x74185daa, 0x94ec38f1, 0x15f9fc21, 0x106beec9, 0xf588ef5e,
-       0xf247432d, 0xf6b98cfb, 0xcb747fa1, 0x7e2312cd, 0x4aa2f617, 0x527b7a9f,
-       0x1ddf6f5d, 0xba0a371e, 0x5b2bf954, 0x9eaa17c7, 0xba7a11aa, 0x2274f51a,
-       0x34cfe9ea, 0x5fbeb776, 0xf4aed3d0, 0x08c76c64, 0x1b0e43be, 0xeefc915d,
-       0x375fa213, 0x3dae0fe2, 0xe2162f83, 0x7058b378, 0xdd8bfa19, 0xb0974fe9,
-       0x5e7bba63, 0x5f9fc693, 0x08d78f8e, 0x7c577ffc, 0x9c3feabc, 0xbeed3b8f,
-       0xba23ce6e, 0x7ef0a332, 0xb928dba4, 0x7c885826, 0xc51367f7, 0x4af5f5c9,
-       0xff063e85, 0xfbbf4355, 0xf406ccb2, 0xdc153c77, 0x578bafff, 0xe4bf235e,
-       0xd5d69925, 0x0eff042c, 0x1705b3ed, 0x44ad74ed, 0x33ae183b, 0xfe50b5b6,
-       0x76854660, 0x831875fc, 0xe477f6c5, 0x32fc7ad0, 0x44e29636, 0x3b78fe65,
-       0x4baf23ee, 0x86f5a7ae, 0xb2b2adde, 0xedfebc35, 0x8f2b7d6a, 0xf74d2d9b,
-       0x6b79e72d, 0xab2fbe8d, 0x5af3dbd1, 0xc45a3ffd, 0x03b3ba7d, 0x71b26f9e,
-       0x26407279, 0x78c6aefe, 0x998cd5d1, 0x4bd5f5d5, 0xdaa39c79, 0x23f68cbf,
-       0x1fe78957, 0x4714831a, 0x5417fca2, 0x9f5fe53d, 0x9cc87c82, 0xd54f7cda,
-       0x2724c396, 0x849f79f5, 0x3c8f2e06, 0xf3c8b295, 0x7d68930c, 0xa7d8a363,
-       0x223728aa, 0xcc5c61dc, 0x863ee0a7, 0xce3fe413, 0xf325fdd8, 0x17f84e3c,
-       0x7fb3cf31, 0xf972a65f, 0x63754f3c, 0x84fd098b, 0xde7be5cb, 0xc38cef49,
-       0x97b09c50, 0x7b5fc791, 0xc63b25f9, 0xf5897a97, 0x4757c37e, 0xc77ff5f1,
-       0xdf2224e6, 0x9f6978ab, 0xfed9e1c4, 0xd88527e6, 0xa331d86e, 0x3e11d71d,
-       0xbfe2e6ff, 0xad32f264, 0x6c7f18d3, 0x25fa3471, 0x4516c7ed, 0x879f3c23,
-       0xb9e3e22b, 0xe3118c37, 0x78a1e589, 0x7bd205f2, 0xb2788b77, 0x6c5ef411,
-       0x6fa32e28, 0xd72153f7, 0x8adf30ea, 0xe79bb974, 0xddd2ebfd, 0x57f953d7,
-       0x13ff69bd, 0xbcc279c3, 0xc63a019e, 0x9800cfb8, 0x9f95e62c, 0x302b628c,
-       0xec9753cf, 0xe6f8997e, 0xf9050657, 0x7e53da06, 0x2153bbc8, 0x55a1883d,
-       0x020cc3cc, 0x7da563dd, 0x8f944979, 0x2fe04ab9, 0xf452fc1d, 0x5334610f,
-       0x403c8f30, 0x450663e4, 0x7ff62331, 0xe6bdc99f, 0x34ffcc4a, 0x88cb1d19,
-       0x93891de8, 0x85e6bb62, 0x77cf2724, 0x3521f9ab, 0x7e5dddef, 0x0cf7c248,
-       0xf945f4e2, 0x3094e620, 0x81e6ae1f, 0x4a2ecdd8, 0x511f2d4e, 0x7967e743,
-       0x9d37d8b2, 0x8b4a29ff, 0xa5719f90, 0x6bef6131, 0xfa6b81f3, 0xfa744d3f,
-       0x6b80f355, 0x71e9bfd2, 0xd5efdc2b, 0xfc487b8d, 0xa3f214f9, 0x3a77f9fe,
-       0xffb560b7, 0xb3bde902, 0x0e71161d, 0x938f2b45, 0x2f144dfb, 0x58fe0b38,
-       0xdd3e9872, 0xddfbc69e, 0xfa222feb, 0x8d8e086f, 0xc487fac6, 0xa687d5fd,
-       0xde7b464c, 0xfa3a341b, 0x7fb848d2, 0x0e3410d5, 0x1be4fb45, 0x7a694bc4,
-       0xa359f984, 0xf3d23eb8, 0xbfe09c51, 0xe70e0cb8, 0x5fb937a2, 0xf3cc59e5,
-       0x1d75761f, 0x73cf0d70, 0x914acfef, 0x6a77f8d4, 0x6ec8fca4, 0xecbd2ebe,
-       0x2df68976, 0xc8fcd97f, 0x7fb6c68c, 0x8fa23f2b, 0x219ddf3b, 0x790322f2,
-       0xdd23b9dc, 0xa84bf34e, 0xfb885c19, 0x7ef9d49e, 0x901f7083, 0x43e6edf9,
-       0xedf9efaf, 0x352fdff6, 0x837cdd02, 0xcb7d97fd, 0x96fc2ffd, 0xf52fbffb,
-       0xdb7f85db, 0xcbffdcb7, 0x8fff72df, 0xff07d244, 0xf5ebe6af, 0xfe7d78f9,
-       0xb7979f5e, 0x8bd734bc, 0xd695eecf, 0x6ae00476, 0x4d35db8d, 0x8c687902,
-       0xbd4562df, 0xe7923259, 0xb58f56af, 0xa14936fa, 0xaf0abe3c, 0x3fdc5991,
-       0xf39de7b3, 0x6ce356e2, 0x226c7067, 0x3246bbc6, 0xdacf6ff2, 0x198b1e78,
-       0xd798e9ed, 0x37e99a82, 0x67521d81, 0x7d079c8b, 0xf7f0a7af, 0x4b1bd1ba,
-       0xc8af0ab2, 0xfed5a64c, 0x59f648ce, 0xdb2f88ad, 0x17c5191b, 0xbf495199,
-       0xa4abde89, 0xe3d3fda3, 0x2e3f7e45, 0x689b9cc0, 0x4dce4a5c, 0x928f6e74,
-       0x407be383, 0xae1367e4, 0xf18397ef, 0x03b004e4, 0x1eb78f31, 0xa7e479f3,
-       0xfa9ea9da, 0xdc99ddbe, 0xc4c07a4f, 0xef305ce8, 0x11dd7c95, 0xbd9156b3,
-       0x0ee1e6a6, 0xcb27029a, 0x8dc3ca25, 0x62bff1c1, 0xce6de408, 0x449c4411,
-       0x3f296dfb, 0xdfc8eaf8, 0x7bd377f5, 0x86fecd14, 0x6187f466, 0x29ee771c,
-       0xb19dfa20, 0x6fed2477, 0x091ae4f0, 0x46fc5dce, 0x43780711, 0x38d431c4,
-       0x7a8f9a80, 0xde3fc45b, 0x3f4ab8c1, 0xa1584f3c, 0xc34caceb, 0x5a9e77bf,
-       0x159cfe57, 0x203d3f49, 0xf78fb8f1, 0x29f71e15, 0x84fa3b30, 0xccac7faf,
-       0x0f2c78e4, 0x1a83bcf0, 0xcc4279c7, 0x7287e0a7, 0x687602c0, 0x6681aac1,
-       0xab05ebd4, 0x3af0a2b2, 0xa433e9c8, 0xcfa7bc00, 0xf15069d9, 0xee8e8917,
-       0x89f114ca, 0x8f941d03, 0x9797467b, 0xd7c99ddf, 0x7165e41b, 0x64ceeefc,
-       0xafb3be54, 0x8b9a3971, 0xcbb1ae3d, 0x6541f291, 0x38e2f7e0, 0xb8f8ebcb,
-       0x05977855, 0x4f7c2294, 0x558ebedb, 0xc8afcd78, 0x79b8a229, 0xb455b9e5,
-       0x85d2e9bf, 0x1c52d7fd, 0xffa0accc, 0x1b55b330, 0xc5909b4f, 0xa0cfe7e3,
-       0xbb708dc1, 0x6ffe48ce, 0xa24675c1, 0x1b32849f, 0x2609a7f9, 0x7960c726,
-       0xf283b712, 0xb08a938b, 0x93c4a6cc, 0x407f97fd, 0x179b9f89, 0x5c256f8a,
-       0xe11938b7, 0xa8bcb974, 0x22bb271a, 0xa44bf9d9, 0x179aafdf, 0x88783aad,
-       0xf3aa7bd6, 0xe6a2e152, 0x8bcbbb37, 0x3c12ebaa, 0xd6689fc5, 0x1d8c7851,
-       0x58ae31e3, 0xaccda7b0, 0xcb4b37ee, 0x0b4de509, 0x7ca39f76, 0xf51f9aa9,
-       0x3b239cd4, 0xb199da1a, 0x3fa0017d, 0x4364e41d, 0xee9bcf2d, 0x1a7bfb12,
-       0xae78fe61, 0xfe601ff6, 0xfcc3f578, 0xb50bfef1, 0xa81ae9fd, 0x6f75d075,
-       0x7aba08ed, 0xcf28e7fc, 0x36a642fa, 0x8f99d75f, 0x084d5d93, 0x1d7cb0af,
-       0x3af9f595, 0x63c78a39, 0xee303f70, 0xb41cf21f, 0xf42efc92, 0x7f42f797,
-       0xee2d6fe0, 0x6aee385e, 0xd18597cc, 0x61d3bb45, 0xdb6c73c3, 0xe61b0e5d,
-       0x4e9a0ac9, 0x6a847ed1, 0x15ce9063, 0xa6073ce8, 0x775f1ce1, 0x21b42feb,
-       0xd79b2f7c, 0x79fffc6a, 0xd7932fad, 0x32f905ba, 0xf23f2439, 0x26e7065d,
-       0xda701ebc, 0x87c986e6, 0x179e2ed5, 0x9bdb9d59, 0x5741eff8, 0x6139f8ef,
-       0xe628adfd, 0xeb848a71, 0xf7e16d72, 0x79e2c89f, 0xb98904ac, 0xe4b1c922,
-       0xbcb8df9e, 0xef648e4e, 0xf402bfb7, 0xc3d03578, 0x5abdf9ee, 0x71b4ae89,
-       0x73c5d5b6, 0xdbb9e17a, 0xac2c37de, 0x69c38f2f, 0x974c6ce2, 0xde2eeb4f,
-       0x40d8a336, 0x7bc2e2e7, 0xeb5f51b3, 0xd8cc62e3, 0xb9f5cd91, 0xe4739c53,
-       0x582364cd, 0x5bdabc97, 0x173877cc, 0x362f4fea, 0xf3509e90, 0x46c5f96b,
-       0x99f40b56, 0xa3e4d4bf, 0xb1b15abc, 0xff0b9e8d, 0x3f3d8570, 0x3bc9e513,
-       0x8c76cd07, 0x60e3e9a3, 0x752de28e, 0xa3bda1bd, 0x6d7da252, 0x373fd65d,
-       0xf8c38d36, 0xaeb660d9, 0x1bd42c6e, 0xe3b06b9c, 0xe5cbe57a, 0x3d85f2e1,
-       0x219f8fa3, 0xa1fda15d, 0x2f5fa38f, 0xb0bd7ef0, 0xbf43ee97, 0x8fd43932,
-       0x2f4f4eda, 0xbe94f68f, 0xbf7f2e30, 0x71456fe8, 0xc45ceafe, 0xa1818967,
-       0x3c5158de, 0xd61b9ac6, 0x234f595f, 0x7986af5f, 0xbcf0a4bd, 0xe9dfcf1e,
-       0x3caa79f3, 0x8cfa682b, 0x083efff6, 0x95f51972, 0xffc78d27, 0x3c285e0b,
-       0x34227280, 0x1f9fae4e, 0x37bf534c, 0x7c6788e0, 0xd14fb45e, 0xb8a247bb,
-       0x27c97e5b, 0xcca1a37b, 0x7fb4f15c, 0x773073de, 0xef939e39, 0xc50e3129,
-       0x971e3afd, 0xc22799d4, 0xd7e4d07c, 0xf5c7ae2a, 0x075305fc, 0xa67e20b7,
-       0x9d689a96, 0xa6d7e4de, 0xaae539d1, 0xba982b9e, 0x7c289ee9, 0xf3a25fde,
-       0x56bf261a, 0x4f9f063c, 0x88c01ed8, 0xb3889b38, 0x3c193907, 0x7c88d278,
-       0xfbb24572, 0x0537c827, 0xa89e4493, 0xa9e3eb94, 0xc62649fe, 0x7e8d46ed,
-       0x1bface6c, 0xf3d479c5, 0x7d711204, 0x2f485e42, 0x7d01ec15, 0x57d21b15,
-       0x7a9eaeff, 0xe09da7b4, 0x2be83579, 0x24c24f1c, 0x62ef4f9e, 0x77fc08bf,
-       0x93ba7fa7, 0xc467a8bb, 0x529983f9, 0xad7d575a, 0x38673c60, 0x9d12e5da,
-       0xfd1dd683, 0xcfec26bd, 0xb6ec6ef8, 0x76fd04d7, 0xf1a9aebb, 0xfd13c9bb,
-       0x787fe7b9, 0x57f8489e, 0xf548be6a, 0x7b09fac7, 0x215ebd57, 0x7b7fbbfc,
-       0xd12a013f, 0x1209fb88, 0x9827ef22, 0xbda12f59, 0xd827eea4, 0x3b856667,
-       0xab3d7093, 0x73e44fd8, 0xefb41d91, 0x7aad6fd7, 0x7bce893c, 0xa0cc6dc0,
-       0x9f485af7, 0x43fd8157, 0x63ff92f6, 0xe7ad3f1e, 0x1aabb1eb, 0xd496fbb5,
-       0x5f616ceb, 0x50f9858f, 0x77ac459e, 0x91ce2f1d, 0xef21c508, 0x21c78632,
-       0x59304a3d, 0xe3eb475d, 0x5c4d1779, 0x6438bbb2, 0x75a0eb35, 0x9215d5b3,
-       0xb7c3f503, 0x91ec971d, 0xddaf5da5, 0x83cb9327, 0x42496e69, 0x706ad5fb,
-       0xf8bad255, 0x6c7ef817, 0x66fa7c3d, 0x413c7971, 0x331e31e4, 0x6c787a73,
-       0x5bfb4494, 0xe21c1f70, 0xf817b1f9, 0xf2c7973e, 0x35173ef9, 0x5feea16f,
-       0xb79432b9, 0xea6ffda0, 0x1f7517be, 0x780fba8b, 0x00a886d2, 0x99f707da,
-       0x1db8d3ea, 0x3c3a25eb, 0xf3d193dc, 0x6f3f0b28, 0xf8ce3f5d, 0x28c3c2ac,
-       0xf37f0f87, 0xac88d176, 0x25a67108, 0xaffc2fc2, 0x98fb2eac, 0x30bffb54,
-       0xfec6a86b, 0xfedeb2a7, 0x16f2a6ff, 0x6f9f0141, 0x32abde70, 0xe6f8ddbf,
-       0xfc72df67, 0x7b247cfa, 0x4b88b976, 0xd9e7e9e9, 0x68bf552c, 0xbac34bbf,
-       0xfae43fec, 0x8e524ebb, 0x2f6bb9d2, 0x542573f1, 0xcb175a39, 0xe4215ffb,
-       0x547d7aa7, 0x914ceb5c, 0x884f5fe3, 0xe764b3e7, 0x0193a472, 0xc8f1b4db,
-       0x78daf581, 0x098dd5e4, 0x40e0f29a, 0xc17ea686, 0xe79ade81, 0x69578343,
-       0x237f0f9e, 0xd91e535f, 0x7f534a3a, 0xb46387f4, 0x68755ae7, 0x5ed791e3,
-       0x2fb749bc, 0x2bf047d2, 0x6f0dca04, 0xad9d6457, 0xa15997a9, 0x8d56579d,
-       0x96bd5e76, 0x2fcee826, 0x78e6fde1, 0x53ebf3b5, 0x025f9da7, 0xbef2d3e6,
-       0xd4cd3e7e, 0xecf7a153, 0x61b1f7f5, 0x738a07bb, 0xa99f686d, 0xc1db99fb,
-       0x6411786e, 0xffb69fdf, 0x9cd7d696, 0x06eda279, 0x79e6cf3a, 0x0379e199,
-       0x5963dbed, 0xa3e3de80, 0x34162873, 0x661ef4c8, 0x1c9b0c0c, 0x9d1afe76,
-       0xe9f28f4c, 0x911258a9, 0xf8b69e0b, 0x82fda04a, 0xe106275d, 0x7bf692fe,
-       0xfbcb3e78, 0x31f14484, 0x841d6de6, 0x60584bdf, 0xa89dfc8c, 0xbcb8b2d7,
-       0x9a3bbd3b, 0xdb49ebd6, 0xbf52669a, 0x3098b7f5, 0xdbd6a69f, 0xa849fc2f,
-       0x3d3df7c7, 0x5e77d12e, 0x71e17c70, 0x27bbf54d, 0xfae71fa7, 0x89a3416f,
-       0xb059efce, 0x9e3b676d, 0x0de0bd57, 0xe65b9d0b, 0xf48e76d9, 0x3b53d16a,
-       0x469ece08, 0xd5a8bd99, 0x8273da57, 0x5db8f1b7, 0xe9154375, 0xff932841,
-       0xf91f5d55, 0x9dcbecbc, 0xa9f0bb67, 0x00bcbb3d, 0xfccf85c2, 0x1ee30e2e,
-       0xc6b7051f, 0xedbedf91, 0xeee9cf8b, 0xfd702e72, 0x173c2fea, 0x03fc23f8,
-       0x2cc5cbe4, 0xdbcab9dd, 0xa9f7c512, 0xf7c2c302, 0xe8e087f9, 0xf1de78e5,
-       0x6e7823e9, 0x3fa7e9fd, 0x5bc7047e, 0x8f0baff9, 0xadf498fc, 0xc3728ecd,
-       0x3a61c4f3, 0x976d5bf7, 0x40e5cd90, 0xa3bfe3fb, 0xdfdbd2f3, 0xb7b038b4,
-       0x641f3df6, 0xefb77d23, 0xe3052cfc, 0x8cf78b5c, 0xe2f078a3, 0xf0be8b67,
-       0xb7486b7b, 0xe3e17ebe, 0x3e7375f2, 0xcd5f16b1, 0x38d9cd0d, 0x6f8033ce,
-       0x9e75f38c, 0xc55f5cf3, 0xc456cdcf, 0x23dbcef9, 0xe5df8b9f, 0xc986e73c,
-       0xed0f7e37, 0x2e7e069e, 0x75cf65cc, 0xbc78043e, 0x6fe04bfa, 0xbe716afb,
-       0x9dfc6449, 0x4f003fc1, 0xb9ed6c8e, 0xcc369fce, 0xf8d7f47d, 0xdbb121ac,
-       0x5f039d73, 0xb9ea6e02, 0x72ccfffb, 0x3e46ce8e, 0x74f7fa7c, 0xade2368e,
-       0x3a73c144, 0x7f46cd3e, 0x075343ee, 0xb1d72b9d, 0xefc762c7, 0x73d82d37,
-       0xfda7f894, 0x64b71e59, 0x76fbfce2, 0xe7e3f9d6, 0x8a988b95, 0x3f2c4b67,
-       0x1fc05a0f, 0xe2568bcf, 0x1738bee8, 0x7ab1d39a, 0xe777745e, 0xeeca2f44,
-       0xf89cf5cd, 0x96d5401e, 0x9fb99abf, 0x3497c21a, 0x7fe9f682, 0x2adbf9e1,
-       0xbfc2ec1c, 0x96dbc4eb, 0x7771e7c8, 0xf02f8f9e, 0x73c3f885, 0x35cf3a3c,
-       0x5435f287, 0x08b28e96, 0x137da0f2, 0xbdbd2f3f, 0xeea9fd1b, 0xd6caaa0f,
-       0x6798a9f1, 0xf2a1fc77, 0xffc6e5e9, 0x3333e155, 0x8bd0d15b, 0x97d3a70a,
-       0x75f1cb22, 0xb6bfef82, 0x62ece3fd, 0xf48fdcff, 0x66d0d558, 0x44d9fbe6,
-       0xf7cc547e, 0xf4dfd834, 0x6427a4fd, 0xd557e3b2, 0xd71c9337, 0x6eea8bcb,
-       0xb39b6df2, 0x7153bac5, 0xa7e9c14e, 0xefb87d63, 0xdddef4ea, 0xf6effd7c,
-       0xfa17b336, 0x19edbfdb, 0x721b8f33, 0xe13d41fe, 0xe9ff1b0b, 0x91069b27,
-       0xdd66eedc, 0x8f78bd77, 0x3df91fc7, 0x34e7ed9e, 0xade859ef, 0x72efff27,
-       0xe8c8fbef, 0xfbfb05bc, 0x3bf7c828, 0x4ffb847e, 0x17ffbc23, 0x176126d9,
-       0x22eb13ae, 0x3f03de41, 0x9ee02bbf, 0x3cf5cbd6, 0x9d1999c2, 0xe3be1083,
-       0x2725917e, 0xaf979f01, 0x7fa8ec95, 0x4c18af67, 0x9ccf9274, 0x89652744,
-       0xfa937bfc, 0xe6cf1cf7, 0x1ab6fc7a, 0xc3fa4313, 0x280cded3, 0xb624eb7f,
-       0x3197fb86, 0xe7425313, 0x6ead56d1, 0x0abc2389, 0xef3d533f, 0x3e66a2b6,
-       0x39fd07c9, 0xdeac9538, 0x2d6fe78c, 0x2dcfcb58, 0xa38b9fd4, 0xcf5dab97,
-       0x85fb5a89, 0x956df672, 0x81cc1cef, 0x07e7377c, 0xd7e456b1, 0x4a68f0ae,
-       0xb3ca05be, 0x07a4c80f, 0x2eb0b854, 0xebcbfddf, 0x7f3cf881, 0x973f2fa0,
-       0xb152515c, 0x3c1e9cde, 0xdd19282e, 0x597ef1c3, 0x19b87ba2, 0xb19beae5,
-       0xb596c7b8, 0x7c50345d, 0x36595980, 0x59d9938e, 0x537db876, 0x60a7b26e,
-       0x16cbc4de, 0x58fc51a5, 0xeb0addff, 0x1eff20da, 0x157bf683, 0x5f9c8965,
-       0xeff3763a, 0x1e46b1ef, 0xeb32b6bf, 0x9c778c32, 0xe0a5d652, 0x95ae5411,
-       0xc53dfe26, 0x4714f1ed, 0x91456db8, 0xba5fcf19, 0xf69e21ad, 0x93af30b5,
-       0xe2a8cfbe, 0xc1456db1, 0xf7e834fe, 0x871cfab6, 0x269fc5ac, 0xaea0bc1e,
-       0xc9dbc54d, 0x64ede0cb, 0xbe01bc24, 0x7a13f734, 0xeec5f169, 0xe94cf6e6,
-       0x62fafb1d, 0x0d7ceefe, 0x77631eff, 0x340e92f2, 0x35c5094a, 0xe33a338b,
-       0xef4829b5, 0x250ed617, 0x55f1e9bc, 0xc3d9affc, 0x7b337f71, 0x05ce962b,
-       0x66c3eb2e, 0x6ff184dd, 0xd953f389, 0xa316262f, 0x8bd01ade, 0xb56bfdf3,
-       0x82d9fe3c, 0x787ecff1, 0xca9dba6e, 0xf3fc4587, 0xe13fc628, 0x3fc626fa,
-       0x7c527ae1, 0x33e5433f, 0xd7a20020, 0x7f38bdc1, 0x8925ee0d, 0x34e2ddf8,
-       0xff8a4bb4, 0x73f38b25, 0x61637d7e, 0xce878d0c, 0xa3fef9cb, 0x7bd1bebf,
-       0x3a37630d, 0x69b4f1b5, 0xb4f1b453, 0x663915f2, 0x736fd7f4, 0xa3d4d68d,
-       0x0f5abc88, 0x925e98ba, 0x337e79a8, 0xbfcc34be, 0xf0a5ee2f, 0x1f7147f8,
-       0x4b5bbd4d, 0x2a5bdfb5, 0xb3c668bf, 0x62dbd985, 0x26b3309f, 0x87bfc219,
-       0xf1ca4402, 0x3e6de762, 0x416e3a31, 0x60e4fc7a, 0x5e7284b2, 0xaf150f8f,
-       0x080037b3, 0x1b39dfa0, 0xbd97940c, 0x55e3b66b, 0xaeeccf3c, 0x7bf7f8a7,
-       0x467bae4e, 0x39805df3, 0xbf84994f, 0xa1fb2763, 0xf232c568, 0x607dca3b,
-       0xcb88022f, 0xa23ef45f, 0x467e3196, 0x0f91594b, 0x80bec90e, 0xe2727844,
-       0x4fbd83f7, 0x7e47eff0, 0x0ed86208, 0x2b7677fa, 0x1287c71f, 0x53e5815b,
-       0xfdfbb7b6, 0x6675e600, 0x0679bae2, 0x307c8dc4, 0xd3e2e499, 0x2cfa4332,
-       0xe744c3bd, 0x587ede39, 0x31f4efa6, 0xc5533f29, 0xd9cbe62b, 0x1dfe1613,
-       0x04a00e9b, 0x71f8b7a8, 0x8f9f7d0b, 0xcfcb0328, 0x11adf40e, 0xf2f48874,
-       0xc6733c61, 0xfe7960d3, 0x6496a3e0, 0x82119f5a, 0xce106f9b, 0xfae09bd7,
-       0xa3a02f51, 0x06f9e68f, 0x3bbafc91, 0x0f47f899, 0x2e6693df, 0xef48bc9f,
-       0xea2e4852, 0x26d996ed, 0xc7df7d07, 0xa3a486cb, 0x96b93a5c, 0xf40f477f,
-       0x3f5f1c4a, 0xabd134f3, 0x46939efa, 0xef8e3c65, 0xe90e5d64, 0x0ad6dbaf,
-       0x06f4137f, 0xfae3efaf, 0x46ecbd6a, 0x275bc3bb, 0xaf9db9b9, 0x4db78fa5,
-       0x688b9ede, 0xd68db1fd, 0x6809dcaf, 0x9dca3cc5, 0x2ec9533b, 0x5bec2998,
-       0x2ddbc696, 0x3b3a73b6, 0x0f4fa07f, 0xea7ad7dc, 0xea01e010, 0x75f3a7b4,
-       0xacc6a705, 0x3747861b, 0x1dec369d, 0xffb803f6, 0xfbef44f1, 0xc8dbc046,
-       0x5ee6f76c, 0xac329f18, 0x4473c6cd, 0xfc4fface, 0xf50fbf1c, 0x83930ed1,
-       0x97e974d8, 0x0c4ed3b3, 0xeb835d8d, 0xf2eb67c2, 0x3f042704, 0x5bf8293c,
-       0x8b6fcfd5, 0xa7036cf2, 0x2482f63f, 0x34c46bbe, 0x9e217872, 0xe4872a43,
-       0x2b872aa5, 0xc7fadd85, 0x3e6edc5e, 0x60a5d6c5, 0x4fa005bd, 0x3b3cfef1,
-       0xb72a4bb7, 0x7ee7eff1, 0x4c9c7c84, 0xf5c31a7d, 0xe4167cf2, 0xea014e7a,
-       0x77dd0949, 0xc0388b45, 0x409fbe3a, 0xb9e7f72f, 0xe06ffb7d, 0xa3003bfd,
-       0x7cffe45d, 0x8f1b1ae6, 0x3c6deb71, 0xff97ac9e, 0xb9b7e84c, 0x3d7a7de2,
-       0xbbe85730, 0x377d3ab9, 0xce8e71cf, 0x0edca91d, 0xb2b945ef, 0xc2efab4e,
-       0x9a44a9e6, 0x872f3ce7, 0x873f3cf7, 0x769d7bcb, 0x08fda30d, 0x3d59dc2a,
-       0x77b4d3fc, 0x791c61c5, 0xc33283fe, 0x78aa1cef, 0x823e66a8, 0xb02cc7f7,
-       0x8f18ed0a, 0x062e31bc, 0xa1f0ba70, 0x2dc7ecbf, 0xa06b944a, 0x7efef3f3,
-       0x9427b3bf, 0xa4b2f37b, 0x6f7efdfc, 0xd570aecf, 0x829bf1c3, 0x6ef9131b,
-       0x9863076a, 0x377f85bb, 0xc91eac3a, 0x0901fffb, 0x00d0a8f5, 0x0000d0a8,
-       0x00088b1f, 0x00000000, 0x3bedff00, 0xe5557469, 0x73dcfbb5, 0xe1dc8487,
-       0xc2040464, 0xc06e49b9, 0x612f4865, 0x1213d41e, 0xde0d4b22, 0x00c10580,
-       0x86120137, 0x7c07504c, 0x0040e3e2, 0xaa1a4583, 0xf50af8a5, 0x22d28342,
-       0xb04a0834, 0xc141170c, 0xd6de8ba7, 0xa44f7d6a, 0x40932861, 0xd2bb6a52,
-       0xf7b79457, 0x3b939df7, 0xed83a404, 0x58b593af, 0x9ef37efb, 0x77f7bdbf,
-       0x52015000, 0xaaa8e601, 0xd08eceb5, 0x092bd00c, 0x72c06e60, 0xd80e35b6,
-       0x37fc0ddf, 0xbb746b7f, 0x01e5e696, 0xf7473754, 0xa41c5fe3, 0xbfe6cc01,
-       0xff5616a1, 0xd845cc41, 0x766f3d12, 0xe890eadc, 0x556679a4, 0x086e17eb,
-       0xa1e6ca0c, 0x840cfada, 0x9f12a24d, 0x6e0f351b, 0xca7a01b8, 0x7773948e,
-       0xde0bc361, 0xc5c2221b, 0x002300c9, 0x5c78174a, 0x439c1cfe, 0x2186f77f,
-       0xb09e7468, 0x39cd23c0, 0x098a6584, 0x68c79cf0, 0xb1c6994f, 0x477f788d,
-       0x617c67e2, 0xc1864ef6, 0x15483f08, 0x3a6f3c54, 0xeba236e1, 0x71eb15be,
-       0xdf8841e7, 0x11f8137a, 0xcbbf5b9e, 0xfe3e47e9, 0x695dc5fe, 0x88772b04,
-       0x66084410, 0xdcf015bf, 0x2f65f582, 0x56fb833f, 0xdaf78d6c, 0x88e2bbb0,
-       0x3c7008bf, 0x252b7c0f, 0xe3d7971c, 0xe070c341, 0x71dd8445, 0x8428f23d,
-       0xdfd982fd, 0x513de68f, 0xd927efe1, 0xd187faa3, 0xf4cc4fbe, 0xee3f7cff,
-       0x04b6c4fb, 0x9248caaf, 0x44e1a682, 0x84041489, 0x7b7f0bd5, 0x04fc8cd2,
-       0x9e8f83f1, 0xf2b8014a, 0xb6c408ba, 0x817f24ec, 0xcfdc4a9c, 0x703d05eb,
-       0x5d29b89e, 0x22f6c4ca, 0xeff9ecec, 0x8d4ce7e7, 0x4fc4e59f, 0xd599e914,
-       0xf3a50e1f, 0xbe70374f, 0x4d99face, 0xf397a7e3, 0xe7e73573, 0x339f8d4c,
-       0x7e35788f, 0x4f892bca, 0x9f8d6af2, 0xeace1c0d, 0x3a7537c2, 0x4fc4f5e1,
-       0xa7155e6c, 0xa60f885c, 0x173f909a, 0x4f508a76, 0x12a80b6d, 0x4485c3da,
-       0xdf511250, 0x3f8d04ff, 0x7e610a0e, 0xe50ecdce, 0xd29e9106, 0xc49d47b5,
-       0x453bb9d7, 0x3f2c704e, 0x73eee941, 0xc81f9e44, 0x24d53c25, 0x087942df,
-       0x408aa5c0, 0xb7fbe12e, 0x825a7df2, 0x79e3e522, 0xde2dfbed, 0x36efc8cd,
-       0x85c01587, 0x8384f676, 0x227265c1, 0x3a81679b, 0x505f3c00, 0xf8845814,
-       0xdd3e50db, 0xb2159e90, 0x5905c6cc, 0x87ec5282, 0x7e13200d, 0x24288282,
-       0x1d2fed75, 0x3e462283, 0x814c3bb5, 0x67ff48cd, 0x3c80d0d6, 0xffaf187b,
-       0xe913b192, 0x03c835f8, 0xd252bce8, 0xccafc235, 0xfc8cd815, 0x6c4c0879,
-       0x0cc087df, 0x982708a5, 0xd8713541, 0xba224f60, 0x3fa85990, 0xf1bf35e3,
-       0x7410e1ed, 0xef82af21, 0x3fae7081, 0x73a55d30, 0xc14d0726, 0x1e0fe87e,
-       0x090f0732, 0xb2714d08, 0x7c73c245, 0x913c84e3, 0x660cb0e4, 0xf15decf8,
-       0x21f846db, 0x1326a5bd, 0x8129ebc7, 0x0a28f1d1, 0xdd32f89d, 0x8444470c,
-       0x4439e28f, 0x5904b4f7, 0x0816f365, 0xa30ccdde, 0x54df8614, 0x2881bf0d,
-       0x4bc87387, 0x0df76ddc, 0x3547d3d4, 0x069f707c, 0xf1cf5b27, 0x1edf9588,
-       0xad004f8d, 0xcd6be256, 0x227fef63, 0x71359d20, 0x49f920f6, 0x6e5cb168,
-       0x39f9afed, 0x48afe1e4, 0xc05f384e, 0xf4f90083, 0x04db06a8, 0xb87b3bb4,
-       0x1e0d21ff, 0xa5ace8d7, 0xde0bca36, 0xdc5b0212, 0x03e73fb7, 0xd3ad8939,
-       0x3b0347f7, 0x1026e34d, 0xed6bfc80, 0xb2562dfe, 0xbf5a79bf, 0xb22187ee,
-       0x5dacde2d, 0x169f912a, 0x41ba6fc0, 0x8b3edad0, 0x13dc2958, 0x7afb25ef,
-       0xa1ecdad4, 0x5e76277b, 0x5874df2c, 0xef53805c, 0x3e75f9a0, 0x03c03465,
-       0x0bdbd3df, 0xcbda0a7c, 0xe39de1a4, 0x8e164a8d, 0x8e7f177f, 0x7828e864,
-       0x452fc133, 0xd7253ede, 0xfce39685, 0x8a728f0a, 0xdcd39ffc, 0xa0fecc0a,
-       0x58bbf191, 0x28061324, 0x28a37d1c, 0xb858f911, 0x6c9e605b, 0xe636e8ea,
-       0x50f13a77, 0xd478619f, 0x76f413ec, 0x71bbc148, 0x36ceeeea, 0xb070a3c3,
-       0xf27c6a2b, 0x9f1a8868, 0x1be91d78, 0x6a71b5a9, 0xd194f488, 0x4a8d9ff1,
-       0x235b6c6f, 0x42dae3e6, 0x4ba74f3a, 0x65ffef0e, 0x835f19e0, 0x9d75d199,
-       0xcc5075f9, 0xba6101be, 0x91df665c, 0x5dff223f, 0xe2a48229, 0xfc5f1aba,
-       0x6117f26a, 0x3d181a7a, 0x8f9d78a1, 0xf1a37cd1, 0x06bfa442, 0x8d55f1f4,
-       0x67cdf20a, 0xd2af9cea, 0x3f3ab1fc, 0x337f7d70, 0x7d6c4973, 0x4686a6d2,
-       0x9fa61ed5, 0xbe18b3b5, 0x7c21ee49, 0x295fd339, 0xc42f48ff, 0x4ef906b3,
-       0x5ca74557, 0x5f8c75d5, 0x6d1131a1, 0xa62337c2, 0xff022ddd, 0x52fc11de,
-       0x59f949d7, 0x7cd2f811, 0x8b4a67c4, 0x127fbd10, 0xb4ddcf1f, 0x1d1d51ae,
-       0x90fc036e, 0x5e8227f1, 0x9d299fc6, 0x9be75ef2, 0x6ac7eb85, 0xfee019fc,
-       0x45e88fa1, 0x7d3972fa, 0xd2fd2881, 0x65bcaef5, 0x14b48aed, 0x2004b38a,
-       0x68f2c37a, 0xe7fc91f2, 0x9bff3a4b, 0x586f8442, 0xa13dbc1e, 0xa9bf3f59,
-       0x64abf491, 0x6f2f4eb7, 0xf70bf587, 0xbff216fb, 0xea7c7a21, 0x53f5e8f2,
-       0x667f73a0, 0xf53a5357, 0xfa43cf17, 0xbcfc69e6, 0x4853537f, 0xbf76fae5,
-       0x67ac353b, 0xad12b365, 0xed85bf74, 0x6be31b71, 0x93b8de27, 0xbc0fe380,
-       0x07c7cd1f, 0xb27b79ea, 0xc1af9b7b, 0x4d7ed91e, 0x7764e3e7, 0x7d72bd94,
-       0xc4fd1df9, 0x4024f37b, 0x161fbd94, 0x4487dba3, 0x437baf9d, 0xa750e58f,
-       0x1f5efe7e, 0xfc0fb7dd, 0x719f1a30, 0xc7bdbd36, 0x6fe91857, 0x5f1937d4,
-       0xf9f4fc74, 0xd7a25f45, 0xddaaf3c3, 0x729afa6f, 0x320cdee8, 0xc49a56ff,
-       0x71c75c21, 0xb56a47bc, 0xbf68a938, 0xbcd00be8, 0xc2cf416e, 0x873d309c,
-       0xff99169e, 0x8085eb56, 0x196cfd07, 0x04ba56c8, 0xa5628267, 0xcb90f5fb,
-       0x9c15e8b5, 0x7169f87f, 0x3df70051, 0xc59928b9, 0xadb81f9b, 0x5d87ff8c,
-       0x6366d37d, 0x0cc250fb, 0x0ef38cab, 0xc1963b3d, 0x7fe93bb7, 0x337a47d7,
-       0xc9a5ce2b, 0x97e65df9, 0xf6f0250e, 0xbedbf72a, 0xd5af28a5, 0xe7ed996e,
-       0x5ad2924f, 0x39e13f50, 0x09916c0b, 0x098fef4f, 0x6de7b2bf, 0xfc239f03,
-       0x4695de96, 0x41ff2ef2, 0x9c4f5149, 0xe2c2be57, 0xab5e7015, 0x7c274a49,
-       0x658dcffd, 0xb96b30fa, 0x18fbd506, 0x4fd5f83c, 0xcf749dea, 0x1c58146e,
-       0xcd17f773, 0xbb62e7ef, 0x4bd321b2, 0x30e81ea8, 0x9ce78481, 0x202fdf5e,
-       0x899dcaa2, 0x3c777baf, 0xbf340f9f, 0x7c7cbaf2, 0x2f9a60fc, 0xfe70cb4a,
-       0x7017ec39, 0x712adcfc, 0x397840b3, 0x2404dd1d, 0xc097dce9, 0x2b73f0ae,
-       0xb865816c, 0x7fbb69cf, 0x673a7afa, 0xd29605bd, 0x93d7413a, 0x4e5f198f,
-       0x3f5cba4b, 0xa1cfcc6e, 0x2dbd3679, 0xca9f2195, 0x157a9d4c, 0x2aefbc04,
-       0xb5fb7912, 0xb6f91f4d, 0x2f73fae0, 0xaaf163f5, 0x276ca19c, 0xa19d3d7d,
-       0x3ffb20ec, 0x462ed5f8, 0x3c4bfb5f, 0x51d03b6e, 0x111e569e, 0x315c5427,
-       0x68387d33, 0x7c231f95, 0x23eb760f, 0x6a2f2ca8, 0xf8a12e4e, 0xe28cf511,
-       0x45ebd46d, 0x1f126ebb, 0x2645ba36, 0x4ddf43af, 0xea472d1d, 0xf9867ab7,
-       0xde64e289, 0x6d6eea3e, 0x9cafd154, 0x33822db5, 0xfaf5e159, 0xe8aef9fe,
-       0x39983938, 0x81d128e1, 0xca30c679, 0xeb7cf453, 0x0733f533, 0xf533f1c9,
-       0xe3630653, 0x43a74ad4, 0xde7fe725, 0x1c9330e1, 0x9c979a4e, 0x62b938a3,
-       0xb9f985a3, 0x8ba98d8a, 0x414e29db, 0x5740f17d, 0x2c32927a, 0xda5b9e8c,
-       0x2beedaa5, 0x07191dec, 0x5dad7fb4, 0xf36a6eb6, 0x6d6fd935, 0x5b129597,
-       0x2d1b4503, 0xcaabb23e, 0xa0330e21, 0xf1b31cbf, 0xefa42d9d, 0xf3e20b95,
-       0xe578886c, 0x53931b46, 0x4aa1c3ab, 0x3a77ee38, 0xaf0889cc, 0x6e8c4dba,
-       0x60cc8657, 0xb8e60881, 0x5397063c, 0xf10d711e, 0xc5f6c649, 0xa3ac2f45,
-       0x0412e4b4, 0x3d430d26, 0xfd70a6bd, 0x0c5bb6bc, 0x66047e50, 0xf98c5cc5,
-       0x7ee01cd3, 0x5dbdfaa2, 0x39fc7cd6, 0x41f2aea7, 0xf9f965c8, 0xfcfc98e9,
-       0x8e1e7474, 0xfe51a61b, 0x30aaffcd, 0xc43b24de, 0x5e6a3d7c, 0xd51e7e44,
-       0xf2d0c96f, 0xa3c83ceb, 0x9d5aee38, 0xdd829b25, 0x13da3b4a, 0x41b059d2,
-       0x2e56f860, 0xc4360312, 0xe79920b7, 0xa0976747, 0x5e8caddc, 0x2576c255,
-       0x37c4b1e5, 0xf8710210, 0x0b0dbef3, 0x1767e4cc, 0x4ca57e6b, 0xdbe91f00,
-       0xfa6f7899, 0x36c78a02, 0x56be33c6, 0xc7ee78fe, 0xd6bae12f, 0xa229c5a5,
-       0x5e87d61c, 0xfee03e9a, 0xde149710, 0x67d2fce7, 0x0bdf49d2, 0x4857ee5e,
-       0x22657871, 0x26e298ec, 0x974cf539, 0x9579e1ed, 0xe6ce9ecb, 0x8083e2f3,
-       0x2ad970f1, 0x6f01d191, 0x521e02d8, 0x4520fec8, 0xf2d66df2, 0x1cd6acf7,
-       0xd34a5bfe, 0xfc991ee2, 0x9c5faf37, 0xced171c6, 0xc676a7f8, 0x066ff8bd,
-       0xf993d5ed, 0x57d13f09, 0x4c66126a, 0x5bb4fb60, 0x328b8ec9, 0xb7701e78,
-       0xbdd2cb06, 0xea8f09d3, 0x32ef3635, 0x1c47df37, 0xb181e1aa, 0x5429b54d,
-       0xf3c223f1, 0x0b779b4d, 0xbc796dc9, 0xb924ef12, 0x0e7af282, 0xad98c7ab,
-       0xa72fb449, 0x76e64ab3, 0x989ffd8c, 0xc1dabfb1, 0x227560fd, 0x15cedbf2,
-       0xb7fb84c4, 0xbe4cafd1, 0xf0dccf5f, 0x85f3cefa, 0xb99df8f0, 0x49e4afc4,
-       0xdb1e108f, 0xc8af6645, 0x29c3358c, 0x0e2ed96e, 0xf1a64e7a, 0x57e445c3,
-       0xc81cefe7, 0x1db2b6e2, 0x617bb21f, 0x56e726be, 0xc7296f2d, 0x33844ef6,
-       0xf8bdb832, 0x666ba845, 0xe8bf9e6d, 0xabc7d6f2, 0x9c985957, 0x937fd1aa,
-       0xfa5ea8e3, 0xb56fb65b, 0x79469423, 0x961bf556, 0xcb6fe4a1, 0x97cbfc35,
-       0x09fd19f6, 0xc5b94fea, 0x543dd125, 0xa95b16a5, 0xb028d55d, 0x6a5d7876,
-       0xe7e3e93a, 0x4938f7cb, 0x07c4ce4f, 0xb4df743d, 0x52f7882f, 0xc0da887e,
-       0x97cf93ee, 0x873f367b, 0xc85259ed, 0xacf8e021, 0xc89332c7, 0x82949f2f,
-       0xd93f1a56, 0x5b5136ec, 0xd4d1a491, 0x62dfcc56, 0x55d1cfed, 0x43fa6b35,
-       0xe046a5fe, 0xed7aacf2, 0xcf0335b0, 0xffc9a95b, 0xb30ff6ca, 0xa756cfc9,
-       0x397db287, 0x14d9de4c, 0x04cfc2ff, 0xbcd6df76, 0xba60ebc6, 0xde486bbc,
-       0x34f35f68, 0xdeecd739, 0x7de924f3, 0xaf3bc90d, 0xdea0beab, 0xaffd611e,
-       0xbe022a6f, 0xc5e908fe, 0x53cc7899, 0x05b97b79, 0xbcacc7db, 0xbfe6acfd,
-       0xf790bfb0, 0x4f3c39ab, 0xac6b79e3, 0xbe4adfbe, 0x263f244d, 0xa7f31b0f,
-       0xadbd1a4d, 0x9270deab, 0x3f6caefc, 0xc1c8eefc, 0x57e61784, 0x5ef44df2,
-       0xd12d47e3, 0xb3f864ef, 0xe896a1b8, 0xefe98675, 0xdecd73d4, 0xa7d3816a,
-       0xd66b5bd3, 0xb5c7d7e8, 0x3a345bf5, 0xd7e340ab, 0xbedc7eee, 0x7b227b34,
-       0xa749fca5, 0xd7c49fcf, 0xbef9faeb, 0x4d6edf46, 0x766a414f, 0xbe487f12,
-       0x7f5067e4, 0xcd50eb14, 0x2b94e06f, 0xfcb1373b, 0x8e979751, 0xfbe1a7ff,
-       0x0a4c4942, 0x04d5b1cb, 0x5ded9a73, 0x1a23c5ef, 0xe8ad4f1f, 0xfc82de9e,
-       0x06f31cfb, 0xbea36e96, 0xd3ce239a, 0xaf3f46f5, 0xfdc95b60, 0x86600eac,
-       0x9fafed20, 0x304d527b, 0x81273ed3, 0xbf8e87db, 0xf505976e, 0xe81feed3,
-       0x1c5779a4, 0x37443999, 0x0cd3ff3f, 0x5457ad89, 0x4af3f307, 0x7010108b,
-       0xebc094e8, 0xec56a782, 0x84e79671, 0x327ffdf5, 0x62ff4e84, 0xa78aeb4e,
-       0xfa117fae, 0x782cf0cc, 0xd4fdf276, 0x7a16f4fe, 0xd74df3a9, 0xca9c584f,
-       0x3d5893e2, 0xca7dedad, 0xf6c5e74a, 0x19caf1eb, 0xfec97bca, 0x10faf2f7,
-       0x5923872c, 0xeeb0f711, 0x0ecff1d7, 0x84f7c343, 0x65e72f7e, 0x2efa3066,
-       0x1f35b341, 0x85d578fd, 0xa6539150, 0xf5644fb8, 0x08bfbba0, 0xb3d42e8a,
-       0xbceeddaa, 0xeaad7bc8, 0xa7a611f2, 0x756210d5, 0x1f55b2cb, 0x7d230f16,
-       0x45c629fc, 0x8c5757e4, 0x3d5c52b5, 0xa1cccb77, 0x0dd3e724, 0xb8badefc,
-       0x142bc87c, 0x786e9f17, 0x0e666d21, 0x1a282bad, 0x6b65fd89, 0x9e393207,
-       0x53150f89, 0x1171fdbb, 0x6a358ea8, 0x53c590cb, 0xd1ca3db1, 0x39e89137,
-       0x8e1624d9, 0x2cfb908c, 0xa54f1690, 0x92eccc78, 0x6a4e0ec8, 0xc2deabfe,
-       0x933bd2e5, 0x277279eb, 0xa0bafee4, 0x44db3ebe, 0x7e84db7c, 0xc5aee913,
-       0xd507a018, 0xff1e054d, 0x5c42b1cc, 0x1fd63ccf, 0x4dfb13d7, 0x09aa2709,
-       0x13c7b6ff, 0x4ddbaa24, 0x883781b3, 0xfb0769ed, 0xa6e851e4, 0xc6287168,
-       0x9d5cecab, 0xbdf9fa4f, 0xc51eb932, 0xf5e20bee, 0xc76fa4a1, 0x19d63ab4,
-       0xcb8bef0d, 0xee893a7f, 0x3d5b8ba5, 0xf9f74449, 0x140df1fd, 0x70b79cc7,
-       0x7fefa57f, 0xd88f77bb, 0x77d88ef7, 0x0c65800d, 0x189901af, 0x6740253f,
-       0xe3eba4fc, 0x70baeaed, 0xcdd78d22, 0xfaf53db5, 0x5ecd1ffa, 0xd64de257,
-       0x12f2f0e9, 0xce365864, 0x9e083aa3, 0xe5f0985f, 0xd9c510ae, 0x86c9368d,
-       0xbd259ef4, 0x86fab6c6, 0x1481eac8, 0x9f9e9313, 0x8050637d, 0x138ab7f2,
-       0x2cd15dbc, 0x7884a804, 0x22b3ed64, 0x718d9fcd, 0x2221775e, 0xed717d6e,
-       0x6bff5224, 0x9ecaff5e, 0x56daff38, 0xe037bd81, 0x5e263db0, 0xfca7b77d,
-       0xf5578bef, 0xe754bffc, 0xa42ef6bb, 0x57cf5bf3, 0x0c5ea20e, 0xedf30bcf,
-       0x2c3992ea, 0xc4bcbd5e, 0x709b60cf, 0x5628cd6a, 0xbab176e7, 0x5e5a2fef,
-       0xdc917b10, 0x4ebc0f77, 0xbb48e779, 0xbdbb224b, 0x401164ba, 0x63abad36,
-       0x5ebb9750, 0xf77bb9df, 0x6aeeb621, 0xa37da0cb, 0xbb01dd70, 0xcee7f98b,
-       0xf79892f7, 0xbc58ef91, 0x7dd913dd, 0x7451dfc1, 0xd772ebf9, 0xded4abe9,
-       0x2ffc7445, 0xdee5c53d, 0xd33aded9, 0xfa1ef449, 0x11bef251, 0x9704ef24,
-       0xb9da7144, 0x5c5fdcf5, 0xf2bd7388, 0xc2fbca20, 0x80698986, 0xa1f6727e,
-       0x7f512787, 0xa2417ec5, 0xbfbbdcf8, 0xd3f949c4, 0x4eadcdef, 0xbf7ef3ca,
-       0x0abf7f5e, 0x469fe488, 0x3489838e, 0x0cd0647f, 0xe233ee32, 0x2337ae41,
-       0x0a039b2e, 0xcfd83bc5, 0xbbd716ea, 0xfe05bab1, 0xfde09725, 0xaf2f7b39,
-       0xd072e873, 0x1a51adf3, 0x9333079d, 0xfeb4ff38, 0xffbce182, 0xe35d86fc,
-       0x4d8bbf69, 0xbef08916, 0xfb6164da, 0xc93cc3cf, 0x5b33ef44, 0xed421e79,
-       0x37d93778, 0x35e637cf, 0x7aa37cf3, 0xbab14581, 0x4167eaba, 0xe7ca3cc4,
-       0x73a64fb0, 0xa7fa6ae7, 0x853cedeb, 0xef0f37d3, 0x5637a235, 0x99a1138f,
-       0x4edddbbd, 0x3d56ff9f, 0x37e31dde, 0xa982584e, 0xef9f8993, 0x77565e89,
-       0xe87e85b9, 0x403f257c, 0xc3ebac7a, 0x0517d43c, 0x079a9287, 0xea3e93e6,
-       0x9bfba1fa, 0xa5e35bf9, 0x2dfe51b3, 0xdb5daa31, 0x1b3a53d2, 0x7a69e719,
-       0x99823908, 0xe9d2abe8, 0x535d6b8b, 0xf8a6b082, 0xc421150f, 0xafe88473,
-       0x9152a4f0, 0xc05e8bef, 0xc69ed964, 0x642091de, 0x061ef601, 0x6a17ff4c,
-       0xa2b1b075, 0xe519bfbd, 0xf3742a58, 0x96d93e52, 0x2e4d50ef, 0xf9327796,
-       0x04253e96, 0xc44ffb00, 0x9ea9733b, 0x0e420330, 0xbb3fb637, 0x464d7643,
-       0xf5ebd5f9, 0x2d63b56a, 0xe65767d5, 0xfffb5a8b, 0x3aa8944a, 0x8afdffc8,
-       0x530f20ea, 0xffb5943d, 0xf6f5425a, 0x71b477b6, 0xe3425eb8, 0xab402b6d,
-       0xdbc57d8b, 0x85c7d03f, 0xdb5fb409, 0xe45c7d2a, 0xfdf5e7ed, 0x98daf6b5,
-       0xe331a5f1, 0x1ff6f12f, 0x504e227e, 0x88f5c273, 0x9ef7b527, 0x7d5a65d2,
-       0x8336f4c2, 0x93df2cf6, 0x1d17cf54, 0xe7941d67, 0x27947914, 0x7bf0dde9,
-       0xcd7ffd7d, 0x44af3844, 0x9f78ad50, 0xd9026fc1, 0xda75e7c4, 0xe1ffdd7c,
-       0xc9bac83c, 0x6f3439bc, 0xcb3cd448, 0xda7de6cd, 0x376ebf75, 0x89e2979b,
-       0xe77f4fde, 0x9c56e29d, 0x278f5f34, 0x94afef62, 0x8c471e2c, 0x699254ca,
-       0xb40b239e, 0xe9bc42b8, 0x16615a3b, 0xbb4a038f, 0x99b677f1, 0x32711d43,
-       0x37e431e2, 0xf9077afe, 0xbe3c0db3, 0x98efb57a, 0xf41fb43e, 0xc757be8e,
-       0xcc43ef21, 0x3cb3b5af, 0x86fb8ff2, 0xd1bfc8b8, 0xebaf24db, 0xea9f7da5,
-       0x759dc5ee, 0x67dfbea6, 0xacb74def, 0x409df543, 0x5f71a875, 0x66f3bd71,
-       0xc93efcf5, 0x01b0da75, 0xb48fc8dd, 0x25effba4, 0xbb0da63c, 0xf9da88bb,
-       0xaef662b6, 0xefafa3dd, 0x6b3fea1e, 0xa1089e52, 0x6346fb3e, 0x7f611b20,
-       0xa2130a13, 0x983f0fda, 0x3d844a0c, 0x57b87a4e, 0xd291fb54, 0x53f9a8cc,
-       0x3515dd67, 0x0d0b6c5e, 0xf69c7966, 0x78ab7cce, 0xc61df3a2, 0x9f3debc1,
-       0xc7d3fbed, 0x6a1fa28f, 0x5d59126b, 0x2dfeee77, 0x70828f1f, 0xec46805c,
-       0x74bdfb22, 0x93ca044c, 0x5757eb63, 0xb46eb420, 0x80f135f0, 0xe5c58474,
-       0x8d1fa8ff, 0xc6a34bc8, 0xfb4567a7, 0x1f756bd3, 0x23180ba5, 0xac7568d5,
-       0x594f7b2b, 0xbbff5e65, 0xeafd0371, 0xde90b47d, 0xfe903b3b, 0x2d7fa841,
-       0x38adaca7, 0xe64b23de, 0x05ef4779, 0xe5007966, 0x4acc0b11, 0xa1171e84,
-       0xbea8b81d, 0xde3f71d2, 0x83474878, 0x74d7d6c2, 0xb8bb5898, 0x5465b4d7,
-       0xc336aa6f, 0xc754dd80, 0x6e2c1d90, 0x7df9fe2a, 0x67e580e3, 0x63f74282,
-       0xe7c2a355, 0x4c1ebf8b, 0x1db1b0f5, 0xc53ed8e3, 0x50131c22, 0xe0281f37,
-       0x31d5d17e, 0x76d7f581, 0x6e0f9b00, 0x54ace2ff, 0x7144aefe, 0x29aefe6f,
-       0x72888985, 0x86795bb2, 0x2297ebf4, 0xfbbb222c, 0x86f7bde5, 0x5f7a1494,
-       0x32283418, 0xc59358ff, 0x6a400ddf, 0x5df74ebf, 0x990481ed, 0xc5eac8e4,
-       0xb7ed0f14, 0xec7c77b1, 0xda90f567, 0x94cdb603, 0xdb3ad5e7, 0x0afec9b3,
-       0x8907c60e, 0xe307438e, 0xcdbf2ccd, 0x73a1aff4, 0x2bf60e0b, 0xd9537ca4,
-       0xf3033367, 0x98f7ca63, 0xca589e3d, 0xd25d3ae4, 0xea37fb04, 0xbfbf6c63,
-       0x4cabf381, 0x872ebbe3, 0x7eef8d72, 0x1a659f8d, 0xdf1067df, 0xc5f2ee91,
-       0x587b6fc8, 0x29a2c52e, 0xb260fd7b, 0xca5e3e8f, 0x15bf743f, 0x8eaaf7cb,
-       0xeaf7c638, 0x7c9a1e8e, 0xa1c945bb, 0xb58323bc, 0xdb7dba07, 0x7ae2ce89,
-       0x5fee2f94, 0x287a0f6e, 0x17519a3f, 0x87f7a5ef, 0x45dd8b6b, 0xab85d7c4,
-       0xfee6e1b0, 0x8ab5ee8b, 0x74add4df, 0x4a65c844, 0xb8c82e47, 0x2c8ec4df,
-       0xebed5f06, 0x2e724bdf, 0xcecf18eb, 0x66c8ef29, 0xa95c62e7, 0x23fef8b0,
-       0xfbffbe3d, 0x20b9c7be, 0x21811b30, 0x75dfca8a, 0x26ef3602, 0xcbfdfc21,
-       0x54238c4c, 0x1696673c, 0x5b650e7f, 0x6c9b7f22, 0xf8424381, 0x72ff18fb,
-       0x9da86a91, 0x3be5d7f6, 0x678c7c99, 0x26e5dd70, 0xd543930b, 0x950f5fa1,
-       0x9092fc70, 0x4eec9ddf, 0xc47ff24d, 0x810995ee, 0xcf6c161d, 0x73977e7f,
-       0x8fd61c84, 0x43d07366, 0xf919a67e, 0xe6b5f548, 0x00b8e2d5, 0x942667af,
-       0x9eb5b80c, 0x83b8ebcc, 0xb79febf1, 0x286b4dd3, 0x66cb869f, 0xed879796,
-       0xb78ef375, 0xb8127f48, 0x6ecadcfe, 0x58912cf7, 0xbf6b167c, 0x959eddba,
-       0xf9227ffd, 0xcfadbbde, 0xfee11fe0, 0x584a5363, 0x99ef1cbd, 0x87583ca8,
-       0x7f31eec9, 0xb3b7f9a1, 0xcac7bb6f, 0xcf6b12f8, 0x6db37d7a, 0xb2019dff,
-       0xf68093f7, 0x2fb47a4f, 0xd9a2de41, 0xdd07f33b, 0xb3af815c, 0x339951f7,
-       0xddef14ed, 0x9e1ddec4, 0xdece6fd4, 0xf23939bf, 0xf85201bc, 0x1c846afb,
-       0xa43d50d7, 0xc9852db8, 0x2e9b9751, 0xba7e5d47, 0xfd963ebc, 0x637d1177,
-       0xd775fdb6, 0xd55762ff, 0x53073deb, 0x793b767c, 0xfee1e3dc, 0x8f285ff6,
-       0xf7373c7b, 0xfe7af7bf, 0x7e8bff09, 0xe26ec072, 0x5bc3a64f, 0xa3f9872f,
-       0xb741e3cb, 0x2433d8bf, 0x68241fcc, 0x6f4fd530, 0x9ee98fc7, 0x99fefc6f,
-       0x67fa0b7e, 0xfff433fc, 0x1292f9c3, 0x78b12f9d, 0x49e50466, 0x5527963e,
-       0xfc83bd53, 0x4fe818df, 0x15bd59f1, 0x9aa43e58, 0xee4979ba, 0x42d97625,
-       0xc5259771, 0x3afd216b, 0xbea211ea, 0x48f56bef, 0x2496087d, 0xbd0ddfe8,
-       0x128cf2cd, 0x43cb4997, 0x30f6f30e, 0x09bdfc7d, 0x0c94d794, 0x18e1c6d2,
-       0x6c089f1f, 0x472df9fc, 0xcdb25e59, 0xfc20aca3, 0x4c48f05e, 0x74b7173e,
-       0xfde7e3ef, 0x5747c40d, 0x04bbffb2, 0x5676ad6b, 0xda136b4f, 0xc3b91773,
-       0xdfb57ff3, 0x8817f271, 0xaca3c877, 0x502f79a1, 0x12352231, 0x16ad79f2,
-       0x84e6f748, 0x5601cbfb, 0xae58bdd0, 0x6044fd1e, 0x1c3c1df1, 0x1fbe9437,
-       0x959f7604, 0x35b1dfeb, 0x06c77f44, 0xb3e3175e, 0xfea11dfe, 0xb09de09d,
-       0xd7bed25c, 0xf92370db, 0x866ce4eb, 0xafdf1173, 0x2e9059b5, 0x22efd757,
-       0xff477d85, 0xabd6fb42, 0xf2cf1ad0, 0xd7efe8d9, 0x4f3013aa, 0x7b287e45,
-       0xca3b411c, 0x04f6e171, 0xab986756, 0xa47b8fd7, 0x31f44bb0, 0x3d03d389,
-       0xfd7dd8d2, 0xe74ba6b8, 0x2cff4097, 0x6fcdc533, 0x1e23355f, 0xeff1f66f,
-       0x99543925, 0x285f483e, 0xdea45d53, 0x95d0f749, 0x4a97a21d, 0x9d5a5530,
-       0xb5529a1e, 0xbc188afa, 0xb98fc717, 0xf54cdcef, 0xfe1ec3bd, 0x0dd9714e,
-       0x5d519dec, 0x10b6936a, 0xa70fd72e, 0x71ed8d3f, 0xe979f719, 0xcef2eefd,
-       0xa366b367, 0xc05ad01c, 0x00fae2c9, 0x36c1675b, 0xd2b91f7d, 0x96ba42fd,
-       0x4220fbbf, 0xbb9f3a1e, 0xa28f1ff0, 0x0e29bdfa, 0x09dede98, 0xc78a241b,
-       0xa58c3975, 0x838a53c7, 0xc8efe0de, 0x6ce8050b, 0x3e725c53, 0x5dfbe78e,
-       0xb0ef8beb, 0x52cd017c, 0x6cdbaa8d, 0xfcf37998, 0xa5602522, 0xbae9bfad,
-       0xf68f25e3, 0x06103e4e, 0x791deff2, 0x9b52a35d, 0x952c5633, 0x6a4f44cd,
-       0xbfe4979c, 0x77666370, 0x7c3043f2, 0x83ce441d, 0x2f4cc90d, 0x1845ba56,
-       0xb7367a8e, 0xfba4c905, 0x160ee5a8, 0x92d83df7, 0xe313a0c4, 0xf8bfea4e,
-       0x7983fbca, 0xa7cb871d, 0x63eed5f8, 0x6afb1c58, 0xf563063f, 0x4fb9fcd6,
-       0xd84b77a1, 0x123ab023, 0x75ca12f9, 0xc7563d75, 0x6eac8378, 0xeec096f7,
-       0xbf9b293d, 0x75495463, 0xd20e1dec, 0xc22f2c7d, 0x2ec94b25, 0x6cddf45d,
-       0x8faeff12, 0xf7dacce5, 0x3e4d4eb1, 0x7df9d009, 0x881bef6c, 0xccb67277,
-       0x3d208bbf, 0x264949c1, 0x5cfc9bb7, 0x393fb66a, 0xe6bde29b, 0x9f54459d,
-       0x4aea0b9a, 0x13d94770, 0x6ae848dc, 0x77b497a7, 0x2b0f5d31, 0x852173b5,
-       0xc6855feb, 0x3e8d4ad6, 0x2b5418cb, 0x4772cfa4, 0x377ae6f6, 0x80fe8691,
-       0x1f0adf7d, 0x40fe3dfc, 0x3f7407bf, 0x2cf535fd, 0xc7d2cfc6, 0x7ce3ddb9,
-       0x0ffd175e, 0x511f5021, 0x6faceac7, 0x77b0233d, 0x326ebd6d, 0xbd0a0ccd,
-       0x095422ef, 0xd2f7d296, 0x8598e104, 0x62e38b9d, 0x8cc3ab12, 0x63ebfc62,
-       0xd39d5952, 0x9830ebce, 0xfd43dc27, 0xbf66ead7, 0x7920f8cb, 0xc51bf7d9,
-       0x6c4f5e36, 0xdf644f7f, 0xee8add1f, 0x555e5af1, 0x6f62e07b, 0x5f71dbb2,
-       0xf7e27e89, 0x11e38b71, 0x67c753ca, 0xf197f7f3, 0x9828a6d9, 0xe98bfb2e,
-       0xea3b3fdc, 0x5f909ba6, 0xc167be7f, 0x8771df2b, 0xae887ae9, 0x40a7ba2c,
-       0x4d3e90b6, 0x371de504, 0xf06df56e, 0x5064f6b3, 0xf7496c19, 0xa54eca4f,
-       0xac0310ef, 0x7dc47c7d, 0x8b125eac, 0x655e2c7f, 0x2c5efcd9, 0xc14536cb,
-       0xcfdfb271, 0x5e1852f1, 0xd1365fb8, 0x24f5e3a5, 0xdfea4ee9, 0x88555f25,
-       0x7ccaef90, 0x02d7df91, 0xf2c3afbf, 0x25496b1d, 0xbd108ef9, 0x0c17ab4c,
-       0xe0f48479, 0xa5eadd9a, 0xbe5d3b77, 0x9bde8108, 0x638e72c3, 0x88ba52fa,
-       0x6c91cbeb, 0x6a0baf37, 0x580e4772, 0xf942ae28, 0x9a7c4d3f, 0x75e44237,
-       0x3fe50938, 0x4addc980, 0x82995e36, 0x2ae8cf72, 0xde2d5adf, 0x66e2d1ad,
-       0x66f51fbd, 0xeae9f105, 0x89fd61de, 0x4607b53f, 0x7a9fc4c8, 0xd4dbcf13,
-       0xd0ead6ff, 0xa38bc99a, 0x47ef62ee, 0x297af660, 0x45be2aff, 0x9355b29e,
-       0x961ef1cb, 0x5fb60171, 0x4076bbf4, 0xa6809fd3, 0x9c70ff57, 0xe2a21fd5,
-       0xffa211ac, 0x754fe265, 0xf32b55dc, 0xfe7bda63, 0x19b37a56, 0xd11fd612,
-       0xb26ff0ea, 0xf5cbe247, 0x55f9f506, 0x44e7ff5a, 0xa64ce7d4, 0xef28e7cf,
-       0x75e56e3c, 0x156456e7, 0xff107ffd, 0xccbbfccb, 0x3e9a77f0, 0xbc512b06,
-       0x8042e704, 0xbad0f9c1, 0x9fce1072, 0x469658d8, 0xfc9854f8, 0xa2ad3eec,
-       0x3be9bc2f, 0xec2f681b, 0x76fcfc81, 0x7a77d2c3, 0x5e538a20, 0x5c285b74,
-       0xb041b49b, 0x97be40f4, 0x41582d34, 0xb78fb46d, 0xb70f4e48, 0x0ee77a6c,
-       0xe39d17ec, 0x8f1c7d98, 0x1cac5391, 0x45fc6b0e, 0xd39b787b, 0x70ba30a5,
-       0xa1ed4dfd, 0xe12bdd06, 0x01ffffa5, 0xd5b93efd, 0xefd023ff, 0xe3781b15,
-       0x7a6ec8e2, 0x3fbfcc83, 0xf3e7f68f, 0xfa27df80, 0x923afa7e, 0xf397dd20,
-       0xf4979ba1, 0xfb8592ea, 0x807d4bcd, 0x0125c1d9, 0xf0bcec2f, 0xfee906fd,
-       0xe199791e, 0xf4d6a37b, 0x39f92e5a, 0xc77e57bc, 0xe699e2fc, 0xe4dd0395,
-       0x64e903ff, 0xd99f96af, 0x735ff5bc, 0x9510ccbf, 0x80ceb4d3, 0x01a03406,
-       0x0340680d, 0x0680d01a, 0x0d01a034, 0x1a034068, 0x340680d0, 0x680d01a0,
-       0xd01a0340, 0xa0340680, 0x40680d01, 0x80d01a03, 0x01a03406, 0x0340680d,
-       0x0680d01a, 0x0d01a034, 0x1a034068, 0x340680d0, 0x680d01a0, 0xd01a0340,
-       0xa0340680, 0x40680d01, 0x80d01a03, 0x01a03406, 0x0340680d, 0x055ff01a,
-       0x328d1fff, 0x800060f6, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00,
-       0x30001131, 0xee300408, 0xd80ea5ea, 0xabdef271, 0x964d2104, 0x5dbbcce4,
-       0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0xee017e3f, 0x0014ab55, 0x000014ab, 0x00088b1f, 0x00000000, 0xc5edff00,
-       0x30001131, 0xee300408, 0xd80ea5ea, 0xabdef271, 0x964d2104, 0x5dbbcce4,
-       0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0xee017e3f, 0x0014ab55, 0x000014ab, 0x00088b1f, 0x00000000, 0xc5edff00,
-       0x30001131, 0xee300408, 0xd80ea5ea, 0xabdef271, 0x964d2104, 0x5dbbcce4,
-       0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0xee017e3f, 0x0014ab55, 0x000014ab, 0x00088b1f, 0x00000000, 0xc5edff00,
-       0x30001131, 0xee300408, 0xd80ea5ea, 0xabdef271, 0x964d2104, 0x5dbbcce4,
-       0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0xee017e3f, 0x0014ab55, 0x000014ab, 0x00088b1f, 0x00000000, 0xc5edff00,
-       0x30001131, 0xee300408, 0xd80ea5ea, 0xabdef271, 0x964d2104, 0x5dbbcce4,
-       0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6,
-       0xee017e3f, 0x0014ab55, 0x000014ab, 0xffffffff, 0xffffffff, 0xffffffff,
-       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x40000000,
+       0x00000000, 0x00007ff8, 0x00000000, 0x00003500, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
-       0x40000000, 0x00088b1f, 0x00000000, 0x62f3ff00, 0x51f86063, 0x408cc10f,
-       0x7f120cb6, 0x66476028, 0x48107d08, 0xf3e2061f, 0x2fe9a48c, 0xb9b04160,
-       0x40afec80, 0xa8597833, 0x88a1bee7, 0xcfd2738f, 0x81ae792e, 0x66322ff7,
-       0xe86067e6, 0x6ff047e4, 0xb3caa3f2, 0x3dd7d3f0, 0xb000c6b4, 0x00eeff4a,
-       0x0000eeff, 0x00088b1f, 0x00000000, 0x7dd5ff00, 0xc554780b, 0x3d9cf0d9,
-       0x3764dd97, 0x2485cd9b, 0x200d8410, 0x125c40a2, 0x126e20ee, 0xc3116088,
-       0x65e28145, 0xb201ae41, 0xdb3f6911, 0x5cbb7ffa, 0xc6d6a444, 0xa0b45b4b,
-       0x06a2828b, 0x82482459, 0xa5c8ba1b, 0x5835b5b4, 0x0da978aa, 0x24c4dc88,
-       0x97f4b004, 0x3bef3fca, 0xce7bbb33, 0xf4bc4c6e, 0x7d6f9ffb, 0x7339867c,
-       0xef3bccce, 0x6779de7d, 0x313b10a2, 0x0ae42775, 0x64246efc, 0x19084c99,
-       0xbbc32d14, 0x32413cbf, 0x46bcf909, 0x08f39a75, 0x86a1d929, 0xc5f5a46f,
-       0xd400a41b, 0x0893bb4d, 0xd3484819, 0xcaf7563a, 0xa08e8f0d, 0x4ca764ed,
-       0x8482d136, 0x4592266d, 0x610b09c8, 0xd60a673f, 0xeab126e7, 0xee7b0de2,
-       0xd7e7fe82, 0xfd12499a, 0xec8d44fe, 0x4d92fa86, 0xb4488052, 0xad21eebd,
-       0x5e7fed0b, 0x39260a40, 0x63d37d69, 0x9085339a, 0x6cbfbbe5, 0x5c057182,
-       0xe2167c67, 0xbfbe00d4, 0x23f63565, 0xadb03ca4, 0xa7ed0bb4, 0x99725abc,
-       0xebe538e8, 0x038df0a4, 0x9014b9e1, 0x370bbf69, 0x0fb3895b, 0xc10ae183,
-       0x4b1e7171, 0x6971d3d6, 0xd2a9447f, 0xe3a252ca, 0xf19cfc09, 0x4471c5ad,
-       0x744bf17d, 0xc55dfa1c, 0xa60b92ab, 0x9e226158, 0xa9bf1d20, 0xf3da692e,
-       0x32df9836, 0xec4a77ad, 0x0ebe663c, 0x6c0f28f3, 0x006d4ad0, 0x6e6d06d7,
-       0x0b7f68bf, 0x0f56ff37, 0xd99edad7, 0x6376989e, 0x5147c679, 0x2f5a3bda,
-       0xb41dc427, 0x6d01fc01, 0xf3e8ff62, 0x908d295a, 0x4cbfd04e, 0xff68969c,
-       0xb9f1f884, 0xc0615c4c, 0xb8a5093b, 0xead6e962, 0x496dd3d0, 0x0db6ff1a,
-       0xe9c97e78, 0x81cf98f0, 0x1cbe13e5, 0x73e57f2c, 0xf1bf9c22, 0x29f2c1f5,
-       0xff9f0b9f, 0xcb1437d6, 0x96373ef5, 0x62c6facf, 0x8657c1b9, 0x9bef3def,
-       0x9f26e586, 0xe8bf9f07, 0x4be58f9b, 0xfe7c4abe, 0x2c7eef8a, 0xf8fcf8b7,
-       0x356fab7c, 0x557cdb96, 0xf4e76e58, 0xe00be1da, 0x9b7d3b7b, 0x05f3acb1,
-       0xbe1bf9f1, 0x017f2c5a, 0xaa65a478, 0xa14cb1db, 0x4d1d4a74, 0x484d941c,
-       0x32d95946, 0xa633d695, 0xa7b67ab0, 0xf146996a, 0xd69b3d94, 0x2b731d29,
-       0x6999961b, 0xd652ee7b, 0x58efddde, 0xddeda16e, 0x9ef6b257, 0x93cb6555,
-       0x27cf7b68, 0x8135fb59, 0xb4c9e5aa, 0xac8d9afd, 0x61b06fbd, 0xf7b695b9,
-       0xd7ed61ad, 0x6c2b1d87, 0x3efd7eb4, 0x286c2f56, 0xeb42915b, 0x7d598785,
-       0x0ad56348, 0xc87efd3b, 0x88fdf671, 0x4ceca096, 0x55db1fc0, 0xd2843dd7,
-       0x52fed7ee, 0xd68c32b7, 0xc47dd735, 0xff66c845, 0x33a56ead, 0x865a87c5,
-       0xd3fcbbed, 0xc32b5d58, 0x33fcb7f6, 0x6a9dfdf1, 0xec7fb625, 0x9df6c72f,
-       0xb7b6255a, 0xf6c3eff8, 0xdb0ab53a, 0x601ecb4d, 0xdb0aad75, 0x883d9733,
-       0x52a1bfef, 0xd2138760, 0x6ea3d97b, 0x966f853f, 0x7d02a9e4, 0x9caa6cd2,
-       0x28b7404f, 0xaf901ce1, 0x0d322487, 0xc4a7e5e4, 0xa1e6fa89, 0xc83734ab,
-       0x8343f6e1, 0xc539079f, 0xe7d4265f, 0x0f26b0be, 0xfb0a79fb, 0x3d3f68d1,
-       0xf0a7efdb, 0x7ebaa19d, 0x2f99df0a, 0xf80e79fa, 0x63b939be, 0x677f6cfd,
-       0x779e1eb8, 0xaf3f45ca, 0x8ef63f60, 0xaff0abcd, 0xfcf0f523, 0xa7e89175,
-       0xde95e706, 0xbc767831, 0x1793f14f, 0xfbc767ed, 0xf6123f14, 0x64fd8f53,
-       0x419e0c75, 0xf5d50c1f, 0xf983e833, 0xd8039fa2, 0xf58e974f, 0xe183e3b3,
-       0x283e787a, 0x8dbcfd17, 0xd8eb74fd, 0x387d06bc, 0x87cf0f52, 0x473f448b,
-       0x1d1e9fb0, 0x51e767eb, 0x1e767e3d, 0x28e7e08d, 0x63bbd3f6, 0x4c721af3,
-       0xc7219f8f, 0x8339f822, 0x63aebf74, 0xa63cecfd, 0x63cecfc7, 0x479cfc11,
-       0x363bf278, 0xe89f21af, 0x93e433f1, 0x632e7e08, 0x831d053f, 0x1eb4eea7,
-       0x23a7753f, 0x982551f8, 0xc18ee0d7, 0x1e8cec33, 0x44cec33f, 0x009763f0,
-       0xeb1de19e, 0x1e8ceea7, 0x2267753f, 0x7846c9f8, 0x5e6c7546, 0xe3d33ec3,
-       0x1167d867, 0x9e1138fc, 0x08cdcae2, 0xf4fda10f, 0x379fbb6f, 0xcff5e9ce,
-       0xfe98e71b, 0x8fc47819, 0x21cd57fa, 0x6467002e, 0xa25f994b, 0xd6932575,
-       0x89ba509d, 0x055fda87, 0xf83f70ec, 0xd32fd1b8, 0xb4ea94f6, 0x58ce3582,
-       0x02ec5c7b, 0x4d03ec78, 0x18ef7b3a, 0xa7abac99, 0xd9d74e8f, 0x5df1cceb,
-       0x29acf574, 0x9cf5743d, 0x7dd3ae3b, 0x817665df, 0xd175deae, 0xdbbd5d70,
-       0xf7dd62d2, 0xd66e07ce, 0x3958f7b5, 0xf5ef5749, 0xf5750fc8, 0xd2ce4fde,
-       0x2bacfbd5, 0xdd77f5d7, 0x7aba25c6, 0xea9feabf, 0xcb35f9ea, 0x68577575,
-       0xb05eae8d, 0xff5d71ef, 0x5a7adf03, 0xf87c1f57, 0xe87d5d39, 0xbeeb2f47,
-       0x35fc7e1f, 0xd9e47d5d, 0xc7ff065d, 0x97d138e6, 0x77f065d7, 0x9a07e8ad,
-       0xcfe869bb, 0x60b37516, 0x6cddc7fd, 0x28f1ff58, 0x4a0e35cf, 0x07c39fd7,
-       0x58fdeed4, 0x48ef5cf3, 0x25297f60, 0x4a07244d, 0x8d0c898f, 0x52ad5f6f,
-       0x527ca3be, 0xef72fddc, 0x9af4b4a3, 0xd1a77a5a, 0xa2a6eff2, 0x3f17c0a5,
-       0x97e84c95, 0x09526559, 0x1335647c, 0x57d5cbe4, 0x1fde7e0f, 0xe70fdfc3,
-       0xfd14be31, 0xe656ac3e, 0xeffe1d80, 0x83f3bf65, 0x4f287e1d, 0x93ec3b43,
-       0xf7f6177e, 0xfde7dfa2, 0x49fc0738, 0xd4fd468b, 0x3a35f1d8, 0x7f1c3f7e,
-       0xa6bf8c25, 0xbd2df18d, 0x4fc6ea87, 0x375f31ea, 0xc746927e, 0xe8f21077,
-       0xf1f3dfb2, 0x50bafe29, 0x3dfa50bf, 0x71e96f8e, 0x5abf8e3f, 0xe375f323,
-       0x7fc64727, 0x69fde412, 0x82507f18, 0xae1ef7f9, 0x728f7f9f, 0x3635fcfd,
-       0xbd9667ff, 0xc64fc7cd, 0xbd2b3ff9, 0xe3dfe6cd, 0x66fe6ca7, 0xf8ec6fda,
-       0x37fe08f6, 0xb72ff8c2, 0x9ae5be31, 0xf7f9fa91, 0xbf9fa45c, 0xeaff8d99,
-       0xf8f8f7b2, 0xab7f1c36, 0x7f9b1ef4, 0x7c7007cf, 0xe5d2b9b3, 0xeee64da0,
-       0xd00195c9, 0x263dd413, 0x746020d9, 0x2820219c, 0xefd084e9, 0x903d4817,
-       0xa64e3f0e, 0xffdf477c, 0x1bf29922, 0x6fdcf7f8, 0x12558127, 0x1dd74c19,
-       0x5767a79c, 0x417ed4cf, 0xcb5d993f, 0xae8433d6, 0xf0a6ae77, 0xff9ed535,
-       0xef0a43e2, 0x50038dec, 0x274e514f, 0x3e1cddf0, 0xf0ccaf15, 0xb7594841,
-       0x12bf5489, 0xa4dbaca5, 0x06e4d8fe, 0x411e7fbf, 0x78f8e318, 0xa27a954e,
-       0xe6fe4631, 0x17d7d5ad, 0x0175f404, 0x09301177, 0xa4c5fd2d, 0xf71d254f,
-       0x10275d18, 0x447f97ea, 0x594270fd, 0xdc9513f6, 0xf2f1465d, 0x404f5d31,
-       0x27ae91bd, 0x4cae9da0, 0x14c72e91, 0xb63bf382, 0x7a001ada, 0x0193f17c,
-       0xbb87d81a, 0x1bf2a7ef, 0x727edf2b, 0x5fc28738, 0xd339e7c6, 0x076fa19f,
-       0x4c3c53bc, 0x0b2bf3e4, 0x974f1e2d, 0xd59ee4c4, 0x459954b9, 0xf24a6bdf,
-       0x54ffd0a8, 0xe9b356e2, 0x9d2e7778, 0x5f107aa8, 0xca135cee, 0x5135c939,
-       0x56e89f39, 0xf4c6358f, 0x8066a93f, 0x93227b4a, 0xdf9feac7, 0x37afa656,
-       0x44d56ea9, 0x5134d3e9, 0xdda81b22, 0xdf4d3a99, 0x2339c62e, 0xc5fce3a5,
-       0x6e746578, 0x9e61d39d, 0xeffa63f4, 0x3cd83a1f, 0x34bc3ae8, 0x3f73d617,
-       0x689b5c90, 0x57bc2a7d, 0xa83d7400, 0xb769f3c1, 0x90d6b9a4, 0x92897878,
-       0xe11cfd83, 0xca23bceb, 0xcd0c5fa6, 0x83ff878b, 0x29b756dd, 0x461e7e3f,
-       0xa093a7b8, 0xba76f60a, 0xc67cff47, 0x18fce37c, 0x74e09c5f, 0x407c063e,
-       0x07c093cb, 0x39c7cf14, 0x2bf5441f, 0xc01383e3, 0x4eb09907, 0xa7307c66,
-       0x6ffd312a, 0x479ff4e7, 0x29676afc, 0x9ca9f74a, 0xba73b7ee, 0xe7ab5bcf,
-       0x3cf9b88f, 0x1cc1e1b9, 0x3cf98267, 0xa62547b2, 0x657979f8, 0x2ff91f06,
-       0x8e89b029, 0xbea5677b, 0xfd0376fd, 0x777e9c3c, 0x7165e846, 0xbf3e5197,
-       0x011927eb, 0x7c7133d0, 0x31f5e9c1, 0xb5b4d7a7, 0x4cefed8f, 0xe46be1e2,
-       0xf6b13af4, 0xfb44d579, 0x112f9c6b, 0xf08c6ff0, 0x9bbbe11a, 0xdfa03438,
-       0x9febf7dd, 0xa627f4cf, 0x28b6b79f, 0xf3cc78e3, 0x1971c1c5, 0x68e463c7,
-       0xba89e6e1, 0x74c082fa, 0xd6f3fbdd, 0xcfb5d4ce, 0x6ba05aa9, 0xbdf567bf,
-       0xff4cfaba, 0xdfef744f, 0x5d32ff7d, 0x0f959dfb, 0xcc67daeb, 0x9f574c7f,
-       0xf74a79ee, 0x1b69d4fe, 0x95b7ed74, 0x9f6ba4bd, 0xae9b763c, 0xa75dd13e,
-       0xbdda5f7b, 0x9fc43ba0, 0xd9e79abc, 0xbd9b886c, 0x49cf266f, 0xe84c7af1,
-       0x273ee3bb, 0xebe13f3e, 0x9f29e583, 0xf19f9f0b, 0x1972c50d, 0x176a71e8,
-       0xf4ac754c, 0x3bb33e3e, 0x07217fe8, 0x6eaea89f, 0x7a8d3fa0, 0xc4e7a8cf,
-       0x46bd46fb, 0xa7e0b97f, 0x59cf15b4, 0xb0329124, 0xf312cd0b, 0x43f3c457,
-       0xb2123edc, 0x1a45cb1c, 0xaf45d393, 0x39062e75, 0x7b85a45a, 0xeedada57,
-       0x9c250497, 0x9eaa9ccf, 0xade7383a, 0xef806bed, 0x05abe439, 0xf3dd4281,
-       0xe8479b85, 0x47bb3bbe, 0x402af846, 0xff8187b6, 0x04deb65d, 0xb7bc31f6,
-       0x00fee4db, 0x1319fbaf, 0x09db5bc0, 0xdf59eaed, 0x0ae38cd8, 0xcb0cb9e0,
-       0x5869be53, 0xb079f09e, 0x8f9bee3c, 0x255f31e5, 0xfbbe8d96, 0xe7d8fcb1,
-       0xdf23f2c7, 0xf03f2c6a, 0xc4796155, 0x77cb16b7, 0x0f2c017d, 0xf96336fb,
-       0x65882f8e, 0xcb16af83, 0x4b1b9f26, 0xfc312f21, 0x0c73bdd2, 0x277d08bf,
-       0xce29e1f4, 0x5f80672f, 0x73c5f112, 0xa938be7a, 0x185f2256, 0x0e91a1f5,
-       0x6df77d46, 0xf4dd21f9, 0x9443f0fd, 0x7a06b9de, 0xde8f6cf7, 0x397d221f,
-       0x0e4dd3bd, 0xf7a70f06, 0x45780623, 0x041281a9, 0x7e6665bd, 0x595b711e,
-       0xabc453dc, 0x7b8b3249, 0x337578f2, 0xbc0377fd, 0x10fb04a7, 0xbf6b5fda,
-       0xe21bdbff, 0xcc47adcc, 0x3db5e484, 0xdafd233f, 0x9bf103c4, 0xc9ff0ebe,
-       0x14af0cc9, 0xda84b1aa, 0xbed73587, 0xeac59aee, 0x423b010a, 0xb8d8ae82,
-       0xc05fa46f, 0x78fb7665, 0x7f31374d, 0x6657bad3, 0x776f08f8, 0xf2894e4d,
-       0xd2dcd7ab, 0x95f833bb, 0xd8099a1f, 0xe9b01233, 0xf5a7e5f1, 0xb57c51c1,
-       0xf4f68f35, 0xfc2fffde, 0xda8fa7b4, 0xa48743d3, 0x735fc7af, 0x24f75d31,
-       0x008e2f58, 0x6df41c3e, 0x1ba1b0f8, 0xf81061f0, 0x5adff69d, 0xe92a4d73,
-       0x66e7ed17, 0x13af9393, 0xde4e9ebe, 0xd37e0854, 0x1334537e, 0xcbae9eb9,
-       0xf24dcf65, 0x5dcff020, 0x6f4a7e8d, 0x6bab6eff, 0x49d61385, 0x7612fe67,
-       0x75fa17c2, 0xe7c1eb73, 0x59aeb0ed, 0x1c726392, 0x3e9b6c2f, 0x0e79838b,
-       0x547fac5b, 0x56b7afab, 0xdc596349, 0xa53a99c4, 0x8769e83f, 0xd02f78e3,
-       0x8a58399b, 0x68e4967e, 0xf019e38e, 0x79c9805e, 0x81ea1a75, 0xbe0b3e33,
-       0xd1c37df7, 0x38513f56, 0xf427c86a, 0x2b89107b, 0xbf7edb3d, 0x2e56be4d,
-       0x228f1068, 0x580bf521, 0xffd1252f, 0x7e80f4af, 0x7e8bac15, 0x6fd941bd,
-       0x579e1ebe, 0xdfa3c6eb, 0x1b1ec539, 0xfcb6d77c, 0xe084e428, 0x3f374a5f,
-       0x2fb8a7f8, 0xfbd0e494, 0xbaba696d, 0x43b3b6b7, 0x3fc1c7e7, 0x2d1cd1c0,
-       0x8b47c029, 0x2b355b38, 0x8512d5b6, 0x322c066f, 0xf6259f81, 0xa34b62de,
-       0x968fa1e6, 0x7f4148ec, 0x7c63c978, 0x1a4fcd9f, 0x4359fbe0, 0x29970779,
-       0x51fd3154, 0xb44c470b, 0x89af0f7e, 0x3559aefd, 0xff5fd10b, 0xdd71f894,
-       0x1aae5a77, 0x796a7e0c, 0xa6e68370, 0x989cfb74, 0xffbe82c6, 0x2f63bc9c,
-       0x57b7918c, 0x7be70d64, 0xffbd6acf, 0xbab1d74a, 0xeac75d3a, 0xa4c973ea,
-       0x9a17d82c, 0x974aa4fb, 0xd5aeb8d4, 0x7656ffb5, 0x91e77ce0, 0x876055ca,
-       0xbc29a93f, 0x71e0047d, 0xb0c1fae7, 0x9b459c4e, 0x29fea973, 0x03487cdf,
-       0xe3a6f939, 0x0bef802f, 0xf315c7e2, 0xe407db8a, 0x59bc5878, 0xd8120772,
-       0xf76e5abd, 0x3bfa5e84, 0x1eb31fc0, 0x23e7cd3f, 0x3f9adfea, 0x65c32932,
-       0x4339e945, 0xc1921cf6, 0xa49f008e, 0x5be2f946, 0xd7139ff7, 0xd7bfdfff,
-       0x1d12bbfe, 0x4ffed37f, 0xdefc5e83, 0x0715effa, 0xf044c5ff, 0xb22c3a0b,
-       0x17c01c34, 0xbe096e1d, 0x14dcb853, 0x7c60714d, 0x725ab9aa, 0xc4fbe999,
-       0x2c8e9c4d, 0x3d601fa6, 0x6a5afcd9, 0xe1bd413e, 0x1f3a6e20, 0x552e7f2b,
-       0xd123d9ef, 0x3b4ae175, 0xfe51a771, 0x9953e954, 0x692ad1ca, 0xe5a24580,
-       0x7f739ae2, 0x9bf68379, 0x88099214, 0xa1853374, 0xdd97f701, 0xac776069,
-       0x03b411e4, 0x257ec7b0, 0xd1a70a23, 0x0578103e, 0x8d8397ec, 0x61b6463b,
-       0x9d75a6fc, 0x9955718c, 0x919bf75c, 0x0f782f54, 0xeda2f952, 0xb405f0ad,
-       0x5d7095af, 0x04b07adf, 0x24eaf3eb, 0x6beb4192, 0x60f9ec93, 0x26dcd2af,
-       0x63373c5d, 0x4e7e3eac, 0x5806eefc, 0xf3e6cfff, 0x1c00c405, 0x53bd790b,
-       0x7de1ba59, 0x5c4c5ffa, 0xee67b66c, 0x93f14278, 0x771f4d3d, 0x723f285f,
-       0xed3ae200, 0x06ed6dca, 0x9463900d, 0xf59b85db, 0x21b78175, 0x09e64a4a,
-       0x6236c9b0, 0xadb5bc03, 0x67c1dbc7, 0x8cdfef63, 0x7c71d81c, 0xce64f11a,
-       0xc935e3d1, 0xb5abc7a9, 0x066f018f, 0xf4b8a6bc, 0x3a66a2f8, 0xa9af0890,
-       0xfae87b43, 0x7af1bef9, 0x6fb3e017, 0x57f49f14, 0xa262c966, 0x56767007,
-       0x46ffc8c2, 0x85b5c979, 0x55f7f825, 0xf8658199, 0xf5052b95, 0x5f870e40,
-       0xb3becd9a, 0x60c8bc82, 0x2f285d55, 0x3b046910, 0x391f256e, 0xf2268e80,
-       0xb7d2b909, 0x37de3a6d, 0x59d1df71, 0xc075abf4, 0x1f23d7cf, 0xe9fc5d20,
-       0x0f22b024, 0x00e5d1e4, 0x59f416bb, 0xbae9b39c, 0x711f55f1, 0xcdfea6ce,
-       0x96073e6b, 0xf7b0168f, 0x0091fb9b, 0xe1831bac, 0x884e590b, 0xeba1cf67,
-       0x1fffaa34, 0x80265ad5, 0x9517fc3f, 0x55eecfad, 0xab772c35, 0x47ffae26,
-       0x79f201ff, 0x00ffa99a, 0xd0e6a5f1, 0x50d5cb26, 0xbf3195af, 0x75569bc0,
-       0x14df8c2d, 0xb35c1952, 0xf64f182d, 0xc768abd6, 0xc48f669b, 0x9f311a7c,
-       0x163c90a6, 0xa1cdd9e2, 0xc4f7ec4f, 0xdaa69dd8, 0xbb05ae27, 0xb12994f7,
-       0x628cfbff, 0xc87e6efa, 0xfa3d38ba, 0xf509d28c, 0xe83da3e7, 0xb6262a3c,
-       0x9becbf22, 0x77ce337b, 0x9a724847, 0xf2a5dc29, 0x0fe83f1d, 0x537f86fb,
-       0xee24de98, 0x58b333f1, 0x5f563ce8, 0xabd4888c, 0x7ec32afe, 0xc3c45d25,
-       0xcac0e2be, 0x8c87e8b9, 0x0292490e, 0xc108ebfa, 0x0fc8467e, 0x7f32c094,
-       0xe3a28350, 0x0921c1c7, 0x91b836f1, 0x90d37e60, 0x61f6fa23, 0xae218a8d,
-       0x9f819016, 0x3fd29c46, 0x6d7c13af, 0xd7c05927, 0x25965e4f, 0x5b9a4ff0,
-       0x1d396b88, 0x977679bf, 0xf9a78022, 0xd046ec02, 0x363cb2f2, 0x8ff7fad1,
-       0x9e87f30a, 0xc6fed8d2, 0x816d7353, 0x6fbe9465, 0xb8c72dce, 0xf13f17c4,
-       0xbfb44f74, 0x5287a315, 0xdc83684d, 0x75cfb0a9, 0x1295c4df, 0xd552031a,
-       0xfe252cb9, 0x82bfc17d, 0x771f059f, 0x09ec9b9e, 0xb2671824, 0xe294fcca,
-       0x8d247db9, 0x5bb4d7c2, 0x4da57422, 0x747b969a, 0xe9630ef1, 0x0173cb27,
-       0x79ed6f1e, 0x2594ec0d, 0xfa0fd894, 0x3ca3b14c, 0x2ff72d34, 0x1fb5bc83,
-       0x3bf46153, 0x27dfaebf, 0x48723e31, 0x2cefb271, 0x9e813355, 0xe42c732d,
-       0xd6379639, 0xf00a5279, 0x55b8c97b, 0xcba7de14, 0x9f37684c, 0xbf085d52,
-       0x7961317f, 0xa2ff7c71, 0x61b204eb, 0x5cfc8c4d, 0x95248a54, 0x0ea92bf6,
-       0xe3c33fec, 0xd77e0092, 0x8769ffbf, 0x4be690fd, 0x1763a466, 0xdf10f71e,
-       0xfad95575, 0xfeea8371, 0xd0f58152, 0x0b944cfc, 0x9ceec797, 0xf5f2ed4d,
-       0x09ef14b5, 0xffe146fc, 0x98e87ba5, 0x9b749e14, 0xb892f909, 0xd5074edd,
-       0x7e225e77, 0x8883947e, 0xa225845c, 0x51ea8e0c, 0x53852429, 0x681c3ea8,
-       0x5a6585b1, 0xf3a7cfa6, 0x6231fd86, 0x2835fd61, 0x40fb2367, 0x7ca1aeb8,
-       0x4d821839, 0xaef587f4, 0xafd0bfd8, 0x84af2f42, 0x67ed36b8, 0x604a63e5,
-       0x9d67ed05, 0x357498d2, 0xcedcf32d, 0xba412062, 0x5003f4e2, 0x2e27cd57,
-       0xf6b1210a, 0xf1169f5c, 0x0ed0a847, 0x78c64af8, 0xd38e9180, 0xf4f2f822,
-       0xf3fce952, 0x09bcb60f, 0x892b8b6e, 0x6fdae78d, 0xca593b41, 0x4fb0eaed,
-       0x17d0014d, 0xee237c24, 0x112d799b, 0x17d3a0fd, 0xc4686ec3, 0xef61ae7c,
-       0x54a87833, 0x41fde1b9, 0x7d723c11, 0xa136fdc2, 0x8284863f, 0x2eaeb085,
-       0xb5ee1508, 0x3e0bf1d1, 0xa71b7262, 0x15d20e3f, 0xaf6f8f5b, 0x307c8c37,
-       0x90e54c20, 0x1d1fa5d3, 0x23a0f0bf, 0x52f68752, 0x7019ea95, 0xc99eb916,
-       0x1b30389c, 0x7f38bdf7, 0xe42af119, 0x05e728d9, 0x9af6bbf7, 0x0c885c19,
-       0x8a4438e3, 0x09ece1c2, 0x392de87a, 0x1157f415, 0xeb8503c5, 0x696f2e73,
-       0x60e30217, 0x6e864ffe, 0x65df224a, 0x7e99b25d, 0xc62f631d, 0x20d99ec9,
-       0xd85ed477, 0x7b150f01, 0x8f4c682e, 0x11de9185, 0x0172a7be, 0x10b909df,
-       0x6fe46efc, 0xe82b0f21, 0x189ea657, 0x4760249f, 0xce082965, 0xeb61d52e,
-       0xe157801c, 0x1a7f1337, 0x3a9663c6, 0x78eb38d8, 0x24d2ca5e, 0xd7fa7677,
-       0x25ef5fe8, 0xc4c40913, 0x8b4abc39, 0x7bd17a06, 0x8c812349, 0x8d9f80ef,
-       0xad59f871, 0xcfc78a76, 0xebf3c86c, 0xfe02bff4, 0x87fe1180, 0x5ff8519c,
-       0x421456b7, 0xe70efe9d, 0xef9bd2c4, 0x15f90a13, 0xb6b43af2, 0x9cb52f72,
-       0x2719f271, 0x0c80a197, 0x4f978a78, 0xccf41932, 0x23f33088, 0x817a728c,
-       0xf6f9a3cf, 0xefc0de96, 0x0ea7b2f9, 0xf7def7e0, 0x2fe83745, 0xc63249df,
-       0x6bf32053, 0x2bd81765, 0xb3a190d2, 0xda76f107, 0xf5c4e8cf, 0x9f9f057a,
-       0xd4f94b54, 0x9e05fb0e, 0x0affd07d, 0x41ff5b07, 0xc7f41e40, 0x7bf3c545,
-       0x852b0b90, 0xa7e2192d, 0x1879c27d, 0x45c832a7, 0x3560725b, 0xce9079f0,
-       0x9f8cec17, 0xa5ab99da, 0x5879e1b6, 0x52f0634d, 0xa23f07e9, 0x06c260eb,
-       0x8fb820ab, 0xe59f35da, 0x602d74af, 0x729fd6f9, 0x50c27e7d, 0x3eca545e,
-       0x0aa97986, 0xbe0b9bf1, 0x2a00dc3d, 0xaa4e5fc4, 0x1f008fee, 0x9c6eb196,
-       0xb883ae47, 0x72276a24, 0xa2e4a095, 0x722fa470, 0x9fc6bda2, 0xbfb49fb0,
-       0x22cef1dc, 0xd52e77a0, 0xcaf71089, 0x91247f05, 0xc22aa85c, 0x3ef9adfd,
-       0x5f07e710, 0x407f7ce1, 0x18cdf3a3, 0xbcb1a2df, 0xd4ce2a85, 0xdbf0092e,
-       0x4e3b7294, 0xc4a2e9b6, 0x8634fcfc, 0x08bae367, 0x52f30608, 0x8d41fd78,
-       0xb8e94928, 0xbec3f16e, 0xc164dfb2, 0xb8958b75, 0xbae7a082, 0xbe1e2c68,
-       0x86ad724a, 0x16952ffa, 0x78f9e40b, 0xfefd6cad, 0x2e49c8e8, 0xbf62be85,
-       0xd61f35a1, 0x3bcf949e, 0xa6fdf469, 0x57bdad91, 0xba5a0ce2, 0xcb737e31,
-       0x27c12f30, 0xb56e8215, 0x496e8eaa, 0xa1888f10, 0xad148adb, 0x4dc5f80f,
-       0xd60bb252, 0x240b4d29, 0xe164a706, 0xff9053f3, 0x1e127122, 0xf2d42857,
-       0x6f423f10, 0x86acf9d3, 0xfb0dc052, 0xf92fd0fa, 0x89b0359d, 0x8f1bfabe,
-       0x81c433a5, 0xed8e67b3, 0xaf67710c, 0x491ba5bd, 0xf3a60710, 0xcbf3001b,
-       0x40d32b56, 0x79df65cf, 0x30f40edc, 0xd7f62dc2, 0x4bfb07f0, 0x586c656f,
-       0x7125fe83, 0xe7cf7ab3, 0x05094eb0, 0x60e39978, 0x2a49cff0, 0xb7d58acb,
-       0x132cfa4f, 0xef5a2515, 0xec4bc914, 0xffe7cba3, 0x89daefb5, 0xbd7be9a3,
-       0x59372635, 0x9fe3f5a4, 0xd6e671d1, 0x3f105d58, 0x8cf65478, 0x773fb803,
-       0x70975f3b, 0x01295d1d, 0x959f8b1c, 0xf079d3c8, 0x43fb611d, 0x1f943f1c,
-       0xd98ecf3a, 0x2ef3a037, 0xd3c506d3, 0xb52559b5, 0x7212e710, 0x2ca7c999,
-       0x4ba082f4, 0xea9bd026, 0xe5465205, 0x8dce2634, 0xdc6166af, 0xe8527f0a,
-       0xbf02fff7, 0x31437ed1, 0x1ba09dca, 0x48f4c3e9, 0x4c75c812, 0xfeb9aabc,
-       0x14fcabbd, 0x9fffbf8e, 0xb68429f3, 0x496943ff, 0xf53e3901, 0xdc535fc0,
-       0x00f60f90, 0x977acf5b, 0xeebce2a4, 0x8ff77ee2, 0xb46a9e38, 0xd79872b2,
-       0x637fbedd, 0x6fa2379c, 0x8efb67ef, 0x8ffaa80b, 0x4b6a2fdd, 0x1479c32f,
-       0xfd7793a2, 0x8562ecbe, 0x7e30eb9d, 0xeb6349bf, 0x1bd505e6, 0xc0275cb4,
-       0x806ff9e3, 0x5f5f14e7, 0xf161aa9c, 0xacdf011e, 0xf81a01ea, 0x9908ffdc,
-       0x1fed9849, 0xb95f4ca9, 0xb7c5126d, 0x08d1e387, 0x179e01f7, 0x3257e739,
-       0xe933c1fa, 0xb953f758, 0x601684f7, 0xff08c71c, 0x52bcba9c, 0xf3987fc8,
-       0x29eb84b0, 0xaa01ff78, 0x3ff73d3f, 0x68e80e74, 0x9f319f9c, 0x171f18c4,
-       0x43c8b37e, 0x983c4d9b, 0x27171297, 0xfb1cfd0a, 0x9e8bc637, 0x797af8d5,
-       0xfb021930, 0xbef96725, 0x621b9c3a, 0xcb04ebfb, 0x14925072, 0x1e968b9f,
-       0xb926052a, 0xc61b72a3, 0x33f8c5eb, 0xf833f8f8, 0xaae15438, 0xe633c7c0,
-       0xf36217ab, 0xdc68b6dc, 0xc7421e6f, 0x89e3a393, 0x39731671, 0x7a0be314,
-       0xe72abe0a, 0x7f515d74, 0xd3235bb2, 0x0c498703, 0x9ff88c7d, 0xca2b3bf7,
-       0xa1cf0447, 0xfd039c5f, 0x51736738, 0xec271769, 0xc28e545f, 0xcfe269fc,
-       0xe16af961, 0x1bb7581c, 0x36a4def1, 0xd8257376, 0xfee2689f, 0xb9717b5c,
-       0x03c89a1d, 0x94f2c2a8, 0x67e07552, 0x191b87c0, 0xb9de2c1f, 0xb79075e5,
-       0xb2bfadf2, 0x569dbc83, 0xbc60b2aa, 0xb41e9b45, 0x29c57ec3, 0xbd076fc5,
-       0xe4c03a78, 0x8aefc8ce, 0x305bec59, 0xe0f6157e, 0x9f3fcbcc, 0xc5f9fc00,
-       0x7a01d526, 0x1cd9bbde, 0x547c5336, 0xd0fc30d4, 0x7f5651fa, 0xade2f108,
-       0xfe5dc3d5, 0x9cb2afe2, 0xe7969f6c, 0x9d7185f3, 0xd3f1b15f, 0x2f0f9052,
-       0x1d7dc169, 0xfe3077e3, 0x97dc74a5, 0xc6a5a99b, 0x11be0bb7, 0x8d6f05eb,
-       0x3c469be0, 0x7f7c665f, 0x172fd73e, 0xfe72bf05, 0x0120f811, 0x9de457a6,
-       0xd28ff3eb, 0x7f8dd9fa, 0x62fd4bb2, 0xbfcb09f5, 0xf3de0d68, 0xdb672eec,
-       0xe71360fe, 0x0177e8c3, 0xcb59cefc, 0xac4230f3, 0xed86a45c, 0xb4591710,
-       0xecf5c541, 0xbfcf2da2, 0xbdd834f0, 0xabaecdf7, 0xb70bff69, 0x38777fec,
-       0xa6dc2fad, 0xd3678e66, 0x763149b0, 0x5a7c0bda, 0xf943a510, 0xb39afdf6,
-       0x40fe7b3f, 0x0b1e947a, 0x48d1edb7, 0x947c78ff, 0x8c68f704, 0x09740dff,
-       0x7d852d1e, 0xbfe7796e, 0xe9fba035, 0xbc8112dd, 0x6e7c38cc, 0xd2fb8fd8,
-       0x23a42780, 0x6e8453a7, 0x94bdf786, 0x39e7682e, 0xefed8c9d, 0x3fe40e69,
-       0x5dce0fe8, 0x757e7e51, 0xfccfc517, 0x982ecc0f, 0xef57fcff, 0x4e3cc3b3,
-       0xaf8c952a, 0x05983fd7, 0xeabe6476, 0xc96072cf, 0xe67fcf9e, 0xf36fc847,
-       0x8b28fd0e, 0x99d2fd30, 0x9dfcd1c5, 0xd6737e61, 0x9bf386dd, 0x77c83c4b,
-       0x65cbd7f3, 0xa8babf10, 0x12dbb190, 0xb94fc5c8, 0xce7c9c5c, 0x27f8fb8c,
-       0xb8531ec1, 0xccc8effc, 0xa2f721cf, 0x9f11fd7d, 0x58fcb50b, 0x18e3c8bf,
-       0x1e22cd13, 0x2c72b54c, 0xa87c6ebf, 0xe673e801, 0xc436772a, 0xf144bd01,
-       0x57487c73, 0xa1f2bf68, 0x3f5cd931, 0x7f189539, 0xc39e04b7, 0x3baa0dfb,
-       0x1df75f29, 0x1d1792b9, 0x9f1f297f, 0xfb0c9dc2, 0x12b327c6, 0x305f87c7,
-       0xd611624b, 0xa303f3a0, 0x7de4cdf2, 0xbe4cc3e3, 0x2607bc85, 0x0bf6858e,
-       0xc0fc9987, 0x53c7e077, 0xd8d9c2b8, 0x848a67be, 0xc3da80fa, 0x51bd7244,
-       0x6fad72e5, 0xe1427c17, 0x897fc056, 0xfb610bf0, 0x7e7927bc, 0xe927dcfb,
-       0xc1763177, 0xe3d9e30b, 0x3b7213fb, 0x6617f84f, 0x7593fcbd, 0x5bc6129d,
-       0x22c47e8c, 0xd3c2f035, 0x3e54af20, 0xda2edf41, 0xbcc196a2, 0xfbdeab3f,
-       0x9ca90fee, 0x7214167c, 0x469fd7aa, 0xdaff9d39, 0xa34fe47e, 0xdc167e9c,
-       0x4e50959f, 0x73c7edb7, 0xfa72f1b7, 0x053fab3f, 0xf01bd6fe, 0x5b61f427,
-       0xc3ea3478, 0x4fc410e1, 0xb7090fa0, 0x13fe46c3, 0xadf8277c, 0xddc595fc,
-       0xf844ef41, 0x845df052, 0xc5df052f, 0xf0ead1e5, 0x083f3717, 0x589f01a2,
-       0x75828ed6, 0xf6c5c586, 0xcb39ae13, 0x819693e2, 0x67d6fd6c, 0x43f582ad,
-       0xb020c726, 0xec4613fb, 0xa427ecfc, 0xbef9fe6d, 0x963e9dcb, 0x65075fa3,
-       0x895f042f, 0x1090e3a5, 0x16fbd383, 0x7d40f409, 0xf76396e0, 0x930b640b,
-       0xbd1f9df7, 0x2c780856, 0xca97ee6a, 0xae1babf8, 0xb5fc445b, 0x054cefd5,
-       0xea1ada7d, 0xad4f7989, 0x4494e507, 0xe25fa5e7, 0xfb857df4, 0x491bcd5b,
-       0xadf94c95, 0xdfa0b499, 0xc168dfe0, 0xbe38b67c, 0xe67f3330, 0xe803e2bb,
-       0x2978f80f, 0x5134b1a9, 0xf9f09a3c, 0x5ff3784e, 0x0baf1f68, 0xbf81306d,
-       0x9346dd7e, 0x24be4fce, 0x1480baf8, 0x784f5f00, 0x20652933, 0x2ecaf3ee,
-       0x0dee5738, 0x093cd39d, 0xf38c95f2, 0xdfc1fe87, 0xe0716fea, 0xc1a86fb8,
-       0xdbdcf07b, 0xeb0216e7, 0x6aad3a85, 0x3b382261, 0xeb383125, 0x7cba338e,
-       0x6a29785f, 0x618b85b6, 0x61237a7f, 0x3a38f671, 0xde0eb613, 0xaa7f704c,
-       0x7ab32435, 0xa347db35, 0x2462fca0, 0xf699777c, 0xd79f231a, 0x057b6ed4,
-       0x8455e7ce, 0xb6898724, 0x1a8d2857, 0x36b78bf0, 0x363d064d, 0xcbce29c0,
-       0x894ffa3b, 0x16febfe1, 0x77b9e705, 0x00331bf8, 0x6acfe72f, 0xddd5f604,
-       0x60ec5afb, 0x0a87ceef, 0x9adadf91, 0x191f76d7, 0xfee9eb05, 0x78a77f00,
-       0x4eabf63a, 0x9447d5d6, 0x5c00ba78, 0x4b8dcc13, 0xfef0095d, 0xf7d9858a,
-       0xdb3e4bef, 0xbf2c3b2b, 0x7afc8587, 0x7c41bf70, 0x378700ff, 0x13b37e46,
-       0x6592efc9, 0xf7986cce, 0xd99efa92, 0x7f25cf80, 0xe2253b50, 0x963e2dab,
-       0xee15b4df, 0xadf90017, 0x7d7bf2a1, 0x50d6fc8c, 0xff8bcdf9, 0xfbe5ae6e,
-       0x202ddf95, 0xfbe009bf, 0x90af9f09, 0x51d0fcdf, 0x1afcdf94, 0x4acef9fd,
-       0x2bf27b4b, 0xf2c29a75, 0x04d65c60, 0x00f01afa, 0x795bb2f9, 0x038c387e,
-       0x37c2fc72, 0x24bce394, 0x4a7fef06, 0x20ec978e, 0x4f128798, 0x4bc7266f,
-       0x4b1ca8ea, 0xc7267740, 0xcb09ea4b, 0x6fc83407, 0x65f9389f, 0xd98457df,
-       0xbcdadef7, 0xc741dcdf, 0x2eab702b, 0x20bf7d0b, 0x6283cf2a, 0xb685f9e5,
-       0xc760f9e4, 0x970779e4, 0x3da72a67, 0xeae8095c, 0x63f3e90a, 0xb27618de,
-       0xe5f03b7a, 0x275c659f, 0x0f79e21d, 0x7276197f, 0x3fc5f020, 0xff8a1e00,
-       0x9a6f9c3d, 0xbfec7e7c, 0xe853f874, 0xabec9547, 0x03ec35fa, 0x12a8de2e,
-       0x351587d0, 0x328fd147, 0x5f85bfae, 0x0b875c65, 0x7e5ed23d, 0x776e61cc,
-       0x088dca26, 0xc65b792f, 0xf38c3ffb, 0xc1c5ef17, 0x5deab079, 0xc042afb8,
-       0x407c5ed9, 0xb83da3cc, 0x15debcc4, 0x148032f2, 0xe286dc42, 0xffc5e511,
-       0xb5cf1947, 0xad5d1595, 0x23e51fbb, 0xaac2cf8e, 0x870812a2, 0x37e7e44f,
-       0xf7bdaee7, 0x18af9c00, 0x0059c474, 0xe188f4ee, 0xa7ac0f66, 0x416a4a5e,
-       0x49741679, 0xb974624d, 0xa379fbc4, 0xf031654b, 0x7256b79b, 0x86f1dd80,
-       0xc1f785ff, 0x8bea7dec, 0x05a3e052, 0x8cc392f5, 0x834e787c, 0xb5295e75,
-       0x854fc0bf, 0x7eb873a1, 0x245f505b, 0xea0bf7c3, 0xa3c0bc24, 0x9474fc3d,
-       0x0edc296e, 0x6df8016f, 0xb30b6700, 0xd13e1c6b, 0x3afc55ee, 0xbe9e4bf8,
-       0xc1972ab4, 0x571704ed, 0x02283bc0, 0xe7194cef, 0x057841d5, 0x3783dbde,
-       0xc74f4935, 0x679e47b7, 0xb4a110fb, 0xbe6bad0e, 0x97887ee9, 0x4cfae034,
-       0x90cc8bec, 0xac0b663d, 0xf3e97b6f, 0xc1690995, 0xa1efebbc, 0xf5d7ff7f,
-       0x0037d91f, 0xece41dff, 0xcbae2a4f, 0xb338a497, 0x1df1dce1, 0xb75d2af0,
-       0xfb336d34, 0xff313de1, 0xabb73e13, 0xc3710297, 0xf19e58b1, 0xf57ab995,
-       0x4f6fb18a, 0xbe43b79d, 0x821f7357, 0x294d2179, 0xda274e2c, 0x0b3249dd,
-       0x587e73fa, 0xf57c34a4, 0x1b49f821, 0x5c03061b, 0xbcf32e27, 0xb1e6cb92,
-       0xd3ddd689, 0xe7109db9, 0x3802ef28, 0x2fb2249d, 0xe59f377a, 0x927e705d,
-       0xad6667ae, 0xf8852b4b, 0xa0bcf1b2, 0x83403827, 0xde31a438, 0x11b88738,
-       0xd0f9718f, 0xbf1611e4, 0xeedff034, 0x273b0724, 0x706a54aa, 0x3ac4f65e,
-       0x8829f889, 0x8f88db0b, 0xf1e24c6f, 0x1fc20ec8, 0x46b1ce77, 0x11b978c2,
-       0x971b79ee, 0x6042eaad, 0xf15e6cbe, 0xb579b3f0, 0x78d20f35, 0x8bb58923,
-       0xbcec420b, 0x3223c576, 0xaf3c83b3, 0xe02bc044, 0x2a5dc233, 0xa7ff422f,
-       0xfa8cad79, 0x607f2ef7, 0xba479c15, 0xfb84a56b, 0x54f9c62e, 0x009cced4,
-       0xdf43c0fa, 0xf3693887, 0x69ed0447, 0x00296af3, 0xd73f8c78, 0x4bfb66e9,
-       0x427bbc7c, 0x7e7351f2, 0x1ea2f4db, 0x3665d20e, 0x849acba5, 0xd5c8a3fa,
-       0x168e462b, 0x7ab9c604, 0xe20bc6e9, 0xe6e17eba, 0xbfe7ba89, 0x74f1e249,
-       0x4f6fbf1e, 0x6265489e, 0x47e422bd, 0xaf9093c8, 0x817ce0dd, 0x0702519e,
-       0x4f00f372, 0x1a7ea18f, 0x4c5e7b27, 0x8f217962, 0x54afa74e, 0xe79e753c,
-       0x0cbc7085, 0x2399f465, 0x6de7c78f, 0x078a31e9, 0xb6c0fedd, 0xe27c7d24,
-       0xcc47cebb, 0x9881c843, 0x8c0e519f, 0x21e91bdf, 0xba46c0e2, 0x6721e918,
-       0x7e40fa9b, 0x5d939121, 0xb9cb77e0, 0xe8d7caa6, 0x5a7772b8, 0xcbf703f6,
-       0x65a4cf25, 0x7928c955, 0xa8572d16, 0x30ad2f4c, 0x1898b8b1, 0x970e5dff,
-       0xcb923328, 0x3ec1270e, 0x830ddbe3, 0x0c2f2cad, 0x5c7145f7, 0x9215a78a,
-       0xe83f809b, 0xfed04fdf, 0xbd926417, 0x712b7f80, 0xd6fdc50f, 0x9e3e7124,
-       0x5fd2e1e5, 0x582e942e, 0x35a70fc7, 0x83473fff, 0x8ab2ecbf, 0x4f5625fa,
-       0x153de135, 0xab25ffc4, 0xb93af367, 0xa2b9eacc, 0xfc29d69d, 0x7bfceeae,
-       0xef566ff2, 0xcdffda2b, 0xb45ebfde, 0x21dac57f, 0x7fb69481, 0xa357f0f5,
-       0xae7f30fd, 0xbbb548c7, 0x62bbf02f, 0xe529eb62, 0xdcf30d4d, 0x15fe3e44,
-       0x96ab97ce, 0x8562bf15, 0xb762a23c, 0x67c4f213, 0xdf3b73f0, 0x90f414b6,
-       0xf7bc26ad, 0x9ba04a01, 0xc0e2cc96, 0xc6a49e82, 0xcbce17dd, 0x2fbba091,
-       0x246635e4, 0xc192927b, 0x61ab7abf, 0xcd47c814, 0x060c1f3b, 0x0ee80bff,
-       0x05be14fd, 0xfa50da77, 0x436abced, 0x46705e6c, 0x193d9172, 0x6cdd1af2,
-       0x3a724adf, 0x14051dc8, 0xadf6b80e, 0xf4d68427, 0x8035b2fb, 0xfb0f6a3a,
-       0xc1659527, 0x986ba478, 0x9cb8fbc5, 0x2e9ecbe4, 0xb8b9bcf0, 0xe061d1f1,
-       0x7ed89997, 0xef48693b, 0xe5a13f90, 0x74798fdf, 0x47b5b9e9, 0x3e3ee166,
-       0xdc90cfdb, 0x6e838c6e, 0x24179c8d, 0x25603f98, 0x6fdc2ec9, 0x7f1c9177,
-       0x307fcf16, 0x1cccbe31, 0xccffb31c, 0x1fbf45e7, 0x870fe70d, 0x375e5958,
-       0x710ca79d, 0x89c401b8, 0x33e42165, 0xf55604f4, 0x09177d60, 0xed19f91e,
-       0x7624f1ff, 0x336585ef, 0x4c87e5d1, 0xd876664f, 0x21f9656f, 0x12706ac9,
-       0x73e4ede8, 0xbb7a01c4, 0xe0a6bd79, 0xf1c50ef9, 0x3c5fcc03, 0xef002260,
-       0x01c06a8b, 0xd72d7479, 0x48e7ce2a, 0x4e66bfb4, 0xe3efd17f, 0xc85af39a,
-       0xcad078cb, 0xb1162fea, 0xd396833c, 0x5af2005a, 0x952d73d3, 0x93b3f9b1,
-       0xf13f9992, 0x78f14a62, 0x3eb043a0, 0x43f8c099, 0xa2065376, 0xbaa579f4,
-       0x63f80920, 0xe288e02b, 0xb8ecdd21, 0x3f4bfa17, 0xc3cde14f, 0xafc46ee7,
-       0x4a901ce2, 0x66fc3bf1, 0x47ee139b, 0x7829317a, 0xcb41c833, 0x839e1316,
-       0x26b9aade, 0xab6b7d42, 0x257901d3, 0x9305e62f, 0x4c5b3e71, 0xc9ad9f38,
-       0xa12dd72d, 0xa3e9af70, 0x14f8058c, 0xe92c512b, 0xcec54f20, 0x99f3e97b,
-       0xacaf4cc9, 0x7a793134, 0xf589d93c, 0x7e3a25c7, 0x8457bc01, 0x4fce24f2,
-       0x75b0b734, 0x0d29a76b, 0xf275f032, 0x25de7144, 0x3c7f832c, 0xbda08cb2,
-       0x0353691c, 0xb9538c4e, 0xfd29336d, 0x07661147, 0x08b47d46, 0x0528c3f3,
-       0xfda08f0e, 0x04a9b5ed, 0x1e7845e6, 0x4f9c8de8, 0xb28d206e, 0x70dfb685,
-       0x74c2b889, 0xe92f1bbc, 0x2ddcbff3, 0x8d14d18e, 0xb62488a4, 0x78f863c7,
-       0x00adc4c5, 0xf45894ff, 0x7b018def, 0xe318e14c, 0x49339c30, 0x1bb476e6,
-       0x2e7b16e9, 0x8dede447, 0x853dfb91, 0xcd58c0fe, 0x66d87805, 0xfb07bf73,
-       0x9506fe7f, 0x46175a24, 0x6a3ed7d6, 0x61537a39, 0x798c94b9, 0x6d1f947b,
-       0xadd707c0, 0xfdc3f2ad, 0x62f5d787, 0x81df03fd, 0x7d66b95e, 0x87d80666,
-       0x511f4e02, 0x7e033e0a, 0x7e32a472, 0x951f5c72, 0x79c9f5c7, 0xbe429fc8,
-       0x9fa0cf80, 0x46606a5d, 0xe50738a2, 0x9fc0f5cf, 0xfd046cdb, 0xb6779fdb,
-       0x12b9034c, 0xfce31ce3, 0x2d572c6f, 0x8547b25b, 0x76645f79, 0x4b977466,
-       0x3c8c635a, 0xc1852bfe, 0x4d5675eb, 0x1bf1009e, 0x2dfb8a9b, 0x162e3c59,
-       0x639d1fcb, 0x59f043f8, 0x51e58d93, 0xa9297e08, 0xbbae2bfb, 0xe2122e4a,
-       0x3f1123c8, 0x28cbf04f, 0x61f3187f, 0xd7e61147, 0xe8a5f919, 0x7d015382,
-       0xb4bf1ed4, 0x089027c5, 0xc8d27605, 0xb992072f, 0xbf26d29f, 0x5e03b65c,
-       0x6497d696, 0xa4fc5d7f, 0x5b47f396, 0x4cacc3ed, 0x5f9f19ef, 0xa8f66148,
-       0x41faab4e, 0x5b85e83e, 0x7b902e4c, 0x70b90dca, 0x325d513f, 0x95288efb,
-       0x4dbea13d, 0x5b667a61, 0x667a8cc8, 0xc1e3cd9b, 0x161cd07d, 0xa78a241f,
-       0x5c9af211, 0x35ce2c5d, 0x0cfcfc31, 0x1aa0bfe7, 0xe212761e, 0x74607f0b,
-       0x014b7a1f, 0x9d25189c, 0x1fb93367, 0x00db4a78, 0x6c3dcbf7, 0x7c0d3a2d,
-       0x04b20c95, 0x35c74f79, 0x38ad77dc, 0xdbfea1ae, 0x2950fbb9, 0x9e0afdd8,
-       0xd76431e7, 0xd062d2a1, 0x37a65627, 0x29fd71cf, 0x4e60c3ea, 0xf70d0fa0,
-       0x4c230d15, 0x53ddc54f, 0x1f937c04, 0x77bb8f6d, 0x0635d1a8, 0xef771ac8,
-       0x98f711d0, 0x7bdc2714, 0x797bc1e3, 0xe1efeee2, 0x67bc60fc, 0xc7927fa6,
-       0xf83f0562, 0x36dd8695, 0xb3276be0, 0xb2ad41c7, 0xa92bcb2f, 0x23fc09ec,
-       0x147f0ce4, 0xf7bfc15f, 0x7cf62e79, 0xbe7c2dc3, 0xb614b88f, 0x61a8dd3f,
-       0x082fe81e, 0xedc82efb, 0x1e6b6f52, 0x5f4b0bd3, 0x5d7c019d, 0xf98ddf38,
-       0xc8a58fb6, 0x2497fcf8, 0x7409e96c, 0xaf182972, 0x92ceaa0a, 0x3df45293,
-       0x81f594a2, 0x4eaed4b8, 0xfe3085c9, 0xb5cf56c3, 0x5a513f00, 0x4377c20e,
-       0x82141786, 0x580db65e, 0x4a760199, 0x1ae14dc0, 0x8516c9bb, 0x6595c043,
-       0xb0f87c65, 0xd6b5e675, 0xd03bec4e, 0x4f47b53b, 0x417be058, 0x39fd60ff,
-       0x3e18f746, 0xf947ba00, 0xea1bba40, 0xdc050f02, 0xbff2dede, 0x25c60f87,
-       0x87e103e2, 0x76ecbf51, 0x1ff78fc0, 0x73b37b97, 0x6fcf2c1d, 0x24778c88,
-       0x9b25f246, 0xb05d8a72, 0xf9d1597f, 0x3e525887, 0xa067ff3a, 0xff766ee7,
-       0x04e7f0b0, 0x45cbe4df, 0x234bafd8, 0x2e83de78, 0xe21fb0d8, 0x823cc349,
-       0x63060eed, 0x744fdff3, 0x59282ea3, 0x72674d60, 0x1bb5efc9, 0xefd09610,
-       0xc715401c, 0x75d7e81d, 0xe2e8bd45, 0x242725f8, 0x03c5ce09, 0x05c95f2b,
-       0x019c33ff, 0x8f300fe3, 0xed3ec30f, 0xb951d66b, 0xeb029f30, 0x8fc09ec8,
-       0xfa59f7af, 0xaf693027, 0x7dbf9977, 0x4fea33a3, 0x97b8fd09, 0xbfc62b77,
-       0xcbf4cadf, 0xcfb66e8d, 0x163d7a0e, 0x801f610e, 0x1487008c, 0x62ba6a9e,
-       0x6a1dbd45, 0x11be78a4, 0xd8f4a0e0, 0xf01a9123, 0xee4c8a17, 0xfbf012cc,
-       0x8015853a, 0x5ffeb9b3, 0x340e20dd, 0x23fbf43e, 0x9178ef00, 0xe7d2eb1f,
-       0x6cfd1ac7, 0xf588ffe1, 0x148ff086, 0x47e1088a, 0x7874fb41, 0xe0e9f14e,
-       0x0c8de0f7, 0xfefe305b, 0x5af3ab78, 0x85779737, 0x98bc63ce, 0x572be5c7,
-       0x4cba5246, 0x5a3f3120, 0x0a4a05bf, 0x2483f8ff, 0x82f18c9c, 0xe7f80516,
-       0x8e449716, 0xadd9f0c5, 0xf875f543, 0xf68aca8d, 0x46fbded7, 0x2242323b,
-       0xff1f9b5f, 0x3e83cb4d, 0x47f62fb6, 0x18f7db1f, 0x2bf643de, 0xed0db0e0,
-       0x1c3bf6cc, 0xb5070f0c, 0x73ed76c4, 0x4dc3ef2e, 0xef10f98d, 0x4bebb3dd,
-       0xee6fa3b4, 0xf05df2fa, 0x569d871b, 0x8767c408, 0x8a981e9f, 0x39a1d271,
-       0xf442be78, 0xc6b4fdeb, 0xe473d84a, 0xdfff711f, 0x5b8f0a01, 0x582cf803,
-       0xf1f671be, 0x0bbfa027, 0xdbc615c7, 0xcd52fc7c, 0xebe20bd3, 0xc81efca5,
-       0xa7f31203, 0x7e01fb44, 0xd6bbdaef, 0x31105e48, 0x3497d2c7, 0xe820bfa0,
-       0xb1a9cb78, 0x78fc95a7, 0x98efc0ba, 0x39afbfe0, 0x295edccf, 0x714e97f6,
-       0xefbd91bc, 0x4ddb3ee3, 0xe02af735, 0x2394dfa7, 0xb8cc7713, 0xe2569ce3,
-       0xfc6b898e, 0x63f06ac3, 0xc4f4bef6, 0xbf8b8804, 0x2f91e325, 0x9fdb686f,
-       0x20dea1f2, 0x3377dc27, 0xd0a6f5e2, 0xfdf00abd, 0x97931b38, 0x7e1fc6f6,
-       0xeb8fe51d, 0xf984de81, 0x9425837f, 0xdf5d231f, 0x8cdbf5dc, 0xf8f17ec6,
-       0x02de8b6e, 0x6f0e82ef, 0x054e2d9c, 0x0747b47c, 0xa6ee9f23, 0x79d3f3f3,
-       0xfcfce985, 0xd37b4fd4, 0x3efac0e7, 0x05d60e5f, 0x9feb7a7f, 0x4f3f00cf,
-       0x0c98e5f0, 0xeac327c6, 0xb620c89e, 0xf88c9d28, 0x74636eea, 0xc0e9fc9b,
-       0x7e3e5414, 0x6ce700d2, 0x536c38ca, 0x57ef1389, 0xbdfcfc24, 0x954dbed1,
-       0xea0318ef, 0x8cdf68d2, 0x738a6d76, 0xd7c3de26, 0x6384bdde, 0x2052aadf,
-       0x5954b3dd, 0x80fbb0aa, 0xe02e9f99, 0x6ff3d231, 0x09b6eca4, 0x19f0db52,
-       0x67071de9, 0x3d353caf, 0x3fc2bc01, 0x4e10f717, 0x78f686f9, 0xd7cf4db8,
-       0x7e8d4fe7, 0x5b6ad41b, 0x8ba46472, 0x83e85db1, 0x00a01852, 0x23f83f4b,
-       0x48596ce3, 0x1a4bd2bf, 0xb579c371, 0x93e449ae, 0xc642bb18, 0xba7e4777,
-       0xb59ec1cf, 0x97154fc5, 0x1193c44c, 0xf6b52be5, 0x55f02b31, 0x8565529d,
-       0x6c1babfd, 0x52a45713, 0xb4fe8c3c, 0x5bee0a78, 0x84089a35, 0xce84c6c6,
-       0x813885ed, 0x1c5d5f38, 0x7c0253da, 0xc0694fb8, 0x05f35375, 0xf8c61bea,
-       0x15a1b599, 0x6ac3f056, 0x0b8c6533, 0xba23481c, 0x6dc7a073, 0x3daaefcc,
-       0x9dc13ade, 0x0a73bda0, 0xdc4c9f6b, 0x6768f999, 0x51be3053, 0xf384daba,
-       0xf6b92d1f, 0x321f8267, 0xd9afdd9d, 0x7f643f5c, 0xe9b78526, 0x1fd434ce,
-       0xba1f6a63, 0x110941d7, 0x3e2177fc, 0xb929996f, 0x95efa39e, 0x2f585d3a,
-       0xeb879d9d, 0x655f21b8, 0xed0f1e4c, 0xd75c54e3, 0x2917918c, 0x3cfa6f10,
-       0xf5802a47, 0x71a92ee1, 0xe4fc1999, 0xe21c6c89, 0x7ac067f0, 0x19f19df3,
-       0xcf20d603, 0x05d5fa88, 0x75ea186b, 0x3ba5b3eb, 0xbf81efce, 0x36f4b04f,
-       0x8e51cf09, 0x7f12e471, 0xae94ff0c, 0xfea4f4a6, 0x7650a4d7, 0xe4f1f031,
-       0xc40932b1, 0x656df1f0, 0x5d881256, 0xb1f3f20f, 0xde2af52d, 0xf8e42037,
-       0x53bfce66, 0xdee865a7, 0x0ede6fa7, 0x886267f6, 0xfcb841c7, 0xd9cb80fc,
-       0x3bfd7ccd, 0x1bab93dd, 0xbf308cb7, 0x65a4cfe6, 0x671d2a74, 0x960f4a76,
-       0x70d2d51f, 0xe5f07318, 0xcf4083ae, 0x618fa0fd, 0x5a2f2b3d, 0x2390fc89,
-       0xb77f00b9, 0xb7edf4b8, 0xe3d7d50e, 0xe8353fee, 0x74e0db81, 0x0faf1c94,
-       0x56dfdc84, 0xc710ab2f, 0xe288adb9, 0xbd61fd17, 0x5eaede7f, 0x107cecb8,
-       0x5bef86dc, 0xb2a4ec2f, 0xefca9436, 0xae1fa16e, 0x7e815722, 0x3f572318,
-       0x4cd2fc01, 0x01399eed, 0x21fb08bf, 0x54a5f3d6, 0xc83f815e, 0xab8c4cd9,
-       0xe544b98e, 0x9eba2336, 0xea0be88f, 0xf812b84f, 0x7ad81f39, 0x221df6ea,
-       0xd4fe83fa, 0x9fdddfc1, 0xb550a318, 0x75700052, 0xd442fe25, 0x2c571857,
-       0x10450385, 0x8739cbdf, 0x42af1b71, 0x5768a7d7, 0x8c7a679f, 0xd2ae0bfe,
-       0xf46ffc15, 0x789c4433, 0x7ff08a52, 0x89117cf4, 0x31514e17, 0xa1f8238e,
-       0xf208f014, 0x38c6453d, 0x21fc7b7e, 0xe29fffc6, 0xe3c2920b, 0xaf48bd7f,
-       0xe083f08e, 0x4617c103, 0x4347f1fb, 0xfb2da75c, 0xf5f29691, 0x1f7f63f6,
-       0x7b74f515, 0x6764887e, 0x7363d97a, 0xb5f37960, 0x0fc0d9b7, 0x83f5c499,
-       0xf89143b0, 0x17c65ad4, 0x29671bfb, 0x05e46fb0, 0xc51790bd, 0x0adf88bb,
-       0x4d58ac3e, 0x9e397e30, 0x7aa6a5eb, 0x8ef3cf16, 0x12900396, 0xec7a1252,
-       0xf9675609, 0xb79e822e, 0x5228be70, 0xf7f028f6, 0x49756e5f, 0xb913882e,
-       0x82703c79, 0x6078c25b, 0x7f823e9c, 0xc75bf6d0, 0xd758014a, 0xa093f519,
-       0x7fde64f7, 0x7df09f1c, 0xdc9f2357, 0xbee5c290, 0x9ffee93b, 0x03c60bf4,
-       0x4db53b5d, 0x7b7df157, 0xbe0d9d74, 0x5ed9c82d, 0xfe02bf96, 0xa6f5d035,
-       0x3bf60a4b, 0xe7ef4535, 0xf05b385c, 0xf20b5c4b, 0xaf798df7, 0x37b4f9c6,
-       0xc7e124fe, 0x8c5ebf73, 0xf2c2b37b, 0xa6768df9, 0xbfc2bb5d, 0x32abd233,
-       0x26bfb125, 0xde1c6bf4, 0x8b6dfeb9, 0x5fe9ed6e, 0x53feefa1, 0x2bf457fa,
-       0xcf1882ec, 0x5adb97a8, 0xbb3d09cf, 0xe309836a, 0xf5f03727, 0xae3c0df2,
-       0xc3f70cfb, 0xdede3c02, 0xf782d17c, 0xb6550653, 0x63dfe53f, 0xd6d038c3,
-       0xe97fccdd, 0xfbe2756d, 0xc6324a0f, 0x641c1e29, 0xd74c3d42, 0x3f308526,
-       0x3e9098a5, 0x85dacfb0, 0x2b56b3ed, 0xe3d432e1, 0x7e40852e, 0xf1959e54,
-       0xfa6f83c1, 0x0fff4067, 0x5a6deb1e, 0x70e37181, 0x4331f803, 0xa7dc140a,
-       0x313b334a, 0x6f54dcce, 0xe6aabcc6, 0x03daffba, 0xf9aa277f, 0xf2c17122,
-       0x39bd5f66, 0x7a044fb2, 0x96fc8c62, 0xcd11790c, 0x0ef3042d, 0x970b4e47,
-       0x06e97ac0, 0xd602b0d2, 0x7635c3e1, 0xa788dd8e, 0xc6de7ca3, 0xbec8847d,
-       0x1bcb3d41, 0x79e14929, 0x06fb7123, 0x6fb8250d, 0x15ae48a0, 0xd33ed124,
-       0x60df667f, 0xf29ce038, 0x7a0c5ff3, 0x7fb1b488, 0xfb6355b0, 0x54872d4c,
-       0x39327e02, 0x5e309995, 0x423eded3, 0xb764eedd, 0x82fb0ed3, 0xdbaf9fcc,
-       0xccedc5dd, 0xfcfdfb6f, 0x986296c6, 0xd36ad6c6, 0x47632b4a, 0xe246bb8c,
-       0x727c4671, 0xbfedc7bc, 0x61a35c84, 0x63c462dd, 0xe2194b71, 0x4fe29bf7,
-       0x13d6c5c8, 0xebe06ec9, 0xb8ba27ad, 0x3c63dc61, 0x3b32e70e, 0xbf7604fe,
-       0x326b78ee, 0x6e6ab3ee, 0x5a1bac27, 0x762e2cd2, 0xf3e3110f, 0x78dee760,
-       0x3c07fc6f, 0xb935b7ae, 0x337d8fe5, 0xd851f763, 0xc51349be, 0x0faa3eeb,
-       0x3cfd5f7f, 0xfe7e03e6, 0x13cc51f2, 0x4c86f85a, 0xadaf102c, 0x85e7e14e,
-       0x03f81a03, 0xee3235e5, 0x18b9534f, 0x5625393c, 0x7960acdf, 0x3dd95b34,
-       0x99afe59f, 0xf7e9e303, 0x927fafe5, 0x4df6f90f, 0xc00e5bcb, 0xbff01fdf,
-       0x33bfb12c, 0x87cc6fe7, 0x95cb9afb, 0x2eb271c4, 0x9d7fe676, 0x034eb3ad,
-       0xccda40ff, 0x79605efe, 0x8e6aaa70, 0xd9a5ef59, 0xd31ef155, 0xec492f0b,
-       0x5f0a097e, 0xe2bf7dec, 0x7d9c06ef, 0xd5f06249, 0xbbf801aa, 0xb79be583,
-       0xbe39c135, 0x5c6623f2, 0x9f3779bf, 0x4b33fbc3, 0xfcc16eb6, 0x4cad6f60,
-       0x09d619f6, 0x9b53f3ba, 0x45e430e5, 0xbfb0d455, 0x98eb4023, 0x4c115527,
-       0xbdb08e7c, 0xb70b3e73, 0x87eebfd6, 0x2feda83c, 0x9dbec1da, 0x0764d869,
-       0xbf7ed3bc, 0xdc62fcf6, 0xc3e0a979, 0xea5e7b5f, 0x5a72610c, 0x379c3762,
-       0x37c19cdb, 0x6383c223, 0x78a3faf3, 0x70b9fc64, 0xe067c5cb, 0xd7d9ef3c,
-       0xe0067b3e, 0xf9d5f45d, 0x0d7f6067, 0xbd60f512, 0x6ff97dea, 0x7c521e78,
-       0xdff72777, 0x117a5e9a, 0xbd3691cf, 0x6f41766f, 0xbb27f54d, 0xa6ca79c1,
-       0x82caff6d, 0xfad2deb8, 0x2e77e831, 0xcffd41dd, 0xa2bafb04, 0x83e8326c,
-       0x1ab1ceb6, 0x66b7b5e9, 0xf380376f, 0xf06f4a73, 0xdfe7237b, 0x2ecf2c82,
-       0x3aadee72, 0xb8e179f1, 0x93356e73, 0x2061bd6f, 0xd40baa94, 0xdde7bb46,
-       0x5e3a530e, 0x55fa01df, 0xeaf3cc3f, 0x73efd312, 0xd3a507f8, 0xf3faeccf,
-       0xe66b17e6, 0xb434fb3c, 0x79b464d5, 0x01dc2dde, 0xc8f389bc, 0x55eeed63,
-       0xd79b9076, 0x85f3c15e, 0x74f1b740, 0x2e5b4da2, 0xdc738376, 0xbb96d4a7,
-       0xda836f30, 0x940b8843, 0xf287bfd7, 0x10e3b4d3, 0x3f0969c6, 0x2244dc17,
-       0x538e763f, 0x98dcf3e2, 0x71c9cec2, 0x3a39c3fc, 0x39f4e3d0, 0xf8c72f3f,
-       0x6ba39c58, 0xbd5cfceb, 0xefbf07bd, 0x77bb13ba, 0x1a87e378, 0x4a20dfbb,
-       0x3468692f, 0x3a2dbd0f, 0x00383c09, 0xcf62430f, 0xa73e2683, 0xcc373918,
-       0x03f405e9, 0xde722fff, 0x6247d693, 0x248f7a5d, 0x1b4d07d0, 0x26d239d8,
-       0xf53df135, 0xad687ce2, 0x9e62ce81, 0x9087c96d, 0xffe0f6d3, 0xc979f8a6,
-       0x8bf1d4ee, 0xcbd9d3c0, 0x87f8f589, 0xddbbe976, 0x8c96e36b, 0x607cdaf7,
-       0xd3f704ef, 0x98f9e51e, 0xcc5acf2c, 0x96f82cf7, 0xbecf4f94, 0x17fde32c,
-       0x517b82ab, 0x85f51b8f, 0xc23597d8, 0xb78739fb, 0x89d996a2, 0x04a5afb3,
-       0xb39fb46c, 0x3f21d66f, 0xd51f5457, 0xc0ef8f20, 0x8b1aede6, 0x01f933d7,
-       0xc71b113b, 0x9eeafb3a, 0x24dbd47c, 0x97f27e71, 0x437a1f5c, 0x56f1c789,
-       0xb38dd39f, 0xfbc41fd0, 0xef1bdab1, 0x0a9ee28c, 0x50699dfd, 0x4cfa3f31,
-       0x8d41c590, 0xedcc7fe3, 0x203ee466, 0xcf412f6a, 0x5768fb88, 0x3cf30468,
-       0xe79626fd, 0x6a7efc69, 0x00d3c32a, 0xee04b387, 0x82d9750b, 0x52b8b9b8,
-       0xd4cdc32e, 0x6c7b9115, 0xf6f7f85c, 0xe4977922, 0x2f309b91, 0x925de452,
-       0x50bd5927, 0x613703d4, 0xfe10e51e, 0xdac03fbe, 0xeb4c2161, 0xecf97eb3,
-       0x2c7efe4d, 0x3320b26f, 0x9cffcfea, 0x829630fa, 0xd5a67ee8, 0xa049fc4c,
-       0x3ebdf82f, 0x22b27f22, 0x3575e449, 0x9ef7f3b2, 0xfa5f9d6c, 0x77a7bb47,
-       0x5b73ec2a, 0x552776c2, 0xc6eb4b29, 0x4e2a1da0, 0xfabe2075, 0x03911f6e,
-       0xc1ffc1fb, 0x76a707f1, 0xa57f1f8a, 0x6ab7faca, 0xe074dfb4, 0x4025be97,
-       0x09ddbee7, 0x831773e6, 0xa3bf4a13, 0x9e7c14cb, 0xfec1c944, 0x073b995e,
-       0xd22b1fe2, 0x2c63cc34, 0xdd00b0a6, 0x5e5c658c, 0x72a9aa68, 0xa5c72d1b,
-       0xcdc875b2, 0x1ebe4ea9, 0x277f6169, 0xffc2d1cc, 0xe7db184e, 0x9682e597,
-       0xe981d830, 0xecbfcc29, 0xdc31f2da, 0xb4eef1ff, 0x37582ebe, 0x7a4c0d4d,
-       0x21b7e610, 0xf00933d5, 0xeeb4befb, 0x9b5f946a, 0x34fc0527, 0xfcb1ddc9,
-       0x8871f8d0, 0xdbf4fc05, 0x61057187, 0xbc18f763, 0xe955943b, 0xa7c01e78,
-       0xae323f18, 0x03d8bf21, 0x13883d71, 0xf11efbf1, 0xce3a7afe, 0xcc26e3f6,
-       0xb64a6f8f, 0x59b47bf3, 0x00b608dc, 0x3fc7def0, 0xbef9972f, 0x5f775f96,
-       0xa7bb2d5c, 0xb89eee3e, 0x08129e83, 0x8bef1839, 0x3b37de33, 0x4f300494,
-       0xdc7f78d4, 0x307ebe08, 0x40f71bde, 0x5d0fb72a, 0xbddd1748, 0x5fd616db,
-       0xf03d5beb, 0x09dc1b9c, 0x6b3c5325, 0x4d0c994e, 0x0d73ca8f, 0x3e708fd5,
-       0x4e7e75f8, 0xc761ffb8, 0x2d7f003d, 0x79435fdc, 0x1dfc177b, 0x072a2d13,
-       0xbb930ffd, 0xb9a75ec1, 0xacd4ff99, 0xd3cb7bb2, 0xbf4058e8, 0xc98fb834,
-       0x89c4fa0e, 0x9bfe1b79, 0x3c7bee09, 0xa0499729, 0x92e9721f, 0x5c47ee1b,
-       0x3dc7cfc9, 0xf6e9326a, 0xca9d7e61, 0xf96fe3f4, 0xefb1633d, 0xb7a04a4d,
-       0xeb654d9f, 0x552cdb85, 0x9f198557, 0x9f740b3d, 0x70a8f26e, 0x599a9b4f,
-       0x331c42a9, 0xce4fca35, 0x13e2092b, 0xeecedfef, 0xab5f7f4b, 0x81ebf39a,
-       0xef66f3d1, 0xc7814600, 0x6fb8e92c, 0xbee38d3b, 0x4d4ce9d5, 0xd5a7818b,
-       0x99dbe426, 0xeadb720a, 0x91e589e9, 0x1f719a1f, 0xcfa688e9, 0x02f71783,
-       0xc480fb89, 0x7da2417d, 0x291586fe, 0xe91f1fe0, 0x74e77443, 0xd2ff5c42,
-       0xf9039ef5, 0xf3a3047f, 0xa67f73fb, 0xff15dfc2, 0x82f48fab, 0xc5f187bf,
-       0x4cdd73f4, 0x73cddf14, 0xd7f8b9ff, 0x79a3ddb4, 0xdcbc04de, 0x1578db9d,
-       0x531dd7c8, 0x4dfa41ce, 0xf9bf7cdc, 0x9e3f653c, 0x61250ecb, 0xef3bc23c,
-       0x4f180acb, 0xe6f687e8, 0x1d972f9b, 0x2a70bd06, 0x8bde09f0, 0xf626c646,
-       0x8dfe8d5f, 0xe71773e0, 0x0db231f3, 0x493356ed, 0x5cac7966, 0x73ee636e,
-       0xb37ee273, 0xe209fc9b, 0x98f62b3a, 0xd99fec08, 0xe1778941, 0x87754882,
-       0x8af6165d, 0xf5942db8, 0xda1fcd21, 0xb95ea54f, 0x17c42569, 0xc8682fe0,
-       0xfa80faf1, 0x56296e2b, 0x4f2bec0f, 0x79d607ac, 0x5a96c056, 0x58607a7b,
-       0xdb7e84d8, 0x5f07d537, 0xe281f419, 0x82be2270, 0x605033e0, 0xc43e1fff,
-       0x8000938b, 0x00008000, 0x00088b1f, 0x00000000, 0x59edff00, 0xe554707b,
-       0xef773f15, 0xc3cdddde, 0x210366e4, 0x804d8404, 0x85701020, 0x5c7c0188,
-       0x94422101, 0xd6da0300, 0x02101ba9, 0x16a52d79, 0x9b8cea9d, 0x8e233480,
-       0xd29dad13, 0x542cce96, 0x2ec4952a, 0x4dd0689a, 0xd15c04ba, 0x63e02711,
-       0xb46d63a0, 0xec083a2d, 0x98f8a71a, 0xe739ec76, 0x647dd7bb, 0xeffa7471,
-       0xe5f98617, 0x7cebdfbb, 0xe3cefce7, 0x648a12fb, 0x40a50307, 0x676a733f,
-       0xf1d31c02, 0xee016bb7, 0x0d1c442a, 0x00f250e0, 0x007f73e6, 0xd63c03c6,
-       0xe9b6dc06, 0xdb007b5a, 0x2ed8c9ae, 0x95d6c801, 0xfc76edf6, 0x06dbb8fd,
-       0xbab60173, 0xc00f77f0, 0xf9e9b1f0, 0xffbf8150, 0xbe956be7, 0x16bcea57,
-       0x373f4d7c, 0xb772b025, 0xecf7000d, 0xb5ddc372, 0x9d701e34, 0x913ac4a2,
-       0x46383668, 0x9dbac401, 0xef289d7b, 0xb1b0b870, 0xddc3db13, 0x5a64d759,
-       0x1e17c2cf, 0x40074ec2, 0xf3e36e8d, 0x91bdb05c, 0x35eb8157, 0x87973cf5,
-       0x33c685c7, 0xd752e6a7, 0x64df0e9b, 0x4e7dcf1d, 0x9aee5bd9, 0xc1ed1d84,
-       0x508fa459, 0x87df2ca4, 0x43b4ccf2, 0xe47b3ec0, 0xf8ddfefa, 0xcb400e71,
-       0xcce3376e, 0x987a9cf0, 0xe223df85, 0x8687b43c, 0x817ad35d, 0xb77b17db,
-       0xff3d69bb, 0x7c4afa5f, 0x470700b9, 0xc4219dc3, 0x2e98be67, 0x4ec1dbe6,
-       0x05e9e7e3, 0xd0402f2c, 0x39170ab6, 0x9c38e1a8, 0x1b0bf177, 0x9ff6b38f,
-       0xaab37bd9, 0x222a89a3, 0xfa80031d, 0x3d3b0ac8, 0xa7accf64, 0x676e1400,
-       0xfdc14105, 0x528297fa, 0x002bfa89, 0x5dfd82af, 0x01f7f1d9, 0xa73ef1db,
-       0x67f61f67, 0xc6e01de9, 0x421cbbf5, 0x8c00d3ff, 0xdf1372e7, 0xc2b2fdad,
-       0x65c806bf, 0xea411bbb, 0x0dc077b7, 0x9b7e89b9, 0xfdcb057e, 0xa7f05d43,
-       0xcb623b2b, 0x53e23945, 0x5cb1f600, 0xf7813909, 0x169ce4b5, 0x7fb4280c,
-       0xa303ecfc, 0x9f7d2e58, 0x7210e487, 0x67aa7842, 0x0dd7cd3f, 0xee96473e,
-       0x74f8d2f1, 0x20b3fcb9, 0x9e09f908, 0x55018fe2, 0xd13b3df8, 0xfb855d76,
-       0x42de0994, 0xe2fb7660, 0xc4da93eb, 0x7cc4aaf3, 0xfb6d7ebf, 0x1db9e40e,
-       0xa9a2afed, 0x70af1073, 0x7c3d39d3, 0x31bca43e, 0x83d0b67a, 0xe394f517,
-       0x8cdffd12, 0x52e6fe47, 0xf38c573b, 0x659cf53a, 0x400feca5, 0x8202d0fe,
-       0x912af7df, 0x00a937b3, 0xcdaf1fe7, 0x9d73c0af, 0xeb6c0db7, 0xd49f71c4,
-       0xd823ca85, 0xfdf3ceae, 0x5efdc75c, 0xaedd6f7c, 0x739fa899, 0x06b79a5d,
-       0xe050c1e7, 0x8fa87189, 0xcf346786, 0x007e4923, 0xc445e3e3, 0xfc7df4df,
-       0x189eda67, 0x58747e47, 0x1db0b8f1, 0x4813e2d3, 0x47f096ee, 0x7978830e,
-       0x078703f8, 0xf81715e7, 0x543f9276, 0x222eb6f5, 0x8e83cebd, 0x0ce23aed,
-       0xaf88f81b, 0x0f5c62a1, 0xbb7e1df7, 0x926b5f7c, 0x85753a1d, 0x7dc407e3,
-       0x0a916b13, 0xfaffd361, 0xf631721f, 0x24c1f91c, 0x1347bf5a, 0xb5e6b33c,
-       0xd238c0c2, 0x631c1b7b, 0x82c7beb4, 0xd9e26af6, 0x775d778c, 0x9fe3491b,
-       0x69f9fd36, 0x41710fda, 0xc90f6f81, 0x43e478db, 0xf39d1e47, 0x8009a19f,
-       0x4f764243, 0xf97b9ebe, 0xf34fe0f8, 0xee3dbf27, 0x8ffef1a0, 0x7415df91,
-       0x079f0f1e, 0x1f23beed, 0xddf078ed, 0xd875e9de, 0xfc2a53df, 0x1dab47b1,
-       0xdf5be347, 0x086b34b9, 0x123231f1, 0xd7d4bf8e, 0x86f49138, 0x4d985ffc,
-       0xf908767e, 0x69f849ef, 0x8a29f905, 0xaffc415e, 0x8e34f6a4, 0xc18e5dc3,
-       0x3d97ec65, 0x44bf2036, 0x203fb3fe, 0x40fdf5ff, 0x781fd1e3, 0xf3f654fe,
-       0x419b41ae, 0xf1c600ed, 0xb85edc29, 0x835dda9a, 0x73f6758b, 0x3679f21b,
-       0x80646bf9, 0x4c0109d7, 0x5029d321, 0xf648aa1b, 0xa3d63cdb, 0xdba7d4cd,
-       0x55d0dff4, 0x9e2f7c9e, 0x53554723, 0xb54f23fc, 0xb502f225, 0x3fdc2bb7,
-       0xed0df1e6, 0xc13fa24f, 0x740799a0, 0x2d383bc1, 0x5d4ff9e2, 0x7d6ffe22,
-       0x4e8afe65, 0x13d6e73c, 0x13f7f72a, 0xce31ca4f, 0x78193c9b, 0xe536e748,
-       0xe7da0f05, 0xfcc543d8, 0x1b6c5afd, 0x1ae74718, 0xba51165b, 0x38eeaaa9,
-       0x36bf384a, 0xbc4348b4, 0xa3c1cefe, 0x19f3709a, 0x81eebfc4, 0x29d8675b,
-       0x42719dee, 0xfdd88a16, 0x67fdfc55, 0xfadb0f50, 0xf219ff51, 0xf9871e06,
-       0x0e3b5007, 0xc7f6478a, 0xdc8e2b14, 0xbc7c4d5f, 0xda26add8, 0x120b4828,
-       0xf417da9b, 0x6c01ed6d, 0xc46057df, 0x71bf9789, 0x8d44e2fb, 0x8aafc9d8,
-       0xde7b2dc8, 0xe28f30fe, 0x98c3b77f, 0x2ee9fc41, 0x0ca14d83, 0xd74f7d3c,
-       0x4e954f98, 0xdfa992d8, 0xa0fc205d, 0x88bb003c, 0xaadd2d47, 0x5fbb441e,
-       0xc70d56e8, 0x431f00d5, 0x8a02ed60, 0xb0630137, 0x01bff518, 0xc8031fac,
-       0xa6894d1e, 0x68daf641, 0x6b1c3736, 0xd63ca1a8, 0x20e83ea4, 0xa4f8da3f,
-       0x55d0e1f6, 0xffc6ee66, 0x27686153, 0x53ff11c5, 0xed82378a, 0xfb527b4d,
-       0x7887c21b, 0xa953c35e, 0xb13a9bdf, 0xddb44aed, 0x3a8c5705, 0x997f033b,
-       0x42b09304, 0x5c711e20, 0xdc70ecd0, 0xd97dbc89, 0x6f4953ed, 0x3f426d07,
-       0x0fd94f18, 0x2cbf2b55, 0x7e287114, 0x2fec8201, 0xf3474207, 0x9df9ae50,
-       0x63da5ea5, 0xcff45dbe, 0xfce52def, 0xbaa0f602, 0x65500d12, 0xde9096f8,
-       0x176f2f51, 0x9937b9e3, 0xfc7411f1, 0xa6cded87, 0x1e91361e, 0x073635d0,
-       0x079ee553, 0x4fb4edc1, 0x3f3c01fd, 0x903c6bce, 0xd7e96fda, 0xb4d3ae6f,
-       0x2c7464fb, 0x75287362, 0xfd1e1f9c, 0xa17aa554, 0x73fbf537, 0x5cc09bc0,
-       0x60133f4b, 0xeb07e902, 0x97b1802b, 0x8ee4678f, 0x344f97a4, 0x329c5751,
-       0xd7fab1d7, 0x41697c9a, 0x344e28f1, 0xf120d505, 0xc8129365, 0xcfb79503,
-       0xd7b943ad, 0xe0f0bc5b, 0x3dc7d43f, 0x9bd67ea6, 0xe173e0bc, 0x4a3de6fc,
-       0xeff38230, 0xfe553479, 0x25baa10d, 0x79233ce3, 0xab53a9b3, 0x6e7e6073,
-       0xb40e2d80, 0x98de48f9, 0x70e800fa, 0xe74afe50, 0xb94f8b4f, 0x6e46dc8c,
-       0x5fffdcdd, 0xe22d46ee, 0xf8da7ca0, 0x201bc52b, 0xe27fbbf9, 0xe791b280,
-       0x60dbecb0, 0xd73cc4f1, 0x56cf3df7, 0x61d3becb, 0xbab7db3a, 0x37d93bf0,
-       0x6f463ebd, 0xc618ff63, 0x9150577c, 0xfcfa4fe0, 0xbd9d6625, 0x5e303774,
-       0xcf2cfde8, 0x8362f383, 0x68c079c3, 0x47bca6ab, 0xf149c9ed, 0xcec0ada6,
-       0xfe2ceefb, 0x500b63c7, 0x690f4b3f, 0xa0e0ac5e, 0x96ad4ae9, 0x95d373f2,
-       0x4e4d14af, 0xe6ed27ca, 0x3687a5f8, 0x9c5165b4, 0x25e293f8, 0x7f858bf7,
-       0x40ed4036, 0x829de2a7, 0xc383a3f3, 0x7b202e6f, 0xa5cce714, 0xb77dfcf5,
-       0x76c2e8cc, 0xaf1cdf74, 0x17ac49ea, 0x2df38b75, 0x7ce352bd, 0xe724be79,
-       0xbf68350f, 0xfb2f6306, 0x9e97f9f1, 0xc79f9077, 0xc62814ba, 0x47c5a28d,
-       0xbea00d9f, 0xd270bfcf, 0xa2f84541, 0xa18e93ee, 0x2e03a96f, 0x50885504,
-       0x3877b03c, 0xdb52bee8, 0x10c72ff3, 0x7d4f45d5, 0x34bd20e0, 0x471c2af4,
-       0x41a8f61a, 0xb47afe0f, 0xf10745ef, 0x8153a5a8, 0xfdc9a531, 0xe663f71a,
-       0xc23e7964, 0x092adffe, 0xf933ae7e, 0xe2d3f168, 0xce333aeb, 0xe54f6fac,
-       0x763046e3, 0x0dfce096, 0x4f1c759d, 0x8e647437, 0xaabc5633, 0x28ead88f,
-       0x4eefd7ee, 0x1bf9b71d, 0x941c061e, 0xd9e3d317, 0xd3878b51, 0x70f11a60,
-       0xa26eb238, 0xe97f791d, 0xa844c364, 0x37afa918, 0xe56d7ccc, 0xf5e9cbcb,
-       0x0e67ef62, 0xf1fe73ca, 0xfc17df1a, 0x48edffe3, 0xe209c9e6, 0x25b7e609,
-       0x3ed94fe1, 0x8b23e135, 0xc0dbbf69, 0xbdfa44d7, 0x53a39c2d, 0x24335bfd,
-       0xd85976fc, 0x242a0c19, 0xdbf38d9f, 0x41da106d, 0x3bf58ff6, 0x92f03fb9,
-       0x981075c2, 0xd4deac71, 0xdfa9bd77, 0x8d5fbc7a, 0x30f54d9b, 0xfae283ea,
-       0x6ea37b55, 0xbf316fec, 0x3476bd37, 0x0cbcf48f, 0x16599c44, 0xb2c67112,
-       0xd2279597, 0xd0331cfd, 0x8ddec98f, 0x823c2761, 0x719b97e3, 0xc6277966,
-       0xdfa46519, 0x30e6c6c7, 0x423d025f, 0xd8bcf4de, 0xfe3a9dd2, 0x2ba8814c,
-       0xf67acd87, 0xd57b34cb, 0x02a721c4, 0x51e65bd7, 0x359e41bd, 0x8ffda768,
-       0xe1fe42cf, 0x933dc7fa, 0x397b1ef8, 0xd669bd3b, 0x057b56e9, 0xc3ea8b12,
-       0x5b91de90, 0xf737e490, 0x3921d860, 0x01a9e61a, 0xbdd27fd2, 0xd2ecc565,
-       0xdd16f78c, 0x1d5fe38d, 0x6bd1febf, 0xc62def92, 0xe1e272de, 0x597f8a2f,
-       0x43e29b33, 0x172788a7, 0x7cdd70ab, 0xeb81c3aa, 0x33a77f5a, 0x3f0bf748,
-       0xadea88f2, 0xf213c4a5, 0x0b72b0cf, 0xfeeb04f1, 0x4afeb4f1, 0xe146192c,
-       0x8af657f9, 0xe2e5647a, 0xaf77994f, 0x46e7164d, 0x74c98dbd, 0xffeab00f,
-       0x9d442f96, 0xb16f7d69, 0xa03df10f, 0x6f30ac25, 0x9cbe07bb, 0xc6f28a50,
-       0x509f3efa, 0x16eb5887, 0x54f5b479, 0x797d5036, 0xa0ceaff1, 0x74bce513,
-       0x1f0fe5f8, 0x2ea5f6c0, 0xf2e63117, 0xc1d95c71, 0x0da2d37e, 0x721d7115,
-       0xebbceb18, 0x7c73bd68, 0xc81ee88f, 0xbc40dbba, 0x5137ceb8, 0xb5bb16ff,
-       0xa9d71b42, 0x9183b06d, 0x3ae499ea, 0xcac75eae, 0x8d864b14, 0x566bfe66,
-       0x7bc42373, 0x57346e2b, 0x883dc625, 0x6b88dffc, 0x533b38dc, 0x5cec08fc,
-       0x1b8c8ca0, 0x777b158d, 0xfd5321ba, 0x977ce113, 0xe3dcef5e, 0x24e6de46,
-       0x1e2a1b78, 0xde84b67a, 0xa13b4e71, 0xffce94b5, 0xafb204d5, 0x9ceb7e75,
-       0x9e7e4ce7, 0xc601fba7, 0x952ad69d, 0x279b65f5, 0x708baad0, 0x7626f31e,
-       0xf5483732, 0x17fe8cfe, 0x8d0788cb, 0xb25c7007, 0x7d1da1ff, 0x90438854,
-       0x421cdcf9, 0x3ce492a1, 0x74e2ffd8, 0x97d91be2, 0xa6fc9dde, 0xb2e5d37d,
-       0xfdc45150, 0xfb88a6d5, 0x287d8f6b, 0xfe4dee8f, 0x306d6ac3, 0xfcd67ec9,
-       0x80fe4d7b, 0xefd3dc5d, 0x7c4420a7, 0xd81e0b0a, 0xef2204fa, 0x1a778ad6,
-       0x334aca0d, 0x7e442ff4, 0x035e4b7c, 0xea6d0b92, 0x33cce2d7, 0xcb1b49ff,
-       0x5c393fe3, 0x03df9c94, 0x8a18eeb4, 0xc04dad7b, 0x28072471, 0x0b1c62ce,
-       0xf97b63e4, 0x97ae2ce9, 0x6abb65a2, 0xa9956e38, 0x5b6b7140, 0xc9a9e6ff,
-       0x05bfe1f9, 0xe91738aa, 0x95aa98a1, 0xa6fec527, 0x9560da1e, 0xbc17cf79,
-       0x7888140d, 0x27a3f782, 0x47ee19dd, 0x6ddeb5df, 0x3d8273ed, 0xfa974ec9,
-       0x0dfef9ea, 0x52a6f85f, 0xef9f019c, 0xfd6dc26a, 0xfbe953f5, 0x57cdfea5,
-       0xd2a4bbf3, 0x02bf9296, 0xd5315f24, 0x7914ef45, 0xefb9bfb0, 0xd460229d,
-       0x276a7e58, 0x6efdafe7, 0x8ec4e751, 0x84fbf164, 0x07826502, 0xdd653930,
-       0xb857eea6, 0x55ea688e, 0x583e648d, 0x22dc7af3, 0x1e261e0f, 0x1486b620,
-       0x487ced83, 0xf3ef5360, 0x16a34f2c, 0x76b63b62, 0x4bbfa26a, 0x3c97d620,
-       0x00ee002f, 0x39feafc9, 0x52754c3c, 0x87964f73, 0x3eb14bde, 0xc4b1f914,
-       0xfa8fdc19, 0x99c2f459, 0xcd5b8a22, 0xf50a682f, 0xbbea50c3, 0x679b736d,
-       0xbde88fc5, 0xe81575e0, 0xda55e1dd, 0xc4b0ed02, 0x4d54d181, 0x1d66efca,
-       0x5f9bb560, 0xc8d4abaa, 0xcb06dbef, 0xe6ce512b, 0x3b4abafe, 0x78b4f419,
-       0xb634ba0f, 0x3009eb91, 0x95b65d84, 0x27f0a634, 0xf7290300, 0xb14e506e,
-       0x8d61631e, 0x03a281df, 0xfde9ca67, 0x6fe4b9a8, 0x7347e4e5, 0x537bc50a,
-       0x554bbd33, 0x7de27c90, 0x4d7f9aca, 0xafb3f0a1, 0x0b7b7f4d, 0x7bcda3bc,
-       0x9e1b2ece, 0x4d1aadff, 0x05eb847f, 0x6edd9f51, 0xb7d5cdc6, 0xbc5f5c69,
-       0xc78d1e05, 0xcca18a1b, 0xfac8bce5, 0xa78cddb9, 0xe352aa2b, 0xf03dcadb,
-       0x91a11670, 0x635b4eb9, 0x0c0abfae, 0x7575775e, 0x6635b8ea, 0x36a6b69d,
-       0x56e7fbf5, 0x930c9cdc, 0xc2ea6e39, 0x66c75b9e, 0xb90c7e71, 0x0cdef93c,
-       0xb475e279, 0xf541c78f, 0x683c0b9a, 0x1c66e3a7, 0x01c92b6d, 0x177e28f7,
-       0xa3fd9209, 0x53bfbed9, 0x719f8ade, 0x34553bf2, 0x1565ce2d, 0x29cd3f0a,
-       0x514a7114, 0x9b276ca2, 0xa3ed9c72, 0xed9baf28, 0xe7ec5237, 0x533bc4d7,
-       0xfc937914, 0xacc27c8e, 0x788aa223, 0x7b974b47, 0x8778a17c, 0x34dfa11a,
-       0x5fd08ebd, 0x36a2de9a, 0x6ec5c751, 0x5ffef856, 0xc519f58e, 0x958bb5af,
-       0x14f141a0, 0x2bfdc0f5, 0x54c3d615, 0x62704f88, 0x8f981dff, 0x4d8beea8,
-       0xb6fd7513, 0xefe2f9b5, 0x9b780124, 0x64f168ec, 0x57e45d85, 0x286b0f8b,
-       0xdf12cebf, 0x6ede9f29, 0x7755d3e6, 0x850af35e, 0xadaf4b45, 0x2f9ca7e4,
-       0xb1463146, 0x475e20be, 0x53c7eafb, 0x917d23dc, 0xf32f479f, 0xadc2742e,
-       0xa72e7eb1, 0x2fd36abf, 0xa839476e, 0x7adefdae, 0xeba5e734, 0x9530bab3,
-       0x2b581887, 0xf2138fc8, 0xc7e6333b, 0x943ca6d5, 0x47e80363, 0xedfd4d6b,
-       0x2eadf7cd, 0x0477efc4, 0x7e4c3d57, 0xb3d94675, 0xce2410ff, 0x9d187a4d,
-       0x85addeb4, 0x090c3de2, 0x9b7ef192, 0x16f0179e, 0xd7b8e016, 0x54af718f,
-       0x241777bc, 0x933eebe9, 0xb161d7d7, 0x079c764a, 0x25de9501, 0xdc3b03ae,
-       0x443b6d45, 0x200b88ec, 0xfe81dfc2, 0x4fc45608, 0x9d73fcea, 0x9944723d,
-       0xeff8e3c5, 0x9061f343, 0x7108ddc7, 0x3b740346, 0x32f042e1, 0xcb22b956,
-       0x08af6ca9, 0x4baa5485, 0x82f64523, 0x5213a8b3, 0x2473a665, 0xb38763ce,
-       0xd2a2fd56, 0x0b6011df, 0x3cfd3dd9, 0x0c79d61d, 0x0d4a4bc1, 0x555ca177,
-       0x93695210, 0x1548601b, 0x39f32ff1, 0x4ddd6016, 0x01b8b77f, 0xfacd9fed,
-       0xebf8f208, 0xa66a3ce9, 0xaf2d0cf3, 0xeb1615e0, 0x29129f24, 0xf39d7db2,
-       0x2b11cfdd, 0x6f375e02, 0x03e2fc7d, 0xfbbf8995, 0x9eafc378, 0x2a3d3fa6,
-       0xd3f70186, 0x665c4ddf, 0x9fb11add, 0x788f86ff, 0xe17dfd3f, 0x5215dfba,
-       0x7ce8f23c, 0x8781f04e, 0xf60638f8, 0xb23f74e8, 0x7142b8d1, 0x128b8fdc,
-       0x5c103bbc, 0x2f21b1e5, 0xf2e518ee, 0x43cca5aa, 0xab8d675e, 0xcf7a4ae3,
-       0xe14e4d43, 0x91e4c1ba, 0x6aab7f25, 0x2af891fc, 0x8944a251, 0x944a2512,
-       0x44a25128, 0x4a251289, 0xa2512894, 0x25128944, 0x5128944a, 0x128944a2,
-       0x28944a25, 0x8944a251, 0x944a2512, 0x44a25128, 0x4a251289, 0xa2512894,
-       0x25128944, 0x5128944a, 0x128944a2, 0x28944a25, 0x8944a251, 0x944a2512,
-       0x44a25128, 0x4a251289, 0xa2512894, 0x25128944, 0x5128944a, 0x128944a2,
-       0x28944a25, 0xffe12251, 0x72255300, 0x008000ab, 0x00000000, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0x00088b1f,
-       0x00000000, 0xc5edff00, 0x30001131, 0xee300408, 0xd85aa12a, 0xaa66f6b1,
-       0x964d2113, 0x5dbbcce4, 0x6db6db15, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x3d017e3f, 0x009b1baa, 0x00009b1b, 0xffffffff,
-       0xffffffff, 0xffffffff, 0xffffffff, 0x00001000, 0x00002080, 0x00003100,
-       0x00004180, 0x00005200, 0x00006280, 0x00007300, 0x00008380, 0x00009400,
-       0x0000a480, 0x0000b500, 0x0000c580, 0x0000d600, 0x0000e680, 0x0000f700,
-       0x00010780, 0x00011800, 0x00012880, 0x00013900, 0x00014980, 0x00015a00,
-       0x00016a80, 0x00017b00, 0x00018b80, 0x00019c00, 0x0001ac80, 0x0001bd00,
-       0x0001cd80, 0x0001de00, 0x0001ee80, 0x0001ff00, 0x00000000, 0x00010001,
-       0x000e0004, 0xcccccccd, 0xffffffff, 0xffffffff, 0xcccc0201, 0xcccccccc,
-       0x00100000, 0x00000000, 0x00000000, 0xffffffff, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x00000000, 0x00007ff8, 0x00000000, 0x00001500,
+       0x00001000, 0x00002080, 0x00003100, 0x00004180, 0x00005200, 0x00006280,
+       0x00007300, 0x00008380, 0x00009400, 0x0000a480, 0x0000b500, 0x0000c580,
+       0x0000d600, 0x0000e680, 0x0000f700, 0x00010780, 0x00011800, 0x00012880,
+       0x00013900, 0x00014980, 0x00015a00, 0x00016a80, 0x00017b00, 0x00018b80,
+       0x00019c00, 0x0001ac80, 0x0001bd00, 0x0001cd80, 0x0001de00, 0x0001ee80,
+       0x0001ff00, 0x00000000, 0x00010001, 0x000f0604, 0xccccccc1, 0xffffffff,
+       0xffffffff, 0xcccc0201, 0xcccccccc, 0x00000000, 0xffffffff, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x00000000, 0x00007ff8, 0x00000000, 0x00003500, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x00100000, 0x00000000, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff,
+       0x00000000, 0x0000ffff, 0x00000000, 0x00100000, 0x00000000, 0xfffffff3,
+       0x320fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c,
+       0xcdcdcdcd, 0xfffffff1, 0x30efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406,
+       0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c,
+       0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7,
+       0x31efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c,
+       0xcdcdcdcd, 0xfffffff5, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x310fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1,
+       0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c,
+       0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305,
+       0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2,
+       0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c,
+       0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x30efffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5,
+       0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c,
+       0xcdcdcdcd, 0xfffffff3, 0x31efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6,
+       0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c,
+       0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014,
+       0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa,
+       0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c,
+       0xcdcdcdcd, 0xffffff97, 0x056fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000,
+       0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3,
+       0x320fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c,
+       0xcdcdcdcd, 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406,
+       0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c,
+       0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffff8a, 0x042fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffff97,
+       0x05cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c,
+       0xcdcdcdcd, 0xfffffff5, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x300fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1,
+       0x300fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c,
+       0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff, 0x0c30c305,
+       0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2,
+       0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c,
+       0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300,
+       0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x040fffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5,
+       0x300fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c,
+       0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc,
+       0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c,
+       0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xffffffff,
+       0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c,
+       0xcdcdcdcd, 0x00100000, 0x00070100, 0x00028170, 0x000b8198, 0x00020250,
+       0x00010270, 0x000f0280, 0x00010370, 0x00080000, 0x00080080, 0x00028100,
+       0x000b8128, 0x000201e0, 0x00010200, 0x00070210, 0x00020280, 0x000f0000,
+       0x000800f0, 0x00028170, 0x000b8198, 0x00020250, 0x00010270, 0x000b8280,
+       0x00080338, 0x00100000, 0x00080100, 0x00028180, 0x000b81a8, 0x00020260,
+       0x00018280, 0x000e8298, 0x00080380, 0x00028000, 0x000b8028, 0x000200e0,
+       0x00010100, 0x00008110, 0x00000118, 0xcccccccc, 0xcccccccc, 0xcccccccc,
+       0xcccccccc, 0x00002000, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc,
+       0x00002000, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000
+};
+
+static const u32 init_data_e1h[] = {
+       0x00010000, 0x000204c0, 0x00030980, 0x00040e40, 0x00051300, 0x000617c0,
+       0x00071c80, 0x00082140, 0x00092600, 0x000a2ac0, 0x000b2f80, 0x000c3440,
+       0x000d3900, 0x000e3dc0, 0x000f4280, 0x00104740, 0x00114c00, 0x001250c0,
+       0x00135580, 0x00145a40, 0x00155f00, 0x001663c0, 0x00176880, 0x00186d40,
+       0x00197200, 0x001a76c0, 0x001b7b80, 0x001c8040, 0x001d8500, 0x001e89c0,
+       0x001f8e80, 0x00209340, 0x00002000, 0x00004000, 0x00006000, 0x00008000,
+       0x0000a000, 0x0000c000, 0x0000e000, 0x00010000, 0x00012000, 0x00014000,
+       0x00016000, 0x00018000, 0x0001a000, 0x0001c000, 0x0001e000, 0x00020000,
+       0x00022000, 0x00024000, 0x00026000, 0x00028000, 0x0002a000, 0x0002c000,
+       0x0002e000, 0x00030000, 0x00032000, 0x00034000, 0x00036000, 0x00038000,
+       0x0003a000, 0x0003c000, 0x0003e000, 0x00040000, 0x00042000, 0x00044000,
+       0x00046000, 0x00048000, 0x0004a000, 0x0004c000, 0x0004e000, 0x00050000,
+       0x00052000, 0x00054000, 0x00056000, 0x00058000, 0x0005a000, 0x0005c000,
+       0x0005e000, 0x00060000, 0x00062000, 0x00064000, 0x00066000, 0x00068000,
+       0x0006a000, 0x0006c000, 0x0006e000, 0x00070000, 0x00072000, 0x00074000,
+       0x00076000, 0x00078000, 0x0007a000, 0x0007c000, 0x0007e000, 0x00080000,
+       0x00082000, 0x00084000, 0x00086000, 0x00088000, 0x0008a000, 0x0008c000,
+       0x0008e000, 0x00090000, 0x00092000, 0x00094000, 0x00096000, 0x00098000,
+       0x0009a000, 0x0009c000, 0x0009e000, 0x000a0000, 0x000a2000, 0x000a4000,
+       0x000a6000, 0x000a8000, 0x000aa000, 0x000ac000, 0x000ae000, 0x000b0000,
+       0x000b2000, 0x000b4000, 0x000b6000, 0x000b8000, 0x000ba000, 0x000bc000,
+       0x000be000, 0x000c0000, 0x000c2000, 0x000c4000, 0x000c6000, 0x000c8000,
+       0x000ca000, 0x000cc000, 0x000ce000, 0x000d0000, 0x000d2000, 0x000d4000,
+       0x000d6000, 0x000d8000, 0x000da000, 0x000dc000, 0x000de000, 0x000e0000,
+       0x000e2000, 0x000e4000, 0x000e6000, 0x000e8000, 0x000ea000, 0x000ec000,
+       0x000ee000, 0x000f0000, 0x000f2000, 0x000f4000, 0x000f6000, 0x000f8000,
+       0x000fa000, 0x000fc000, 0x000fe000, 0x00100000, 0x00102000, 0x00104000,
+       0x00106000, 0x00108000, 0x0010a000, 0x0010c000, 0x0010e000, 0x00110000,
+       0x00112000, 0x00114000, 0x00116000, 0x00118000, 0x0011a000, 0x0011c000,
+       0x0011e000, 0x00120000, 0x00122000, 0x00124000, 0x00126000, 0x00128000,
+       0x0012a000, 0x0012c000, 0x0012e000, 0x00130000, 0x00132000, 0x00134000,
+       0x00136000, 0x00138000, 0x0013a000, 0x0013c000, 0x0013e000, 0x00140000,
+       0x00142000, 0x00144000, 0x00146000, 0x00148000, 0x0014a000, 0x0014c000,
+       0x0014e000, 0x00150000, 0x00152000, 0x00154000, 0x00156000, 0x00158000,
+       0x0015a000, 0x0015c000, 0x0015e000, 0x00160000, 0x00162000, 0x00164000,
+       0x00166000, 0x00168000, 0x0016a000, 0x0016c000, 0x0016e000, 0x00170000,
+       0x00172000, 0x00174000, 0x00176000, 0x00178000, 0x0017a000, 0x0017c000,
+       0x0017e000, 0x00180000, 0x00182000, 0x00184000, 0x00186000, 0x00188000,
+       0x0018a000, 0x0018c000, 0x0018e000, 0x00190000, 0x00192000, 0x00194000,
+       0x00196000, 0x00198000, 0x0019a000, 0x0019c000, 0x0019e000, 0x001a0000,
+       0x001a2000, 0x001a4000, 0x001a6000, 0x001a8000, 0x001aa000, 0x001ac000,
+       0x001ae000, 0x001b0000, 0x001b2000, 0x001b4000, 0x001b6000, 0x001b8000,
+       0x001ba000, 0x001bc000, 0x001be000, 0x001c0000, 0x001c2000, 0x001c4000,
+       0x001c6000, 0x001c8000, 0x001ca000, 0x001cc000, 0x001ce000, 0x001d0000,
+       0x001d2000, 0x001d4000, 0x001d6000, 0x001d8000, 0x001da000, 0x001dc000,
+       0x001de000, 0x001e0000, 0x001e2000, 0x001e4000, 0x001e6000, 0x001e8000,
+       0x001ea000, 0x001ec000, 0x001ee000, 0x001f0000, 0x001f2000, 0x001f4000,
+       0x001f6000, 0x001f8000, 0x001fa000, 0x001fc000, 0x001fe000, 0x00200000,
+       0x00202000, 0x00204000, 0x00206000, 0x00208000, 0x0020a000, 0x0020c000,
+       0x0020e000, 0x00210000, 0x00212000, 0x00214000, 0x00216000, 0x00218000,
+       0x0021a000, 0x0021c000, 0x0021e000, 0x00220000, 0x00222000, 0x00224000,
+       0x00226000, 0x00228000, 0x0022a000, 0x0022c000, 0x0022e000, 0x00230000,
+       0x00232000, 0x00234000, 0x00236000, 0x00238000, 0x0023a000, 0x0023c000,
+       0x0023e000, 0x00240000, 0x00242000, 0x00244000, 0x00246000, 0x00248000,
+       0x0024a000, 0x0024c000, 0x0024e000, 0x00250000, 0x00252000, 0x00254000,
+       0x00256000, 0x00258000, 0x0025a000, 0x0025c000, 0x0025e000, 0x00260000,
+       0x00262000, 0x00264000, 0x00266000, 0x00268000, 0x0026a000, 0x0026c000,
+       0x0026e000, 0x00270000, 0x00272000, 0x00274000, 0x00276000, 0x00278000,
+       0x0027a000, 0x0027c000, 0x0027e000, 0x00280000, 0x00282000, 0x00284000,
+       0x00286000, 0x00288000, 0x0028a000, 0x0028c000, 0x0028e000, 0x00290000,
+       0x00292000, 0x00294000, 0x00296000, 0x00298000, 0x0029a000, 0x0029c000,
+       0x0029e000, 0x002a0000, 0x002a2000, 0x002a4000, 0x002a6000, 0x002a8000,
+       0x002aa000, 0x002ac000, 0x002ae000, 0x002b0000, 0x002b2000, 0x002b4000,
+       0x002b6000, 0x002b8000, 0x002ba000, 0x002bc000, 0x002be000, 0x002c0000,
+       0x002c2000, 0x002c4000, 0x002c6000, 0x002c8000, 0x002ca000, 0x002cc000,
+       0x002ce000, 0x002d0000, 0x002d2000, 0x002d4000, 0x002d6000, 0x002d8000,
+       0x002da000, 0x002dc000, 0x002de000, 0x002e0000, 0x002e2000, 0x002e4000,
+       0x002e6000, 0x002e8000, 0x002ea000, 0x002ec000, 0x002ee000, 0x002f0000,
+       0x002f2000, 0x002f4000, 0x002f6000, 0x002f8000, 0x002fa000, 0x002fc000,
+       0x002fe000, 0x00300000, 0x00302000, 0x00304000, 0x00306000, 0x00308000,
+       0x0030a000, 0x0030c000, 0x0030e000, 0x00310000, 0x00312000, 0x00314000,
+       0x00316000, 0x00318000, 0x0031a000, 0x0031c000, 0x0031e000, 0x00320000,
+       0x00322000, 0x00324000, 0x00326000, 0x00328000, 0x0032a000, 0x0032c000,
+       0x0032e000, 0x00330000, 0x00332000, 0x00334000, 0x00336000, 0x00338000,
+       0x0033a000, 0x0033c000, 0x0033e000, 0x00340000, 0x00342000, 0x00344000,
+       0x00346000, 0x00348000, 0x0034a000, 0x0034c000, 0x0034e000, 0x00350000,
+       0x00352000, 0x00354000, 0x00356000, 0x00358000, 0x0035a000, 0x0035c000,
+       0x0035e000, 0x00360000, 0x00362000, 0x00364000, 0x00366000, 0x00368000,
+       0x0036a000, 0x0036c000, 0x0036e000, 0x00370000, 0x00372000, 0x00374000,
+       0x00376000, 0x00378000, 0x0037a000, 0x0037c000, 0x0037e000, 0x00380000,
+       0x00382000, 0x00384000, 0x00386000, 0x00388000, 0x0038a000, 0x0038c000,
+       0x0038e000, 0x00390000, 0x00392000, 0x00394000, 0x00396000, 0x00398000,
+       0x0039a000, 0x0039c000, 0x0039e000, 0x003a0000, 0x003a2000, 0x003a4000,
+       0x003a6000, 0x003a8000, 0x003aa000, 0x003ac000, 0x003ae000, 0x003b0000,
+       0x003b2000, 0x003b4000, 0x003b6000, 0x003b8000, 0x003ba000, 0x003bc000,
+       0x003be000, 0x003c0000, 0x003c2000, 0x003c4000, 0x003c6000, 0x003c8000,
+       0x003ca000, 0x003cc000, 0x003ce000, 0x003d0000, 0x003d2000, 0x003d4000,
+       0x003d6000, 0x003d8000, 0x003da000, 0x003dc000, 0x003de000, 0x003e0000,
+       0x003e2000, 0x003e4000, 0x003e6000, 0x003e8000, 0x003ea000, 0x003ec000,
+       0x003ee000, 0x003f0000, 0x003f2000, 0x003f4000, 0x003f6000, 0x003f8000,
+       0x003fa000, 0x003fc000, 0x003fe000, 0x003fe001, 0x00000000, 0x000001ff,
+       0x00000200, 0x00000001, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, 0x00007ff8,
+       0x00000000, 0x00001500, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000,
+       0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff,
+       0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000003,
+       0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff,
+       0x00000003, 0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000,
+       0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff, 0x00000000, 0xffffffff,
+       0x00000000, 0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff, 0x00000000,
+       0xffffffff, 0x00000000, 0xffffffff, 0x00000003, 0x00bebc20, 0xffffffff,
+       0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000003, 0x00bebc20,
+       0x00002000, 0x000040c0, 0x00006180, 0x00008240, 0x0000a300, 0x0000c3c0,
+       0x0000e480, 0x00010540, 0x00012600, 0x000146c0, 0x00016780, 0x00018840,
+       0x0001a900, 0x0001c9c0, 0x0001ea80, 0x00020b40, 0x00022c00, 0x00024cc0,
+       0x00026d80, 0x00028e40, 0x0002af00, 0x0002cfc0, 0x0002f080, 0x00031140,
+       0x00033200, 0x000352c0, 0x00037380, 0x00039440, 0x0003b500, 0x0003d5c0,
+       0x0003f680, 0x00041740, 0x00043800, 0x000458c0, 0x00047980, 0x00049a40,
+       0x00008000, 0x00010380, 0x00018700, 0x00020a80, 0x00028e00, 0x00031180,
+       0x00039500, 0x00041880, 0x00049c00, 0x00051f80, 0x0005a300, 0x00062680,
+       0x0006aa00, 0x00072d80, 0x0007b100, 0x00083480, 0x0008b800, 0x00093b80,
+       0x0009bf00, 0x000a4280, 0x000ac600, 0x000b4980, 0x000bcd00, 0x000c5080,
+       0x000cd400, 0x000d5780, 0x000ddb00, 0x00001900, 0x00000028, 0x00100000,
+       0x00000000, 0x00000000, 0xffffffff, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
        0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
-       0x40000000, 0x40000000, 0x00088b1f, 0x00000000, 0x1113ff00, 0x51f86066,
-       0x423ec08f, 0xac9d0c0c, 0xc4b462a8, 0x1818990b, 0x12b102fe, 0x3c430333,
-       0x203aded0, 0x2388107d, 0x16181858, 0x2fd610b0, 0x022bd404, 0x2c4062c4,
-       0x19b7c401, 0x9cdfb348, 0x1f0f680b, 0xc8037f82, 0x3f4024be, 0x1c360fff,
-       0xfb5f40ad, 0x1819d502, 0x8aa06bfe, 0xf2a26831, 0x9bf13519, 0xcf2684c1,
-       0x2167c68c, 0x63247fa0, 0x0d75b600, 0x000400f1, 0x00000000, 0x00088b1f,
-       0x00000000, 0x7dd5ff00, 0xd554780b, 0x673ef0b5, 0xf3399cce, 0x00fde4cc,
-       0x108f0992, 0x2104e034, 0x0432b445, 0x3b69488c, 0xc514543c, 0xf791e109,
-       0xb14a3e44, 0x44033bd2, 0x350af808, 0x0380a050, 0xed168d02, 0x06823ca0,
-       0xfda2901c, 0x5a1bdedb, 0xcb6ab7bd, 0x880b851f, 0x52d11921, 0xf77ac5ea,
-       0xcc9f7b5a, 0xd0049339, 0x9fdffed6, 0xcfb3767e, 0xd6bdaf7e, 0xf7b5ebda,
-       0xa441c448, 0x84be421c, 0xfc8471bf, 0xa484205e, 0x83bf52c6, 0xa908a3a6,
-       0x2d0867d9, 0xc26425cf, 0x5c64633e, 0x136fcd0a, 0x179a2642, 0xbcb19b0f,
-       0xfbcb3373, 0xdd4f6d0d, 0x01c9cb4a, 0x1349d903, 0x49116f92, 0x1467211a,
-       0xd146fec2, 0xf321117c, 0xb35b2ccd, 0x426cc8ed, 0x98b797eb, 0x3fb69988,
-       0x81e0d7b3, 0x429dc2fc, 0xd439d088, 0x67255c1c, 0x8417fed1, 0x45d9b084,
-       0x47e93bf3, 0xd7b15e5a, 0x5dfa8210, 0xaf34b68e, 0x01f3908d, 0x9864b885,
-       0xed693bdf, 0x86548405, 0xd16494f6, 0x05bb957a, 0xa9c748b7, 0xc6442cdc,
-       0x42ef828d, 0xa8bb40c8, 0x5712b66a, 0x97c39b3e, 0x75c5c704, 0xc742dc2c,
-       0xa912fda5, 0x61daf651, 0xcbb2b5bc, 0xf9cf831e, 0x51c71380, 0xd3cf35f3,
-       0xdabb6871, 0x2c370497, 0xbe2456b1, 0xf3bf1d30, 0x73e679a0, 0x32df5836,
-       0x5daecf39, 0x587ee947, 0x9b686547, 0x7983625c, 0x17e7936d, 0x6aabfac4,
-       0x6bcfd64e, 0x9f74a0c3, 0x3d3e3ca6, 0x95c4201f, 0x1257cb17, 0x60db09e2,
-       0xea7921fe, 0x63f7d8f0, 0xb3f71124, 0x5c40d9aa, 0x427fac4a, 0x40ddf882,
-       0x2b8011dc, 0xb5bbb569, 0xa9d176fb, 0x8985b7df, 0xf31f6dbc, 0xc3ef9a79,
-       0x27a70e5a, 0x4d347e61, 0x499738f0, 0x1309fd74, 0x4ab85389, 0x3246b5fb,
-       0x7acbdc33, 0x186405ef, 0x888f884d, 0xe25adf38, 0x2ed21fbb, 0x4e9caeb1,
-       0x3245fe9e, 0xabbd74bc, 0xfbfed604, 0x57f585c4, 0xb03d900d, 0x2aef6baf,
-       0xcb90ce7a, 0xf90292d7, 0xd0d6bbf9, 0x7926932e, 0x0257c008, 0x614015b8,
-       0xcb40d07b, 0x4713bbed, 0xe16971ae, 0xc61f3c57, 0x75128c73, 0xcdbce3fb,
-       0x4d27cba2, 0xaf838a4c, 0x46e679cd, 0x34f3a79e, 0xd211d189, 0x67c64220,
-       0x8b6f882b, 0x9ba465b3, 0x79b3b7c5, 0x85b6ce2d, 0x38ff3482, 0xe685b834,
-       0xce4ddf65, 0x4741e05e, 0xa4064916, 0xe98c913e, 0x7000de59, 0x9c5078a4,
-       0x03ef2573, 0x68c5fa9a, 0x1f4d225e, 0x0107c616, 0x8e012b2e, 0x481ab534,
-       0x6adbac1d, 0x86a70822, 0x05cf4521, 0x9d5a7035, 0x1b94e14b, 0xb1b577eb,
-       0x09b8832e, 0x23bc1359, 0xf8526528, 0x1dcdd2e6, 0x23bdf30b, 0xdb4c1c12,
-       0x00ce2ee7, 0xa5322a78, 0x32f8ed03, 0xc700bf1d, 0xae38046f, 0x3f18fbe7,
-       0x463792be, 0x6079be37, 0xb37c6eb9, 0x38a7c74c, 0x5df829b9, 0x63853e3e,
-       0x233f2116, 0x95f1c5df, 0xfc704b81, 0xeb949906, 0x8f74b7c6, 0x7771821f,
-       0x437e31f5, 0xfafd58de, 0xd7ea5607, 0xbff5b32f, 0x8f9bbc10, 0xfff5c16f,
-       0xd6cddc82, 0x6c47f03f, 0xafda26fd, 0x37477c76, 0xf700c3fc, 0x5fc07dfd,
-       0x7e9b7a19, 0xf5aa83fd, 0xf1b137eb, 0xc83e0d5f, 0xf8e1b7c7, 0xd90791af,
-       0xc52d07fa, 0x3aa64df1, 0x991693b7, 0x21752c72, 0xfd176bc0, 0x074d3a5f,
-       0x45be71d3, 0x422482d3, 0x901ffb68, 0xc5870881, 0xa850df16, 0xf142c97f,
-       0x0be316cd, 0x0052b424, 0x38e5afba, 0xa977773d, 0x326d24fc, 0x4bf185b7,
-       0x10e9f942, 0x96cebf3a, 0x4fbd2f4f, 0x47773be7, 0x42e0dba1, 0x6ed0247a,
-       0xdf8a5f1e, 0x8841e0c0, 0x1daa7b37, 0x7b3793f8, 0xf22c70da, 0x40599f00,
-       0xf03d8e70, 0xf1a35e78, 0xbe86bb4c, 0xe7d06c16, 0xbcfa422b, 0x80f1ef3a,
-       0x160d3424, 0x3a3afc93, 0x8fca19ee, 0x1f93e508, 0xe9047e52, 0x08792359,
-       0x94d38dce, 0x4b59115f, 0x5f70cb57, 0xfe0c48ce, 0x91583667, 0x7dad2f1e,
-       0x60832658, 0x640a563e, 0xf24178cd, 0xff9d3e76, 0x089d7c3d, 0x57e022e7,
-       0xb4f73d6c, 0x47a14cd6, 0xb2779d2c, 0x31a75dae, 0xf5be0462, 0x963d0920,
-       0x7b2ffb41, 0x87d18f62, 0x4fd3c7fc, 0xfd26ba44, 0xf7d74a44, 0xd87e34ce,
-       0x733769ae, 0x3f635aef, 0xd3e7de9a, 0xae559f7f, 0x431a77cf, 0xe5ce1146,
-       0xa36c810a, 0xa7583ffd, 0xf9c7572f, 0x7db1248c, 0x43dde3e6, 0x049992d7,
-       0xfe91fa59, 0xeb64e7db, 0x497ae7a0, 0xca1f383f, 0x9a4ef704, 0x8dea107f,
-       0x4b7c7d84, 0xe7b3ef86, 0x90d7ba25, 0x5225f39e, 0x9273f606, 0x25271b9f,
-       0x08b753e3, 0x7edfe73d, 0x4711ead8, 0xfc475cf4, 0x4e221fbc, 0x968787dc,
-       0x0697bfe8, 0xf0c7d7e3, 0x3e32dfc0, 0x7be6b4f9, 0xe4aef84d, 0xa97c1ad3,
-       0xcbaa9e6a, 0xd3ee8457, 0xa1b05fd5, 0xaf3e5754, 0x5e5742b1, 0x2eb0f0d6,
-       0x447c1a5f, 0x25a1ff57, 0x0fe574cb, 0x95d6add6, 0xab5f2acf, 0xdbe7dfcb,
-       0xef7faba8, 0x72ba6dcc, 0x0e4570e1, 0xd97e37c8, 0xe1499397, 0x135de17e,
-       0xf0c42ed9, 0x73f3c558, 0xcf4c0c81, 0x2e985c07, 0xf4a57a03, 0xa9641e2f,
-       0x0e697b7f, 0xf78ab9d0, 0xd9758d67, 0xf8f12740, 0xf18f4f1d, 0x03780c78,
-       0xe75f50e7, 0xbc40b579, 0x025df740, 0xefd48f3b, 0x97fce67f, 0x6f48e590,
-       0xc7a332d5, 0x8b3397ea, 0xe5aa5e81, 0xad9d5e48, 0x58497eef, 0xb21075c0,
-       0x08a9fb1d, 0xedd0aa51, 0x3cdd20eb, 0x70188e3b, 0x3e105afc, 0xdef3816e,
-       0xf8c02a5b, 0xa7b23791, 0x78f9870f, 0x25be60e6, 0x4762f915, 0x69f25260,
-       0xc5e7e009, 0x26605cf4, 0x3e0267a6, 0xca074f4c, 0x5030fd31, 0x607b6987,
-       0x0327a609, 0x14ff4c41, 0xbdf4c068, 0x7fa62340, 0xf4c06c0c, 0x4c21033f,
-       0x4c1e033b, 0x14d4f1bb, 0x90f903cd, 0x20226fbc, 0x2e1492e2, 0x3372a97f,
-       0x5c85f961, 0x2e0bee6e, 0x27defbf1, 0xbc5048fc, 0x2c59beda, 0xa8e83f6c,
-       0xf3a50893, 0xbbf6c335, 0x44bcb0e7, 0xdd843f90, 0xbbb2f95a, 0xf483d85f,
-       0x9fc7ef6b, 0xf381dce1, 0x9e030def, 0x8af2247f, 0x0b5dba7b, 0xc047ba0f,
-       0x86b75e6f, 0xd5fe5276, 0x7c31705f, 0x2e5c06b9, 0x039cf5be, 0x0cc2e8f8,
-       0xe6fa79d1, 0x1357d7be, 0x34da75ce, 0xe8b7f1f3, 0x851b17f3, 0x741e4c49,
-       0x0e18cc25, 0x9e74e0f8, 0x96fb0c1e, 0xcfdaa981, 0x79d90cc2, 0x85ea193a,
-       0x77643d70, 0xd517e222, 0x3fdeb047, 0xf57d1e7b, 0x5ec79b13, 0x47b68a72,
-       0xdf507b19, 0x0bc4fbf5, 0xe41933e9, 0xbc6ad268, 0x85aae704, 0x40e5f7fe,
-       0xbcc257e8, 0x6c3fafda, 0x826e9a08, 0xe375bbef, 0x552e76d1, 0x7d7683d7,
-       0xce449fe3, 0x5941f8a8, 0x6fae09d2, 0x9d9b3556, 0xa89d7e7a, 0x325bfbcb,
-       0x0dfe3a9d, 0x4af4a0ff, 0x9c120a26, 0x2b1cd5bb, 0x835b24ba, 0x1bb7e740,
-       0x8bee86f0, 0x6af5605f, 0x47d97694, 0x67dc2d3f, 0xe17df3c7, 0x05efae5a,
-       0x9fb41b49, 0x70778633, 0xd34ace85, 0x449ce51f, 0x9e32f9a4, 0x39aef553,
-       0x7cf0ab7b, 0x94126fff, 0xc8ff3ce1, 0xe70458d0, 0x9b786553, 0x76fba1ec,
-       0x80938881, 0xbf205cef, 0x91acdc77, 0x3208afe3, 0x41acb7ae, 0x79516e7f,
-       0xf2a79747, 0x9f3f2e8e, 0x3d034b4c, 0x91937e6a, 0xff285e8a, 0x043bcae8,
-       0x80bbf627, 0xfe04add4, 0xcdef6a7e, 0x700adcf7, 0xc8a5b03c, 0x6873f347,
-       0xbf4a3f71, 0x6427cd95, 0x3aaf93a0, 0x1fb4057e, 0x755c73d9, 0x51f43d5d,
-       0x669a870e, 0x85ea13c1, 0xa6459b9f, 0x9f74a9d7, 0x72753a25, 0x7e5c5e5b,
-       0xf6fe5c64, 0xc6d7fcb8, 0x908a149f, 0xdefdb169, 0x44f2f82d, 0x478043e0,
-       0xf9bc3109, 0xf467fdda, 0x3fe47fe8, 0x44feffb5, 0xffb4ff87, 0xfda9ffdb,
-       0xff31ee0f, 0x5ff5bdc9, 0x149e8a6b, 0xdd7b1ce0, 0xe198e78c, 0x7a0839b0,
-       0x19ab7f82, 0xf637dcf5, 0xd01775fd, 0x26b3e75d, 0x8e7a6262, 0x93bff280,
-       0xdf767bf5, 0x0ffeb75f, 0x8d0b3f2d, 0xb60b7f69, 0xef80fad2, 0x64c8adbb,
-       0x184e5eba, 0x2f5d2841, 0xefd1fd78, 0x2e2f2a11, 0x91dee2b0, 0x0f4cbf05,
-       0x51fb00ad, 0x799fcb2a, 0x08284071, 0xed979e76, 0x1808c311, 0xa3ed40f7,
-       0xad2fee30, 0xa42d1e84, 0xd61375f3, 0xa305fceb, 0x2ee78a7f, 0x24415e9d,
-       0xe77e3757, 0xb5241c02, 0xe052f85c, 0xf0e22840, 0xd55ef4a1, 0x8f31e092,
-       0xfbeaf800, 0x2e8c60b9, 0x0eff2376, 0x5bc88966, 0x77205922, 0xcb53d7c7,
-       0x5540e2fd, 0xb6ec581e, 0xfd53eac5, 0x37cb3e79, 0xa0fd3166, 0x052feb0d,
-       0x958d49fa, 0xd597ecf7, 0xcec891ff, 0xac3f58db, 0x53d72d7d, 0x1572e9e3,
-       0xe6aacba7, 0xa6f6862f, 0x7f32f55f, 0xa65fbefc, 0xafdd0582, 0x10e6cbe0,
-       0x23b5616c, 0x6bef7a82, 0x6d511edc, 0x9e1ea089, 0x3905c7c5, 0x6944f20f,
-       0x8ced097f, 0xf404cc07, 0xedd79add, 0x9adfd81e, 0xf33d7ffd, 0x63bdfa33,
-       0xf80dd59f, 0x0ffaf350, 0x4c6bdf71, 0xdd02d991, 0x2a1ee8bf, 0x1dfad2ff,
-       0x4d9d7e7b, 0xc61d3f68, 0x55d27648, 0x613565ec, 0xcafc9c53, 0xe03e7de6,
-       0x98f2019e, 0x3b5447ca, 0x53fb7c5a, 0x45cff162, 0x4417970a, 0x7c88b34f,
-       0xa9df6f4b, 0x5d39525c, 0xfdabde7b, 0xbecc4a54, 0xc43f7ea4, 0x1ba87be1,
-       0x2e935fce, 0xf2e83d6d, 0x02ebcc10, 0xf3834b69, 0x13f9b6a8, 0x4aed4419,
-       0x2e813590, 0xbee032df, 0xa12b9b10, 0x4d4df937, 0x4cc605cf, 0x75de5097,
-       0xfedfea63, 0xc28b2381, 0x4f86fe7f, 0xe91ce1b2, 0x199e643a, 0x7f39fd42,
-       0xbf1834ba, 0xa0f5dca3, 0x51eb8ac1, 0xe3a4abc7, 0xf5b10bd5, 0x755c6b5f,
-       0xaefc753c, 0xcfac9f8d, 0x69f8e174, 0xb8fc7e30, 0x5c753b6a, 0xde7c572a,
-       0xd886978d, 0x414b96fe, 0x72c3ce19, 0x947ee122, 0x14797a93, 0xcd8841d2,
-       0x74ed4977, 0x97ca9f90, 0x4a5d3edc, 0xf900f366, 0x6901e60d, 0x5ef1c6d7,
-       0xfb7fa380, 0x3a520554, 0x305f5c0f, 0x221a16d3, 0x3ca0f9b0, 0x7d414c1f,
-       0x777be257, 0xe9fdf026, 0x17b87f4c, 0xb81d39fb, 0xf1c6f313, 0x1437c875,
-       0x85a988d2, 0x1ffd3184, 0x8f9c46f1, 0x90238a8d, 0x98f81aa7, 0x0e11c359,
-       0xb6245979, 0xe913f87e, 0xcdbf2b38, 0x572ddad7, 0x30e1c53d, 0x580679c5,
-       0xbe47d066, 0x08ae5da4, 0xa3f364cc, 0xbe5128f8, 0x517f84e5, 0xc79d3a78,
-       0x103826ff, 0x4a7ad9ef, 0x5d056848, 0x7c73248f, 0xbe184c99, 0x5e265c34,
-       0xdd3c1d8d, 0x090ef8c0, 0xe83e411e, 0x5fc1fde0, 0x9451e694, 0x245655a7,
-       0x7802df64, 0x089270e1, 0x91b7638c, 0xd8047588, 0x5af3a551, 0x1b79c1f9,
-       0xa8ecebcd, 0x3a78f2fa, 0xb14bed53, 0x7e70db71, 0xe2cfdfb4, 0xae2cfdfa,
-       0xd6aecfdf, 0xbf270aaf, 0x740bddb2, 0x87c058fc, 0xa78ea6fb, 0x7c28f1f0,
-       0x113f51f2, 0x429dee2d, 0xd616ae0c, 0x22633d15, 0xc0337fb8, 0xf4e14ce8,
-       0xe8e1c278, 0xb29050a3, 0xd7fe0081, 0xfd353b73, 0xed34daf3, 0x7a415388,
-       0x99c7cd5e, 0xa1fc6061, 0x9ecff39e, 0xee78cdf5, 0xee6fa8f7, 0xf7a5beab,
-       0xe6bef6fa, 0x3e75ed63, 0xd55f955f, 0xff5ffebe, 0xf869711e, 0x52829396,
-       0x30ccaf2f, 0x126b7ed0, 0x1dbdfccf, 0x0f5144bf, 0xf7ebfa51, 0x4af802cb,
-       0x5832c7f1, 0xa056ddff, 0xf05ee7df, 0xd74996c5, 0x63af9331, 0x14e97366,
-       0x86264738, 0x526496a6, 0x5abfbf3c, 0x17709b70, 0xbce8ffe9, 0xbaf3e3ee,
-       0x3a4051bf, 0x21917fb8, 0x6ec5eae4, 0x41fe0b35, 0x09d567cb, 0xd3d088a1,
-       0x1b4b057e, 0x3e760696, 0x3b4f6e36, 0xeaf1045c, 0x6cde3e21, 0x0c1a4a42,
-       0x845bed3d, 0xef2957e3, 0x35dede27, 0x2ed1b887, 0xffcf2f16, 0xe463e419,
-       0x91b921c7, 0x46c1afee, 0x31e416f1, 0xfe8dc583, 0x3037fe90, 0xdc2159fd,
-       0x2e5047ce, 0xa4040722, 0x573e8bfb, 0xec55d242, 0x33025b30, 0x62f0ced1,
-       0xd9a60360, 0xce043c8b, 0x412f6961, 0xa05b7f79, 0xdf0fbf1c, 0xd1942edb,
-       0x176ce4bc, 0x6774d3e6, 0x1f7e0960, 0x3fafaf58, 0x644baf7c, 0xd4225cf5,
-       0xc3e0367b, 0xea05cf7a, 0x7cf5bed0, 0x3ff301a0, 0xcd31040f, 0x95f3626b,
-       0x2fe82a96, 0x11a045fc, 0x18fed1eb, 0x41427aff, 0x2f7c3cfe, 0x79b797ab,
-       0x2dd6084c, 0x777e7939, 0x197fe639, 0x377f6108, 0xb5fde0ec, 0xb30b9412,
-       0xb3afdd17, 0xce96b863, 0x030fc9d1, 0xe5752beb, 0x3f063aea, 0x6f5750b1,
-       0x5890def8, 0xfdf30056, 0xe4bbee91, 0xffe0890c, 0x5cbcdfcb, 0x3b0dcfd7,
-       0x15eae8d6, 0xae89feec, 0x4ddec47c, 0x75bbbcba, 0xeeaf2ebb, 0xca65f54f,
-       0x5679e9d8, 0x4205f975, 0x2fdb3f28, 0xf4375e79, 0x075cb722, 0x76bca05e,
-       0x69f87c2d, 0x5c7083c0, 0x4840f545, 0xb3fcb833, 0x3493ec1a, 0x27d838ff,
-       0xecc82fd1, 0x3b734f54, 0x3e40dad5, 0xe0267f7e, 0xc0bafcc6, 0x0c6fcc18,
-       0xcffcc24c, 0xdfcc5e02, 0x09bf3123, 0xf00da9e0, 0xda3359f4, 0xe9671087,
-       0x525b5d7f, 0x923f2043, 0x32f1c68c, 0xa2e637e4, 0x3f709a5d, 0xb3a70543,
-       0x955687b3, 0x7122a6ac, 0x288beb55, 0x9939511f, 0x4e9adc80, 0xefd6bd79,
-       0x037f2d77, 0xfef58395, 0x0721b987, 0x258aadf0, 0x0a29c993, 0xcfcda3ef,
-       0xfae9da39, 0x432c762b, 0x3abcbb7d, 0x6d20bb28, 0xd3fd067e, 0x0dc4d5e5,
-       0xb6e547c7, 0x4b9eff6d, 0x99f55dc7, 0x0f80da40, 0x0107214b, 0x91b376bf,
-       0xde58ae72, 0x009cfcdc, 0xd93b34f3, 0xee9d98be, 0x0a79e208, 0xc5710f71,
-       0x519cdaf0, 0x7f6e7e87, 0xe825f47a, 0x3c87dcdf, 0x2ee92bfb, 0xe50d1a41,
-       0x8a30c46d, 0xf7d80cd1, 0x78582f1f, 0xe791ec04, 0x80b7201f, 0x6bf1e73f,
-       0xe74ecbcc, 0x4eeded05, 0x93bb0b06, 0xf36393fb, 0x1d96ff42, 0x9b1b95e6,
-       0xe5e89d97, 0x52bccd62, 0x772854a4, 0x4ece780a, 0xf04f1824, 0x79fa6df4,
-       0xb2f30d3d, 0x44af3df5, 0xebc02f3a, 0xc4af0e44, 0xfd42f09e, 0x5e0e3134,
-       0x6bc37d89, 0x912bcc28, 0xf4230578, 0xebc18333, 0x79fa2999, 0x780d733d,
-       0x4179d2a5, 0xaf0e54fb, 0xc2f09ed4, 0xbc1c6a7c, 0xd786fb52, 0xd2979858,
-       0x0df1d45f, 0x8e8b60cb, 0xefc0d82f, 0xfb5729a7, 0xd2ca8c73, 0xfddf4f7d,
-       0x005150b0, 0xdd40d3f2, 0x3789a4f7, 0x5329f2e8, 0x4ffaea46, 0x9756319b,
-       0x58a078cf, 0x3b9acf97, 0x7fbed759, 0x795d34f5, 0x191103fa, 0xcb9a8bf4,
-       0xd6f9e3db, 0x7c2f523d, 0x0728cbab, 0x35d7cec1, 0x4163c99c, 0xbd63ca81,
-       0x3e8baff0, 0x5b17db86, 0xff436f87, 0x39789fea, 0x1fb40bc7, 0xe0f03d83,
-       0x55f7f450, 0x13ddfa73, 0xf3be4668, 0x7c8c204a, 0x6fb71f68, 0x8738801d,
-       0x0381823c, 0xd378df68, 0x82788215, 0x19e6dfea, 0xfceb3ce0, 0xfc13329d,
-       0x8be69dae, 0xefc8230e, 0x3771d452, 0xa94107cd, 0x8905b881, 0x1f6dea4c,
-       0xb7f38dff, 0x9ecf07e5, 0x1d2f7e84, 0xb44cbb34, 0x56af09df, 0xf9a7643c,
-       0xdd98f7da, 0xfbfe2fa4, 0x63f7c92b, 0x97e62706, 0x93f97da9, 0x5f8e8411,
-       0x00d13bb8, 0x180aa7fc, 0x07f82a44, 0x1f41b3db, 0x05ec791a, 0xfd47fc1d,
-       0xfedd65f6, 0x230b1e14, 0x43f752df, 0x7ee84f3d, 0x8538c034, 0x56e3e07d,
-       0xe225db89, 0x067f74f9, 0xa7c0b3af, 0xbfe59569, 0x9697eca3, 0xda6cdfcf,
-       0xbf9ceb0e, 0xe071d961, 0x1cb767cb, 0x0bbefe38, 0xdbe3a1a7, 0xb9435f54,
-       0xe7f36bf0, 0x53dcf07f, 0xbd7e22f1, 0x119b9755, 0x70f9dd2e, 0xbdcef6ef,
-       0x7b53d312, 0x57b7d3c2, 0x18587f42, 0x2eaa8ee3, 0x7bdf84bf, 0xd42eb1ca,
-       0xd539172f, 0xfdc9b5f9, 0x601d0f80, 0x8545d97e, 0x2fc812e1, 0xbdd1317a,
-       0xf95faa02, 0x46834bf2, 0xda345ece, 0x2af0be93, 0xddea91f6, 0xc5ea1226,
-       0x4625d23e, 0x48d2996b, 0x578a50e5, 0x2768965d, 0xf5477fe4, 0x986349fa,
-       0x12e20abd, 0x62daa59a, 0xbf36ac69, 0xfaca58b0, 0x4d42faea, 0xdfc7c7eb,
-       0x817d3127, 0x427f07ea, 0xf5e814f8, 0xe84f5506, 0xae703d6b, 0x0cec3ea3,
-       0xbbaf5af7, 0x728d75dc, 0xd2e51ae5, 0x45ffca35, 0xcf29f7e3, 0x55ea66bf,
-       0xe058bf9e, 0xd03e074a, 0x76098f45, 0xe064468e, 0x2d0d555f, 0x1adf3f0c,
-       0x8ff9009d, 0x7d5abeb9, 0x72f8c439, 0x5cd79588, 0x788108a6, 0xd426e2ca,
-       0x49163f7e, 0xe17c6f79, 0x1fd32356, 0x20ff5a6b, 0x73cf80bb, 0x7ce1a93a,
-       0x4532e6a4, 0x695f4a28, 0x1bd61346, 0xfe233466, 0xef491915, 0xad8d9f72,
-       0x8027e54f, 0xce4fc093, 0x3cc5cc6e, 0xf5f227e5, 0x8e1a93f0, 0x9f955f67,
-       0x02f30adc, 0xf3da54bc, 0xf7905e30, 0xdaeebf13, 0xa9c20746, 0xfe80ce9b,
-       0xed7e066f, 0x02a63429, 0xf71809dd, 0x4262dd58, 0xa356e439, 0x5eebed8b,
-       0xbeac4fe6, 0x03f18bbc, 0x17d38d89, 0x538fc7be, 0xe3a2d8d5, 0x16f83d4b,
-       0xff8c578f, 0xf1919f7e, 0xe2848bef, 0xfc4f4147, 0xafa2f150, 0x5b2e6b7e,
-       0xdee8f374, 0x767deeef, 0xc6c73ee0, 0x953c7053, 0xa470aa1f, 0x38dbb9f0,
-       0x627c27ba, 0x38412970, 0x48fb7276, 0xc98d5f3c, 0xc55edc0f, 0x81e3d9f9,
-       0xb5adde3f, 0x38fb5af7, 0x387156c7, 0xd1040eac, 0xf51d242e, 0x5aaec138,
-       0x6f07766f, 0x49f0c437, 0xa164d8e6, 0x9d035e62, 0x849525a7, 0x16a6d196,
-       0xe7f02b98, 0x2af8825c, 0xfe1d24d9, 0xaf3429c8, 0x288db7e3, 0x13069b27,
-       0xe957f001, 0x615f2faf, 0x6b3af164, 0x4b3bb7f2, 0x927fbce9, 0xb820fbff,
-       0x6d601dd2, 0xebfda033, 0x63bfaea2, 0xca64dcd2, 0xfcf8132f, 0x72d1b79c,
-       0xc1e6f8cd, 0xade4014e, 0x76fa89a4, 0x0cb070f1, 0x8abfeba6, 0x1c524cdd,
-       0x20a197e8, 0xc2317662, 0x612230e5, 0x272ae8dc, 0xadcb47e3, 0x95d7a40e,
-       0x63ee2239, 0xadb7b713, 0xc81b3b07, 0xfc848a52, 0xeac894cb, 0xb44109cb,
-       0x4ec199a3, 0x8a7d806b, 0xda4ede60, 0xeb009f31, 0xb8f2041e, 0x4c9fd70b,
-       0x6f412b22, 0xbedf1aef, 0x164fbe18, 0xfe02cf7d, 0x3b6cca5c, 0xd53d8029,
-       0xf40a1beb, 0x2c10c1be, 0xcffad174, 0x5085a21a, 0xfd169b2f, 0x39a58931,
-       0xd3e4d710, 0xff987ff8, 0xf437963b, 0x912ce7cc, 0x5721fce2, 0x5fcb6a86,
-       0x012f3d10, 0x129ca79d, 0xba909e50, 0x09bd4de3, 0x2bf70f10, 0xb1878f23,
-       0x2fe93d31, 0x8f4cb9ad, 0xeac721ed, 0xf70537f9, 0x79ba63f4, 0x63f2e3b9,
-       0xd8d31fa6, 0x2797fdc3, 0x0ec1f8ea, 0x1d8d03a0, 0x11e4b07d, 0xa4355fc1,
-       0xcabf7e91, 0x6dd6bf7e, 0x601a0cbf, 0xf8f1f77e, 0xb3d5220b, 0x22f78f3c,
-       0xff744bb0, 0x6cd455df, 0x593bcb3d, 0xf9873fce, 0xc0f9baf3, 0xec045361,
-       0xce1eef7b, 0xdcfb062c, 0x51e8c66b, 0x3ff5c82b, 0xfdcdf260, 0x5a331cef,
-       0xedefba69, 0x4b9076ed, 0x9cfa724f, 0xd846a24d, 0x0f8f1f47, 0xaafaed53,
-       0x55ca8c5d, 0x0f9be046, 0x7f774244, 0x3c1ee697, 0x1c2efa16, 0x8adfb397,
-       0x9ad80afe, 0xb12cec2f, 0x16bb4d12, 0x679671f7, 0x45eb34ed, 0x57ad8e7c,
-       0xd668f5c1, 0x5b15fb8b, 0x50f082af, 0xfc19fbd7, 0x787ce69f, 0x14fbe8db,
-       0xdd7e33f0, 0x5b344ad5, 0xfbf8881a, 0x5a9bc057, 0x8d272f83, 0x00c2e3ae,
-       0x5854d0df, 0xf2325b4f, 0x6ff8bebf, 0xf466fc77, 0xcdb71606, 0xf386a7f1,
-       0x86fb15fb, 0xe11d8026, 0x220daffc, 0x21e7ddc8, 0xbf7e921e, 0x81343cd8,
-       0x73bec55c, 0x2e75db8e, 0xe8095d3a, 0x911d094f, 0xbec00b4b, 0x539e4471,
-       0x9a9eb3d0, 0x91ed0f2f, 0xb20ed14b, 0xa2388647, 0x1af71e1a, 0x993f7fdf,
-       0x6379c1d1, 0x20e804b8, 0x04e0a2fa, 0xeed55eff, 0x5ed1c73d, 0x247123b2,
-       0x710d2f8b, 0x08db473f, 0x908a9fd8, 0x146f1f41, 0x91057266, 0xb0cc46da,
-       0x8f52e16b, 0x63fd34ed, 0xed57dcfc, 0x31496cbf, 0xbb720539, 0xfa0f1cec,
-       0xc32b7043, 0x1e89b2cf, 0x33f69d83, 0x7f4041b6, 0xdba72de5, 0xaca98e31,
-       0xbf409129, 0x472c8f65, 0x9b6d533f, 0xf81da5ab, 0x0f704864, 0x794fe021,
-       0x14c7f0b8, 0xb28eeb1e, 0xc3fc807d, 0xb8f32fe8, 0x6fbb1a6c, 0xd0aeb187,
-       0xa0f0f409, 0x5cf203cd, 0xbbcf0ce9, 0x205957e0, 0xfe008e45, 0x7d2ceba8,
-       0x0e0635c0, 0xd9b0d285, 0x2442a983, 0xa56be50b, 0x4d205112, 0x86648997,
-       0xffcfeb7c, 0x6c289cc2, 0xa216e9bd, 0xfebfefb0, 0x8de1e01b, 0x8edeb2cd,
-       0x6fe7d619, 0x0be7d16a, 0xcdfcfa23, 0x4ff3e96f, 0xf74941c0, 0x0c2fb5f7,
-       0x37f088c4, 0x47fe0085, 0x8588990f, 0x97eaabae, 0x2703d466, 0x9cf0d954,
-       0x7305f8f8, 0xde47f208, 0xec08b57b, 0xb4bf954b, 0x6f01b8b3, 0xaf2825f8,
-       0x811fa97a, 0x0dff7273, 0x8cb7b544, 0xff64b900, 0x3ed80ddf, 0x9fed3cfa,
-       0xe0f8ffd6, 0x947a5fcf, 0xf9f8ffb6, 0x1210497e, 0xdf87d594, 0xef59aabb,
-       0x41ba1e1f, 0x2161ff3f, 0x664abe7d, 0x2f0bfafa, 0x187e2ac8, 0xdba5df18,
-       0x17f5c695, 0x907f9697, 0x6e20fd45, 0x8182e400, 0x4455efb1, 0xbf46afd3,
-       0xe1e9c89f, 0x019dc05c, 0xc88a63e7, 0x85cfeae2, 0x7a0348de, 0x1bc768fa,
-       0xe74f4069, 0x4fd04b03, 0x6767bd55, 0xd5e79c12, 0xf0e1bfcf, 0xaedf7a40,
-       0xdc82c6a7, 0x0c21bcf4, 0xd3dfa0f3, 0xf8477be0, 0xf4598e57, 0xc91db9fb,
-       0xd17def88, 0x30a8457b, 0x7c0e7b43, 0x8ee87c55, 0x383272a3, 0x9de3181c,
-       0x0fba5dfe, 0x780d9b55, 0x7c2aa65f, 0x038677f7, 0xa2366c1d, 0x8f7aabdd,
-       0xbe3ea091, 0x7bb456ed, 0x813eed55, 0x8dfec771, 0x5e5718a5, 0x61af1124,
-       0x664cba24, 0x75ae7a40, 0xb7ec039f, 0x926e7f55, 0xefc81725, 0x78a3fdfa,
-       0x548c7180, 0x069a28f2, 0xb2cf494e, 0xa9bff022, 0x57ae7bdf, 0x5f7e3edf,
-       0x78d5915e, 0xddaf9225, 0xc97af8df, 0x37688253, 0x5cb25ea9, 0x7d500f17,
-       0xfe0651ba, 0x4a0e3f1a, 0xfa739a90, 0x017f0835, 0xeb917f3a, 0x51ce5439,
-       0xc3cfa2e8, 0x3cb106bf, 0x80952b9c, 0x1bfeb047, 0x851744c8, 0x3234d547,
-       0x032cd209, 0xe42c7bc1, 0xefefe615, 0x7a0473a0, 0x237dd8e8, 0x84bab7da,
-       0xc33f5df6, 0xb7c8edfe, 0x07119c3a, 0xb6544dc4, 0xe2ee319a, 0xf2320be3,
-       0x37e1658d, 0xdc6f101c, 0x145992f1, 0xf1f5b0a9, 0x8362e49e, 0x37e7f003,
-       0x4e19aecc, 0x571d962e, 0x7b9a2fd1, 0x00f8b78f, 0xafcf49fe, 0x273d94ff,
-       0x7d678064, 0xe98b9e32, 0xbd8575c9, 0xedaafdc5, 0x42bae452, 0xb3d3c817,
-       0x5aefdc6d, 0x72f80b9f, 0x06e197d1, 0x6054a979, 0xf4480efd, 0xed7e849e,
-       0x924bd6cc, 0x076c32de, 0x70653a7c, 0xf852762f, 0x945e25cd, 0xf28ee60b,
-       0xa48740c9, 0x96fdc59e, 0x51222449, 0xf80cb039, 0xa3cc08ea, 0x59b65efc,
-       0xb9a2f8c0, 0xe775184f, 0x69e1c400, 0x1a4e57d7, 0x124adfb1, 0xb37cb4c6,
-       0xf802bcbe, 0xa5578534, 0x95e0fcc2, 0xf0718c3b, 0x5a3ea089, 0x930bfbbd,
-       0xfd751c76, 0xfaea217f, 0xd1e5973c, 0xfd45fd4c, 0xf70129be, 0xd8c8ffd9,
-       0xe65f380c, 0xf8e0f699, 0x985cfc55, 0x7e58ea4f, 0xa00c8922, 0xeba3cfe3,
-       0x9e607382, 0x918e8242, 0x92309f2c, 0xdf93c7ad, 0x0eb03d73, 0x36f277ed,
-       0x56aaafdb, 0xd61c3221, 0xf20de743, 0x5b47ac37, 0xb3af9aaf, 0xaefd377a,
-       0x7690ffb5, 0xf7bb5fac, 0x5fae930b, 0xe7a0cf6e, 0x7dd33110, 0x37cdd758,
-       0x71b4c343, 0xe1bdaa23, 0xbac78724, 0x0267e7bb, 0x720d3dbd, 0xd8071658,
-       0x8127aa18, 0x032c676f, 0xb7c742ac, 0xc79ddcdc, 0x2ce5a2f2, 0x76b4c83f,
-       0x54fe86c2, 0x32fa310f, 0x3329ae41, 0x68438f78, 0x37c54ece, 0x29c744d4,
-       0x12d93d93, 0x1e4f75f2, 0xb09659da, 0x6474fff5, 0x5ebab0dd, 0xbf7518e4,
-       0x08e10bd6, 0x641d43c6, 0xbd7c41f2, 0x4fc62671, 0x1fb68e12, 0xdd173e07,
-       0x5a11e547, 0xc1f0a36f, 0x6de3b071, 0x5645cbbc, 0xdd067cd0, 0x1b77e01f,
-       0x502f5205, 0x4bda8cb8, 0xa3d01be5, 0xd4378ef7, 0x4cdd70d8, 0x6dd6b06e,
-       0xfa47fb03, 0x0123f943, 0xb930ef5f, 0xdd741e70, 0xe5a34d0f, 0xb983cb19,
-       0x384bff60, 0x0ede6a1a, 0x8b70efe7, 0xa74bc61b, 0x6127b1b0, 0x7fe700da,
-       0x023c2906, 0xc5319574, 0x88ec1235, 0xffac1ceb, 0xd0f0d154, 0x46539054,
-       0x28d27cb2, 0xfb8ed9e2, 0x49c716b3, 0x30499137, 0xf20ef83f, 0xb3d6ed17,
-       0xc4349107, 0x5d4275f6, 0x3e9f8c21, 0x7064a588, 0x8bcbca06, 0x9eaa7cb8,
-       0xf7f59f6f, 0xea3f0024, 0x3f01f7e2, 0x201279b3, 0x1b1c8c8e, 0x9fed6a26,
-       0x0345fd6a, 0xdf50e93c, 0xc124597f, 0x287fe464, 0x5e67fa5f, 0xff857b42,
-       0x1a824cb2, 0x9cbfec3e, 0xd777cfa4, 0xb1f6c34b, 0x4a12167a, 0x839eadee,
-       0x11fd7484, 0x7f2d7f7d, 0xec24f5e5, 0x77698c8f, 0xe9d91c80, 0xdb3e476a,
-       0x46831215, 0x1174f7aa, 0x9dc1f182, 0x6d5df64e, 0x265339df, 0xa2679411,
-       0x40474fd8, 0xb2630881, 0xf413f5a9, 0x1eb7561f, 0x35ef8129, 0x7ce30da4,
-       0x1256c26b, 0xdbffc5ec, 0x970b0011, 0x3f29fce6, 0xfdd4ed8a, 0x9037b588,
-       0xb38fd690, 0x52222da2, 0xeab75a5a, 0xc00a2bd7, 0xd3947704, 0x2b37f04d,
-       0x72d1b73c, 0x23a3a883, 0xba6ea8eb, 0x275f3242, 0x061d181a, 0xe262bb7f,
-       0xaf3c9a6d, 0xf83edddf, 0x291309bb, 0x602a8ddd, 0xf55d9fed, 0x972c6fef,
-       0xae807c62, 0xd76bdb3f, 0xbcb895e4, 0x6b87e68d, 0xf2b8cef2, 0x8cf2b894,
-       0x567f7cb8, 0xc91ec3bf, 0x1ca9b836, 0x13f7eab7, 0x3a4fca24, 0xa9b32332,
-       0x309e4f04, 0x226133bc, 0x6a8f8dc4, 0x5a79c0f3, 0x59b82adb, 0x5f830fb8,
-       0xb9e19bad, 0x832eddcd, 0xaa3adf7f, 0x7688b8ed, 0x7209c12a, 0x27bc2da6,
-       0xe7687982, 0x330bb4d2, 0xfc3aa4fd, 0xb3ebb601, 0xe9117cff, 0x87fe4d7c,
-       0x765aef58, 0x8faf9274, 0x6e2bef83, 0x3be0b770, 0x92bd026a, 0x77bf9144,
-       0x992ff9ec, 0x7c633fdd, 0xf3d333ab, 0x43adf206, 0xb7cb5382, 0xa41f30fc,
-       0x0e5c65e7, 0x935c7062, 0xb886517f, 0xb787f78d, 0xa9c703be, 0xcb27d175,
-       0x73fb1e40, 0x20d1d9cd, 0x1f2d809f, 0x217af4f8, 0xd6f18664, 0x7861a18b,
-       0xc866adff, 0x7a05d111, 0xf016fb7c, 0x75574417, 0xda4ffc22, 0x284007db,
-       0x9755c5fb, 0x7db53e59, 0x5dc7ec0b, 0x009b7f0d, 0x0e4f1ef7, 0xd2201f68,
-       0x8355a5fc, 0x487e6227, 0xf7c816fb, 0x3f2c1c53, 0x81807dbc, 0x0921cfb6,
-       0x76ff6113, 0x8abf193a, 0x3967bfe7, 0xf7e755ff, 0x29cf7f4e, 0x66a90b80,
-       0x1c0b7dfc, 0xed9f94cf, 0x73b538ec, 0x9d9fdd17, 0x9fc8cc4b, 0x10bc6429,
-       0xe1ce938f, 0xf20ee78c, 0x8df50953, 0x926b384c, 0xcf68fb62, 0x7f21736e,
-       0x0f6ea1be, 0xb3e9d79c, 0xff3f900b, 0xac99ec87, 0xfdd2c6a4, 0xfad29a36,
-       0xe3271593, 0xed1106a7, 0xda8fe99e, 0xda78fe51, 0x0561d6cc, 0x1b534afe,
-       0x7c2b8fdf, 0x4c4c571d, 0xdf24b91f, 0xdacdfd81, 0x950cf946, 0x240966db,
-       0x309c80a8, 0x81394655, 0x3341a3aa, 0xdc5537cd, 0xddd27180, 0x335ad2fa,
-       0xd0a9bfce, 0x26760993, 0x9a693f55, 0xd44cc9ea, 0xdb4d65c8, 0x67cab958,
-       0x5e69729b, 0x12102e73, 0xad9779c6, 0xbb424dcf, 0xf3eec4bc, 0x743b5fac,
-       0x573c1afb, 0x9b3ae1a7, 0x68664312, 0x2fffc2a7, 0xf0c93dfd, 0xbef57efd,
-       0x7507df28, 0xd30ac9dc, 0xec0cca87, 0xf1527e3c, 0x44cb3ae1, 0x39a208cf,
-       0x4d03279f, 0xa448e068, 0xfdf0d1f6, 0x8c7843ff, 0xa3fdf586, 0xf1daf8f0,
-       0x84fc71c5, 0xa0bb8df2, 0x67259aff, 0xf30cdc79, 0x5df0a9bf, 0xe98c442f,
-       0x77b06f8c, 0xd077e804, 0x3e4c0abb, 0xe753b42f, 0x1ad1fb3d, 0xf5d4d794,
-       0x60787f58, 0x9d99dc12, 0xc5fe795d, 0xecfdb49d, 0xf775591f, 0xa4be5581,
-       0xae46bde2, 0x11eec618, 0x4fbb29ab, 0xe80a7208, 0x3aeaed77, 0xc4264f24,
-       0x18afaf8b, 0x609e8228, 0x828ff805, 0xb7432efb, 0x9c18132f, 0x9caa9e60,
-       0x08bb8843, 0x2953b3d6, 0xf97d86ae, 0xa05e2952, 0xf071b2a4, 0xa75e097c,
-       0x03d78dfd, 0x7aeae779, 0xfc72610d, 0xefa604a6, 0xd0f10249, 0x8dffcdf9,
-       0x811adb71, 0x13e21f03, 0xb0bb30b6, 0xc357972a, 0x79f74ee9, 0xe7e3973e,
-       0xc17e3973, 0x1deea306, 0x3e908a82, 0xbcd89a4f, 0x523eb9aa, 0x9fb0da45,
-       0xbd7d66aa, 0xd82faa6a, 0x83bf701d, 0x8690f1ca, 0xf9eae5f5, 0xc2f96fe1,
-       0xa0f77fa4, 0xa361f711, 0x09f1c999, 0x8fb93d23, 0xb5fc7f01, 0xffcde511,
-       0xc2a2fbe6, 0xf1624061, 0x8b5f00c3, 0x9ff84441, 0xec394916, 0x95c0676f,
-       0x93307831, 0x02f5a76f, 0x9aaf35bf, 0x361f01cb, 0xffcea22b, 0x64628f78,
-       0xcce5c37e, 0x4fbd1e9e, 0xc8133b46, 0xffbd5ac1, 0xe7d54539, 0x10ff72d7,
-       0x129a33d3, 0xa9bedc99, 0xe9077049, 0x2b4d277c, 0x5ff800af, 0xc021699c,
-       0x3d72e76a, 0x746a42f3, 0xfaadc031, 0x76bb4bbe, 0x7c37d011, 0x74be022f,
-       0xc7ecd18a, 0x967fd172, 0x0fb3fe00, 0x7cef8c43, 0xfdc0eb48, 0x9dab6098,
-       0x4f1355c5, 0xefda3ce6, 0x6ee9d5a9, 0xe3533b88, 0x641d4e49, 0x46f5cbfe,
-       0xf3dc096f, 0xfa63ee0d, 0x574687c3, 0xeb23dc36, 0xd011caf2, 0xd744cbbb,
-       0x7b2025d6, 0xaaf6b61d, 0x5a9ff85f, 0xfeae7180, 0x23dfa5ca, 0xfdd3d157,
-       0xbd3d7a2d, 0x61b34493, 0x07ca9b5d, 0xfc742386, 0x6e61d6ce, 0x40cad666,
-       0x93ad4be3, 0xd54d3dd5, 0x7187bc3a, 0xbdf088c8, 0xff91fede, 0xf0fc7ed1,
-       0x684bf06f, 0xef681fed, 0x7a43dbd0, 0xfabed9e6, 0x7e674d5f, 0xeff2b892,
-       0xb093becb, 0xf93fb50f, 0x0825c9eb, 0x37d228d7, 0x3e7a6469, 0xa144779d,
-       0xb46f4fed, 0xdda77f23, 0xf9fdbde1, 0xbe053654, 0xd194b393, 0xf486f55b,
-       0x4837606d, 0x57eac89c, 0x768a186f, 0xfedcb184, 0xea40df3b, 0x133ba015,
-       0xa1390069, 0x696ae4cc, 0x9c63c4d7, 0x5bd267b9, 0xbcb45f40, 0x0dabca1e,
-       0x82fcdeec, 0x8da2b6b6, 0xecc22f30, 0x02cde5c3, 0x78c53881, 0xdad115fb,
-       0x3560a889, 0x80cdbc36, 0x55d83f4a, 0x55df63f2, 0xbf79ee3a, 0x3d26efe5,
-       0xbf2a82dc, 0x7abd31f1, 0x9ff83a70, 0x901c7a54, 0x48cc95e8, 0xe074ae07,
-       0x3e0c67a7, 0xe02c97b4, 0xb82b1bf7, 0x478eaf9e, 0x3be30df9, 0x281fb70a,
-       0x2d70aecc, 0x47daa3fe, 0x0f403b54, 0xf294b3be, 0xf37d119d, 0x0aea421d,
-       0x80f84ed1, 0xd2740dcd, 0xfe70ff83, 0xba53eea6, 0xd8d0f8cc, 0xd10321a5,
-       0x6497b9c8, 0xcd3697cf, 0xa3ffe2b9, 0x826eb8a2, 0xb40c97bc, 0xbe365c81,
-       0xf70a91d2, 0xcebf98dc, 0xdb3c46da, 0x662df7e8, 0xfed02f2a, 0x90b871ee,
-       0x0cc8647f, 0x97928c0f, 0xa2f2d214, 0xfb9436e2, 0x09c4a9a3, 0xc6decefc,
-       0xa762dffa, 0x3b4246ed, 0xdbba77c6, 0xa2dea42b, 0x2afc5f69, 0xe9725fbb,
-       0xdfed1da0, 0x734b1297, 0xbe748f80, 0xa77e476a, 0xba53bbfa, 0x8958d5df,
-       0x1e1db9eb, 0xd5854a45, 0x3d03f715, 0xfb93088b, 0xd86277b1, 0xf46358b9,
-       0xe9ff00e5, 0x9644d778, 0xe08b7ed3, 0xbc54a231, 0xef0257b7, 0x2ebed536,
-       0xca486400, 0x8216772b, 0x5864d91d, 0xf7428f74, 0x34b0c4a7, 0x576d08fa,
-       0x04e6c033, 0x9cc4c293, 0x7de7fd3f, 0x5ed1ff34, 0xaba7de23, 0x266139d8,
-       0xa2fad1d8, 0xa2fbf8ff, 0x7975bf74, 0xbcbabfba, 0xbf9f45bf, 0x814f6cd7,
-       0x36942cfb, 0xd8cf70dd, 0xb73baa64, 0xf4d7ce8d, 0x354dc99a, 0xd9b37211,
-       0xe81980f7, 0x071e8c5d, 0x3a729978, 0xe17c8046, 0xc044fd6f, 0x559250f7,
-       0x072f80ff, 0x9992e7e8, 0xf3efb3c1, 0x9eec289b, 0x6967551d, 0xc36d94da,
-       0x597a68fd, 0x6f8c0908, 0x045d194f, 0xf7e130e7, 0x97183c4f, 0x265367e5,
-       0x4cfefc4d, 0x68437ed3, 0xded79c19, 0x5c27bc72, 0x856bcf4b, 0xb87177e6,
-       0x8b47d557, 0x53445ee0, 0x3061a4d2, 0xc90be92f, 0x0abbfb0b, 0x17c8d13a,
-       0x3fe2cdcb, 0x115a3f76, 0x2d89efe2, 0x7b873a07, 0xf8e9e39b, 0x0cf8bee3,
-       0xe8532ee3, 0xc9cfc030, 0xee376656, 0xfda21652, 0x43ae6fda, 0x44b8d5bf,
-       0x60b5d709, 0xa0242d80, 0x9f20991d, 0x3932260c, 0xcb41611a, 0xffb986cf,
-       0x0b4e0e3a, 0x9ab930b6, 0xbbe033ec, 0xc1400b31, 0xd5fbb902, 0x700f18a9,
-       0xc9a7f376, 0x5b6e01e3, 0xbb0270ef, 0xccbdf5a2, 0x8369e78f, 0xada4bbf7,
-       0xbd0172df, 0x6262db1f, 0x765448f3, 0xfb8f7ec1, 0x837280c2, 0xc81f1224,
-       0x67b24d0d, 0x6b91d018, 0x8012cef3, 0x59a9d9eb, 0x517fd622, 0x37184e20,
-       0x7c1a4971, 0x5e48205f, 0xfdfa3f46, 0xa26bf753, 0x05c99939, 0x7f782b86,
-       0x4db4d8fa, 0x3e3dcf18, 0xc6f7f367, 0x8d3b7f42, 0xd2846f78, 0x3e703dc7,
-       0xc0f5d0d4, 0xbcb66a7c, 0xb38cc693, 0x628a4484, 0xa3fcdbef, 0xaab26074,
-       0x07975c78, 0xf2c16c7c, 0x3bed3cba, 0x78f03d1e, 0x1b9ba533, 0x166078a9,
-       0xaf2097c8, 0x35ea4ff7, 0x1e5e293e, 0xc54af555, 0x6d3b3c4d, 0x08f3d768,
-       0x329d3f94, 0x4e47c84b, 0x27ac6599, 0xf3616dfd, 0x3f105cef, 0xd02dfbeb,
-       0x60f10e5f, 0xea2b853c, 0x0ee2a62c, 0x69cf0080, 0x9fc599b2, 0xf51f73d1,
-       0x44a9f5a0, 0xffd1aef7, 0x3a51fde5, 0xb2f0077e, 0xc72bddf3, 0xd9b5ae01,
-       0x8f40231d, 0x0cfe5ff0, 0x56b65eed, 0xb9b4f766, 0x0d9e64bd, 0x992a7be8,
-       0x83e3105b, 0xcfe3377e, 0xd1baebf1, 0x63f16462, 0xc7ec5129, 0xd7f4656a,
-       0x4df6f5c4, 0xf7a82c4b, 0x99094a6d, 0x955fd261, 0x573f54ce, 0x2a63b705,
-       0x7b415e3b, 0x4e09090e, 0x2e296bf0, 0xe55d2746, 0x3fcf11b3, 0x882831da,
-       0xd1e3bdf9, 0xf1db65af, 0x8040c35c, 0x83f30b53, 0x0eeddcd9, 0x3b47df58,
-       0x7d60394e, 0xb80c3be5, 0x27d0f2ee, 0x620af369, 0xf049bd74, 0xfaf3c15d,
-       0x46b59d0a, 0xc768fb4f, 0x6d7369a7, 0x730a4f4c, 0x706f417b, 0x2f1952f9,
-       0xc65c2858, 0x751d9839, 0xf7c453dc, 0x386de232, 0x4f6f6b5b, 0x6af3b0b5,
-       0x0dc9859c, 0x7ad0d6e3, 0x7c618788, 0x1ebe29cf, 0x57a32079, 0xf8fc6d3b,
-       0xb4441be7, 0x26ac56a3, 0xff3d6768, 0xf46c81fc, 0x903cee6b, 0x5f53473d,
-       0x6f8c3f8d, 0xf1616d9f, 0xa7f1a41f, 0xe20d251e, 0x7378d83d, 0x2007cabc,
-       0x3b86909f, 0x1e38fa3c, 0xbd4d130a, 0xa7c40dae, 0xefd58a0c, 0x01dcff2a,
-       0x5a736a71, 0xb413110d, 0xa70678f7, 0xebcbbc80, 0x2f77f7c7, 0x45a123c7,
-       0x5ac93d40, 0xfa3e4510, 0x1134f9b5, 0x4d3e5a6c, 0xe324f7f7, 0xf0e3d1d3,
-       0x19d813ee, 0x6b933ce1, 0xf5c8126d, 0x5e182b69, 0xa2207f45, 0xc435ddfc,
-       0xf9522f52, 0xb0cace45, 0xb14aff01, 0x01acb8b0, 0xbf58f959, 0x1a679efb,
-       0x4999e7bb, 0x8a7e30ea, 0x1f51db38, 0x38863fee, 0x580d0e41, 0x41911c98,
-       0x830c1bdc, 0x7a3c9820, 0xf10151ea, 0x8e7c03c4, 0xa9ea0a88, 0x3f185f14,
-       0xfa33e477, 0xf952f0e6, 0xa02ad0a8, 0x92db371c, 0x862bf5c8, 0xa3c2d757,
-       0x3c62ffd9, 0x778ea05a, 0x12e478bd, 0x5be1f5c8, 0x1fc2761f, 0x845fb828,
-       0xf0a771fb, 0x3628a67e, 0xb880af7c, 0xf1dd1d8d, 0xcd9fb464, 0xfd04de54,
-       0xf62bb541, 0x62ea515b, 0x76b6e07e, 0xdface790, 0x7c5cf052, 0x05cb6c5c,
-       0xcede3a79, 0x11367748, 0x533801ce, 0x1f94bd61, 0x5797fb30, 0x9d71fbc6,
-       0xe21b8f01, 0x44880607, 0xcfdf3e02, 0x35ef8b90, 0xdd380bf6, 0x59dc182b,
-       0xbb1e631c, 0xb12b5c0f, 0x075942fb, 0x1772c912, 0x5f4cc7c8, 0xcb8eface,
-       0x78b52e0d, 0x225346ff, 0x7ea987b3, 0x69ecbef7, 0x9f4f41a4, 0xcbad5daa,
-       0x537e174e, 0x0659ce0c, 0x85049f3e, 0x41ee4fdf, 0x35c00ae7, 0xff510c6d,
-       0x4b3e4036, 0x14fe37cd, 0xae957bcf, 0xbd9d7b55, 0x736b9bc0, 0x7abb9213,
-       0x8be031dd, 0xb8e7efd7, 0xfdd5e57f, 0x025dff1c, 0x9e7a0e7e, 0xb4c39776,
-       0xe6ab39e9, 0xae12203d, 0x21cac7b2, 0x11695ece, 0x2575fb78, 0xde5c4877,
-       0x3ee7f1c2, 0x3caaef06, 0xf1ba266d, 0xe293f3b4, 0x629087fa, 0xdfad4b9b,
-       0x5bfa1138, 0x83e79237, 0x5f83d41f, 0xbea369e7, 0x6f29043f, 0x029a990f,
-       0xc9f07fd6, 0x1a9fc741, 0xe1ef3b1c, 0xa97807fc, 0xf7aafee7, 0x44de34a6,
-       0x3f3ab2c7, 0xf50778c5, 0xf4a7f6fc, 0x24e22f7e, 0xff5fe3e7, 0x761e841d,
-       0x261693ca, 0xc90096df, 0xf9003d51, 0x17a97fb2, 0x9ca825e3, 0xb7cc21f1,
-       0x338eddf3, 0xe7796847, 0xf78fcfb4, 0x7d6e3c03, 0x31e83678, 0xfa03b7e0,
-       0x501b37f1, 0x055a55ce, 0x462d6f86, 0x7f1517a4, 0x7f1c9d2a, 0x7f788312,
-       0x3090e9b0, 0x5445ec1a, 0x9bbecd3f, 0xd5b165ee, 0x31c70173, 0x533fdfea,
-       0xeccad953, 0xe2fcfe56, 0xffd0798d, 0xf9c0810e, 0xc3ff26bf, 0xbfa8b9b4,
-       0x4f36907c, 0x65a2aed3, 0x691f8b1d, 0x470af636, 0xfa606ad9, 0x1e7dc1dc,
-       0x43e70be0, 0xca4b1618, 0x906ad0a5, 0x45cbcb57, 0x8546efd4, 0xbe43ef4a,
-       0x2026533d, 0x5c587787, 0xd3cd1e6c, 0xe42f1083, 0xbf81ffa7, 0x7e77936a,
-       0x3347ca29, 0xd5c41b15, 0xce2fcf9e, 0x5795fb44, 0x061c0276, 0x926537bc,
-       0x149ef80b, 0xadb4b8c6, 0x2091b6b5, 0x83efadd7, 0x63693ecf, 0x782f5cfb,
-       0x7e67df83, 0x5bb5a271, 0xf930b4e5, 0xe4cac32e, 0x867bf541, 0xb79dc995,
-       0x0026db05, 0xda961c3a, 0xfaf720ad, 0xd013e789, 0xe6d7894b, 0x0f7089da,
-       0x129ddea3, 0x4d3da170, 0xfc7f6949, 0x4dbf2826, 0x223b38c2, 0xe3033fb5,
-       0x894eae76, 0xfc850bdd, 0x6f680523, 0x1beacc7b, 0x14e3a562, 0xf3b27971,
-       0x10859de0, 0xe1ce38d7, 0xe824c9fa, 0xed0973e7, 0x8a9ee33a, 0xf8004db6,
-       0xd9903e7d, 0x08e895b9, 0x9376b9ed, 0x9e93ad95, 0x92ef286f, 0xfbf237c3,
-       0x1d9eb40a, 0x5a16f1ba, 0xb8de4153, 0xfd18f458, 0x24694c6c, 0x7d549f80,
-       0x9282bb40, 0x872025e2, 0x4a96084c, 0x271cb718, 0x71e04c87, 0xf4a4881d,
-       0xfbc7317b, 0xe1777421, 0x558a2dfd, 0xc7265ff5, 0xaeb792e4, 0xa3e090cc,
-       0x8a88af2a, 0x1399ed0f, 0xc6085a67, 0x1e8cafd3, 0x9e2ec117, 0x0a7af942,
-       0xf160cbde, 0xb32ff9a2, 0x466120fb, 0x3ffeddb7, 0xa8fd1da9, 0x7e56ad93,
-       0xfc33d7ae, 0xb7186d21, 0xb0900940, 0xd6cf68fd, 0xfd5057de, 0xf27f6a86,
-       0xad8f6672, 0x7c17f6e1, 0xdf9696f9, 0xb2ed556d, 0x467e75cb, 0xf0bedc75,
-       0xc6aac2ab, 0x804b4453, 0xd507a31e, 0x4a4f8a78, 0x8cfa2f00, 0x5778e0a7,
-       0x78f572db, 0xd195bf0a, 0x4f1d37c9, 0x913588f1, 0x11f44bc5, 0x471f114f,
-       0x911999d1, 0xda4b5ed0, 0x7d04eeb7, 0x7e84c5bc, 0x6f2d29db, 0xcbce11fe,
-       0x43090a29, 0x5cbc56dc, 0x5f4d35e1, 0x75def80e, 0xc056cce1, 0xef7775c3,
-       0xb03f3377, 0xd7885e5e, 0x7cabb60f, 0x1b73cb97, 0x1fa7d7ad, 0x29bef5a8,
-       0xcbe54eb9, 0x5187ae7e, 0xb9c072fa, 0x23d383b3, 0xd1c41250, 0xdd6dcbc5,
-       0x1c9c7ef2, 0xd19eff11, 0x9d6f69a4, 0x61a47bc1, 0xa87100b3, 0xde0919af,
-       0x63ee0dd3, 0x85b56dfa, 0xc3ea93f1, 0x2ca9fdec, 0xe3ed1793, 0xf22315e4,
-       0xf9e57f0d, 0xfd114497, 0xdc00af04, 0x27e5a653, 0x5faefd40, 0xd50e901b,
-       0x85b690f7, 0x2a74fc98, 0x94c88c5f, 0x79c1b7ce, 0xa13ce30c, 0x3d741bf7,
-       0x31f18fd9, 0x5ae837ee, 0x9706fccd, 0x6033e3cc, 0x330ecaf3, 0xb7197ffb,
-       0xf14aafff, 0xae8332fd, 0xc64ff16b, 0x1e75dda3, 0xd65a61f1, 0xc71bb7a0,
-       0xbfccbdec, 0x78af0554, 0xcc05fbb3, 0x8fb1a7df, 0xae523bc1, 0xce18a906,
-       0x5ce25ca5, 0x15d97c0e, 0x16fdd0a4, 0xbbf9eb4d, 0x802882c3, 0x4ead213c,
-       0xac7ec0b1, 0x012717aa, 0x45eb05bd, 0x5bb88f7c, 0xd7e7e00e, 0x29ffce25,
-       0x8e3042c8, 0x77f3d69a, 0x96fed57b, 0xa9023111, 0x9574b028, 0xdbd49a53,
-       0x57f6a8b9, 0xc653ac6f, 0x4034be83, 0x25ecbb44, 0xe01333d9, 0x8f29297a,
-       0xbd645c40, 0x1261aebd, 0xbf1c472b, 0xb17a8e64, 0x1312dbfc, 0x092b88d8,
-       0xfcdbd9f8, 0xdb878edc, 0x3838c6bc, 0xe3f3d9c6, 0x88cb3ee3, 0xa0e6686f,
-       0x6f92719e, 0x69733e73, 0xbfbf2e4d, 0xaeaee0c0, 0x067f597f, 0x4b007137,
-       0x9e280e07, 0x303ffb09, 0xa04d8651, 0xd223b329, 0x07fce095, 0xef053b7e,
-       0xb7cfc513, 0xc023841e, 0xbdecd5ab, 0xff3aaf8f, 0xddff79f8, 0xcce9c69a,
-       0x5f780193, 0x3df194e6, 0x17d96baf, 0x705cb972, 0xd6a1fe2d, 0x07f806fb,
-       0x1b578bd3, 0x13adbc78, 0x97bc08f9, 0x04a77f08, 0x9e08aef7, 0x79d5a1df,
-       0x06d5aeb0, 0xc27e1f7c, 0xef9e1b74, 0xfbd987b5, 0xdb4b3576, 0xad9ce1b3,
-       0xf7c76e2d, 0x0de1e36b, 0xfe5495b3, 0x49cdeb43, 0x1c6ef821, 0x79fbd069,
-       0x3cb3fa7a, 0xd3e03645, 0x37aec8c6, 0x654338e9, 0xd7c858df, 0x02ee8d2e,
-       0x91e3b579, 0x5e404af7, 0xd26f539b, 0x2792a7c5, 0xd2227ef4, 0x65768490,
-       0x5effa4d2, 0x5dae39be, 0x2351bf0f, 0xd97ae3e2, 0x7be80c37, 0xd3f9839c,
-       0xef88a549, 0x01db75fc, 0xe1ce1a9e, 0xeed3cee7, 0xee7d03ef, 0xef67ad2f,
-       0xf77aef59, 0x2fec02f7, 0xbe6ad7dd, 0x7df617bf, 0xb7f60f2b, 0xf2b7cf63,
-       0x1bd77f60, 0x3f403d1b, 0x0f9f153b, 0xefa73cfc, 0xa39ca2f0, 0x0b5c45c6,
-       0x275d172f, 0xe6fa2e5e, 0xe7aaf2f0, 0xcaa6c05a, 0x5ced5f49, 0x9ead3f83,
-       0x218af87d, 0x34bf4668, 0x3d98ffc3, 0xf077fcec, 0x0a2cb95c, 0xabe8f7e0,
-       0xae5c51bf, 0x104850cc, 0xc54513ec, 0xe8aed8ed, 0xdc809173, 0xf179caa4,
-       0x9f09f870, 0x4f36f3ff, 0x5f879c02, 0xce5aeed7, 0x4fa128eb, 0x43b9fc99,
-       0x6bbb3370, 0x1dd5c598, 0x9d82752a, 0xd9885cf5, 0xb1f76b5d, 0x422bea77,
-       0x5df0446f, 0x09c156f3, 0x8ec541fa, 0xeef01c0f, 0xae4e2690, 0x448ce819,
-       0x9deceff5, 0x40729d0b, 0xb79d1bbc, 0x6b78e415, 0x7a06544a, 0xf1172da8,
-       0x295ab3dd, 0xb5bcf18a, 0x241dc429, 0xf5ea5f20, 0x6c2e352d, 0xba465793,
-       0xdecad4d9, 0x7d934ca1, 0x0f11fdb9, 0x6dfbe3fb, 0xb7edfd2a, 0xf800fe79,
-       0x7ad3f31b, 0x8b576c5a, 0xc32ff91b, 0x617fe636, 0xccd97fe5, 0x6e3502e4,
-       0xce8ff544, 0xf3eef1e7, 0xf83bbc79, 0xf81a236d, 0x9b56df82, 0xd5b6fd57,
-       0x88322f10, 0xe5b56df9, 0x8d687edd, 0xae5b56df, 0xe889178d, 0x93234df8,
-       0x310b0d77, 0x25d2864e, 0x579163c6, 0x88ced505, 0x74a7e9f4, 0x0c6464b0,
-       0xf0fdd57f, 0x12b87f97, 0x3cfcf3e2, 0xf01ab2ee, 0x61c60477, 0x5fc04c46,
-       0x355f14c3, 0x4b6a2efc, 0x7d7374e4, 0x37e8c8f6, 0xedf1df4c, 0xe3c7573f,
-       0xb3aead74, 0x02ad5d7b, 0x75b8c3a3, 0xf189ebc5, 0xcf5569f6, 0x4bdf16bb,
-       0xdf1f5fb6, 0xabfdeb53, 0xfdb65ef9, 0xbef7c39f, 0x47fffb29, 0x3034c6ae,
-       0xe87b3e05, 0xd083df87, 0xad8312a4, 0x4c9477fb, 0xae3fe1d7, 0x437062d9,
-       0x21cd4ddc, 0xaaf21bbb, 0x7fde323f, 0x94f64958, 0xfde3c800, 0x5710d588,
-       0xfedae831, 0xb77b62c4, 0xfb573d5f, 0xb151785e, 0x61bf5f9e, 0xa7d934fb,
-       0x02e2d3c1, 0x82f7e02a, 0x24148ab7, 0xa9f638da, 0x7eb7e676, 0x9fefbf83,
-       0x88069321, 0x6eda7893, 0x14467bc5, 0xa62e306b, 0x6e9dead8, 0x9afc0d1f,
-       0x83d9efc1, 0x0b8812f7, 0xc618d67e, 0x1ac13efb, 0x5727de1b, 0xff6a23ed,
-       0xa97ea96f, 0xcd73e06b, 0xcd73e275, 0xf1cf8c37, 0xe3ab17ed, 0x61dfaf5d,
-       0x06918503, 0xb3f1e3df, 0xf17d76af, 0xef765581, 0x91d23b72, 0x5eb9ef07,
-       0x11e8ff2f, 0xf1b92987, 0x4dc41d5e, 0xfc559c42, 0x74f7a87e, 0x6b70b954,
-       0x97a1fb9f, 0xc57eb707, 0x3c96b8fd, 0x0de2a4f8, 0x8f4f7ac1, 0x3e81e4f7,
-       0xeccecabb, 0x0ccd9b2e, 0x0c0b372f, 0x13e07b1f, 0xe2a3efbf, 0xf5fb01d5,
-       0x7ad43bd9, 0x78fe6aff, 0x2d7c2ed4, 0x69fc077b, 0x886c90f1, 0x7d767be2,
-       0xfe9ec7f2, 0x5977162e, 0x517a86dc, 0xef8090f4, 0xf6f3ab33, 0xd63b31b7,
-       0xd45c39ef, 0x1cb8fbef, 0xfcf0e398, 0xf10a9ec1, 0x8f028a49, 0x59028c3b,
-       0x2f28e40e, 0x0da9378b, 0xda8fb8b3, 0x70e304a5, 0xb511fbd4, 0xc809532d,
-       0xbecd0b6d, 0x55fb433f, 0x8682d9ef, 0x4fa3b004, 0x75a72023, 0x37f2cbbe,
-       0x401f7d9b, 0x3b697fb9, 0xa69bfdda, 0xa138c79d, 0x5d3f2fa2, 0x3a5df609,
-       0xa40bb45f, 0xd3f7f498, 0xc7c60e1d, 0x50ead4d4, 0x7b41ebe1, 0xfb950778,
-       0xa7f2de40, 0x5f609c78, 0x56cded50, 0xe1da1b57, 0x6732f76b, 0xad81915f,
-       0x9fda3c87, 0x8ef6d1f9, 0xe415fc2f, 0x9042e6c3, 0xb7de8b57, 0xe3a8fda1,
-       0x138c2c91, 0xbbeacc78, 0x1f6af80c, 0xe40bba15, 0x0e3a1ccb, 0x7b1dadc8,
-       0x79842aee, 0xe0a17d77, 0xccecbaba, 0x24f5d0bf, 0xcaf88999, 0x665dd1ed,
-       0x9f022786, 0x666ad76f, 0xba1e0a9f, 0xdd03bf91, 0x38368f6d, 0xd1ecc746,
-       0xa5407cf1, 0x08fbeeff, 0x1ff414b3, 0xbd61fcab, 0xeaa39d91, 0xeece77f9,
-       0x3c16f1e2, 0x2a75aeae, 0x79e0d78b, 0xf8554f1b, 0xe3bb6f3e, 0x9cf3ac1c,
-       0xdec7fa5d, 0xe24cbec3, 0x2fd8e7fd, 0xe36939c4, 0xdfe0add5, 0x53897b01,
-       0x37b2bc46, 0xa1dfe610, 0xf9f20578, 0x09b6d16d, 0x839d7409, 0x01b7229b,
-       0x165f0fbc, 0x53a0bbd9, 0x92f78b7f, 0xde360413, 0x57da27a0, 0x8afb050f,
-       0xc36fedf3, 0x9d1abad6, 0x5b92e0c5, 0x870ef668, 0xd52241b8, 0xc578c3e5,
-       0x3c5918ef, 0xda2b21df, 0xabb29a09, 0xbb691273, 0x684cf7ce, 0x03e789af,
-       0xcb241a6a, 0x606f8e31, 0x0ed01fcb, 0xe82bdf6f, 0x93a6a6e0, 0xf7e6361c,
-       0x6095b609, 0x296dc9ac, 0x0e6e77ec, 0x7f041fbd, 0x5f1ab4bd, 0x46f52486,
-       0x7572088f, 0x7b411970, 0xa72690e4, 0xc395fb08, 0x0eba44e3, 0x1f08cfff,
-       0xddaa9f9e, 0x64a9843d, 0x7a095f6c, 0xfdacb495, 0xc7ec20f6, 0xb6b144de,
-       0xd68bfa00, 0x12b27c32, 0x5a739f38, 0x95bf2d06, 0x9c1a73e6, 0x7aea3fe8,
-       0x0de30ab5, 0x439d7483, 0xa167597a, 0xdce5c583, 0xa520e3c8, 0xfc115643,
-       0xb85ad2d2, 0x5341440d, 0xd29671ef, 0x129c43f6, 0xc38e7de2, 0xd4f00b37,
-       0x5902f9ca, 0x9c7f4162, 0x6d78625d, 0x8bdef25f, 0x55bfcf10, 0x1d4fef66,
-       0x34e37c3d, 0x96addfb4, 0xc6ab5ed0, 0x74e02e51, 0x47de13dc, 0xe0725e31,
-       0xbf303fa1, 0xfa0b1d0d, 0x3f0c8c97, 0xf829d5a4, 0xc87fe07e, 0xfd0b8c3e,
-       0x80c47d76, 0xe9e728fe, 0xaeb92667, 0xebc4b7ad, 0x891ccb29, 0x622e295f,
-       0x3d9be399, 0x3fdbe24f, 0x55f78eae, 0xd7a210f5, 0x63e87acf, 0x5c7572f1,
-       0x0ee4befb, 0xf542ee35, 0x504f1177, 0xcc526f17, 0xbe8a21c7, 0xef0b6abf,
-       0x50a3c78f, 0xf205c439, 0xd70ada4e, 0x8ebf8832, 0xdfa098fe, 0x09978d46,
-       0x9738b316, 0xbde0a8a0, 0x88d20cab, 0x48fd3271, 0x1ed01044, 0xd3b6e2c6,
-       0xb6865e21, 0x8818ef5b, 0xee216ffd, 0x41f20306, 0xa4abbe17, 0xfdd055c6,
-       0xd3243a41, 0xc13f1e64, 0x566b37f0, 0x70e2085a, 0x9f7edcfd, 0x7f1f2b35,
-       0x3f135567, 0x33feecc1, 0x7d4f882d, 0x10aa53de, 0xd6253df9, 0x1710d36f,
-       0x4d7ff3de, 0x693e6bb5, 0xe2e3ed67, 0xaa38542c, 0xfc2a1671, 0xf14c7bd4,
-       0x79314c70, 0x57bc02df, 0x7dd425e3, 0x0d8fdeee, 0x55d82ecc, 0x1cbbe221,
-       0x155d7f6a, 0xdc83679f, 0x626adc50, 0xefd712f8, 0xaefbeea6, 0x67c63321,
-       0x96bd7df3, 0xdfbeaa1c, 0x23bf9475, 0xd7bf8c75, 0xc21665de, 0x399f8006,
-       0xc9381b3a, 0xee4784f6, 0x5d817b84, 0xdc3668f6, 0x78dcdc2b, 0xa7cc24ff,
-       0xfe424f46, 0xc3ff84b5, 0x5ba243f2, 0x89e19ee1, 0x1e58b3a7, 0x908b2e70,
-       0x49848e33, 0xe07f82c1, 0xe3d73a5c, 0x022e1a77, 0xfb486b1c, 0xd3b436ca,
-       0x146973f0, 0xa26463e3, 0x44ecc429, 0x13ffdc2e, 0x631dec99, 0xbdc0fe5b,
-       0xdfde506d, 0x5a2df684, 0x627bf88e, 0xee5678c8, 0xfa4dfb62, 0x029c59db,
-       0x13d33dff, 0x1fd1e3b9, 0x4df8035e, 0x462b85e5, 0xc740989f, 0xe1b420bf,
-       0xee27593b, 0xe00161f8, 0x8ffd85eb, 0xe2b9060e, 0x77f7b94e, 0x72731ee1,
-       0x7ec8c239, 0xa34de5f7, 0xf9409acf, 0xb3ad1fc3, 0xff69124b, 0xcbc79333,
-       0xe0ef3089, 0x51eef8f3, 0xc4bfdf2a, 0x4bee4c19, 0x2015e89c, 0x3363f17e,
-       0x1f54b3a3, 0xe2063dfb, 0x3ddc219b, 0x12d7235c, 0xc4113bf6, 0x7b804ae7,
-       0x68eff108, 0x6b5e12dc, 0xf7f73900, 0x780ce881, 0xfefd5552, 0x38f7a107,
-       0xc604828b, 0x5c19a6c7, 0x141f01c3, 0x29cdf1b1, 0x2bc6c4b7, 0xfbf17048,
-       0x70a375c5, 0x51ba86dc, 0x28f4c7a0, 0xd072d1b7, 0xe5a09e93, 0x97297bc3,
-       0xd67afb78, 0x938ef35e, 0xa974e01b, 0x2fbc03f4, 0x04eb38b4, 0xc27647be,
-       0x0ef03c48, 0xfb93304e, 0x0739e8f5, 0x273c7dfb, 0x3b4fc591, 0x40704c37,
-       0xffdb107e, 0xfd0848bb, 0xb06653bc, 0x21df597b, 0xb4edf56d, 0xfa199dde,
-       0xcbb963df, 0x277fcfa5, 0xc29f9f5f, 0xebbe07e3, 0x1eff7fd6, 0x0f804a89,
-       0xffa31fdf, 0x441797dd, 0x0be0094f, 0x2f8c27e5, 0x2aee3c0a, 0xf9c20845,
-       0x2c81e37e, 0xc61a9ef5, 0xf5c0bdb3, 0x7fbf3f11, 0x91aa6701, 0x8586e3ae,
-       0x1bdc9dec, 0x93928833, 0xf92bfc04, 0xf07bbe08, 0xa729f711, 0xf4789bc0,
-       0xd713a97b, 0xf419e2af, 0x1f7c3b75, 0xe2e0cf9d, 0xd2538321, 0x418eefd8,
-       0x6b2309d9, 0x84b1fc1b, 0x7d684e7c, 0x3e2c6ff3, 0xf184bc62, 0xd7ab0277,
-       0x4ff86665, 0xfefc524f, 0xe21ede53, 0x27c89caa, 0x4abfdc2d, 0x8be85df0,
-       0x78d8d2a3, 0xfa8b0f1c, 0x5bc01629, 0x7cbb5df5, 0x1bf6e127, 0x7069a64a,
-       0xe794103e, 0xfd54bc54, 0x3c380348, 0x7f327e28, 0x1f872671, 0x06f7f091,
-       0xcfda8932, 0xadc61374, 0x04bafcf1, 0xde2a6f46, 0xb5ec7fae, 0x5f00a737,
-       0xc03f5c12, 0x3bb2ee7e, 0x74f9bd61, 0x804999ac, 0x78d829bf, 0xf449e707,
-       0x247927bb, 0x8c5d8798, 0xb09a1b18, 0xbf7f307c, 0x4fa4fa6c, 0xfe1a4866,
-       0x61adfb45, 0xfdf55afd, 0x459ba3c2, 0x68337e9a, 0x7e9a49bf, 0xf2c2689f,
-       0xbfe5fbbe, 0xe7e92147, 0xaf8fb6a7, 0xf3f5ea4f, 0x7c7dabec, 0x14f7f53d,
-       0x4df87326, 0xf329e356, 0x640f71f5, 0x7e615b8c, 0xc39c7d6c, 0x8edf1c9b,
-       0x306dff5b, 0x09250be8, 0x2844a70f, 0x1a524c3d, 0xf408dbeb, 0xd0fa461b,
-       0x802ff5d0, 0x7e652e2e, 0xb6fbbf80, 0xd989e078, 0x97a519d0, 0x7ba309dd,
-       0xe7c547ce, 0x3c5179ee, 0xf1543c06, 0xdd9e7e38, 0x30bdfc78, 0xa16d7206,
-       0xaaa407f2, 0x9d48423c, 0x0d70eb80, 0x2283ad88, 0x87528961, 0x22b37ff3,
-       0x33bdf388, 0xff8c19f1, 0x3be49319, 0x799af302, 0x3dec27d3, 0xa1d28c93,
-       0xf9d10720, 0xfd484d1e, 0x355f377f, 0xe1dc796e, 0xbd82373b, 0xe3ee9bb4,
-       0x5fed5ce8, 0xf234d395, 0x2af73b15, 0xf2be5545, 0x19642900, 0xe57cb832,
-       0xacd678c2, 0xf10dcb80, 0x8af91aaa, 0x44d547c9, 0xeece07bd, 0xa060fced,
-       0x987abe5e, 0xb76ebc60, 0x271a557c, 0xede3cd5f, 0xc42092a7, 0x93d936c5,
-       0x805e2c42, 0x162d39ce, 0x8db4dbff, 0xb74d8dc9, 0x82419cb8, 0x33d31672,
-       0xe87bf166, 0x6bde4cb9, 0x77c98fba, 0xbaea1ce3, 0x6b78fa2c, 0x133567ee,
-       0xb8b12f2a, 0x99abb40c, 0xa5d97d9d, 0xb53576f4, 0xf202ffde, 0x007f0832,
-       0x00007f08, 0x00088b1f, 0x00000000, 0x7de5ff00, 0xd5547c09, 0x73b9f8b9,
-       0x64cacb67, 0x109848df, 0x424e3b08, 0x875b3612, 0xe22948b0, 0x3cb888b0,
-       0x4240b21c, 0x3eb44196, 0xc33fedad, 0x0d220222, 0xc168d46d, 0x2a14180e,
-       0x0431a0d8, 0xa4587049, 0x141a87d0, 0x2f1f682d, 0x48145840, 0xad88a0c6,
-       0xbefbffcb, 0xef726e73, 0xf6b42264, 0xfa7fb6ff, 0xef7397b3, 0x6df3be59,
-       0x39ce5be7, 0xd78deec3, 0x1ec658b1, 0xacc630b4, 0x98eb458c, 0xb19436b3,
-       0x96eff0ef, 0x95e5e7ae, 0x6289e63a, 0xa31574ac, 0x47d7e5e7, 0x7a83cfa6,
-       0x4c8c7697, 0x66e783cf, 0x92d433b3, 0x50e158cd, 0x2fa18a7b, 0x7b46f963,
-       0x9b19933a, 0xbeb45e64, 0xcc9eba19, 0xd393f516, 0x5b09fb18, 0xcf074c74,
-       0x48ce9151, 0xc8673fac, 0x287a2967, 0x0379f8b3, 0xfd8c611c, 0xc28f675e,
-       0x19b98cf7, 0x718535c2, 0x4398a6b8, 0xf870f2bd, 0xa5c340f7, 0xfe8c8196,
-       0x1c7183be, 0x4b6f6726, 0x1155630c, 0x67971fb5, 0xa35cf631, 0xe2b6e6c9,
-       0xec1496d7, 0x11deb18f, 0x043086e7, 0x543ce185, 0x39e814f0, 0x4cb2d13c,
-       0x040bf4f0, 0xc65e630f, 0x68e0ba72, 0x94ae8437, 0xb1e0a97a, 0x00d17eb3,
-       0xc7be24a7, 0x06895ab1, 0x6a5383f3, 0x1257e3fc, 0x33d38fd4, 0x63265877,
-       0xea97981b, 0x1ce75efd, 0xb3c6e381, 0xb8e1894a, 0x112b6c2b, 0x96e0dd4f,
-       0xbf30c901, 0x1ec977d9, 0x0ae60c13, 0x7ace1f09, 0xd4fb3d61, 0xba7f1804,
-       0x2af67f18, 0xac0884c7, 0x78e25d37, 0x00ffc2f0, 0xfbe219fe, 0xa9b2c6f4,
-       0x3198e00c, 0x13ba70c1, 0xa66ff83e, 0x0181ba65, 0xc2a6b39c, 0x7bd7737b,
-       0x61d2209c, 0x2cffd28e, 0x6c39bb6d, 0x387267cd, 0x10191696, 0xd5ee735f,
-       0x09669f7e, 0x42173e8b, 0x077c076d, 0x60603af3, 0x79f68f34, 0xe609b3cc,
-       0x82cc56f1, 0x3347f7f5, 0x43b7e036, 0x7fe86533, 0xcd716c62, 0xf4bf283a,
-       0xbf2a60dc, 0x83cf7b15, 0xf3fbf147, 0xa09e54e9, 0x6e504683, 0xb3ce99ff,
-       0x9cd01529, 0x5494d773, 0x9040ff18, 0x467ef7e8, 0x9d83e3ef, 0x5ea1d355,
-       0x99bef0fc, 0x04d3e0cb, 0x0aede323, 0xde9ff7f9, 0x9ce54614, 0x191eacfb,
-       0x6c109cba, 0x30f7d375, 0xaa09b6c9, 0xd130c91e, 0x53e361f7, 0xccbef7f9,
-       0xe7df851e, 0x23fb5185, 0x0b5e2199, 0x47f2f78c, 0x01fbe883, 0x0eb9b3e9,
-       0x595b5120, 0x52e91ea8, 0xe336689e, 0xc940c873, 0x3df0083b, 0x5f8c5221,
-       0x353de7c6, 0xca226b73, 0xdf5c84cd, 0x6850c75c, 0x670e6897, 0xfe1f1137,
-       0x8879f90c, 0x34aadc6d, 0x5f16afe4, 0x150f9a8a, 0xf8574f3a, 0xcf96826f,
-       0xc51e7e40, 0xfa9f0af6, 0x87c2a7f3, 0xea0b3e1a, 0xb97f33e2, 0xd7009e57,
-       0xb18f924a, 0x97721f20, 0xe38e747c, 0xe3fe2727, 0xf8bf24f6, 0xdca2c527,
-       0xc2777f88, 0xd0f24b57, 0xb9e9b99b, 0xcb83e501, 0x8708b3cb, 0xc56cd751,
-       0xdb247df7, 0x33c20b60, 0x0c7666ca, 0x0a372eeb, 0x783ac97c, 0x2e1dd991,
-       0x3943d3fc, 0x45fe7589, 0xb8e0e747, 0xb3b43bfc, 0xb82ec8b3, 0xa4adfc60,
-       0x7870569f, 0xb88b4836, 0xd09763bc, 0x5768b94f, 0x41b7ccae, 0x0678df3b,
-       0x2ffa8778, 0xc4967ec4, 0xfe18dddb, 0x82b87995, 0x4f81ee41, 0x611d9966,
-       0x1dd39846, 0xb724f911, 0xebf73277, 0xb38f8011, 0xc2136706, 0xae643c77,
-       0xed7e1191, 0xf757a146, 0x74285f20, 0xc7f4e052, 0x7a0f794f, 0xfe1e7fcd,
-       0x57a2e978, 0x133e0273, 0x2b2a22d8, 0x79e1bdf3, 0xae5e0ff6, 0x69bdf983,
-       0x147c9df0, 0x6fcdebe4, 0xeb3736cc, 0x20cdf382, 0xbc3d12eb, 0xd992ff77,
-       0xb3e00736, 0x051f8168, 0xb32e772e, 0xcebeb19b, 0x8a9659ec, 0xe06af674,
-       0xcfe88fca, 0x7f174c58, 0x5eeb31c5, 0x2afb3154, 0x3d56b6ec, 0x57a487ad,
-       0xcf50c2d8, 0xab9f6866, 0x99c4e5e7, 0x50a59eb1, 0xdce8f76e, 0x3c6f1806,
-       0x347375e8, 0xefe74fbe, 0x38230b59, 0xc20b3147, 0x90011559, 0xbbaaf7c2,
-       0xd1c03dd2, 0xd95bfeac, 0x7ddf041d, 0x0fa4c1c5, 0xc16032aa, 0x83efc2cb,
-       0x896efbe9, 0xd62ee38f, 0xd355b8d1, 0xeaa8feb9, 0x53b8f16f, 0x54ceb271,
-       0x8daaf7e4, 0xd04884f6, 0x5b328923, 0xa47a0b54, 0xf0ca152a, 0xeec65d8c,
-       0xf4c47d43, 0xc3d3e1f6, 0x78fbf0ba, 0x11deb8d8, 0x84b71fc0, 0x96fe75f3,
-       0x2af9ccb5, 0x29b563d6, 0xd57587d3, 0x00008a8b, 0xd4305eb0, 0x596efe83,
-       0x6286f50d, 0xac2f507f, 0x83763d7b, 0x68a7c476, 0xac608c47, 0x9f11d858,
-       0x8299dd6e, 0x9b27c476, 0xa9e4a677, 0xd8945fea, 0xbfd71c1c, 0xbc656f7d,
-       0x66ec67ca, 0xa0926f18, 0xf98724fb, 0x50eb8494, 0xe77b44fc, 0x1a7c85fa,
-       0x0235bf61, 0xef9061f5, 0xb47ba445, 0xf90e77d1, 0x6261bd8a, 0xa3ae199b,
-       0x1a5d72be, 0xf7876faf, 0x1bc8efe5, 0xdb7e0357, 0xdbfe3862, 0xbe041976,
-       0x2dff9e5b, 0x0c34af94, 0x3c61ab60, 0x0231bc17, 0xd71cbbff, 0x853d702a,
-       0xbfce333f, 0x57112854, 0x55d98983, 0xfc1b60eb, 0xc5d99457, 0xd04ced2f,
-       0xe88421b7, 0x1b372e5b, 0x75caff91, 0x70875d92, 0x59ec1c2c, 0xa7e97526,
-       0xe8af4512, 0x132972d8, 0x262cede9, 0x9827bcbe, 0xfdf0966d, 0x80c5f4e9,
-       0x9af352af, 0xa18f5c66, 0xd70901de, 0xb407a41c, 0x53ed885f, 0xbcb3e3bb,
-       0xad54e00e, 0xb4dba5f7, 0xc6642f70, 0x0784efae, 0xd7cbc937, 0xc414e706,
-       0xb730596b, 0xcd4b2e43, 0xf03f0839, 0xf017b79d, 0x2649afa9, 0xc0c426be,
-       0xbe8a79f8, 0xdc7ce6a9, 0xb3c7d55e, 0x09e7be04, 0xca35e5ba, 0x0b3c135e,
-       0x5a7bbce3, 0x2d4addb0, 0xfbc74b1d, 0x3952ea0e, 0x1ea38e1e, 0x4dc152af,
-       0xa7054e7a, 0xa25cbddc, 0x7d45eef7, 0xc63f3fe0, 0xeba935be, 0x4ab689dd,
-       0xe709f236, 0xf495667b, 0x0797d066, 0x4ca15d05, 0xe62499f3, 0xf5f23466,
-       0x14ef9fdb, 0xd08eaefc, 0x8eba3971, 0xbe412dbc, 0xbcbeb98e, 0xb3fef529,
-       0xdff56de4, 0x06ec6f29, 0x8267c1d7, 0xf8083b98, 0xd8ca5ab3, 0xfab27a8b,
-       0x465b6636, 0x37ebb55f, 0x088673ac, 0xc035fd7c, 0x85987403, 0x9d7906ff,
-       0xad3f7d1d, 0xfc97607b, 0x9cd9f516, 0x776ec201, 0x2424bb70, 0x9b19f38b,
-       0x61fd3cc0, 0x1ca2610a, 0x23d9b932, 0x1eb91f03, 0x006765ce, 0xf8fb311f,
-       0x32f5f2fb, 0xe51375d9, 0xa865d8bf, 0x659431db, 0x5cc80582, 0xd53f4417,
-       0xa633f512, 0x24fee371, 0x6e4c4728, 0x7016464e, 0x6674bc3d, 0x9c0208eb,
-       0xd058b1e8, 0xdfe1f163, 0x67c5bd50, 0x7d827979, 0x57942f60, 0x799921d7,
-       0xa1c761a0, 0x2f2c7a99, 0x28b125d8, 0x104cf718, 0xd501a397, 0xc955663a,
-       0x304f20e3, 0x75f8aab3, 0x4d4896c8, 0xa26d5879, 0x0d4dfea6, 0x33df357d,
-       0xdf3583bc, 0xd4ca1c47, 0xc79bb394, 0x3c8fea68, 0x8f29ab9e, 0xa9a2996e,
-       0x0cc2f63f, 0xbe47f94d, 0x99f535bb, 0x103cdedb, 0xe82050f0, 0x8a0ff8af,
-       0x5ae5bafe, 0x2c3da69e, 0xe8095ec7, 0xb15fc85a, 0xc80b3582, 0x2d07193f,
-       0xc896fdd4, 0x8da20e6b, 0xf5a95856, 0x6b54164f, 0x1b0dc5cb, 0x5609408d,
-       0x2fbed1ec, 0x0f2da2d9, 0x43a79e88, 0x011b3abe, 0xf820c9fe, 0x428b1447,
-       0x2ec9eff9, 0x44efa7f1, 0x00758fe1, 0x7e8098df, 0x33dface9, 0x7d234737,
-       0xdf03cc0d, 0x7e05b03b, 0xf5c1be07, 0x03d0e3a3, 0x8523e43a, 0x3278fede,
-       0x1ee96bc5, 0x3dd2d564, 0xee96a064, 0xdd2d3661, 0xd2d28d7b, 0xa5aec23d,
-       0x2d64d47b, 0x5a1c63dd, 0xd1cdc7ba, 0xa9c13dd2, 0x91527ba5, 0x8bc9ee96,
-       0xf3ef74b4, 0xa9ae96b0, 0xbe5a85ee, 0xc503e3f0, 0xb95b4b4e, 0x8e9eafd8,
-       0xe0fcd4e9, 0x40ca9a28, 0xfcaff4cf, 0x7fffa6b9, 0x45a43f36, 0x92353f0a,
-       0x7e477e45, 0x645fbd86, 0x46ff7776, 0x7f6a6bd1, 0x65d39f42, 0xefa4f67f,
-       0xd3cbd9ba, 0x47a09c78, 0xdc9ad97b, 0xf5272f65, 0x982797cc, 0x4bd689bb,
-       0xf08746b6, 0x70e165dd, 0xa357c15c, 0xd59bbb19, 0x13dfb01a, 0xc0146750,
-       0x03e7027b, 0x9acbdfe3, 0xe65cfde9, 0x5993a7a3, 0x63ccf88c, 0x30167a36,
-       0xe8a73d07, 0x1e22b79c, 0x392dcd4a, 0xceaf6fa8, 0x42527a3b, 0x21448ea0,
-       0x2f23dfd0, 0x4ea75a6e, 0xd999cc57, 0xd6b18fda, 0xb44ce70a, 0x16e33ba7,
-       0x568d6676, 0xbc6f2de1, 0x7a8f5034, 0xa1b60e56, 0xa777943d, 0xde6cf644,
-       0x3739fc97, 0xfe43af92, 0x2b0f65cf, 0xfe14ab78, 0x1e43f707, 0xbb0ab48e,
-       0xc943399e, 0x7059b3be, 0xb8fe805d, 0x9182ff3d, 0x82582eec, 0x2e80d7f5,
-       0x4f4e24db, 0x4dda2ba4, 0x7cccf4c3, 0x9843ca0d, 0x27ccfc93, 0x7892a0f4,
-       0x1fb1833f, 0xa0dbda17, 0x75234a02, 0x8e394e34, 0x3cd4f007, 0xaa20cccb,
-       0xe98126ac, 0x9afb4207, 0xf12ca225, 0xbce1fe32, 0x454cdfc9, 0x4d2b6d78,
-       0x4858af64, 0x4ccd923e, 0xe3dc91c4, 0x493ef0dc, 0xed090d06, 0xbfc01bd6,
-       0x6b942488, 0x2198c3e6, 0xfaf99ce2, 0x934c157e, 0x51f8539d, 0x0a2f7c26,
-       0x1dbfdeb4, 0x9595edc9, 0x40efc715, 0xcdef297a, 0x84b3377a, 0xf7825ea2,
-       0xeb31b92a, 0xb0f11d99, 0x533dc2a2, 0xc8d9ff5d, 0xf1e7ea48, 0x4e2d8bde,
-       0xdf723ef8, 0x720428a2, 0xd9739067, 0x10a1658f, 0xe9458962, 0x069ad46f,
-       0x1ec3fb99, 0x919afd19, 0xd4e7f5c7, 0x2dd1a471, 0x0bd8f2da, 0x0f42b2da,
-       0xc177f376, 0x82650728, 0x00f14caf, 0x195eaa97, 0x67c0f63a, 0x0fdcf165,
-       0x84c1be63, 0x1b90a377, 0x0de49d53, 0xc130f902, 0x0a61925c, 0x9ccc0c2b,
-       0xedeb7480, 0x6e5da0b4, 0xd0ebd44c, 0x2ff2603f, 0xf800ce6c, 0x78a69e53,
-       0x7eb555fd, 0x17ea03f9, 0x48d86bb0, 0xdff11236, 0x41e02f09, 0x1a3a7802,
-       0x46ae36e2, 0xcdcc9c78, 0x613603cb, 0xb3fea7b9, 0x7a59becd, 0x0b6cc110,
-       0xbc3fc67f, 0x447e9674, 0xa3af7af7, 0x64e3075d, 0xd93db8eb, 0x8e5cde9d,
-       0x6bb3e93a, 0x01646c81, 0xb0d553e8, 0x7fd4e3ff, 0x25793e9c, 0x51e22ba9,
-       0x6fc092ee, 0xcd698787, 0xf8009612, 0xc75aac2e, 0x092e3f90, 0x8f325c38,
-       0x24d7b1c3, 0xb5e8a7aa, 0x10022c97, 0x875a1af3, 0x62f04407, 0x0eb72f7a,
-       0x6bd2f2e5, 0x2fae88bd, 0xf1474efe, 0xa3cc41b8, 0x610cf9c3, 0x8c3efa5e,
-       0x26f950b5, 0x67281514, 0xdbf12b30, 0xbb23e608, 0x2b5cf411, 0xd972b9ea,
-       0x2820bbf9, 0xbe764e5f, 0xe84e7a44, 0x4fc174fd, 0xaf7e8ae9, 0xddc7fbd6,
-       0xf8a48d3e, 0xad0b6f4a, 0x54ce4223, 0x3af82674, 0x7f91448e, 0xe768e209,
-       0x544db4e5, 0xc688303e, 0x587c1429, 0x8d88ec98, 0xc5ebd154, 0xf5336b8a,
-       0x7802f92a, 0x5bbf28ec, 0x4d66822a, 0xa397bd50, 0x32071e38, 0xa18fd5df,
-       0x2175f9ff, 0xe047b436, 0xf97ec68d, 0x4729c90f, 0x5b97bc01, 0x9a3af5ac,
-       0xf50ea567, 0x24efd962, 0x33c01cf6, 0x66b97180, 0x7035e2fd, 0x9848a96d,
-       0xf9f40135, 0x0fdc917b, 0x1c7cc971, 0xe28433b6, 0x8cc98531, 0x853f4385,
-       0x7c91a7af, 0x0bd0c40d, 0xcc32b1c2, 0x8c2f7683, 0xdd95151b, 0xf1ff1e1d,
-       0x35df43df, 0xb733f49b, 0x1ef543bf, 0xdd9973f4, 0x7bc7556e, 0x19bb0b56,
-       0xe39213fc, 0x3b9fd160, 0x7aff7197, 0x84fb8f30, 0x296ae6b2, 0x62f5e7ad,
-       0x9a651a20, 0x014c02f5, 0x36ce5718, 0x16ae5c93, 0x47acc472, 0xe18fe8ad,
-       0x3a184673, 0x8f0e9cfd, 0x1cfbb187, 0x24fd7a2a, 0x3f0baf8a, 0x6a78e289,
-       0x077b7337, 0x2a19f5e3, 0x31af387f, 0x251bec9f, 0xec2edfbe, 0x9503f6c9,
-       0x27e8c1b9, 0xbe388a57, 0x058a9fb0, 0xfa682d2b, 0x4ad78e4d, 0x3e91587d,
-       0xfe7de2f9, 0x535dad4a, 0xf649c5b8, 0x24ecf5cf, 0x09c514c0, 0x49a4edfd,
-       0xd96f4251, 0xefc60658, 0x3b49accf, 0x307a8c18, 0x1e305995, 0x9abf249f,
-       0xf11428b1, 0x871cace0, 0x4f543df2, 0x67afeb72, 0x1a87041e, 0xe245b9e9,
-       0xe7f774f4, 0xd92db4f1, 0xb2dcefdc, 0x7f5a63b7, 0x58cbe7e8, 0xdda52f8e,
-       0x6a06b197, 0x38e828f7, 0xd8cb5f7c, 0x6e7e40e4, 0xc977c091, 0x7a8b2096,
-       0x8dab2a7d, 0x0d5d94d0, 0x7af51609, 0x2c28f640, 0x4c146caa, 0x7e2ba721,
-       0x72d0d653, 0x768ac430, 0xca017381, 0xbfc1fb49, 0x3a250f86, 0xff5072f8,
-       0xf9c7183d, 0x02b6e113, 0x9f743b3c, 0xffd355cd, 0x80bd28d1, 0xffa7af9b,
-       0x2d765c30, 0x1e87975c, 0xe1c29d8b, 0xd5c239fa, 0x8b1d3de6, 0x8cb805f4,
-       0xe476b86a, 0x3f9ff8f2, 0xa1fc9e9e, 0x88f564f0, 0x87df35a7, 0xc0c61da7,
-       0x74126cf0, 0x6e80f97b, 0xfac027b2, 0xcfc849b4, 0x1aef0c3f, 0x6b6dfc3f,
-       0x15618d9e, 0xe1137780, 0x9635be2f, 0x7f021672, 0xe04e22b5, 0xc6fa12ce,
-       0xfd03ba06, 0x7a468fba, 0xead40f50, 0x2c54d459, 0x96d814e7, 0x46af3cc0,
-       0x5da0fb38, 0xfe21eae4, 0x7f8091f2, 0x7014a247, 0xef881ffe, 0xf5e48f7b,
-       0x89ff75c1, 0xf28626e3, 0x09ebe0af, 0x1339ad4b, 0xe6fa37fb, 0xf59cb0db,
-       0x1a1ad9b9, 0xef1d7fa0, 0xf27e57ff, 0x3caff4a1, 0xc81a8ddf, 0x01d247e3,
-       0xfb209419, 0x9ac7cdd5, 0x7f9cc3c7, 0x9d27a595, 0x79e30ffa, 0x79fe36b9,
-       0x762c7bd9, 0x778be71a, 0x4b97df51, 0x876fc367, 0xbdf24bb2, 0x97f31433,
-       0xd7cd2746, 0x6d8991f5, 0xbce7600c, 0x9942f821, 0x057f329f, 0x151fb0ee,
-       0xee0091f4, 0x5a2613b0, 0xf5103e0c, 0x97a07595, 0x5e71a3b0, 0xacdc0eb4,
-       0x6ca071e7, 0x57f7d13d, 0x1c50c6a3, 0x27c88768, 0x291b46fa, 0x870fe95e,
-       0xff8f9a21, 0x9bf7b5c4, 0x8d3f62fb, 0x33e78a06, 0x4cfc4b7d, 0xdbd717e0,
-       0x9427877a, 0x8ef266f8, 0x4763a450, 0x753c0b78, 0xa76a06d1, 0x7287bd43,
-       0x8c9e4d71, 0xc8fdae7a, 0xc55916e7, 0xccb472e7, 0xb9ac6be3, 0xbff42c79,
-       0x30599336, 0xd62a1cbe, 0xad23d0df, 0xe87f0845, 0x249b9fa8, 0x4af6fc55,
-       0xadda8994, 0x6d62fa35, 0x09ab9fd0, 0xf78a051c, 0xb1b118b7, 0x85970782,
-       0xeb3ca1e3, 0xe866e800, 0x4760d1a7, 0x2b68e578, 0x7700a7d7, 0x1e0fbc3d,
-       0x1f25b9f4, 0x78c167bf, 0x87dabb7d, 0x833d3859, 0x439e61b3, 0xb3de5f91,
-       0x97b3c014, 0xdf081cc4, 0x3f5cd183, 0xc455702b, 0xfc02fd71, 0xf114321e,
-       0x7ca3ac9a, 0x66fae3ea, 0x96e3dfc2, 0x8c25967e, 0x79c76ef0, 0x299b46f9,
-       0xed1d56ee, 0xf9c6898c, 0x1e1cd818, 0x8c766cf7, 0x32587c27, 0x07002356,
-       0xf0bd9106, 0xc38bc133, 0xb21cf358, 0x168cb20b, 0xf594475c, 0x8ede8bf9,
-       0xcd37685e, 0xd076e68d, 0xd742b7f9, 0xc0abbae0, 0x2c02b677, 0xb957633a,
-       0x8498e6d0, 0x9ccf9978, 0xe78e502b, 0x551e0157, 0xc0de7efc, 0x16bc2dfb,
-       0xaa51bccc, 0x36eea376, 0x6bc2bb62, 0x760bcce1, 0x5e20f9f7, 0x5f187cef,
-       0xf18ac6cf, 0x33fc156f, 0xea07fa33, 0x7c9f9b31, 0x8bf3f86d, 0x8d8f5c79,
-       0x4995bc45, 0x7bb4462d, 0xabf98ed7, 0xb3e9ed11, 0x4de61615, 0x4679beff,
-       0x9c6aaf31, 0xccd77ace, 0x3ca51f34, 0x5b24f917, 0xc250df3d, 0xf88ad9c3,
-       0x4931e0eb, 0xfeaec783, 0xd8f06afb, 0x1a74ffbd, 0xc0c56cff, 0xa43ff4eb,
-       0x1aadfe87, 0xedfabbf8, 0xedb6e347, 0x04297bcb, 0x779f7bf8, 0x31bb73e9,
-       0x64c7bb1e, 0x373ca131, 0x3f22e6d4, 0xbc0edd5e, 0xd0f4fc04, 0xff28af9e,
-       0xa326d0f8, 0x3768c70d, 0x02dae6f8, 0xcc7eefe8, 0xea8dd6e2, 0xa746167a,
-       0xdffd9d11, 0x0b1ef59b, 0x03cd95c6, 0x375c16f5, 0xb3d9accc, 0x4cd7f894,
-       0x3f8944fa, 0x8b4efd28, 0xccfa3592, 0x5fd9f425, 0x9047cef5, 0x5f3aedde,
-       0x89da1e7d, 0xb70f3f03, 0x41117f92, 0x3f12ba76, 0x892383d0, 0x3989ad76,
-       0xde4de618, 0xa3ba758e, 0x82dfbfa1, 0x411c62b8, 0xc4e3561e, 0x2293fb78,
-       0x5064ffee, 0xa54dbc73, 0xeb45d697, 0xb09d987f, 0xb35f8fd2, 0xcbd17c3f,
-       0xc47583d7, 0x2bf372af, 0xb58bbf08, 0xc55c7918, 0x5e67f64a, 0x94e3c1d6,
-       0xacfc520f, 0x05fbfe95, 0xbfd02392, 0xe11de252, 0x9ae2ace8, 0xd68c36bd,
-       0x5e10fceb, 0x28b7ffce, 0x8a819fca, 0x6ac43d26, 0x162f9e65, 0x310e9671,
-       0xdaf37687, 0xda1ff414, 0xa3ab1e45, 0x46e83f71, 0x4fecae78, 0xf37fcf74,
-       0x9f6869d1, 0x79e33e83, 0x5a30a6ab, 0x624df227, 0x9106279c, 0x9123b17f,
-       0x7ab57fdb, 0xcaa6786f, 0x77bc7c1e, 0x685f736e, 0x7f656977, 0x5dcbda1d,
-       0x0efbcdfa, 0x39dae7f6, 0x574df888, 0x39e9e83f, 0xd7489718, 0xdcebb0d9,
-       0x31eaaffa, 0x16b650de, 0xef1801ec, 0xa469e812, 0xc4feae93, 0x705f5c70,
-       0xcb3f5c6c, 0x9fc893ea, 0xd1f10fcc, 0x60b293fe, 0xea05ba5b, 0x4d8fd7e5,
-       0xf33fbe47, 0x5c14a0e4, 0x58c74e0f, 0xdc4f3053, 0x192024fe, 0x69ba79e6,
-       0x6abf7f00, 0x17d470e4, 0x9c436b61, 0xadfc009e, 0x95fcf7e8, 0x14767226,
-       0xcc48ef3a, 0x7c406b68, 0x7e93320c, 0xf6450507, 0xdf21fe53, 0x17786b0c,
-       0x473f159e, 0xa15ac7c1, 0x3ffe954f, 0x79517a16, 0xd299fac2, 0x31ef7082,
-       0x1ccffd11, 0xc38d7bd1, 0xf1b21ed1, 0xd08556f1, 0x0730f978, 0x29cbc80b,
-       0x8e9d8eb1, 0xbc470eb4, 0x2832ebe7, 0xe443ba0f, 0x7c5956e5, 0xe41eb8e1,
-       0x194ad9eb, 0xbe62afea, 0xf8d508f0, 0xd7b28df9, 0xfbddf448, 0x4d5ff90e,
-       0xabe90c61, 0xfc8c337b, 0xa69bd773, 0x018f684d, 0x6821ddfe, 0x91371e17,
-       0xc9afb2df, 0xfb617644, 0xd7f21089, 0x42c3f1fc, 0x3f48297d, 0x44499bd7,
-       0xdf64f6df, 0x0c8edcf3, 0x680f9862, 0x891cea3f, 0xd1694274, 0x9ec3e3c5,
-       0xd5cd7680, 0xda2f20a6, 0x60f4f035, 0x6acdd07c, 0x9efde9e2, 0x347e8610,
-       0xa8643d3c, 0xe0f17549, 0x1082a0b3, 0xfda99bed, 0x01ce2943, 0x4a1f1fa8,
-       0xb143fe83, 0xbbd52b7d, 0x9379d7da, 0x1221c785, 0xd48978c5, 0x5fb7326f,
-       0x8d39f499, 0xef89fd03, 0x65ddf4cd, 0x79a48e72, 0x36c61c7c, 0x61679806,
-       0xa0bcb6a5, 0xf62e5b5a, 0x5b25cb68, 0x745f65b4, 0x814fd114, 0x7f73e15b,
-       0x70c4a4bc, 0x87c142bb, 0xd2769f3f, 0x61f03af3, 0xcbf1013c, 0x571d391a,
-       0x929aba0f, 0x0f2de387, 0x9753e4d6, 0x3e279d34, 0x9fd8376c, 0x77c075c1,
-       0x9136c0d4, 0xd50360fe, 0xf8ffb6fe, 0xe7adf3dd, 0xbcf5be45, 0x26dadf26,
-       0x160c2ef4, 0x5084f18e, 0xe11c359b, 0xad4ba1d8, 0x3d5f22f5, 0xbe7c4419,
-       0x21cbf716, 0x401baddf, 0x054452f0, 0xf0b3cfc6, 0xfd08cff1, 0x54c5e677,
-       0x642d33ca, 0x4b4fa4b5, 0x44bef399, 0x5887e78c, 0x57ff9073, 0xcdfb02d9,
-       0x27baf8fe, 0x34e3d386, 0x7d8ac6b3, 0x6fcc564d, 0x80bfe114, 0x74fd4504,
-       0xdfbe20f6, 0xd175f48f, 0xd481137a, 0xd8ccf7c9, 0xf3ff9655, 0x0d0077cb,
-       0x3655fe11, 0x67ae3877, 0xde7c2c17, 0x91593f60, 0x9f3245be, 0x8875fa07,
-       0x2f120bc7, 0xd942fa2b, 0xdf00b12f, 0x989e7ccb, 0x518f2fa7, 0xc7ae38fc,
-       0xf75e925c, 0xd693e830, 0xf2386b08, 0xb4aaeb53, 0xb79825c8, 0x66c6b088,
-       0x3aecf0aa, 0xd026bcc0, 0x0946d65f, 0xf0ddbf63, 0xf39223b5, 0x085d6fa3,
-       0x8eaf2bad, 0xf6ab996b, 0x8635ff13, 0xc58f91db, 0x16a6ff70, 0x40ec826d,
-       0x5a74e078, 0xcab4e820, 0xf931fce6, 0x16f57e4b, 0xf412f754, 0xb95f7bf3,
-       0x2f295ffb, 0x0fc55eb5, 0x8a4edeb0, 0x385de3e5, 0x374b7464, 0xfb4a5f91,
-       0x82eb7c9a, 0x70bf6ec8, 0xae3a4a68, 0x82eb4543, 0x155f5122, 0x8b135e1d,
-       0x8db8c8f6, 0x3ae2c58f, 0x6269b055, 0x9fe2533a, 0x482a3e2a, 0x3da3a7b1,
-       0xb6567be4, 0xd5453f60, 0x4ab5c132, 0x167e695f, 0x36ab9fde, 0x24549d90,
-       0xdbd73ae0, 0x2f788e19, 0x11bd33d2, 0xef4e7ef0, 0xf03b270c, 0x2ffc9959,
-       0xbd40f9ff, 0x00ccfa63, 0xfa0b3278, 0x00b48be2, 0x47547bfc, 0x66082a74,
-       0x36e75724, 0xb9edfcf2, 0x587de764, 0x157f056e, 0xaaad77f7, 0x0eb70e2c,
-       0x73f78eed, 0xddf12766, 0x051f3102, 0x28e3feaf, 0xbc476d78, 0xe871fda2,
-       0x2768c9b9, 0x91929eb8, 0xc6ded933, 0x8e47e42b, 0x72789a6b, 0x075fbe2c,
-       0xd7158076, 0xdcefbec7, 0x4ad4eb83, 0x909da199, 0xcb1694d7, 0x57d76a86,
-       0xdef22fb4, 0xa3ae159e, 0x90d31df7, 0x6d5b4e9f, 0xfb2a99b1, 0xcfc11dee,
-       0x5fc974fe, 0xec70b7f7, 0x818d68af, 0xdff057e0, 0xfd93630e, 0x41e21953,
-       0xedef6f3e, 0x7a157ea3, 0x2116fd28, 0x81fe15be, 0x2c63577a, 0x7c795f82,
-       0x99d535b1, 0x0fc00b63, 0xe3037ff3, 0x61d57f62, 0xdcbfcc76, 0xbccab8e8,
-       0xc8aae93b, 0xafd399ad, 0x8a54f9f5, 0xea8eeadf, 0xe9e99369, 0x50535bca,
-       0xfd61f2de, 0x5f3a7f46, 0xfe449df2, 0xe315b285, 0x4aebf9d5, 0xf2f1c3ee,
-       0xf874984f, 0xadcf75bd, 0x3f2e09c3, 0x529e01fa, 0x7b75f102, 0xa6c52faa,
-       0xfbac1fc2, 0x7ccacf24, 0x1c137054, 0xe4307fe0, 0xa054f6ff, 0xbfee4a9b,
-       0xf50f7210, 0x63e2462d, 0x5fc470fb, 0x7e2d7ce7, 0xcdf8b5f3, 0x3e2318f7,
-       0xcd273666, 0x9323e0a7, 0xfc17df0e, 0x28e9a7fa, 0xc7abad9f, 0x235abcd3,
-       0x8e51c3ed, 0xffa0535a, 0x59e7dda1, 0xe7986bf0, 0x6799efd0, 0xabd11065,
-       0xfa4679c7, 0x33df679e, 0xed58c8cf, 0xadeacf3c, 0x5c5fa8e1, 0xfb8664bb,
-       0x8ec95cc3, 0xd97963b5, 0x768614b2, 0x05d0f589, 0xd5e912fa, 0xb8a068d6,
-       0x30ef22a1, 0x83f20dde, 0x35a1f88e, 0x28f4fad7, 0x0b656f5a, 0x575bd9c6,
-       0x51e7788f, 0x95aeb728, 0xb407682d, 0x81fc72e6, 0x0f50ebdc, 0xa638a6b4,
-       0xc18f7951, 0x39fa14b2, 0x0fb7f953, 0x0c0bf225, 0x73f34656, 0xbe3b45ac,
-       0xfd45e01d, 0xcd997805, 0xcd034aed, 0xa7cad57f, 0x7777e256, 0xfe964df5,
-       0xa7eb40d6, 0x6b45cf16, 0x321c8d64, 0x73c695bd, 0x8ac93afd, 0x0cf050f3,
-       0xc67d349a, 0x607c2eb0, 0x2eb0d679, 0xfd94b8bc, 0xeb3d626c, 0x9f885bd4,
-       0xc05d7cbe, 0xafa8ea7d, 0xa77d3f70, 0x57affb3c, 0xdfc67a7e, 0xd04db89e,
-       0x16ef5fd3, 0x7ca9cbab, 0x5cbaa15f, 0x4a37a7e2, 0xbac3befd, 0xfc502d3b,
-       0x78e77774, 0x02796f1c, 0xaf5c4a6f, 0xd68949fd, 0xd5bd3cd5, 0xabc17e88,
-       0x155c78e3, 0x8ff301fc, 0x683b0e49, 0xb67a793e, 0xef8994dc, 0x994f546d,
-       0xdcb7f427, 0x8ef46b04, 0xa077ae60, 0xaaa364de, 0x0557e8ac, 0xfe44479e,
-       0xc3fe7942, 0xad64f3fe, 0xb38aacff, 0x201b123f, 0xf7299ece, 0xc608ed7d,
-       0x64c976db, 0xf30eba37, 0x7d7d8575, 0xf06de9e5, 0x1a4f7cbe, 0xe6555bed,
-       0xf6c78fef, 0x7de12b86, 0x21db7de1, 0xcbc63063, 0x72a31af2, 0xf48a2fc9,
-       0xaffbc405, 0xfe94fcc4, 0xe12df4da, 0x2df6d5d3, 0xa19f096b, 0x86bc8fe2,
-       0x164fb42b, 0x5596e7f0, 0x534cfb7a, 0x79fa2e4c, 0xcc4a7ff9, 0x55f3c1d5,
-       0x06b5cf41, 0x506b0beb, 0xc899764e, 0x3c3b6f6f, 0xdbed8747, 0xe789170e,
-       0x9e7a7643, 0xe382933d, 0x7f38eb87, 0x14bde32b, 0x7ca5edcb, 0x7fe7a9dd,
-       0x8dfefa84, 0xaa65d4b8, 0x2ebe69f8, 0x6dc4fc93, 0x845cdf06, 0x95f1ec1b,
-       0xe943efb8, 0x2b58d5e7, 0xebb6d1c1, 0x0fa8f3fc, 0xce4dacce, 0xb6d23544,
-       0xcc70c06b, 0x189db7fb, 0x3fe78e91, 0xb04c9eda, 0x66d81ea1, 0xfc443eb0,
-       0x86cc2ab6, 0x87f4ae72, 0xac7e60e3, 0x1cc8d76d, 0x4edbb3f4, 0x4ca17870,
-       0x73d4377e, 0xa50efee3, 0xf59d70df, 0x8c8fb857, 0x7940c9fd, 0xa4dfc5b4,
-       0x1abfa1c5, 0x5f9c0c6e, 0xbb5dfb40, 0xc1296a7f, 0xf1e3ecad, 0x7d95efb7,
-       0xd17efe3d, 0xf80bd07c, 0x2b7fdfde, 0x702b9562, 0x1fbf917f, 0xdc7e40c7,
-       0xfa62beca, 0xbdf5a5ab, 0x2677cb64, 0x0fb13d4d, 0xbe031a88, 0x571e40f2,
-       0xc3c65c53, 0xe52b5fe3, 0x5f42f980, 0x3ec7cf2c, 0xdcedf213, 0x4f5d1516,
-       0x1e3e98eb, 0xc8da7af0, 0x7f99f1cc, 0xaf973fbf, 0xbacc57de, 0x73a777fb,
-       0x00b9953d, 0x32d5e9d7, 0xa1fd47ed, 0x7b7f9dfe, 0xf3e88480, 0x4effb099,
-       0x3e705cc3, 0x5ab3fb3d, 0x067c1578, 0xfe057d89, 0xfe22cdf5, 0x991bf03e,
-       0x9bee51d9, 0xcfe41e0c, 0x3f9f8d90, 0x67f20f7d, 0x6a92c1a3, 0xed017ca5,
-       0x64bb6573, 0xb75c7f4f, 0x2f84cf1a, 0xd76575c4, 0xd34e3a08, 0x92ecbfe9,
-       0xd6dfee29, 0xf3162570, 0xe50fd003, 0x4f4d5d3b, 0x7b7f90d9, 0x4e312382,
-       0xeffa61fe, 0xa1f8bf66, 0x6db67bc8, 0xfa8e973c, 0x6260f41d, 0xfa67ca1c,
-       0xff9e46d7, 0x7da1c96c, 0x273f1bbf, 0x73ddbcbb, 0x7349ec95, 0x940f6ca3,
-       0x671a1c57, 0x4df061fc, 0xf007c2d0, 0x1478450c, 0x3eadcb38, 0xbd737f3a,
-       0x5d84ffbc, 0x1cf14b85, 0xd1f9e608, 0x94682fbe, 0x582add69, 0x40ac7b2f,
-       0x7e030997, 0xed082fb1, 0x8a24a7d1, 0x6f924e0b, 0xd40e70fe, 0x4ca4f05f,
-       0x1f1bbde5, 0x7480d0fa, 0xbca06f5d, 0x99a682e1, 0xfc57da46, 0x122cc494,
-       0x37d9ab8d, 0x12972c50, 0x09f6dd5c, 0x680fedf8, 0x7d0b76cb, 0xe37ef7e0,
-       0xa2fb198a, 0x9267a9f1, 0x017efbb5, 0xcb103bfc, 0xdfe047cf, 0x126bfe96,
-       0x416d0e91, 0x5ca3358c, 0x5fc85bea, 0x3e7e5e61, 0xd9d76db3, 0xeb97a414,
-       0x5e292f8d, 0xb01c93d9, 0xf33fbe46, 0xfc8938ce, 0x5cdf81d2, 0x5008e699,
-       0x6fc8b67f, 0x13b8316f, 0xb7dd3ed1, 0xe38f2af1, 0xae71e2ec, 0xee67fb1e,
-       0xf26f1e20, 0x2c1c5106, 0x0532d6ab, 0x3cec01e5, 0x36b93fcc, 0x09b198ad,
-       0x0dbb41ca, 0xabab4456, 0x05c9287f, 0xaaa141ca, 0xb61e455f, 0xb2947c88,
-       0xd8b661bf, 0x6feca397, 0xf83bf650, 0x77eca1c3, 0x3bf62d98, 0x78eb1dbc,
-       0xc19e0e28, 0xd9385f3a, 0x5ffb7eb1, 0xe2cfda7a, 0x3fd1efbf, 0x4f9fee6e,
-       0xcbecad5b, 0x47146088, 0x8dfac237, 0xcd86c395, 0xabf51778, 0xfe4c98e1,
-       0xef23ded0, 0xf1f5aac5, 0x38737d0a, 0xd72f31c6, 0xd1fe4419, 0xc316f947,
-       0xa98dcf91, 0x862597a4, 0xca0bae76, 0xb375def8, 0x338eaede, 0xe7c71d3f,
-       0x9d2e22bb, 0xfb7ab7af, 0xb7afcc21, 0x688cf259, 0x148e1b8f, 0x367e464c,
-       0xf919e7c4, 0x54e6b9f8, 0x9e844ba4, 0xa3457ff8, 0x05b36e32, 0x7bf257fb,
-       0x2cc71161, 0x598577c8, 0xbf3fbeb3, 0x4a83f227, 0xdf33af7e, 0x7be33f17,
-       0xe33b7bf3, 0x8bf71d38, 0xff71bbe7, 0x3b7bf2cf, 0x5265fe91, 0x30f1a4cb,
-       0x8ef88ac4, 0x6ebdf9c0, 0xfcb1bcf3, 0x567147de, 0x9ceb7f9e, 0xbdf90f6f,
-       0x58dffd6e, 0xff7baf7e, 0xbaf7e43d, 0xf9837ff5, 0x797ecebd, 0x50f96f7e,
-       0x5b3fed1d, 0xe3c4dc7e, 0xffbe66e4, 0x65e424c3, 0x668277b9, 0x74f284ff,
-       0x184909b3, 0x275e5f27, 0xbcfe464f, 0xa0b3c96c, 0x78221a7c, 0xb064c83c,
-       0xd43f464f, 0x85191114, 0x711ff97c, 0xabaf3469, 0x3f888b11, 0xc87982af,
-       0x722d89cf, 0xef797960, 0xca649902, 0xd6177f2f, 0xd57cf324, 0x7758b368,
-       0x87e4b7df, 0xf3fbfe52, 0x3d1e5538, 0xed00fb2c, 0xce0d648b, 0x8fbf283e,
-       0x127f405b, 0x7c50b79f, 0x7f3928c6, 0x76217187, 0xbb639f82, 0x601ce41a,
-       0x3ea5c951, 0x2eec28de, 0x33ea126f, 0xa7a2ab37, 0xe10ae1ab, 0x2a478959,
-       0x47cc5ddf, 0xa5794778, 0x7a09b8c3, 0x706f7d2b, 0xb573a00e, 0xbb4e8e02,
-       0x6ea18fe0, 0x6a69a73c, 0x8ff286fa, 0x34df7aed, 0x36d4eb8c, 0xfc6a21ca,
-       0xb973c526, 0x9cfe4dc8, 0xd8e556f2, 0x57e617ae, 0x7ca0064b, 0xc37c9b96,
-       0x7b7dee11, 0xf51c36fe, 0x92a6d5ca, 0x0b7ef83e, 0xdc75a7d4, 0xe7572be8,
-       0xaaf3fd5d, 0xf381f1d1, 0x969a5bad, 0xdb1c2225, 0xf6005e30, 0x3fc3f955,
-       0x663a73a7, 0xea0dff66, 0x837a060f, 0x99868afc, 0x93b438f2, 0x01db003e,
-       0xf8bb59ca, 0xcc959bfa, 0x2d37983c, 0x0e60fa6f, 0xdb3cabd2, 0x32974168,
-       0x6de78338, 0x16cdb383, 0x45a6ff5c, 0xe2303e71, 0xed869b3a, 0xdd214627,
-       0x3031c41e, 0x7b73b9cf, 0xb7f01bbd, 0x854f0ff0, 0x27dfc033, 0xafda4afa,
-       0xb1f9ba51, 0x2f3c3b70, 0xc714dde8, 0x0723c4fc, 0x1794ffdc, 0xf6b7f8af,
-       0xfe754950, 0x3fdfd3e0, 0x6ef88d31, 0x7982c1b3, 0x1316d77f, 0xaf2b9f9d,
-       0x33f3a62b, 0xcbc53e50, 0xfe867f8f, 0xbb41ab95, 0xe97c2f4e, 0xad2b58a9,
-       0xb124ee0b, 0x941f11ee, 0x849d9cd7, 0xc1f857f8, 0x8f8e1dbf, 0xb55de5fb,
-       0xaf633cf2, 0x7b15dfee, 0x5dff5943, 0xfb884f75, 0x3fc85a01, 0x845faff0,
-       0xb19a3232, 0xfddaf199, 0x983e0ad1, 0xa3f48627, 0xf0c373bc, 0x54be5053,
-       0x92e16ff3, 0xbf8a4f0a, 0xff9b51d3, 0x3dac37bb, 0xb06defaf, 0x7574b02e,
-       0xb3b50f3b, 0x177e0836, 0xf06a5f7c, 0x955ca386, 0xdcd8346e, 0xfb74baf0,
-       0x973e2f0b, 0xc3667245, 0xfb64ac75, 0x818e1f5b, 0x430ec972, 0x8d3e54f4,
-       0xde754950, 0x61ff05cd, 0xc3a1405e, 0x32ded7c2, 0xf7f1875a, 0xa2ec88bf,
-       0xbd8ec947, 0xfc5e7446, 0x76be31f1, 0xbbf291af, 0x3da974fe, 0xef2b7245,
-       0xbbec86fc, 0x2c48f64f, 0x3e00352e, 0xee15be37, 0x3a227814, 0xd2753a0a,
-       0x92beafcd, 0xe4e8577f, 0xde3b3dff, 0xfd85f242, 0x3f023ca1, 0xc606f2bf,
-       0xd9323ffb, 0xaf45fe70, 0xf38e103c, 0xc45faf38, 0x63c37af9, 0xb71876b1,
-       0xb58ee0c8, 0x2fbf93d0, 0xc467fe7a, 0xfe8e0b6f, 0xcc7fdb8c, 0xfca3a09e,
-       0x7bf29ba5, 0xd0efeb85, 0x0da2ffe8, 0x85ffae3c, 0x11de4d9e, 0x0b8e2e40,
-       0x937e72bd, 0xe7d9f289, 0xf6860f31, 0xdf327bcb, 0xa7eec7b7, 0xdf629078,
-       0xe54d2780, 0xfe1e842f, 0x894ebc43, 0xfc359b7f, 0x3378f35a, 0x64d3e7d2,
-       0x25ea1c7b, 0x05bbd317, 0xa0efa43e, 0xc4e8f95f, 0x1e1f4e38, 0x6076a33f,
-       0xf7c78e8f, 0x40d9bf58, 0x3b5550f1, 0x8f966e71, 0x1f18a0ff, 0x7cc60ee0,
-       0x5658f9ca, 0xd44fc814, 0xe7c67427, 0x29e7359b, 0xcb9be4bb, 0x2e2acd7b,
-       0x7bbc8adf, 0xefc64fa6, 0xf2e31f9f, 0x3292ed83, 0x1c6f2e09, 0x4b3bdf7d,
-       0x27cfce1a, 0x75c9037b, 0xb5c8418d, 0x27c2bbf6, 0xee9eb700, 0x05f85021,
-       0xfc248ffb, 0xbad2d517, 0x1dd8d26d, 0xbc2f1c2e, 0xdc8a7f7b, 0xfff2102e,
-       0x7f38bc7e, 0xad9fe425, 0xf3a1b98f, 0xcf06a545, 0xbca1cf8b, 0xbef7e09e,
-       0x90376e94, 0xdb717e5d, 0x06ef0ffe, 0xab58b939, 0x7f56a9c8, 0xd169cbfa,
-       0x7f116fab, 0xc5e9cbfa, 0x0362b7da, 0xb78ee9ca, 0x2eee0ec8, 0xfab9ffa7,
-       0xdfdfc153, 0xe8a7f0fc, 0xe8f09ec3, 0xe3ab0faf, 0x21f501ad, 0x9f531dfc,
-       0xa5f0537b, 0x6fc29df0, 0xeb2e5f0b, 0x93a77a83, 0xebbe152f, 0xef854be4,
-       0xd73bedba, 0xfbffcfe0, 0xe00df85b, 0x60faec72, 0xb3d01252, 0xc9fb91b4,
-       0x9620eed0, 0x5a764f01, 0x41e558c6, 0x55db6f3c, 0x6b95f8f6, 0xfddbeafd,
-       0xfabf0eca, 0x22f2bf4e, 0x821efabf, 0x3f61b4ab, 0xbcc96fdf, 0xa586fa9a,
-       0xdd161dcc, 0xf31e0e75, 0xcfd02b58, 0xf4f3c6df, 0xb8f0258f, 0xb8c62fa9,
-       0x891ff682, 0xe13e2a7d, 0xb43bb467, 0x354e54fb, 0x5b7fa4ca, 0xf8f3813c,
-       0x3c9209e0, 0x3fb0f4b4, 0x4d3b895e, 0x1e534394, 0x2a3a3806, 0x60a0fc79,
-       0x94e19dc9, 0xbb4c69cf, 0x850ae31d, 0x2c31f987, 0x73143f65, 0xaa09f5db,
-       0x98170efd, 0x319be9fb, 0x4258d64f, 0x35828bf1, 0x0fcd7a5a, 0x0be2907d,
-       0xf7b4abf3, 0xad7c2900, 0xd68b0bc4, 0xc42fbf6b, 0x1ee8847b, 0x47da4a85,
-       0xfb46b0b4, 0x0e7c89dd, 0x41273c7c, 0x2c1909d8, 0xf9bde443, 0x57a11239,
-       0x6f43ca27, 0x21cbfca7, 0x1da5f299, 0xbde1328d, 0xfb449b63, 0x863b9869,
-       0xf99ca5e4, 0xf8299f48, 0x60f284b9, 0x5cdf59ec, 0x73dffd7a, 0xa52a851e,
-       0xff0f1ff5, 0xd52f3c2d, 0x8ddf489f, 0x4e7f9de5, 0xaf7598f9, 0x104f7e3f,
-       0xdf6a1fed, 0x35f74613, 0x9dbd37b5, 0x85e528f2, 0x07ba364c, 0x9497cf61,
-       0x6a5f6b7f, 0xd57d422a, 0xcafdcc9e, 0x0e5f4d65, 0x39657ae7, 0xc098df3f,
-       0x34744dcf, 0x94f28dfe, 0xca268d1d, 0x84f6b933, 0x7ae11f90, 0x9cfc8823,
-       0x292fa6f6, 0x9acffcbe, 0x3788b94f, 0x3cf187b7, 0xbfb8bb4f, 0xf47bb5c4,
-       0x2d87980b, 0x446bdbab, 0x9bfc65bf, 0xdf5d90df, 0x67b72afe, 0x1eded0da,
-       0x5bae7883, 0x7dc44e33, 0x4d0ecca8, 0x0db77b45, 0xb1912385, 0x9d5dcfa1,
-       0x081a1eea, 0x5e50df4f, 0xf3f146f5, 0xfc18ffd2, 0xb9dfb448, 0x63cc31b4,
-       0x5fde7096, 0xf518fc9d, 0xd79e1ec1, 0xb17be657, 0x1fd90976, 0xc1f79bd7,
-       0xfddfee04, 0xe4b799ef, 0x9f7991bd, 0xef4e6ffd, 0x98d43c62, 0xba2e5ddd,
-       0xcf1379f3, 0xb30f6d17, 0xc837bc11, 0xffc486ef, 0x157f7465, 0xfd7e1ee8,
-       0x6ffbf779, 0xe99eef3e, 0xa0ae787e, 0xf3e305bb, 0x21bf37ae, 0x3d5efef8,
-       0xe87fe137, 0xfd3b15fc, 0x6fd7c67d, 0x91c3a257, 0xee9efb88, 0x5f02bc38,
-       0x274e74b9, 0xcd12c3c5, 0x4d9fee74, 0x8e87e28d, 0x33618ef5, 0x57877586,
-       0x25fe1bf1, 0x31273ed1, 0x07feaba6, 0xa619efb3, 0x7d57779e, 0x58d1be3e,
-       0x379d3f7b, 0xfca50b29, 0xc18f6e2c, 0x36cc2f76, 0xf713fe71, 0x990f1c3c,
-       0xa606307b, 0x738347f2, 0xe739c23e, 0xc0ac9fce, 0xca2fb4b2, 0x35e718ba,
-       0xdc4725af, 0xc710b08b, 0xfb3b352f, 0x72f9aa60, 0x2f4073b2, 0x511c47b4,
-       0x1ccb9e3c, 0xe1011cc3, 0x37ce6b77, 0x994bf62a, 0xea3aa1b0, 0xbe517ad2,
-       0x645ed5e4, 0xb8e9b57f, 0xe026d87f, 0xb767e0bd, 0x1a8e7917, 0x5c58ff31,
-       0xcea8d473, 0x7389963f, 0x3fe3fea9, 0x23f3c891, 0x87f6be9f, 0x8bf748ab,
-       0xa3a7d45f, 0x5d2256bd, 0xdd5d79a2, 0x98ae747a, 0xff9c0adf, 0x14be1d43,
-       0xb4abcc23, 0xc791af76, 0xf4fcc523, 0x9beff4be, 0x79ae9b5f, 0xaabb9d12,
-       0x8e7ce897, 0xeeacaed2, 0x93b424e8, 0xe8226a8b, 0xa7dc473e, 0xca9dcfc2,
-       0x7860fb7e, 0x8eb2493f, 0x4bf7dbf8, 0xd21bf689, 0xe9dfb41f, 0xbee0f08e,
-       0xcaee936a, 0x676899b1, 0x8ce7e30f, 0x438307d6, 0xbbc77e0f, 0xc41b5f02,
-       0xbf780779, 0x07c7df12, 0x4ff1f6f3, 0xfedf68eb, 0x9409b90b, 0x7bdd543f,
-       0x72075291, 0x36b26494, 0x49b8c0b4, 0x0f28bd15, 0xb9d13dbc, 0x5f71f105,
-       0x18e52e94, 0x421ce1c1, 0x8e6f80e7, 0x753f21ba, 0xf818b306, 0x9e7e527e,
-       0x4f85867d, 0xb5d850a5, 0xee9d9933, 0x3983b8e1, 0x6d7bdea9, 0xd7da3b46,
-       0x336e61ef, 0xa3f7ee93, 0x0f3177f7, 0x5e61ef3d, 0xac2fffaa, 0x5f0aca85,
-       0x17de3f02, 0x3cf1f9cd, 0x8e8160a6, 0x47dc226f, 0x3f278643, 0xfe9ef80c,
-       0x94fe80cc, 0x76e2ad2f, 0x9ee0f5f0, 0x574bfc2e, 0xf210f3a2, 0x2fe4c77b,
-       0x7e82af9e, 0xf12f6674, 0x91ee7283, 0x7c11884d, 0xdb72fdf1, 0x0f99d1dc,
-       0xe2bf450d, 0x5bd24156, 0x509fdced, 0x2edc0dce, 0xd9ef01e4, 0x343a0489,
-       0xa7bdf95b, 0x3dbd2acc, 0xc793ca02, 0xe59fb4c9, 0x20d6e08f, 0x4331fc7f,
-       0xd9a5f716, 0xd134fda9, 0x3371d4ef, 0x7a82f797, 0xc96ebe93, 0x9327f3c2,
-       0x8afd6b7b, 0x5c6f449f, 0x29cf011e, 0x7fefb4fd, 0x88f59aca, 0xb543a9d7,
-       0x2cb4cdfe, 0x38bdbd6d, 0x2a962466, 0x4b845ee9, 0x193fc289, 0xfdab06cc,
-       0x1d3e6513, 0xd118af53, 0xe493ec17, 0x597482bc, 0xb9d9db7c, 0xcf4ede74,
-       0x4d111ede, 0xbcd1cff7, 0xe6f02b5a, 0x55cec646, 0xa179e998, 0x20ecc2c2,
-       0xc4569ff7, 0x8552f3d3, 0x55b7de95, 0xf8e7a40c, 0x90dfc724, 0x9f95053e,
-       0x670fd1e9, 0xee34e955, 0x9acf8203, 0x9d1d5e75, 0xd124d85f, 0x82079a7e,
-       0x8ef1739a, 0xa73607ac, 0x61739c52, 0x0c41ed43, 0x1d78141f, 0xf39c9093,
-       0x883a2d0f, 0xc06bb2cf, 0x158023e9, 0x24a61c12, 0xa763eb94, 0x7ac6df67,
-       0xe37b1be6, 0xd05183a9, 0x1b0af9ff, 0xc549f5c1, 0xac5e7a28, 0xb3dc13b0,
-       0xa4961c92, 0x67d2a46c, 0x6db73fc4, 0x824fa53b, 0x12ad13fa, 0xb63f2bad,
-       0xe4078f33, 0xd7c0daab, 0xb304ea85, 0xdc74e50d, 0x1e1b19b0, 0x9df7a864,
-       0x1dc70889, 0xe2278a53, 0xcd46d338, 0xeeb47ba3, 0x7bf19afc, 0x58dc2695,
-       0xe9f988dc, 0x247bcbdd, 0x3acbcbe2, 0xff18edeb, 0xa649ff75, 0xde0740fc,
-       0xe3fe80d3, 0xe32f7e71, 0xe2d3d7e2, 0x362f3f50, 0x5fd0e358, 0x79f62ddf,
-       0xe97a045c, 0xc5eceb55, 0x9cce7fed, 0x25bfd2a7, 0xfabaecaf, 0xf2fbf411,
-       0xea1b48c9, 0xe2918bbd, 0x28b6467e, 0x9b48f504, 0x19623bc8, 0xd65015ef,
-       0x5833d45d, 0xebcc18be, 0x9492bce7, 0xe382728b, 0x7a5d8d59, 0x6795fd28,
-       0xed6a3efa, 0x6d4b6f1a, 0x41cf47e1, 0xe747b2f9, 0x723ac036, 0x61b6d599,
-       0x135dd6dc, 0x066dfb4a, 0x87e0fa4a, 0x7c3d6f89, 0xd56488bf, 0xeb6c3c63,
-       0xd1121b2b, 0x392dd80e, 0xfa823ee6, 0xffaf037b, 0xe48fd3d2, 0x53e7c2ed,
-       0x823eaf65, 0xa08a4f78, 0x2b9ff376, 0x36fc8c1e, 0x5d5efd6c, 0xa9bfbc22,
-       0x7c52d4e6, 0xc2a240ce, 0x926d8cf7, 0x8cdd778c, 0x865d4ba8, 0x1fb898af,
-       0xfbc0b06e, 0xed9ff5d0, 0xf4107703, 0x08e2ed6b, 0x525757ca, 0x671bd7bb,
-       0xc10f7fbe, 0x7bc04ee1, 0x8cf3dd35, 0xb8f03edc, 0x5c9f2237, 0x51b40e76,
-       0x7ee1cd7e, 0xd973e916, 0xf5c36b19, 0x0ee75ea0, 0x4ff5831f, 0x76087bf2,
-       0xc70d1cd6, 0xeabd11fd, 0xed082c0c, 0xad1f0c95, 0x56c9654b, 0x259659bc,
-       0x64eb7f3f, 0xd7927946, 0xa53f5237, 0x99e61b66, 0x42bf5e8b, 0x13f61cf1,
-       0xfc8feb66, 0x4fcbc751, 0xfd13b04c, 0xc17e368a, 0x2a0ecdcb, 0x2a77643b,
-       0x0f945fdd, 0xfbf40c76, 0x5877588c, 0x47d270cb, 0x2ed672c4, 0x9f013f7c,
-       0x3abdf02d, 0xfb809dd5, 0x0af594c3, 0x219f99d6, 0x839ba37f, 0xef739bed,
-       0xf775a149, 0xa519d706, 0xfc8c679f, 0x46f5bd7e, 0xb66e1ebe, 0xf42778f0,
-       0x4fe514bf, 0x64931759, 0xae1d5869, 0x6c98cf73, 0x3e37accb, 0xfee2ddce,
-       0x2af813ae, 0x430d6c41, 0xf8ffba42, 0xe9ffc636, 0xfbf23dfe, 0x15675799,
-       0xf941ecf7, 0x4fc3a4e9, 0xe619bf2e, 0xe003f82d, 0x83013820, 0xf2a7f50c,
-       0xe38b2c3e, 0xb669d233, 0x2e2b7e61, 0x33dd116a, 0xd307f0a1, 0xdda0477b,
-       0x995bfab0, 0xffb94bce, 0x7f714a1a, 0x4ddf787f, 0x7af471e2, 0x639e07c0,
-       0x7bf07772, 0x5ac31a9f, 0xf403fe5e, 0x9bdc58df, 0x0dbbc6e2, 0xf756fefc,
-       0xdc5df174, 0x5778dd27, 0xa27dc92c, 0x7601eb89, 0xd38d304f, 0x7e6cf068,
-       0x8f4fbf1a, 0x85c7f6a7, 0xde671d9c, 0x955f707b, 0x7ba467db, 0x1822ab39,
-       0xb55367dd, 0xfdc50064, 0xe07dbfea, 0xbda186df, 0x639f84b2, 0xacf0caab,
-       0x55ff7dc4, 0x70e34cbf, 0x1724de48, 0x260e2fb6, 0xdd355d3d, 0x4071809e,
-       0xba10b4e7, 0xfba7ba57, 0x28323f5e, 0x09ec89e7, 0x0ae78f88, 0xfdf533fa,
-       0xca4e7f41, 0x57748c3d, 0x3a73d1f2, 0x8ecc22f3, 0x21de5bf7, 0x6e15770a,
-       0xbb7e420e, 0x14e828a3, 0x178f6bc6, 0xb8c30d2d, 0x7e4e1de3, 0x359b273f,
-       0x8f3eaed1, 0xfb24e7f9, 0x5657e461, 0xdeedd8a0, 0x1ed3c47c, 0xbdce999f,
-       0xa847f901, 0x7f8544ed, 0xbe77aafe, 0x8ddaed87, 0x92e35ee2, 0xb6cda6af,
-       0x6bf1faaa, 0xf27edfe7, 0x37bf330c, 0x7644cea9, 0x8ec27dc1, 0xb3bc9972,
-       0xad5a0ed1, 0xf607fe73, 0xe9f85aef, 0xa277b470, 0x17fbf067, 0x09be31db,
-       0x7a0a4f75, 0xff7c649d, 0x98517ba0, 0xb2f11bc8, 0x0f28d1f3, 0x9ec7a7bf,
-       0x07e58850, 0x1f70d886, 0x99e45390, 0x7c44b958, 0xf9c2d272, 0x146364e4,
-       0xe33e8fdf, 0x30e9d3da, 0xab8e938f, 0x7a848f6f, 0x79f81b27, 0xcc3cbf8e,
-       0x2f9619cf, 0x60d2913b, 0x7baf3eed, 0xd97bf297, 0x0bf85def, 0x93da6f3a,
-       0xaa5bddfc, 0xd21987dd, 0xce15fedb, 0xb5c67a33, 0x1287a849, 0x2d9f4a4b,
-       0xdbdabd44, 0x2fbe2df9, 0x2394b637, 0xff77ca3e, 0x7fda0a7b, 0xda5ebbed,
-       0xaf9e1071, 0xdeba9d19, 0xade97df8, 0x67618fa9, 0xd72f9ec2, 0xae403d03,
-       0x34edea9f, 0x717e06f6, 0x63a6f04d, 0xe6864bbb, 0xf6378849, 0x1bb31b8b,
-       0x5cdc6d3f, 0x115fa12f, 0x4f4e58dc, 0xe11c33d9, 0xc37928b8, 0xa71e1ef1,
-       0xc97e8fd8, 0x188f0de2, 0x72c7f78a, 0x1f3ff5fe, 0x8ac5a048, 0xaed0327d,
-       0xe71656a4, 0x27143c97, 0x025faff6, 0x0ddea9ef, 0xcbce57be, 0xac344495,
-       0x66f44b1d, 0xee166f5e, 0xf74feceb, 0xfd7e5d32, 0x5fb574a5, 0x0eecffe5,
-       0x9d3f9f2f, 0xa9bcc6e7, 0x7bf7df87, 0xe4068a09, 0x71266db3, 0x51f38f8e,
-       0xc104d6db, 0xda8f9c67, 0xa8f00eb6, 0x9cf3b6e5, 0x8736ada0, 0x6bdbedf6,
-       0x501ed073, 0x6b999fe4, 0x36677ee9, 0xda3876b0, 0xc23d8add, 0xf4e9b51c,
-       0x8e9b53de, 0x3c75ebf5, 0xbb8ca73f, 0x7e24e5f0, 0xeb9998df, 0x0f2f85c5,
-       0x94c6fba1, 0xcf37af7e, 0x4d46d501, 0x5b479079, 0xef9bd69e, 0xeffdf85b,
-       0xcbf1f73b, 0x93c61ec2, 0x40f79d85, 0xbd73de76, 0xf2f05255, 0xfa0e5260,
-       0xaaf28ca3, 0x0be07bbb, 0xbd21ae05, 0xf30b3fb9, 0xbbceb863, 0xbbfae23f,
-       0xf331c33e, 0x6fd72836, 0xb6fb2348, 0xe9f8e74d, 0x79e71c30, 0x3ebaafbe,
-       0x9cf947c2, 0xfdb967fa, 0x5de62e5b, 0x424ce11f, 0xc2a17a7d, 0xffee2f16,
-       0xe96c3b26, 0x98e11589, 0x61dfaff7, 0xd5f8c0c8, 0x63fb3527, 0xad3e2f91,
-       0x37ee9878, 0x75e3bc1c, 0x6e94a3ca, 0x1c7de07d, 0x8336d2f7, 0xd2acdd0d,
-       0x8b5c5ebb, 0x56e948f6, 0x5be716b9, 0xe53f75ba, 0xbed52fc7, 0x71fb8e15,
-       0x9144d42f, 0x53f08c1f, 0x1cf7fafe, 0x2ff8fe0f, 0xabc464f6, 0xc91591f7,
-       0x7f78b5ee, 0x5a2d90c9, 0x3c7d17bc, 0xedea10e9, 0x18cff50b, 0x1fbc56f5,
-       0xa6fdfb56, 0xeff96d06, 0xe4abaf3d, 0xd4e39091, 0xdcc85c74, 0xdda9f507,
-       0xb5645feb, 0x3f18edb3, 0x9727bce8, 0xdae8edcb, 0xbb379475, 0x6e6e78fe,
-       0xe9da853c, 0xa379ab9e, 0xe231b7f8, 0xe6b65efe, 0xdbc424e8, 0x5a2427bc,
-       0x36bde6ef, 0xcfea00e0, 0x9aee3b53, 0x93d9cf42, 0xe8f91f09, 0xd67ee085,
-       0x061bc946, 0x8e28cb65, 0x9e6ac2ef, 0xee5bca17, 0x8d69ee77, 0x2af8fedf,
-       0x0d05f7ed, 0xbcc2bf7b, 0x79f99176, 0x3f741f8a, 0xfba1e3c7, 0x605e177f,
-       0xac2dcfe4, 0x2814cef9, 0xcca851be, 0xda63fdc3, 0x264dc01f, 0xfff0fff0,
-       0x4daee346, 0xe1ea3d47, 0x651b5531, 0x731957c4, 0x2349643e, 0x021bc5bf,
-       0x8137cfe3, 0xeb4992dd, 0x4ae7cd21, 0x8f3a2f75, 0x5059ef0e, 0xda03de26,
-       0xe4eb839c, 0x1b30ba95, 0x9cd69fdf, 0x02d57683, 0x21f9d328, 0x0bce2956,
-       0xf1fee87b, 0xcd06d505, 0x1ec5e07d, 0x7255996d, 0xef14b0fb, 0xfa470ed3,
-       0x92bb50b7, 0xa57ada2d, 0x91e39f30, 0xfb51ffb8, 0x5b7cc5de, 0x2b7da45f,
-       0xefd498df, 0xb1547b15, 0x0e38958f, 0xe460b228, 0x7237bb97, 0x04b77a3d,
-       0x0c3b45f3, 0xafb234ed, 0x420e3b3c, 0x2878aab9, 0xdff54fd9, 0xca5bfdf2,
-       0x0caad4f9, 0x279e3a7b, 0x88375aab, 0xb25bbfe6, 0x7a863ea7, 0xd859ba60,
-       0xe1ee8c57, 0xa44e2aaf, 0x1c23fbf5, 0x2ced0132, 0xf729ef6e, 0xeea227f5,
-       0x18e371c2, 0xb53f8fbf, 0xb37a8bd6, 0x3fae29ea, 0x81563b14, 0x4f675f3b,
-       0xb36e75c1, 0xcdebe9d9, 0x23a56ff7, 0x09bff9dc, 0x4557bc22, 0xfce8c2f8,
-       0x0dd4517f, 0xc59ba7ad, 0xabcca0fa, 0x7dd07255, 0x293d4ae8, 0x9cdbeb99,
-       0xa28bfb5c, 0x0b39c51e, 0x6fab1d72, 0x3c147c01, 0x1fa2b3ad, 0xbb6789dd,
-       0x13ef1d3d, 0x94175d68, 0xcc9cf089, 0x47367ae0, 0xf6061bdc, 0x3c137dbb,
-       0x9a759383, 0x32706578, 0xc163a7b7, 0x5af1c27f, 0x5438f227, 0xfc839658,
-       0xe6a9c079, 0x19e53c1e, 0x302be02b, 0xa3f4fe3a, 0xd274f000, 0x7bc7027b,
-       0xad12fdeb, 0xa21f3047, 0x83afce5f, 0x2ad00e28, 0x4e8503d6, 0xb4d92fc0,
-       0x54bd09ce, 0x21f80ab5, 0x2da1ed15, 0x6afa835b, 0x0be286f8, 0x3ebe2eec,
-       0x7c704554, 0x4c393d56, 0x6f82e5d8, 0xbf120c9e, 0x6cedc0c7, 0xec51fd65,
-       0x3d3e6570, 0xef40e1d9, 0x7c2ac961, 0xe999d3f9, 0x7dead93d, 0x5e74fe94,
-       0xd2986e60, 0x0bc1550a, 0x5c067825, 0x6b7d91d2, 0xde0892ce, 0x2a7ad581,
-       0xb259d51f, 0x8da6ee51, 0x11f179dd, 0x7e7857d4, 0xebf47907, 0x39bbbeef,
-       0xa951f707, 0x7dc472fe, 0xeb0fc8ca, 0xef183799, 0xd894afd9, 0xa03acd69,
-       0x8fdfe32d, 0xb9fabb63, 0xf89efd5e, 0xdcfd9ff7, 0x69d8c159, 0xf85d8590,
-       0xebc347ec, 0x4665fbd5, 0xb93c7236, 0x5f4f308e, 0x597677d2, 0x0467ef8d,
-       0xcbfcee1f, 0x6e3023ab, 0x687dae31, 0xe9679e2f, 0xd3ef53a7, 0x5ed660ed,
-       0xa3b4efb8, 0xee17ad31, 0x2438eb4b, 0xf0033987, 0x038056f5, 0x572ff1e3,
-       0x5ed9e998, 0xf0652ac3, 0x8f99da2b, 0x6bba67f6, 0x5f902ccc, 0x73b934ba,
-       0x739319ff, 0x3ba5f7d4, 0xa4ec7d68, 0x9fa9a5d3, 0xc77787e8, 0x569dfe3f,
-       0x87f913d6, 0xebf715e3, 0x06b75e20, 0x740a4cb5, 0xe04aafde, 0xafbeda6d,
-       0xe0e33f68, 0x943a8dc6, 0x3a35c1f7, 0x26b93acd, 0xca43ec59, 0xd7089964,
-       0x61417db4, 0x438f4859, 0xe6082db2, 0xccfc6ae7, 0xd7e00ce8, 0xfb11e3f9,
-       0x8702fdc7, 0xa7842d93, 0xf25a86dd, 0x365f772b, 0xbb29fdd3, 0x8125958c,
-       0x23eccce0, 0xd8ebc405, 0x5f6833f3, 0x5e157fca, 0x7a87b5c7, 0x588e3173,
-       0xbb1c78c3, 0x7d71bf1b, 0xd185b1d4, 0x710ef739, 0x1b63a80e, 0xa01ebca3,
-       0x77dc49e2, 0x8b7df203, 0x80d63f7a, 0xe32f1d86, 0x28de5efa, 0x72e4fed1,
-       0xf7118b7d, 0x221aba5b, 0x65bfcc64, 0xae3dc558, 0x59b0cb7a, 0x9c38392a,
-       0x17e7e7ac, 0x07beecc6, 0xc972bdc7, 0xec87e748, 0xef747c07, 0x11c695c0,
-       0x3cefbebd, 0x6c156bce, 0x7b3bde0a, 0x5f119938, 0xd0c1f3f8, 0xf29ac16d,
-       0x8899d958, 0xd4cd34f2, 0x002da0f2, 0xc4528add, 0x7aa370fa, 0x89fff3cc,
-       0xe8a63b1e, 0x8eaca731, 0x74a46487, 0x817163d3, 0xc962d8f4, 0x5ef8871a,
-       0x871694dc, 0xd87c5cf4, 0x8f481310, 0xac38076d, 0x007f7720, 0x7b67c3f9,
-       0x9bb1e81d, 0x0eac7a54, 0xbf0058f4, 0x3ae52924, 0x5ff3cc7a, 0x51db6f23,
-       0xe798058f, 0x1fae14f0, 0xbc363d14, 0xb1e914f1, 0xcd3a75e1, 0x29feda39,
-       0x5263d3d7, 0x2c68accc, 0x01216c1b, 0x89f106f8, 0x27c47779, 0xd41c713e,
-       0x9629f967, 0xfd9f4bbf, 0xecfa7af8, 0x8abf08bf, 0x3afc5b3e, 0x3ba37f23,
-       0xdfe231df, 0xfd18bbc5, 0x26e2cfce, 0x3716cfae, 0xcf0fbe31, 0xec0d8f4f,
-       0xff18c7a6, 0x6f2f165d, 0x7d486aef, 0x2fe85ee6, 0x99b06ed3, 0x97667ea1,
-       0xeb56cb5e, 0x1e94fcb5, 0x1ba1daf4, 0x0baf6bd3, 0xaafa06bd, 0x7f51ea2f,
-       0x6a35b0be, 0xf763977f, 0x5edbf3e8, 0x5b78f943, 0x4701f3a6, 0x9dfebe45,
-       0x90b3e7d1, 0x1e11eaaf, 0x4235d390, 0xdc2adb5e, 0x03f8ffd4, 0xdb657e7c,
-       0xca0f5a24, 0x57bdb8eb, 0xf07b235e, 0x31a4e180, 0xff3ed15f, 0xe18926e2,
-       0xa6e9b2d1, 0xfef1a7ca, 0x8192f630, 0xd4e53889, 0x143f150c, 0xf8a12a8c,
-       0x999e8161, 0xc96ddf71, 0xb73fbe28, 0x7b959444, 0xf53b0ba2, 0xcdbedfa0,
-       0xf7e9fb86, 0x7bcffc34, 0xdcf7134e, 0xf2417b4d, 0xdd5ffde0, 0x712a7bcf,
-       0x97fbed38, 0xcba77cc5, 0xf61f842d, 0xde73e06e, 0xe5e3fb2f, 0x8d4bc090,
-       0x478bc5ac, 0xe517880a, 0x8782ad5c, 0x565bb7e2, 0xf8a75c60, 0x32fc8959,
-       0x782b79ff, 0x761f76ea, 0x909dff23, 0xdb62f7ee, 0xd25bbf35, 0x144477ed,
-       0x7fcdfb3c, 0x323fa2bb, 0x37bc08d8, 0xf482f81b, 0xfc4ffb87, 0xb8c7421e,
-       0x3d6a71fe, 0xc3c09afc, 0xe371ca88, 0x2e99add1, 0xd5f98afc, 0x804c1ff7,
-       0xb71f67f9, 0x6303fdd2, 0x9ee898c7, 0x3e41adbe, 0x9f0a6fd2, 0x3e70fa19,
-       0xecfd116b, 0x4b945c4e, 0x241a74fb, 0x2e13da0b, 0x37bf106f, 0x082df805,
-       0xf67fecaa, 0x478124ea, 0x689efd0b, 0x006f5883, 0x4e57e8ef, 0xc01fd652,
-       0x88cfca3b, 0xd7074e46, 0x2c874e16, 0xe567e3c6, 0xf30d92d5, 0xf70de5ea,
-       0x8a3e711b, 0x50bf85de, 0xfc545d35, 0x27f357a9, 0x7bad547d, 0x34fbe225,
-       0x1887e553, 0xfc06993f, 0x0cd891be, 0xfc3df7fe, 0x5f77eddb, 0x2f7bf3ae,
-       0xa78e1f72, 0xf44788ed, 0xdc7d12f3, 0xbac2f26e, 0xddf5d610, 0xf06b77a5,
-       0x6bb9fe38, 0x249abf9c, 0x3b01c62b, 0xefc354f1, 0xf056cf6d, 0x788afc84,
-       0x63279c6f, 0xf8837e79, 0xf9bf1fdd, 0xb5083ee2, 0x9d37171c, 0x906ffde2,
-       0xbcc02c6c, 0x7fdfe47b, 0x927b6f90, 0x2d1f435f, 0xe413beff, 0x2efb823b,
-       0x77e24ddc, 0x34231a19, 0x7dfec279, 0x35b01db8, 0xfd1cf808, 0x1b06c3e8,
-       0x2fe0a7de, 0x3d62b1ef, 0xaadf7b43, 0x420f97ca, 0xb12e3180, 0x28ceccc5,
-       0x76e5f470, 0x6edf5aa5, 0xb331620f, 0xbfee7ab2, 0x4f5ba09f, 0x1e528df6,
-       0x5ea1e386, 0x54f1806c, 0x7d7f2cf9, 0xd7e5f8af, 0x0fc6579b, 0xce32979c,
-       0xd87e7bdf, 0xfe799ac5, 0xd0245f02, 0x26dfe179, 0x9fa9bc63, 0x7bdf57a4,
-       0xfe6fdcae, 0x3b3fe84f, 0xfee7a625, 0xf685bc59, 0x4efb2937, 0x0e3cfd94,
-       0xf3fb130b, 0xae33fe6f, 0xfcec57e3, 0x8e9641fc, 0xae33707d, 0x3a06b90f,
-       0x88e57ac7, 0x573fe281, 0x2e7bf026, 0xbf7b7f6f, 0xedf2f51e, 0xff0114a8,
-       0xe44b67b7, 0xaec51d1f, 0x6d1da347, 0x80257da6, 0x1f9811bf, 0x1ca9a8c9,
-       0x333ee78f, 0xe19678b7, 0x17de36d3, 0x6dd20efd, 0x7bf74c9c, 0xc6a3db34,
-       0xc0fa3ae3, 0x71819659, 0xa9ef5877, 0x1621e67d, 0xd8c6f583, 0x18fdc863,
-       0xb1f9f75d, 0xe8c70099, 0x0acdb223, 0x0fefa6f5, 0xf77cc50d, 0xe63af5c0,
-       0x0c6be154, 0x73c32cf3, 0xed5ba33e, 0x22ee1133, 0x2e305fb0, 0x71b8d45f,
-       0x2e439e19, 0x7b512f5a, 0x2939db97, 0xbdb3e61c, 0x4349b3fa, 0x3d401f50,
-       0x9eb5c6ec, 0x48d573d7, 0xcf394c36, 0x24675c6f, 0xefc3517d, 0x91eed86f,
-       0xebf79998, 0xdbbf4331, 0x2cfb43d7, 0xd05b638a, 0x7cd5720e, 0x5cdffb46,
-       0xdfb52700, 0xccc5cfc6, 0x94567687, 0xa9fb9a97, 0x12f5e2bf, 0x457323c3,
-       0x543af8db, 0xc360c474, 0x9f7b75ef, 0x2a74f5a5, 0x8a90978c, 0x02778eeb,
-       0x884739c5, 0xffc77b7d, 0xed5df90f, 0xd58fd38c, 0x2feb92fc, 0x9fbf2989,
-       0x4f9f57ab, 0x97d3e8eb, 0x2db10bef, 0x3f414631, 0x498a8cef, 0x7d5f11d5,
-       0x71b4e746, 0xf013935f, 0x179c547d, 0x8cea3fdb, 0x409f7d51, 0x4f3f2b2f,
-       0x8e30d05b, 0x321551ce, 0x9aa39d07, 0x8fdb9a36, 0xc828feef, 0xde33fb83,
-       0xe37af835, 0xe23ffdfb, 0xb6dcd3bf, 0xb6dfeb9d, 0x1fda16e4, 0x307f1e7b,
-       0xb65c6009, 0x717d265e, 0xce819b7e, 0x7018c90d, 0xe76dfc44, 0xf5fec5f6,
-       0x5bf3dfbc, 0x7e361db8, 0x70931dc3, 0x59b05dbd, 0xf5c46739, 0xce3fe2b3,
-       0x62f388b7, 0xfc8d1b95, 0x5fefacde, 0xac3d1477, 0xbf911efc, 0xfceb2d9e,
-       0xc92f6cfd, 0xffad594f, 0x2ed0ccf9, 0xefe9043f, 0xb9f88afd, 0xa18188fc,
-       0xb99d221f, 0x4f8ff944, 0xef871d70, 0x3b251ba3, 0x3a2a3b9e, 0x1d90f26e,
-       0xdf7799ed, 0x393d71cf, 0x3afba261, 0x1cf055ce, 0xef9328f6, 0xf781bf2f,
-       0xe3351c9f, 0x97e03cce, 0x05ef8479, 0x3be1116c, 0x473f336b, 0x2ab47597,
-       0xe7ae3e76, 0x7fdc7813, 0x9cccb541, 0x89f0fd2a, 0x37799f64, 0x1ee8175f,
-       0x598e856b, 0xb8f9cac6, 0xe562de9e, 0xd9bad8fa, 0x2fcde740, 0x760cfd08,
-       0x5103dd3e, 0xac5d6bbc, 0xe2ff4551, 0xf8b175a6, 0xc42b2853, 0xe265b439,
-       0x91b17a9c, 0x47bc538f, 0x8d546cb2, 0xf4a3f4a3, 0xdbc5dc6b, 0x67f135a5,
-       0x2317fd4f, 0x2fcf347c, 0xfc27a88c, 0x7e36e9fb, 0x7a8cfd0f, 0xee155aff,
-       0xaef51817, 0x8c72974c, 0x2d35333a, 0x0f643ef0, 0xd31fcf8f, 0x747f7e69,
-       0x35825fd4, 0x6cba91f9, 0xdfa07790, 0x4edc0d6d, 0x653ecbab, 0xb2a2cb2c,
-       0x5cbbe505, 0x27cb85c4, 0x75f57df0, 0xa3974719, 0x92cd4fbc, 0xdb981f88,
-       0x29dfc469, 0x8accbb07, 0x5905a779, 0x6802fdbc, 0xf758728f, 0xd04b972c,
-       0x1fd4560f, 0x830017ff, 0x8000007b, 0x00008000, 0x00088b1f, 0x00000000,
-       0x7cedff00, 0x55537c7b, 0x393ef0b6, 0x526d3479, 0xa0fa5b42, 0xb4db4e50,
-       0x9494b14d, 0x27457897, 0x880b5a3c, 0x46107006, 0xf4228206, 0xbd185499,
-       0x35fde338, 0x9c414415, 0x0e7c570b, 0x42d2d37a, 0x1429a2c1, 0x20d5b16c,
-       0xb47441d2, 0x3bd15ef6, 0x0f8afea3, 0x52d25a04, 0x8ef4f987, 0x6b5adfa3,
-       0xa126d39f, 0xdf7ef515, 0x37f5375f, 0xef6758b3, 0xbdeb1fb3, 0xce275ef6,
-       0x620a3b5d, 0xd67318e3, 0x319e920a, 0x6abd54d6, 0xc614f273, 0x2c8ba68a,
-       0x67e7c242, 0xf01192b4, 0x2c7133e6, 0xd3e3b187, 0x1939db3f, 0x74339dda,
-       0x7ff41d26, 0xc637d357, 0xf3ec6064, 0x991cc64a, 0x5ea5b388, 0x698459c0,
-       0x8c09e2c2, 0x060e313d, 0xead8ca99, 0x0c0599e6, 0xeccddf9e, 0xf8bfb19b,
-       0x7981f436, 0x47a20d5d, 0x2e9c0027, 0xc60dba8e, 0xc680f77d, 0x7e3b280a,
-       0xfdda8e83, 0x153da007, 0x4faed8e0, 0xdcbfc004, 0xe86e61a5, 0xc89771b0,
-       0xb2fff418, 0xc5f7a05e, 0x90597ee7, 0x3adaf804, 0x2983aac1, 0xad9aef8f,
-       0x1efec24d, 0xd9bc61c0, 0xbc6869cf, 0x7f78fbb5, 0xc5e433f8, 0xf186b633,
-       0xe2a635bf, 0x632e599b, 0x65a7cce5, 0x69efd0e9, 0x115da7cd, 0xf87bedbc,
-       0x1827b15f, 0xc60fad2f, 0x4bb6d9cb, 0x6f403462, 0x750ef3f0, 0xef386dd7,
-       0xb4f41bfa, 0xb637d9ee, 0xeb8f5e9c, 0x5c30d06e, 0xef1bece7, 0xba02ef8f,
-       0x963351ae, 0x8e90693c, 0x0cc788e5, 0x559d8eb1, 0xb31fa4da, 0x1c75909e,
-       0x3b8c6719, 0x63fc0d7b, 0x3df49b12, 0xb8dcee90, 0x628d8c91, 0x740b5dcc,
-       0xb67e0049, 0xf00f360a, 0x4765b8a5, 0xf3d616bc, 0x02fdfe3d, 0xf11db6f0,
-       0xb6d73c22, 0xbd2fd408, 0xad62c38d, 0x60aff16d, 0x0aafc51f, 0xb0696aa6,
-       0xb9ce32bf, 0x7df10271, 0xbfef3373, 0xb5e015b1, 0xac5f8fc3, 0x0ac6bedd,
-       0x65dd4a70, 0x72b864ad, 0xb17e651c, 0x739c782d, 0x8e857cb2, 0x2c1a2f97,
-       0x10bba46a, 0xaf7e4569, 0xadbcb817, 0xdc799bbf, 0xacc94f20, 0x87406042,
-       0x9013e644, 0xbd29c0df, 0x86fce41d, 0xcb55903e, 0xf17edd20, 0x1d5b0475,
-       0x6c99c740, 0x3b3e1064, 0x7fa82922, 0xa83529be, 0xecc4a6fd, 0x52b9f6a0,
-       0xdf3e105e, 0xff505d72, 0x4199d605, 0xe7d3adf8, 0x685ff506, 0xdb84185b,
-       0xeb8d4998, 0xba5cad6f, 0x999073f8, 0x041d2b57, 0x70287a15, 0xd8c54e86,
-       0xee0bc13f, 0xa036ec9b, 0x19288ccf, 0x3e397367, 0xd8d1f002, 0x06ddb37e,
-       0x20919d74, 0xc7016ce3, 0x05f69593, 0xe538ffbc, 0xfb785bfd, 0x2dfb4a35,
-       0xd2a27dbc, 0xafc72b7e, 0xf1eed467, 0x03776adc, 0x8ed1ebfe, 0xb6f8096a,
-       0x138aebe4, 0xfde9a023, 0xa77745aa, 0x45583f02, 0x18d36306, 0x0034875b,
-       0xed182ed6, 0x351a4a78, 0x7ff4aed8, 0xe357b255, 0xd14bdef3, 0x63226cb9,
-       0x51dfc80d, 0xe6321f3f, 0x716779a3, 0x1159b2d2, 0x33ea1f06, 0x0cf4d08b,
-       0x631a51e8, 0x0db18d82, 0x906f4831, 0x0477a213, 0x89a55f41, 0x8995ebe0,
-       0x94a8df04, 0x63336ad8, 0x821695ed, 0xf4ad2b27, 0x74e554fc, 0xda576f82,
-       0x5953be08, 0xd2a3b048, 0xe290504e, 0x9f1872d8, 0xa23eb1ed, 0xd5b87a41,
-       0xfcc2cf23, 0x7e40cff8, 0xd4c64286, 0x1722acec, 0xcabf79d0, 0x65f48ad6,
-       0x6ce98c6c, 0x5ef3e0d4, 0x815243a1, 0x46a7bade, 0x0f40eb58, 0xf37a0f8c,
-       0x4617a04c, 0x11bac1a7, 0xe59c6168, 0xbb43524b, 0xbad69d71, 0x029fda11,
-       0xf587ab73, 0xda991ad4, 0x1cc9f602, 0x34f1100f, 0xf7aa8d0e, 0x7fec0552,
-       0x1ff5045f, 0x0236c603, 0x196825fa, 0x7de0f7c3, 0x1ffd8116, 0xdfd81163,
-       0x684024fc, 0x10e1adaf, 0x37f48224, 0x43cde741, 0xe2e09efb, 0xd555d8eb,
-       0xee304921, 0x5c7ca9ae, 0x29f13158, 0x8119cc5f, 0x499fb2f6, 0xb8394c23,
-       0x005abd1f, 0x83d5e881, 0x2bb009df, 0x45034f59, 0xdb24f402, 0x01d4c113,
-       0xbd4d757a, 0xe09f0829, 0x3fea0c4d, 0x6a0a59b1, 0x8259f3cf, 0xb49f27da,
-       0x3b53e106, 0xbff507a6, 0x105b43f6, 0x61575d7e, 0xcfebff50, 0xfef083d9,
-       0x618fd81c, 0x94defe78, 0x9ff50428, 0x703ade0b, 0x89aac67c, 0x232df33e,
-       0x1bf79e83, 0x1b869d38, 0x78358177, 0xb71f855c, 0x7f1e0f4e, 0xdc782da1,
-       0x3d87cb1f, 0x906a27a0, 0x13d07aff, 0x4f41fb84, 0x0de720d4, 0xbf8827a0,
-       0xd0827a08, 0xcf827a0b, 0x209e820f, 0x827a04de, 0x13d011f8, 0x4f419bc4,
-       0x3d051e10, 0xa357e7c1, 0xef3cbb57, 0x53de7949, 0xed8cbcf2, 0x8d5d3a20,
-       0xefcb6f2e, 0xdfbf23bf, 0x079bef81, 0x30bcb0e5, 0xc835f543, 0xf398ccf3,
-       0x87582eda, 0x01575d6d, 0x6f7d4dc6, 0x8246ac8a, 0xc9cf0e6e, 0x5aab8c4a,
-       0x9456d962, 0x5bdf7b5f, 0xa70fc42a, 0xfb42b69b, 0x78ffe696, 0x4dfddb07,
-       0xcdf184a2, 0x459fcdeb, 0x5f3d38e3, 0x2c753247, 0x3459f7be, 0xdf654bc6,
-       0x42b7c230, 0xb9c5fa3b, 0xe5f3228d, 0xb57bbaa0, 0x5663ded8, 0xe3168f70,
-       0xa3437b33, 0x5a52f916, 0x6fed48df, 0xedc1357a, 0xed41d5f5, 0xb00fec26,
-       0x4689ed54, 0x56685e7a, 0xff51f3c6, 0xc3f73332, 0x6f8fea17, 0x5bd61ebe,
-       0x562ab8de, 0x3697f584, 0xd77f17bc, 0xe2ffd00f, 0x1c721791, 0x0b797ef0,
-       0x1c18678c, 0x2345bcaf, 0x65fd7ce3, 0x1882c6e6, 0x621a1ba0, 0x87acfcb0,
-       0xc01b676d, 0xd736942e, 0x577c6195, 0xc343b96a, 0x5ebd3e80, 0x01d710b1,
-       0x71062a7f, 0x9189995b, 0x7ef1e87f, 0x8c177d15, 0xc4f79afb, 0x7a87e82d,
-       0xe3478f5b, 0xd04dbdbc, 0xabbf803f, 0xb11c7953, 0xfc4b553a, 0x1e3a69eb,
-       0x16fb412d, 0x774e71ef, 0xfff68fb5, 0x02f78cba, 0x8b377a24, 0x5afa2e3c,
-       0xc6507c45, 0x9a33a173, 0x4619ed8a, 0x97a757dc, 0xaa7f77cf, 0x579b9fc4,
-       0x9ff5c6ad, 0x55365c4a, 0xae05fb24, 0xf1def01a, 0xc2b6ebf3, 0x30bd4a52,
-       0xf7f210ee, 0xbb6e3ca8, 0x69bf471c, 0x1a3ed43e, 0x30aa7ee8, 0x807c8f36,
-       0xaa636fdc, 0x6815fa8a, 0xe80ae61d, 0x8c9069d7, 0x160fcf28, 0xbf911ba6,
-       0xe7c423af, 0x0eb5bb85, 0x7c4d2580, 0x47534ebe, 0x675dca34, 0xe31164d3,
-       0x7fbc6551, 0x901de791, 0xb9be01ef, 0x9e454f89, 0x338e036a, 0xfcfe3fc8,
-       0xbd1354fe, 0xdef3ca77, 0x7f603b92, 0x2b28969d, 0xcb5da5f2, 0xa5fd708a,
-       0xbe7160e8, 0xa46ae4d6, 0xfddf3283, 0x2d7a3f32, 0xbfabe22a, 0xbbf72359,
-       0xf5058ea3, 0xd57e70d3, 0xe4c7af06, 0x3bfbf339, 0x73d97fa0, 0xbef8c322,
-       0x8f11534c, 0x20fcc7fb, 0x9d32dd68, 0xf8be34cb, 0x2d7900f8, 0x1bd0196b,
-       0x8b79c903, 0xf11227a2, 0xa763e153, 0x4aebe445, 0x2c1879d4, 0x8eb1acb9,
-       0xced41ae4, 0x4d3907ad, 0xff20ea8e, 0xdccffc97, 0xfc0ad54f, 0xfb2559b9,
-       0xb5c7154d, 0x3e2fd100, 0x7853fb27, 0x1f00999f, 0x00146c0b, 0x4fa614d7,
-       0x917c4155, 0x21e6362c, 0xb6a9753f, 0xff9854a6, 0xc87ec97d, 0x6489f142,
-       0x553e43b4, 0x66e0d97e, 0x7efed023, 0xdbce24f4, 0x047904df, 0xd11e5bcc,
-       0x9073ef3c, 0x282b7ecf, 0x7fb7ac08, 0x5ce28697, 0x00833b10, 0xe99acd71,
-       0x94be5f5c, 0x8844d31c, 0x54abcb17, 0xc832afb4, 0x5f98f4bf, 0x62eef6c9,
-       0x28adea63, 0x452765a7, 0x2be60453, 0x9d7fd4de, 0x86837881, 0x57a72af2,
-       0xff30fab0, 0x255a326b, 0x9deacfc0, 0x9d379869, 0xe2d3eaad, 0x3e21677b,
-       0xcbcf9c7f, 0xa7cb4f50, 0xd4519f73, 0x193da3bc, 0x57e60960, 0xafc8cfe2,
-       0x3a99f242, 0x8c75c7fc, 0xf21539fd, 0xb26f8c1a, 0x37c63659, 0x048ce2f9,
-       0x7f995fd2, 0x1710276c, 0x13f5a612, 0xdfa809ac, 0x3cd2d45b, 0xab6f77dc,
-       0x71f484c6, 0xc62a1db5, 0x22ca7b75, 0xafd82aad, 0xa251c373, 0x815fef63,
-       0xf65710ce, 0x33ca3226, 0x67a7197b, 0x6797336f, 0x44f04697, 0x9e20fbe0,
-       0xe0845e34, 0x5ea682a9, 0xd9347f77, 0x510ac621, 0xcb2dd7fe, 0x68bc6150,
-       0x80337203, 0x57b91447, 0xf5c0a5fc, 0x977546fc, 0x7bde1238, 0xe7fdc343,
-       0x48d353df, 0x9968e7ee, 0x46f5f103, 0xc62bf92b, 0x887de8aa, 0x52fe28a7,
-       0x67c435fc, 0xc7254f14, 0x147e497a, 0x6d50bc3f, 0xab8e04d2, 0x821bdfbc,
-       0x0580f32b, 0xe0ede3e1, 0xf8c0def1, 0xa6fc7923, 0x1e740f8c, 0x6afe7481,
-       0x70fc958a, 0x91f042ca, 0xa41577a4, 0xf59e8a77, 0x01cd5c80, 0x3810cab9,
-       0x1d76cabf, 0x728073a3, 0x00e741d6, 0xde7cd105, 0xf11f9c02, 0xd2130e48,
-       0xedffda04, 0xdb5e9c69, 0xa7d8a864, 0xc4b66913, 0x698d8034, 0xa469318e,
-       0xb792261f, 0x408cb2f5, 0x35d0927c, 0xf75d7d84, 0xf06e7e27, 0xda3dc815,
-       0x08575f99, 0xfe203992, 0x6ed3fd29, 0x69c34b2d, 0x18161d6c, 0xbd7188af,
-       0xc5d9e451, 0x1b95b2bb, 0x303992f4, 0x7fc3b2fe, 0x72c567a0, 0x279e117b,
-       0xd8e0fe40, 0x27992f10, 0x8f627bc3, 0x4fd73c16, 0x73577396, 0x73d3ee30,
-       0x0519f379, 0xffc9c60f, 0xf5e72694, 0xc8a7fcb2, 0x10ed58f2, 0xabdf683c,
-       0xee1355bf, 0x90782e5e, 0x8784bf07, 0x45e4621b, 0x99a2bf62, 0xbf47f41e,
-       0x8ef29404, 0x2fa4719d, 0xb9fb08d4, 0x2fffde4d, 0x0263bed5, 0xc684e7ec,
-       0xc2f98a9b, 0x2b08f289, 0x418cbf8e, 0x64f60180, 0x7820eb39, 0xd879ca3a,
-       0xc7bb8347, 0x81ff3c62, 0xf8c56743, 0x8d537aa7, 0x2e66ed11, 0x3cc264db,
-       0xff514805, 0x9f1fe4fd, 0x0b8830cf, 0x5f0aff90, 0xcbecd31b, 0x073f00d2,
-       0x749c493c, 0xefa5fbe5, 0x3e468e1f, 0xd0e6ff76, 0xda19db92, 0x3bb23e9d,
-       0x1a551525, 0xa8c41c9c, 0x906d32c3, 0xe0bf0abf, 0x1f1052df, 0x90630f61,
-       0x42cf622e, 0x177ffbd2, 0xabb1fa19, 0xf3a151f1, 0xac7e642f, 0x21f6e16d,
-       0xdd0abf94, 0xa21e676f, 0x5daff81f, 0x23a617c4, 0xffca147b, 0x0407f1ab,
-       0xcd363971, 0xe431d38e, 0xdb8ab26b, 0x2035e4ab, 0x3beeb02f, 0x0bada398,
-       0x8fa892e0, 0x32e72434, 0x7ccb969f, 0x167980fa, 0xdfff5258, 0x9a44e9f1,
-       0xe91a7b63, 0xfd4869ad, 0x32c7d50c, 0xe2aefac9, 0x67a43c6f, 0x3579fac1,
-       0xf85664bd, 0x8e7f802f, 0x7fa4d10d, 0x625d7f0a, 0xd5f7e903, 0xad18f3cf,
-       0xf059bcab, 0x847f52f8, 0x10b00a5e, 0x884363e0, 0x1afc2a3e, 0xf6291ece,
-       0xfb96b4ec, 0xa27df763, 0x8ff2f307, 0x1309df05, 0xceeca7da, 0xd282640c,
-       0x8eaae3ff, 0x38c0f7b1, 0xf0e4cf1f, 0x0159c634, 0xad922db8, 0xa49e23b4,
-       0x3f7ee373, 0xa167b216, 0xf858fe7f, 0x9e385be7, 0x5f1095a0, 0x04cb3096,
-       0xef0d69f8, 0xc57dd8af, 0xecbc7fde, 0x4fd439da, 0xbee06f60, 0x47a25c60,
-       0xa782fddf, 0x256a4406, 0x5f5c6a98, 0x0aa7acea, 0x27f9e0d3, 0x43cf4dbf,
-       0x05d6d87e, 0x2e7e878f, 0x3ce22275, 0xebf1baef, 0x9caacd3e, 0xfc0679c1,
-       0xf44b9cd4, 0xfd53f15c, 0xb25a1965, 0x2833ab53, 0x69922fde, 0x1ec98b6d,
-       0x87f829f1, 0x08fa4f7e, 0x5fa0ce55, 0xc8793fe9, 0xefa008e0, 0x4c3bf079,
-       0x3f67801b, 0x97e81296, 0x3479ed8e, 0xa451f913, 0xb9e2e775, 0x3feab9e3,
-       0x2edfa0a4, 0x2670f3da, 0xb67b8dc5, 0x5ffc6264, 0xa668f354, 0x0728f08d,
-       0x4e6a1fe5, 0xd703ee87, 0x101adeed, 0xf26526a7, 0xc47979f8, 0x1f8c7cb1,
-       0xf1735de7, 0xcbf41321, 0x4260adf8, 0xeb35f831, 0xddfd0878, 0x77970b0a,
-       0xec8233b6, 0x43678c31, 0x2f65d7be, 0x3d7d45a8, 0xb34cf965, 0x74bfe31a,
-       0x056bd135, 0x804b6cf3, 0x6088f676, 0xfd8163aa, 0xff6356c7, 0x6d049b55,
-       0xb1fa1c62, 0x97987991, 0xd247d2e9, 0x247cee3a, 0xaf9f1daf, 0x9f3f8078,
-       0x7534f3a7, 0x694f38e2, 0x37a475ad, 0x278c34f6, 0xd2ebf595, 0xcadef4b5,
-       0xcbc5026d, 0x4f193cca, 0xee0757c6, 0xfdce9753, 0x8db29b32, 0x32adcfec,
-       0xe07e6e5f, 0x611237bd, 0x1d6349dc, 0x7f6874c6, 0x66b389e7, 0x139f3c1f,
-       0xf3073e73, 0xe3ad0c86, 0x77dc62d9, 0xfb8ace8d, 0x2c9b9298, 0xdfff6026,
-       0xe11c7ccc, 0x3d5607ca, 0xf2768c5b, 0x73ca08e9, 0x13adf594, 0x83e61524,
-       0xbf6fabc7, 0xee76e913, 0x778a0889, 0x256755d7, 0xdfc81fb0, 0xa5ff02f7,
-       0x41f6c64c, 0x05f08efe, 0xd825dfc8, 0x44ca81e2, 0x94aa5fc2, 0x5ca5b208,
-       0xb899d6be, 0xbc6e193d, 0x4b9790c9, 0x3ca64760, 0x7c41e302, 0xcd9c6f38,
-       0xcaf40e92, 0xb35e5f18, 0x0657de45, 0x4ee79fbc, 0x98748d9d, 0x769ee5b2,
-       0xd2e31d0c, 0x56f2fe79, 0xa82923e7, 0x381f6bc7, 0xb4317cf3, 0xe7b74aaf,
-       0xbb11fbe1, 0x7e3e512e, 0x15e1e5bc, 0x1aa2ef48, 0xbc9fdf1d, 0x644f73ef,
-       0xe78b3c26, 0x286a6f75, 0x3aed763f, 0x8016fcf3, 0x47bb6d77, 0x3fef281b,
-       0x7113bf76, 0xba7f533d, 0x97470d9e, 0x8f67ae9f, 0xd53e90a6, 0xfce59e80,
-       0x3d733d7c, 0xdcf44550, 0x15ff6e9c, 0x8d39dbca, 0xebf5053b, 0x240df65c,
-       0x8136eef7, 0x5fd8a1f8, 0xf2a5fde5, 0xde554bfe, 0xce02336d, 0xc6432f15,
-       0xd63ef486, 0xc62665f2, 0x979b97b5, 0x47dc088d, 0xfb023c28, 0x35864c86,
-       0xda7dbd03, 0x69a7db2b, 0xd856e91d, 0x8f1534df, 0xabdb4367, 0xbdb255d2,
-       0xcf0ffc85, 0xc5ff1433, 0x0f78b43a, 0xf82ad651, 0xaa3ef122, 0x6af3a6f9,
-       0xd81257ba, 0x7de741a7, 0xe01a7d8c, 0xe75b8777, 0xc713a0d5, 0xe3da0f51,
-       0x31543f6b, 0xbdbf805f, 0xf9922bae, 0xc81de602, 0x114f6023, 0x4b7f1fc0,
-       0xd87d9052, 0xe7042e9e, 0x36aef013, 0x15f21fa0, 0x2dfc65ef, 0x9f8835d9,
-       0xfb3e72d7, 0xc47c408f, 0x389849cf, 0xe71e906d, 0xd173ba5b, 0x70f42b2e,
-       0xb926ed1e, 0xf87e6b29, 0x99f44092, 0x7b9d5e7b, 0xdb1cfa75, 0x7c8b9dd3,
-       0x9ae9af3d, 0x5f947986, 0xfc8b95db, 0xedc2be71, 0x93a54ffe, 0x11f8bcf2,
-       0x05d800d8, 0x3ca260a7, 0xa1ec5f2f, 0x927fdcbc, 0x96cee5e7, 0xfb7764dd,
-       0x88b9f95b, 0x9051d54b, 0x1508e780, 0xeed1da67, 0xfcf227f5, 0x21b7c609,
-       0xcba466bd, 0x97dd53fe, 0xdfec10b2, 0xe1390189, 0xd439da79, 0xe38e2d73,
-       0xc17b432d, 0x1d58a372, 0xf501778c, 0xd8af9e1e, 0xe519ba90, 0xd4679cff,
-       0x6fa3b424, 0x49ddfee5, 0x45af68e7, 0x638a4499, 0x7f0069e0, 0x11e1f607,
-       0x1e282d99, 0x80b6628a, 0x74ad2e7e, 0xa7bfc52b, 0x74c7ba44, 0xc67ae78d,
-       0x2b3d728e, 0x9b4c74df, 0xa35e3018, 0x7894f76c, 0x7f6bde70, 0x345d7d27,
-       0xf023b991, 0x14f597bd, 0x2031b0e7, 0x7a2f80ff, 0xf283c139, 0xdca8f7e0,
-       0x178bc81a, 0x87fee64d, 0x7ef1d21d, 0xa454d289, 0x6af31f87, 0x4c794fa0,
-       0xc00c6647, 0x2b89df23, 0x4e4f98ed, 0x2be01c02, 0xf2cf9702, 0x23991d45,
-       0xd0495cf1, 0xa4bcf0ab, 0x77b786bc, 0x54bc78aa, 0xf7dfc69e, 0x7b57dc0f,
-       0xde821653, 0x9cbdb6f5, 0x5be02772, 0x9c35be0d, 0x7c4cbe0f, 0xb99eda0e,
-       0x46efe608, 0x5cf74d9f, 0x5ed08be5, 0xdc151b75, 0xf78c71c9, 0xb5cd9ee9,
-       0x5baae508, 0xbc15e0af, 0x5c64105d, 0xe5c15f79, 0x8c8547f7, 0xb4859237,
-       0x0a4ff487, 0x3dca35c1, 0x58ff3c9c, 0xb517fefe, 0x7bc22cf7, 0xcf3af9b7,
-       0x57f44ac9, 0xd218692f, 0xf0e07f55, 0x697fa459, 0xb33bf70b, 0x39ee1c0e,
-       0xd872f288, 0xb1e6f748, 0xe3e254e6, 0xdbbd96c6, 0x375ca126, 0xada073f2,
-       0xff3fef0d, 0xc3a7ea3b, 0x57183163, 0xe69eb759, 0xebca2f9d, 0x1e39eb66,
-       0xdfb3b725, 0xb2847c72, 0x3c71dfaf, 0x6b7fb796, 0xa75a17fe, 0xfb81f0ff,
-       0x9fa05e50, 0x17a5e29b, 0xa2605e40, 0x73d94392, 0x1bf59e30, 0xfce0563b,
-       0xab3afdce, 0x09e7c25b, 0x95be30b3, 0xa4dcfccc, 0x14f6fc78, 0x4754a7cc,
-       0x1df9edf7, 0xd7efbb9e, 0x2ba139d3, 0x12a5db86, 0x3dda7ab1, 0xf7bb3f24,
-       0xb5f701fc, 0xf6e74f4f, 0x1edcd1c5, 0xa0c9ef15, 0xfe579ef3, 0x940ad9f1,
-       0xd7717c83, 0xd7fe7c1e, 0xe90abd5a, 0x8db5a9d4, 0x4cfd01b8, 0xa9e286a7,
-       0x3e2f1962, 0x13d7cb1d, 0xf24055d5, 0x653db713, 0x4948c811, 0xe0b7fdec,
-       0xdb8be7ba, 0xce7f479f, 0x0ce8eaf6, 0xa03efceb, 0xbe77bc2b, 0x2da7434e,
-       0x35467dfe, 0xb0b76bca, 0x38b3c57d, 0xd7ef1d7e, 0xf44edfad, 0x3165d776,
-       0x31fa0f9c, 0x16ea9f3c, 0x3f3d0476, 0x1737b75f, 0xfb0bade3, 0xa5dc53e7,
-       0x97a293e8, 0x20bab525, 0x293fc7fd, 0xf963f31e, 0x8666e4cf, 0xc2e9fc80,
-       0xcffc6791, 0x85f5e806, 0x0b4f8d06, 0xb1d62a34, 0xa7af784d, 0xf24963e8,
-       0xbfb8854d, 0xe6755512, 0x278bc03a, 0xbd40ad77, 0x1167af3c, 0x2defd089,
-       0x2e0f3f15, 0x885aaa69, 0xf5b87b76, 0x7c799b14, 0x9f913979, 0xd66e5f97,
-       0xa9cf027b, 0x9547e143, 0x3d5b7a4c, 0x42baff88, 0x19473e47, 0xb7ad2def,
-       0x670ee30c, 0x9fc3f70c, 0x3306ff40, 0xee6661c4, 0x086e56a7, 0x1cdcbfee,
-       0xda9dcf43, 0xcbb44cae, 0xcccbf8ca, 0xd4cf6e26, 0x9fe8995d, 0x7923df43,
-       0x82f57b47, 0xa4aaf640, 0xf7433849, 0xf8d248c7, 0x44967a41, 0xee623db8,
-       0x9c487cd0, 0xc601f326, 0x77ac87fa, 0x9b7a0d25, 0x8d29c61e, 0x7f468aec,
-       0x8aec6655, 0xff6f73c6, 0xc8d59151, 0xc6538bec, 0x4f9c1b4f, 0xbd8b8fc9,
-       0xa87e9b1a, 0x183b60f9, 0x7fc5adef, 0x32622903, 0x3514deb8, 0xcc7cd147,
-       0xe50d35d4, 0xf05768b6, 0x534fb87b, 0x9bfa3e80, 0xc607c777, 0x75c7bfa1,
-       0x8677de53, 0x1ff7a6f4, 0x1ca0a69f, 0x26d8a894, 0x20bee73c, 0xc0617bf0,
-       0x82f85ee9, 0xf25e5e7c, 0xca244337, 0x65cb85cf, 0x01fec7a4, 0xd928fb3b,
-       0x6762bf07, 0x15c70d59, 0x7076cb3b, 0xeecec07c, 0x3762b8e2, 0x42a3fe95,
-       0x1d0a4fde, 0x9077a94f, 0xe6ed93c7, 0x6e7abaa2, 0x7f7e4537, 0x4c6b76c7,
-       0xfce27f3c, 0x19d32b5a, 0x95d3b412, 0x123577e4, 0x19c5b1fa, 0x76a579ca,
-       0xa0e27e90, 0x7499fa3e, 0xbbf509a0, 0x10f940c8, 0x070d15c4, 0x59791cf1,
-       0x07ef15bc, 0x9caee943, 0x7cc5c777, 0x7cf906b3, 0x8af1d6ab, 0x7269ef19,
-       0x82afc8ba, 0x74bf90b6, 0xb8a3aabe, 0xb7d357aa, 0x965fed07, 0xf61af1d6,
-       0x6c76d32b, 0xea4b029e, 0xe3b574d1, 0x943cd091, 0x5c43b257, 0xbb39fd5e,
-       0x39527ce9, 0xe6577f2f, 0x5ea70323, 0x7025f28d, 0x7cde3939, 0x57b46de8,
-       0xf2748efe, 0x03e45703, 0xa3478fcd, 0xe210f9dd, 0x5c407714, 0xbdaae1fc,
-       0x14b50f74, 0xde011fef, 0x7f7829b9, 0xa62edffd, 0x0b6d8838, 0xbcf28e78,
-       0xa50f1833, 0x2fb5ca0b, 0x24dc8f48, 0x9ba5dfc7, 0xeace9608, 0x061d2270,
-       0x8b8045f0, 0x21ebf801, 0x667f4878, 0x1e6266f7, 0x08d61dfa, 0xc6ca3d01,
-       0xbc534efa, 0xd0c3407a, 0xbf046c3f, 0x28e1f849, 0x1d532baa, 0xc718bf00,
-       0x9bfa22fd, 0xca0ee8d2, 0x7587fceb, 0x60f0df74, 0xb82997cb, 0x8ba6bf7f,
-       0x96d295f2, 0x9e31e397, 0x344b358d, 0x78dff83e, 0xdc3d8fba, 0xb6318f12,
-       0xe54cbcf2, 0x94eb94cd, 0x28fed172, 0x5f45cbcf, 0x54bfae26, 0xf6c5c8e8,
-       0xd453b458, 0x7111701f, 0x1328fb46, 0x2d60ddb8, 0x5089f922, 0x706745be,
-       0x25f60bbb, 0x8f11ee97, 0xb15978f2, 0x605f6427, 0x79f1d7bc, 0x261fb70e,
-       0x5e14fce5, 0x31bb462d, 0xa4d99d84, 0x41564dd8, 0x06644d79, 0x3ef2b75f,
-       0x30f3cb8d, 0xd2be776a, 0x83969b9d, 0x7bf249ef, 0x7d2cf601, 0x1da13ed0,
-       0xf23b2449, 0xf61e26a0, 0x60bcf255, 0x14af08dd, 0x802aaf2f, 0xfaad6cee,
-       0x2fca029e, 0x19ee9b99, 0x8575d742, 0x7f39997e, 0xd2f3e44b, 0xbcfc3d92,
-       0x9f8682f4, 0xf2bd832f, 0x3b5afda1, 0xf500aaa7, 0x72b8eeef, 0xdcb9e06d,
-       0xb35fc6d5, 0x5b5f1833, 0x30905551, 0x6c979e84, 0x8a3ed1d8, 0x1d17e10d,
-       0xd2f105d5, 0x7595cf95, 0xeb2bd05f, 0x1519a59c, 0x55a58f48, 0xae00a305,
-       0xf4b9f88d, 0xd0befbe0, 0xdfa1f3a2, 0xf9d2fa06, 0x575f8de9, 0x5c3f9d04,
-       0xe662bc6d, 0xe1c2f3a1, 0xcb0a1fd6, 0xcc69df04, 0x57e818a3, 0xe819e91d,
-       0x2f7cc04d, 0xb4fbfeca, 0x9e78a04a, 0x871aad15, 0xac7301f9, 0x6b7e871a,
-       0x0c0178b8, 0xdd1568e5, 0x8209ba49, 0x0eb0ae1e, 0xffa50f41, 0xbcfc191d,
-       0xaf5945e1, 0x7d2fcf46, 0x9fb420e6, 0x19456c96, 0x5c28a8c0, 0x8945e623,
-       0xda183c23, 0x7203be53, 0x036394ed, 0x5f7cab43, 0xbb522858, 0x586459ab,
-       0x8d12caa7, 0x57d80c9e, 0xf54edb21, 0x7798f37b, 0xa9791506, 0x3d7f7ebb,
-       0x4d7fcfb4, 0xd195bc9c, 0x37e50f7d, 0x330e9105, 0x5fb055c6, 0x4ef43f39,
-       0x7e701859, 0x37f647b7, 0xfc814433, 0x14525f40, 0x5dced39d, 0x503cbe5a,
-       0x10853b4e, 0x72fa79ba, 0xf5f1bf29, 0x6dd206e5, 0x15516bc9, 0xbcc80e74,
-       0xcc049653, 0xaf0672f3, 0x696af89f, 0xb8979d06, 0xd27bf32e, 0x27dbf17c,
-       0xd7588f31, 0x80af7906, 0x407ea7e3, 0x2f906675, 0x0dd09c62, 0xcc1ce9f9,
-       0x66cc1df5, 0x61387b43, 0xae7be514, 0x7ac30203, 0xae8b6733, 0x9d9bef06,
-       0x8c78ae9a, 0xbf34b673, 0xec3f45af, 0x569efc3a, 0x92abbcc2, 0x2637f5c9,
-       0x05d7d215, 0x5bbf40ec, 0x01f59cde, 0x93f2b5da, 0x5cb0d4fc, 0x3fdd1efd,
-       0xce14b9e2, 0x48d4da57, 0xcc658df7, 0xd65f7247, 0xf6ff9c10, 0x075d0e27,
-       0xa76cb2f4, 0xd3ee7c14, 0x225fcf3c, 0xb72f0ab2, 0xce9f148b, 0x73a04c4d,
-       0x38f7c1d8, 0xf7626d7d, 0xdb6e7843, 0x0558269b, 0xd237aa18, 0x26e309bd,
-       0xc73f2677, 0x85f57ded, 0x7ce86b29, 0xeb0533c4, 0x73e57ba4, 0xec8fb9fc,
-       0xeb018b50, 0xebcadb99, 0x59237a17, 0xbbe211d1, 0x23f20c63, 0x92ded52b,
-       0xb6967181, 0xf1eb9def, 0xaf8e59de, 0x57b1f743, 0x253e6fbe, 0xbacae9c7,
-       0xf32727e7, 0x21e618f3, 0xf3976a39, 0xda0a9b62, 0x4cd3ee03, 0x77528299,
-       0x046befc7, 0x9c3e8f7e, 0x17bd617e, 0xbd623bd6, 0x72fdc217, 0x7bd6245d,
-       0x5ca2fe21, 0x5ef58917, 0xbdeb1cf8, 0xeb926f10, 0x0bdeb122, 0x42f7ac71,
-       0x8bae5478, 0xa54b853c, 0xbfd2eef8, 0x3edb9e61, 0xfc721f10, 0x3e084c74,
-       0xe9ffb83a, 0x1f182118, 0x33ff502d, 0xcdfe9775, 0x1675839d, 0xf0dfd926,
-       0x9ce50b3a, 0xb670b3ab, 0xb1f20779, 0x3c24c275, 0x69266747, 0xb74bea04,
-       0x56ffe7cc, 0x1da02fdb, 0xe47d1160, 0x64c4e797, 0x78bb408f, 0xba62e4f2,
-       0xd38feb87, 0x93bc3e91, 0x7ec3e8ee, 0x9e6f98ae, 0xeb06cc3f, 0x265a66e6,
-       0xfc029a6f, 0xe4106998, 0x44fb7238, 0x059f72bb, 0xbadd99fc, 0xdb9a8a6a,
-       0x994e130b, 0xc6ad962f, 0xe925d771, 0xaa1e6327, 0x1dfc734b, 0x5fe855c7,
-       0x19ad7a30, 0x48d76fe7, 0xeabc601f, 0xf3cf13fe, 0xa501fa95, 0x33a927df,
-       0xdef099f5, 0x26fa4b5c, 0x2819ebcc, 0x4dbc8a1f, 0x3e501acb, 0x6128aa6c,
-       0x4933d923, 0x67d5fb8d, 0x92cefdf2, 0x4f80fdf8, 0x6063a92b, 0xcce45f7c,
-       0xdb77cc38, 0x949fbe65, 0xe64a7ef9, 0xcdd1d63b, 0x3a3af351, 0x87475884,
-       0x20ea10f0, 0xdd2fbfcc, 0x7149931e, 0xd20a5f72, 0x984ba95d, 0xedc67a87,
-       0xf5d20a4f, 0x27c72c90, 0x99d3fb64, 0xefe24f66, 0x54acf8f1, 0x96e81fae,
-       0x7d9473cf, 0xbe0def2a, 0xfb05e7cf, 0x6ffee12d, 0x5f645510, 0x5b38e543,
-       0x788efb96, 0xbd4abde3, 0x3739c608, 0x261fdc88, 0x41dffaab, 0x6f1c93bb,
-       0x90c23694, 0x78a3b3f9, 0x09bd36bf, 0xdb6f6c4d, 0xddce7437, 0x296190fb,
-       0x30314fbf, 0x3da11efc, 0xe04d4271, 0xe51fe979, 0x908fc079, 0x9a2cba5e,
-       0x3923f61f, 0x423f01c6, 0x144e66f9, 0x9bf923dd, 0xa4fca2bf, 0x09aa75b7,
-       0xe1dfd4e5, 0x715fa031, 0xc4ffe3fd, 0xb7f0bfa3, 0x6cf5417e, 0xa4bf6ffe,
-       0x722db73a, 0xcdebe1bd, 0x87589d72, 0xbde7c464, 0x60159f85, 0x1c32adbf,
-       0x3cfc23b4, 0x686f814f, 0x681de66c, 0x51509ecf, 0x8dd8a2fe, 0x98597d50,
-       0xf78e5239, 0x676831ec, 0xc4ec5f40, 0x597d01b7, 0xc1798316, 0x12917da0,
-       0x132ea87e, 0xcd598bed, 0xb4420bed, 0xb733662f, 0x7da3882f, 0x05f68841,
-       0x417da39f, 0xe20bed1c, 0x47105f68, 0xed1082fb, 0xebff3e0b, 0xd3a75e52,
-       0x3f29810b, 0x5c5035c7, 0x7f8ebebf, 0x8dbeb27f, 0xafaddbdf, 0xac0ea816,
-       0x94dfe607, 0x509d4439, 0xe4275c93, 0xa2f741dd, 0x15a2c3ae, 0xd6017859,
-       0x6dcf09bd, 0xd0277d35, 0x051ab82f, 0xcf84956b, 0xb63ad297, 0x60fd4eb4,
-       0xd3af3e39, 0x2fe85558, 0xa3c72f5a, 0xad692bdf, 0x2735ff23, 0xbfcb4da1,
-       0x9e181197, 0x71d12f1f, 0xe11728fd, 0x3fba24e9, 0xae5ffb26, 0xad73a0eb,
-       0x0a417ad2, 0x35c08efc, 0x7fc512fd, 0xf2b9fdca, 0x57b94bdd, 0xca0ead2f,
-       0x6ebc6c9f, 0x4aff718b, 0x9e406579, 0xc3277cab, 0x74d56fc4, 0xc08afe3f,
-       0xd7ab8562, 0x36b49573, 0xaffac66e, 0xb4767bd0, 0x16d75424, 0x44febf72,
-       0x95d75ca6, 0x6f30f2c7, 0xf5627c2e, 0x5f30c381, 0xe51d76ff, 0x774f609d,
-       0x409efea1, 0x9cba0439, 0xb9d3d368, 0xb23be7db, 0xde1f1046, 0xf6489914,
-       0xb7d90c72, 0xf2811a75, 0x3597b031, 0xc2ecdef8, 0xceaec8bb, 0xfc8abb06,
-       0x93eee454, 0xca2d7b54, 0x1209bae7, 0x1d7cb9f9, 0x93c697bb, 0x9200c5eb,
-       0x146fe5de, 0x57c02a3c, 0x2f7d2b31, 0x86c812b4, 0xc6af50f1, 0x75d608f0,
-       0xaebc64ad, 0x75a39143, 0x8eef943b, 0x577d10c6, 0xd95cf4c8, 0xb06fc7fa,
-       0x1d2ee36e, 0x56490f3f, 0xe4803af1, 0xe7bebcad, 0xf5e0e66e, 0x8b4d9872,
-       0xdabd2f94, 0x511dcf05, 0x79f85263, 0xe380948f, 0xa1a53aaf, 0x84fce33a,
-       0x8a0e9905, 0xfd50e64f, 0x43bbe086, 0x1f9afefc, 0xeb83878a, 0xec684e37,
-       0x3b573df4, 0x73d925ca, 0x9553c107, 0xbb150445, 0xf63fd4ad, 0x88dcbdb6,
-       0x0cbbe7f3, 0x62b7a456, 0x83a8ae07, 0xa950e48c, 0x100b1c83, 0xc0cc0aeb,
-       0xda0c5363, 0x44ec8967, 0xb273aab2, 0x1bfffb84, 0x3f200eff, 0xe30f2da1,
-       0xfc7974a6, 0x43fd92d3, 0x9a2d9fe4, 0xbc3df1b9, 0xf40eda4f, 0x080dc02c,
-       0x6d7b2f18, 0x6dbfc622, 0x1a46a982, 0x78ee8eca, 0x5c97eb08, 0x7184c166,
-       0xf6e44159, 0xbf1878fc, 0x8ad52d20, 0xccd5dc76, 0x403f2de3, 0x3debf7ce,
-       0x55dfc0a2, 0xce9c63c7, 0xea9596f9, 0x351ccee8, 0xacbe7cf8, 0x5fadbd4f,
-       0xabe3faf1, 0x38b563c7, 0xade99bbe, 0xc8f8f275, 0x8cd7f9f7, 0x914cb8a5,
-       0x8486fe9b, 0xef9b941a, 0x7cbbff65, 0xcc1a7bf9, 0x1cd33b03, 0xaff38dff,
-       0xa1e97d58, 0xd0e7da78, 0xd3a9507e, 0x4a83f50f, 0xabfff37c, 0xcaedff3e,
-       0x54ef820a, 0x51d8206e, 0x51f6a6e9, 0x735cfc59, 0xfc0ab8b8, 0x10d65c43,
-       0xbf4294f1, 0xe4aae221, 0xae3ca9ac, 0x89473cc2, 0xa388aeab, 0x0155df40,
-       0x75bb3efa, 0x608f9de4, 0x6b53b3dc, 0xeb0090c5, 0xc81bd7a8, 0x4d64643e,
-       0x529e2a1d, 0xf8a069e8, 0x27e99fab, 0x2cb3fce1, 0x1fbc6ae9, 0x0425989f,
-       0x3fa80be5, 0x1fd46fb8, 0xea3fa884, 0x39e7b880, 0x14f6a82d, 0x29b82f1e,
-       0xbf13d05e, 0x5d815737, 0x662efc01, 0x3d2bb20a, 0x31857621, 0x1d70affb,
-       0x9d795a6b, 0x3a5f5297, 0x93d7c00b, 0x5e33b086, 0x46c6676e, 0x3ce1f77a,
-       0x54919d63, 0xc3427caf, 0x16c4eee5, 0x9ab82f5e, 0x8ff7f9d9, 0x689bda57,
-       0xb15defa4, 0x01fc9f7d, 0xa8f5dffa, 0xcd9ee281, 0xfda66b49, 0xf8cdec4f,
-       0x7f0f4e2c, 0xe7de6fa5, 0x22731f20, 0x905cf7f9, 0xee2859bb, 0x7e924555,
-       0x8ed97e40, 0x6bac57df, 0x8ed0f211, 0x77d9d1cf, 0x6a9d3ae1, 0x27167ebe,
-       0x3baa27df, 0xbf42f78a, 0x2b64f8ce, 0x1263cfe6, 0xffac308f, 0xe61577ca,
-       0x64ecbda0, 0xbf7be9db, 0x5dc73a8d, 0x39c5e7c8, 0x7b9d0215, 0x5897faca,
-       0x95b35518, 0x153591f8, 0x2708bef9, 0xe6e473a3, 0x2e8f98c5, 0xf1c10a8a,
-       0x8dce8b1e, 0x6c78e55f, 0xd2827b48, 0x1cc9e32e, 0x2f356777, 0xd2e573c6,
-       0xf3e9bd7a, 0x91cffaa0, 0x39abb841, 0x6079f4c9, 0x03fe2a7d, 0x822daecf,
-       0x93dc059a, 0x078e0837, 0x85e53f70, 0x2e39f917, 0x5abf23eb, 0x7d112595,
-       0x7ccebd47, 0x737dff28, 0x902e748d, 0x87915b10, 0x472c09e7, 0x52fd8a9a,
-       0x17147d34, 0x96ab7ef6, 0x8be8b3bf, 0xef202dbe, 0x7f95be7f, 0xcfca117f,
-       0x7b970b3c, 0x0db0d997, 0x8c4ce6f9, 0x7ad82088, 0xa616e289, 0xdef19bb6,
-       0x3a0af214, 0x3f7d08b7, 0xb7efc2dd, 0x656b3753, 0x90ff813a, 0x8e337ae4,
-       0xc674d9bb, 0x948befaa, 0x266ccae9, 0x866d3ff8, 0xfcffc64a, 0x0113e638,
-       0x7fd86dfd, 0x6b5f9db0, 0xf77bef2b, 0x26f8fbbe, 0xca1f3cb3, 0xf1461ad7,
-       0xa0f7e873, 0x06625a9f, 0x2e5033ea, 0x53d38b9e, 0xf7583f9e, 0x6ba0ebcf,
-       0x7f3d72f5, 0xf83fbd68, 0x8ae7f43b, 0x725f7b9f, 0x52bf1d50, 0xf9d4aff7,
-       0xcd2f3127, 0xe027b4a7, 0xda88baed, 0x3847a1db, 0x2193f303, 0x659376e8,
-       0x91647fe6, 0x17d9b8de, 0xfee7c1ea, 0x810de8a8, 0xe486727c, 0x66593737,
-       0xfbca7bd1, 0xb1661be5, 0x26e3262f, 0xaccc38e5, 0x14e7ff22, 0xd9021bd9,
-       0xa28f5e11, 0xec1a77bc, 0x9ff7ce3c, 0x7e11f760, 0x0bfef608, 0xc19fe7a0,
-       0x08fc21de, 0xff3e1dec, 0xc21dec04, 0xf803f02e, 0x03f053fc, 0x61dc9708,
-       0xe57a829c, 0x5f62ae6a, 0x3b3dd704, 0xd3bfe302, 0x97968733, 0x9e2a598b,
-       0xdd0ea5bf, 0xe9e596ae, 0x6f9c8df4, 0x4f3377bd, 0xdfc92a4d, 0x86178c26,
-       0xd7b7eefb, 0x5afbedc8, 0x37bc1cf9, 0xb2e7e389, 0x473cfc34, 0xf7c69ec5,
-       0x3af066d7, 0x2b8ec539, 0x1fc82af9, 0x63acaf8d, 0x29d79c9c, 0x55663cfd,
-       0x0a48f7d0, 0xfde1639c, 0x5f313e48, 0x0d4c7947, 0x44a74f90, 0x172a19f2,
-       0x1d385a9f, 0x772e3acc, 0xa09768c9, 0x9e82727f, 0xe361c6e2, 0x51ef90b0,
-       0x394f90ae, 0x32c64b1e, 0xf3e1988f, 0xf7aca363, 0x7e3f3a3f, 0x943150d8,
-       0x3ff998fd, 0x3e80ffdd, 0x8affef06, 0x8e876b7d, 0xf7db873f, 0xca2bbd40,
-       0xc1f610cf, 0xb81f603a, 0xb164dcfc, 0x1d4cb78d, 0x05483bfe, 0xebe0cdae,
-       0x6a83e456, 0xc5ee3094, 0xee0fa57d, 0x91fd6067, 0xcb5bfb21, 0x94225ee8,
-       0x13df018f, 0x05fafb29, 0x1ba147ae, 0xa38a3e58, 0xa81994c7, 0xc590fbce,
-       0x4769efc4, 0x0762b97d, 0xf645feb4, 0xf1507f13, 0x6ec51a7a, 0xc4173c0f,
-       0x82730b95, 0x513339ec, 0xfd23ad9c, 0x7bbc41f2, 0x4f7830d0, 0xb7f7eca9,
-       0xcbf63eb2, 0x6fffb5f9, 0x8ff65f3c, 0x73dfa3ee, 0xefcd3ff0, 0x9bc460d1,
-       0x6eee0eb1, 0xcc253bf9, 0x9e5ad5af, 0xcf21ab37, 0x7d2f7bf6, 0xae01f782,
-       0xaa3c4467, 0x9733e262, 0xd3fc5097, 0x7e6131a6, 0xc7e9f1be, 0x9dbca24f,
-       0x7424126d, 0xd826fed9, 0x3ba7e636, 0xf43d1e8d, 0xe7e2682f, 0x45eb6b27,
-       0xfcff048f, 0x696efe42, 0xfa1a33f6, 0x234d699e, 0xfe3977af, 0x6bca7af4,
-       0xcf207acf, 0xc40b7186, 0xbcf1da07, 0xfe39e4be, 0xfb2512bb, 0x1efc5adc,
-       0xa05aa4af, 0x97c9537c, 0xaf75e4cb, 0x6c7909d9, 0x30483dd0, 0x14bccc5e,
-       0x06d4955f, 0x086b2f3f, 0xb5ef7fce, 0x94d77c0c, 0xf9c8ebc7, 0x3f62acbd,
-       0xdcab8caf, 0xfac1a7c4, 0xe3c6bfeb, 0x76d8be79, 0x0353e539, 0xf8ca17c7,
-       0xca2fc019, 0xfacaf6e7, 0x62e8fc95, 0x85e29b12, 0x2e313afd, 0x50efe495,
-       0xc8aedf81, 0x1f485bae, 0x8c268a8f, 0x8b34b6b3, 0x7967a46e, 0x7d377eab,
-       0xf4e78537, 0x3df3a446, 0xc26ff7e4, 0x273c267b, 0x83b67c84, 0xce83a6e4,
-       0x6fad99e5, 0xb697dd0d, 0x4fe84de8, 0x683f479d, 0xfd06efc7, 0x57860587,
-       0x7cefcaf8, 0xd78679ac, 0xcddfc199, 0x229afdf8, 0x5f006217, 0x436bef91,
-       0xc33e2af8, 0x8d35f3f3, 0xdedf2823, 0xf568b4f8, 0x39785ca1, 0x17be157f,
-       0x3ce8db88, 0x7c48f805, 0xdd4cfd9e, 0x07289193, 0x05fdf8fb, 0xfdf101c8,
-       0x77ce2eec, 0xc443db6d, 0x2cb57f77, 0xf7fc2d07, 0xf8ea4a49, 0x17e81079,
-       0xf1abc9f9, 0x5f7c6aff, 0x7c83db20, 0x3889c671, 0xe5ef778c, 0xe988adf3,
-       0x9a07bf2e, 0x20bb993e, 0x7975f515, 0x26c6eee1, 0x07891980, 0xce621999,
-       0x51db3a53, 0x5cb9e04b, 0x79d79e9b, 0xca045103, 0x4bfae433, 0x53dd4ce9,
-       0x5e47af68, 0xfe31f143, 0xf79c0445, 0x60cf3f00, 0xb23bd09e, 0xd8cbc0fb,
-       0x7e8e946f, 0x55bca58f, 0xa2e5d3e7, 0x9bf2e45f, 0x715bedaf, 0xafddc60f,
-       0x433ee8ea, 0x45dff1b0, 0xe3fd6d28, 0xc84f7887, 0x416df29a, 0xff209bbf,
-       0xfe2941ae, 0x37b602ae, 0xe8067a68, 0x3fa6ed80, 0x165d7bd1, 0x9e92875e,
-       0x71848370, 0xcc65c6ec, 0x943e9911, 0xe764679d, 0x8729ef95, 0x3986c38d,
-       0x2fe2506f, 0x12331ee6, 0x7df94cf5, 0xad0ec505, 0x3c5bbf95, 0x7529df71,
-       0x96afd22c, 0x714c8eff, 0x389fd82b, 0x7922df3a, 0x38aee73b, 0xbf9782a2,
-       0x468ab944, 0x0e68fab9, 0xc7db2ff6, 0x3c0683fb, 0xdf871919, 0x4f286b29,
-       0x7937d01b, 0xa3df867c, 0x05f3bb40, 0x0ea6c581, 0xab6a2f61, 0x421e8f37,
-       0x2e214a6e, 0xca8745c3, 0xb829b38f, 0x768377df, 0xf8f7c264, 0x9726567d,
-       0x662cf72f, 0x0d5ffdc1, 0x40d8f92a, 0x947e067e, 0x19e660ea, 0xc972df29,
-       0xd5ced2e7, 0x51273a26, 0xed538dfc, 0xf299b33d, 0x43972332, 0x63dfa335,
-       0xb68d54e9, 0xef380d6e, 0x4e979ce8, 0x6fc59fdf, 0xdc70faf4, 0xb58205be,
-       0x44e69a06, 0x5f2efcf1, 0x0bdb2f65, 0xb8a86fed, 0xf30e7ddf, 0x17fd1137,
-       0xff419397, 0x93cfcfc6, 0x7f3c8d0b, 0x9adca8f3, 0xa61df489, 0xdd94eb1b,
-       0x2bd52d76, 0x1d291ced, 0x677c0268, 0xefd90e71, 0x73f1df23, 0x5a65bef4,
-       0xf33bf3f2, 0xae51cbec, 0x4f1b2e77, 0xd208afed, 0xe33f7863, 0x7da48e2e,
-       0xcfc85cec, 0x4c2e771b, 0x5967f6a4, 0xdf1a955f, 0xd9fbe6ab, 0x3a04d8f9,
-       0x39d38dff, 0xbef1b372, 0xd8c7be58, 0xc24b6a99, 0x0527d37a, 0x71bbb2fb,
-       0x1a0609bc, 0xe24590ef, 0xc6cb12f7, 0xe907b63f, 0x8a9a4634, 0x7e0fdb76,
-       0x7ff00def, 0x4dd86c7f, 0xf71732f5, 0xc705b99f, 0xe4057d2f, 0x37f7c60f,
-       0xebbe8318, 0x66efbe57, 0xc5b4df6a, 0xb0bf40c6, 0xbcb5d791, 0xeaf6e464,
-       0x3373cea0, 0xe4725fbc, 0xebb45cb3, 0xdafb07fe, 0xdaee3193, 0x243af02f,
-       0xde2e5777, 0x87a89647, 0xce6faf8e, 0x4f4bf1e6, 0x8c52d44b, 0x63fa84e7,
-       0xe252df54, 0xe7435dbd, 0xd9bf7254, 0x866e3cd9, 0xed1f747e, 0xdfc827de,
-       0x05a6f8bb, 0x752b5bde, 0xb8fb3dcd, 0x6b34951c, 0x92e47be8, 0x51ff46fa,
-       0x59d43fc4, 0xf55d7c51, 0x783ee897, 0xe8074bf6, 0x3fef02de, 0x473a08de,
-       0x3b39dfe6, 0xaae63b65, 0x395ec917, 0x77f9ca9b, 0x19e2f55f, 0xd28fbdc2,
-       0xf15d34ef, 0x27731d5d, 0x5f4912ab, 0x29e6b193, 0xa5f4bdb4, 0x206e23b6,
-       0xbda1e961, 0x2ee7e8d1, 0x2345d474, 0x55dc61dd, 0x5e7c11da, 0x2b883dfc,
-       0x7d05b5c7, 0x6ef2e69f, 0x02ebc4b9, 0x845fc8bb, 0xff80bff6, 0x6f7f3f00,
-       0xd91dfcb6, 0xf25aecb5, 0x14b1f5ff, 0xa6fac157, 0x13b77e05, 0x0f4bffea,
-       0x0dde7e5c, 0xbb073ded, 0x96f5c79f, 0xd515f77d, 0xf557b123, 0xdae6b754,
-       0x73f93eff, 0xcd7fbde5, 0x7fa871e6, 0x583ddedf, 0x2fffea97, 0xf347159d,
-       0x22997db7, 0xe36839e1, 0xf10f7437, 0xfa7cb69b, 0x8737e6de, 0xd0fc2767,
-       0xb7281177, 0x75c0cc9e, 0x92bf8879, 0xac503bfc, 0xfc218655, 0x3c74de3a,
-       0x1179d705, 0xba754df8, 0x72f73f12, 0xbee9cb7a, 0x8007f101, 0x8786cebe,
-       0xb8ffa12f, 0x4d9cff1a, 0x61bd6f8b, 0x2b43d90a, 0xf58b95aa, 0xe87ffdd1,
-       0xfb7c037b, 0xc4e3e04f, 0x86bfc11f, 0x70ff342d, 0xff88bbfc, 0x081d3e00,
-       0xa6e5dfe1, 0xeb1dffbb, 0x6c535968, 0x8128f7d0, 0x08fdf374, 0x7c0915ba,
-       0xdb66dffc, 0xf4bed19a, 0x0f617c1c, 0xdf2309d6, 0x2eb0966e, 0x330a72ed,
-       0x7d30f7e2, 0x697f282b, 0xaed099d3, 0x407db495, 0xeb97e3fa, 0x80cfe029,
-       0x06cfce7e, 0x2fc83afe, 0x55d9b6c9, 0xa2e9f46b, 0xf4efe907, 0xa2942c2c,
-       0x7a19f9e9, 0x8c72e1ee, 0x2ddfc3f4, 0xdd8e7a73, 0x97c10c26, 0x9e34ecde,
-       0xd1467927, 0xff6bcbbe, 0x00c0e3c2, 0x91d3097e, 0x6e28674f, 0x0a4f8e1c,
-       0xeff24c1d, 0xadf00d88, 0x685feb96, 0x87f0177f, 0x7e653fee, 0xf7f0ff21,
-       0xceb85cd4, 0x20cf8e68, 0x0d80f85c, 0xd5fc0f61, 0xfce3ca3a, 0x83c9f721,
-       0xd79079fc, 0xa9ea855d, 0xf4e1cfbc, 0xabd3d143, 0xd2a7ffad, 0x52d92fe7,
-       0x7428bc90, 0x6876f9ea, 0xcf1c6e3b, 0x9f67fef5, 0x3504da3f, 0x7f3a0f8b,
-       0xf3c78c34, 0x4133a6c7, 0x7eca8fe7, 0xda73e47b, 0xf922fd9e, 0xeff2cdc7,
-       0x0bda84ac, 0xd0983be5, 0xd7938ef5, 0x7f7f94eb, 0xd1a0e7a1, 0x7a718063,
-       0x79216f5e, 0xd19c3676, 0x7b6a79e2, 0x9efa21fd, 0xf41fd14e, 0xf5809e13,
-       0x2c78bcf7, 0xce36ec97, 0x275f0433, 0x33cf978c, 0xc79e875b, 0x682970d5,
-       0x57b7529e, 0x57ab754b, 0xda82ef99, 0x778e3b76, 0x7eff83a1, 0xd0ef05e1,
-       0xf1a6a9e7, 0x615cf91a, 0x2fe0873b, 0xbcfe01ed, 0x1b4db053, 0xc30c2a3f,
-       0x30c30c30, 0x0c30c30c, 0xc30c30c3, 0x30c30c30, 0x0c30c30c, 0xc30c30c3,
-       0x30c30c30, 0x0c30c30c, 0xc30c30c3, 0x30c30c30, 0x0c30c30c, 0xc30c30c3,
-       0x30c30c30, 0x0c30c30c, 0xc30c30c3, 0x30c30c30, 0xc1b7ff0c, 0x8dca0bff,
-       0x8000e737, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x20000131,
-       0x22b0030c, 0xb0131302, 0x14e7ff1b, 0x93c9084d, 0x26ebaf39, 0x6db6db63,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xf6db6db6, 0x10192fc7,
-       0x8000dcb1, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x20000131,
-       0x22b0030c, 0xb0131302, 0x14e7ff1b, 0x93c9084d, 0x26ebaf39, 0x6db6db63,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xf6db6db6, 0x10192fc7,
-       0x8000dcb1, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x20000131,
-       0x22b0030c, 0xb0131302, 0x14e7ff1b, 0x93c9084d, 0x26ebaf39, 0x6db6db63,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xf6db6db6, 0x10192fc7,
-       0x8000dcb1, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x20000131,
-       0x22b0030c, 0xb0131302, 0x14e7ff1b, 0x93c9084d, 0x26ebaf39, 0x6db6db63,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xf6db6db6, 0x10192fc7,
-       0x8000dcb1, 0x00008000, 0x00088b1f, 0x00000000, 0xc5edff00, 0x20000131,
-       0x22b0030c, 0xb0131302, 0x14e7ff1b, 0x93c9084d, 0x26ebaf39, 0x6db6db63,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xb6db6db6, 0x6db6db6d,
-       0xdb6db6db, 0xb6db6db6, 0x6db6db6d, 0xdb6db6db, 0xf6db6db6, 0x10192fc7,
-       0x8000dcb1, 0x00008000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x00000000,
+       0x00007ff8, 0x00000000, 0x00003500, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
        0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-       0xffffffff, 0x00100000, 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
        0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
-       0xffffffff, 0xffffffff, 0x00100000, 0x00000000, 0xfffffff3, 0x314fffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+       0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x00000000, 0x00007ff8, 0x00000000, 0x00001500, 0x00001000,
+       0x00002080, 0x00003100, 0x00004180, 0x00005200, 0x00006280, 0x00007300,
+       0x00008380, 0x00009400, 0x0000a480, 0x0000b500, 0x0000c580, 0x0000d600,
+       0x0000e680, 0x0000f700, 0x00010780, 0x00011800, 0x00012880, 0x00013900,
+       0x00014980, 0x00015a00, 0x00016a80, 0x00017b00, 0x00018b80, 0x00019c00,
+       0x0001ac80, 0x0001bd00, 0x0001cd80, 0x0001de00, 0x0001ee80, 0x0001ff00,
+       0x00000000, 0x00010001, 0x000f0604, 0xccccccc5, 0xffffffff, 0xffffffff,
+       0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc,
+       0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc,
+       0xcccc0201, 0xcccccccc, 0xcccc0201, 0xcccccccc, 0x00000000, 0xffffffff,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000,
+       0x40000000, 0x40000000, 0x00000000, 0x00007ff8, 0x00000000, 0x00001500,
+       0x00100000, 0x00000000, 0x00100000, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000, 0x0000ffff, 0x00000000,
+       0xfffffff3, 0x320fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x30efffff, 0x0c30c30c, 0xc30c30c3,
+       0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff,
+       0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd,
+       0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3,
+       0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3,
+       0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff,
+       0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd,
+       0xfffffff7, 0x31efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x302fffff, 0x0c30c30c, 0xc30c30c3,
+       0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x310fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd,
-       0xfffffff1, 0x30efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
        0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3,
        0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff,
        0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd,
        0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
        0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x31efffff,
+       0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x30efffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd,
-       0xfffffff5, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
-       0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x310fffff, 0x0c30c30c, 0xc30c30c3,
+       0xfffffff5, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x31efffff, 0x0c30c30c, 0xc30c30c3,
        0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd,
        0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
@@ -6288,30 +2918,30 @@ static const u32 init_data[] = {
        0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd,
        0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
-       0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x30efffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x304fffff,
+       0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x056fffff, 0x0c30c30c, 0xc30c30c3,
+       0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd,
-       0xfffffff3, 0x31efffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0xfffffff3, 0x320fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
        0x0000cf3c, 0xcdcdcdcd, 0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3,
        0xcf3cf300, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd,
        0xfffff406, 0x1cbfffff, 0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3,
        0x0004cf3c, 0xcdcdcdcd, 0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff,
-       0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd,
-       0xffffff97, 0x056fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3,
+       0xcf3cf300, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd, 0xffffff8a, 0x042fffff,
+       0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd,
+       0xffffff97, 0x05cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3,
        0x0020cf3c, 0xcdcdcdcd, 0xfffffff5, 0x310fffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x320fffff,
+       0xcf3cf300, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd, 0xfffffff3, 0x316fffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd,
-       0xfffffff1, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0xfffffff1, 0x302fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
        0x0001cf3c, 0xcdcdcdcd, 0xfffffff6, 0x305fffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffff406, 0x1cbfffff,
-       0x0c30c305, 0xc30c30c3, 0xcf300014, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd,
+       0xcf3cf300, 0xf3cf3cf3, 0x0002cf3c, 0xcdcdcdcd, 0xfffffff6, 0x30bfffff,
+       0x0c30c30c, 0xc30c30c3, 0xcf3cf314, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd,
        0xfffffff2, 0x304fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
-       0x0008cf3c, 0xcdcdcdcd, 0xffffff8a, 0x042fffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cc000, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffff97, 0x05cfffff,
-       0x0c30c30c, 0xc30c30c3, 0xcf3cc000, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd,
-       0xfffffff5, 0x310fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
+       0x0008cf3c, 0xcdcdcdcd, 0xfffffffa, 0x302fffff, 0x0c30c30c, 0xc30c30c3,
+       0xcf3cf300, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xfffffff7, 0x31cfffff,
+       0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd,
+       0xfffffff0, 0x307fffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf300, 0xf3cf3cf3,
        0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3,
        0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd,
@@ -6344,25 +2974,13152 @@ static const u32 init_data[] = {
        0xcf3cf3cc, 0xf3cf3cf3, 0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff,
        0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd,
        0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3,
-       0x0040cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf3cc, 0xf3cf3cf3, 0x0000cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff,
-       0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0001cf3c, 0xcdcdcdcd,
-       0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3,
-       0x0002cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf3cc, 0xf3cf3cf3, 0x0004cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff,
-       0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0008cf3c, 0xcdcdcdcd,
-       0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3,
-       0x0010cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff, 0x0c30c30c, 0xc30c30c3,
-       0xcf3cf3cc, 0xf3cf3cf3, 0x0020cf3c, 0xcdcdcdcd, 0xffffffff, 0x30cfffff,
-       0x0c30c30c, 0xc30c30c3, 0xcf3cf3cc, 0xf3cf3cf3, 0x0040cf3c, 0xcdcdcdcd,
-       0x000a0000, 0x000700a0, 0x00028110, 0x000b8138, 0x000201f0, 0x00010210,
-       0x000f0220, 0x00010310, 0x00080000, 0x00080080, 0x00028100, 0x000b8128,
-       0x000201e0, 0x00010200, 0x00070210, 0x00020280, 0x000f0000, 0x000800f0,
-       0x00028170, 0x000b8198, 0x00020250, 0x00010270, 0x000b8280, 0x00080338,
-       0x00100000, 0x00080100, 0x00028180, 0x000b81a8, 0x00020260, 0x00018280,
-       0x000e8298, 0x00080380, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc,
-       0x00002000, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000,
-       0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000
+       0x0040cf3c, 0xcdcdcdcd, 0x00100000, 0x00070100, 0x00028170, 0x000b8198,
+       0x00020250, 0x00010270, 0x000f0280, 0x00010370, 0x00080000, 0x00080080,
+       0x00028100, 0x000b8128, 0x000201e0, 0x00010200, 0x00070210, 0x00020280,
+       0x000f0000, 0x000800f0, 0x00028170, 0x000b8198, 0x00020250, 0x00010270,
+       0x000b8280, 0x00080338, 0x00100000, 0x00080100, 0x00028180, 0x000b81a8,
+       0x00020260, 0x00018280, 0x000e8298, 0x00080380, 0x000b0000, 0x000100b0,
+       0x000280c0, 0x000580e8, 0x00020140, 0x00010160, 0x000e0170, 0x00038250,
+       0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc,
+       0xcccccccc, 0xcccccccc, 0xcccccccc, 0x00002000, 0xcccccccc, 0xcccccccc,
+       0xcccccccc, 0xcccccccc, 0x04002000
+};
+
+static const u32 tsem_int_table_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x51fbff00, 0x03f0c0cf, 0x19d8c58a, 0x1138fc18,
+       0x5980a1fc, 0xd8181998, 0x88039880, 0x81b8803d, 0x91a18191, 0x97fd7891,
+       0x6f6c1145, 0x72860661, 0xc82d3e20, 0x8229a0c0, 0x6315b710, 0xe40a9860,
+       0x1ec54047, 0x513ce901, 0xa07fb8ea, 0xa6348471, 0x8224b998, 0x1e45891d,
+       0xc9a14719, 0xe544974f, 0x3fd01347, 0x12b778d0, 0x02beff2a, 0x8a877684,
+       0x7f9341ef, 0x82af9500, 0x12af6bfa, 0xa1ab7376, 0xdc1f00f2, 0x03601397,
+       0x00000360
+};
+
+static const u32 tsem_pram_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x7dedff00, 0xd5547c0f, 0xf37df095, 0x4999bcde,
+       0x425e4cde, 0x60109212, 0x85444092, 0xa88bfc30, 0x10909db8, 0xc075b569,
+       0x1daad07f, 0xff908420, 0xa5ba5522, 0x8126265f, 0x1761a888, 0x03a8ba2d,
+       0x358a8b42, 0x168681d0, 0xb88200ec, 0xbac1bbb5, 0x46ebab16, 0x921888a5,
+       0x57f15588, 0xe739dfad, 0x379997de, 0x6ed40199, 0xbf7efd7f, 0x737b5d8f,
+       0xdeefbbdf, 0x7bbfcf73, 0xdee7b9ce, 0xa614d451, 0x0bec668e, 0xc60df7fc,
+       0x18c2c5fe, 0x1f29169b, 0xfbefb2b6, 0x38aec634, 0xe95d9019, 0xe574358c,
+       0x337648ed, 0x8e77b196, 0x679e1334, 0x85a4faf4, 0x97fbe45a, 0xfe12f81c,
+       0x548e6bbf, 0xe3ca1e32, 0x9401693e, 0xd625abd9, 0xdc53250d, 0x33da0c29,
+       0x932c65e6, 0x8ce982b1, 0x446cc9fe, 0x3e0ffc12, 0x198bb2d7, 0xa13fc5cb,
+       0xf31a33ab, 0x9632a784, 0xa1e69f77, 0xadcd6e86, 0xfc91fbc1, 0xafeb9633,
+       0x18b996ba, 0xcde0027b, 0x8de7834e, 0x763ddbca, 0xf80beefe, 0x3d2df46f,
+       0x572c56cd, 0x99bb9f98, 0xa00ac2db, 0x79f980df, 0x5eb9bb41, 0x27e99cc8,
+       0x270fe192, 0xc7217e73, 0x54f1c799, 0x659e00c6, 0xb197873a, 0x2137d501,
+       0x4d8d8f82, 0x131b532c, 0xd296c7a9, 0xab7923b2, 0xf6cbaf01, 0x7c1b1e48,
+       0x57b618ff, 0xef8a0b18, 0x5d7a8b36, 0x44d85540, 0x9d410128, 0xb3f687e3,
+       0x895c9598, 0x9b11ff78, 0x32836549, 0x5f00eaa0, 0x0deaa343, 0xdfdb436a,
+       0x53a214c8, 0x6039e2bd, 0x9a07f187, 0x8c336799, 0xcfaaccbf, 0x1fb2fac4,
+       0xa8013dba, 0x94f7b7e7, 0xee8fa833, 0x179c9892, 0xe002fef9, 0x0ff236f9,
+       0xbd6543c0, 0x80ce5032, 0x24fb038e, 0xc70f39b6, 0xdb2efde1, 0x7902c793,
+       0xcc9ce189, 0x7ce704ac, 0x90272926, 0x42e62e2e, 0xe554b43a, 0xd50e503f,
+       0x0b7bcd6c, 0xe6b57ff6, 0x9e78d2a7, 0x38fa70b5, 0x0d97f43f, 0xaf4d1dbc,
+       0x28e37b4a, 0xb558cf96, 0xf91cb3af, 0xcf65dde2, 0xf012c2af, 0xbe00a19c,
+       0x157cda17, 0x2ddd5e38, 0x780c858d, 0x971b56ea, 0x255dd183, 0x67c029ef,
+       0x25205dd0, 0xb189f90d, 0x04f8a3b7, 0x4e3dbdff, 0xf4c4e5d4, 0x81595f3e,
+       0x2f8828fd, 0xefb1772e, 0x4d40887f, 0xa83a51c3, 0x8ff8af74, 0xa2c33182,
+       0x8c152feb, 0x2a002299, 0x7e197826, 0x148f58c2, 0x394697cd, 0x11c94f7a,
+       0x3c3128a5, 0x04f3dbff, 0x1b7d1274, 0x1fc8b700, 0x78354e75, 0xe943f037,
+       0x1bf86b2e, 0x9b751fc0, 0xea0da0a4, 0xf41ce796, 0xaf236fbe, 0x17aa9d87,
+       0x16f4e7f9, 0xbdf04ba8, 0x2bfefbad, 0xc976bf91, 0x3b76336c, 0xfa82c92e,
+       0x9d8084e5, 0xe03a854d, 0xabc1d2a3, 0xdff69b75, 0x7557df86, 0xfa0398d9,
+       0xe4b3dbab, 0x7d42573b, 0xc32b11c9, 0x9b5b7526, 0x2fa81cd5, 0x589d4a0d,
+       0xe1c99fef, 0x8396ec0b, 0xbf7da15b, 0x46f33bab, 0x26a9cfa0, 0xc0ab733b,
+       0xcceece77, 0xaacf801b, 0xf1ca3b83, 0x92edeabb, 0xba5ed107, 0x6ce1eb6b,
+       0x5c93d79c, 0x25b66bbe, 0x3f81b733, 0x4844eff8, 0xde037f0e, 0x3279832f,
+       0xeb0977e8, 0x583d4728, 0xea9d75b7, 0x75f04676, 0x71a749aa, 0x49efe506,
+       0xabbe0718, 0xc1e4b9ff, 0x985bd629, 0x6fb0e51f, 0x13de638f, 0x59afce1a,
+       0xbce2742d, 0x6ed8ab56, 0x6ec17049, 0xc1d5cd54, 0xbc396a4d, 0x49b8deaf,
+       0xdb928cad, 0xccc36d9a, 0x18286d70, 0xd7238fee, 0xd7807811, 0x6af5230a,
+       0x0fa803d4, 0x273aa095, 0xa5eacf8a, 0x9acbe254, 0x9b73326d, 0x3dd388f8,
+       0x27f05ff0, 0xcfb02be0, 0xe8357849, 0x054fa836, 0x82e8cedd, 0xf140ca8e,
+       0x7c7c389c, 0xe001d23f, 0x413c40e9, 0xe7c056b9, 0x144ac19a, 0x65e5dfe8,
+       0xcfcec4ba, 0xb6561d97, 0xfd58c180, 0x72af0eec, 0x7655d439, 0x7ac0f33b,
+       0x96f4aca8, 0xf24b3d41, 0x69f387bf, 0x7c55fc95, 0xf2cceabd, 0x49579e01,
+       0xffce1e6c, 0xe61a042d, 0xf81b2ab5, 0x31def013, 0x5909f8ab, 0x63a7b012,
+       0x6ba7f2bd, 0x339fa8f2, 0xfa158fd4, 0x3f7f3829, 0x5374f97a, 0x95797a3f,
+       0xa85fcfd1, 0xf585c71f, 0x857e51d3, 0x6af29e19, 0x82451fa3, 0x0bcead76,
+       0xf57e979b, 0x573c330c, 0xa93f52d7, 0x7a861e65, 0x81f83657, 0x78657b75,
+       0x9d4f6daf, 0xf34586bc, 0x025d4cc5, 0x25209db8, 0x32917cd1, 0x87c4c93d,
+       0x5334dea9, 0x4fd27a1d, 0x3fd11a5c, 0xc69554e1, 0xd2547357, 0x7639250b,
+       0xa399dfaa, 0xf3b85e91, 0xb845ff0a, 0x2cd8e20e, 0x7faaea1b, 0xaf871ea2,
+       0x65894e01, 0x41760961, 0xabf7d0d6, 0x330f1cad, 0xf8567c47, 0x60df7c16,
+       0x854c2819, 0x929645fa, 0x1e6f104b, 0x24e5eb89, 0xbb623599, 0xfd231b24,
+       0xf8af3ab4, 0x9e144089, 0xfd0247da, 0xedbf48a5, 0xf2167f56, 0x47e6d4d7,
+       0xb7c00a02, 0x27cc246a, 0x1e92ba07, 0x3d600709, 0x32b23d5a, 0x5369f10b,
+       0xc7a3be41, 0xf1fc6157, 0x8815fe34, 0x9f8e2f47, 0x5b7c7431, 0xf8d374fe,
+       0xa65551f6, 0x8c2aedf1, 0xd65efc0f, 0x0f8c59bc, 0xb182bbf8, 0x1a66d259,
+       0x8aaa36df, 0xb2ad5fc6, 0x49f8d32a, 0x0b7fe383, 0x344befe7, 0xcc2bfcff,
+       0x6d551ff3, 0xe7cabf9e, 0x53f3437f, 0x9a24fc62, 0x53d28dff, 0xaaa3fe7c,
+       0xbc6dfcf9, 0x5df1c1df, 0x2efff883, 0x609fdfce, 0x0cc15b7c, 0xd747fcf3,
+       0xe36fe79a, 0xef3457e3, 0x346be314, 0x276962fe, 0x5ae8ff9f, 0xf9b55f1a,
+       0xea47c83d, 0x20c6a488, 0x20b913da, 0x4749c310, 0x071ca979, 0x87e80146,
+       0xc13e52d1, 0xe7126771, 0x80938fbb, 0xbe88b4df, 0x28904163, 0x82f567d0,
+       0x97b66be7, 0xe967a8a8, 0x4dda267d, 0x97455ffc, 0x5b0deb4c, 0x058e0b6f,
+       0xe4bafb78, 0xd62bd600, 0x6994155f, 0x80fb03bd, 0xc6161aec, 0x707a7fe7,
+       0x79e8e6c2, 0x3b8b96c5, 0x4c7a27ac, 0x09e1c472, 0x1ae364cc, 0x646ebe01,
+       0xfa916982, 0x60a3d009, 0x41b7b2fc, 0xaef9628f, 0x838e03f0, 0xb46a659e,
+       0x7b7334dc, 0x195ec024, 0x49baf30f, 0xe1427fc0, 0x5cb13ef8, 0x3ffe220a,
+       0x8abb775e, 0x077169fa, 0xf251d318, 0x34e820de, 0xdc16c7b0, 0xdd3e112c,
+       0x499b9f88, 0x6ffb1914, 0xd92fd761, 0xddf4cc30, 0x96d82c2d, 0xad17ed05,
+       0x8752305d, 0x9e6f7ff9, 0xa7da326d, 0x2c230920, 0x846cc724, 0x798b7c05,
+       0x11d675a1, 0x9e79b950, 0xcfd764d5, 0xdfeb9bf7, 0xfbd732ab, 0x05ab41ac,
+       0x12a58ded, 0xdefd04db, 0x6f7e68da, 0x4a51b38c, 0xe31574e3, 0xe1c994dd,
+       0xc9cb15bd, 0xba2758f8, 0x6ff3a6de, 0x7e1a780d, 0x5a616564, 0x18327b2f,
+       0x419031d2, 0xe75f9af6, 0xf7858ef3, 0xebddab36, 0xfb6e7803, 0x8cf84ca1,
+       0xb9e7bf85, 0xec05af64, 0x1f0d9eb8, 0x8dbed15a, 0xfc2c4f9d, 0x3b115fdf,
+       0x7d455d1f, 0xfb1020bf, 0x2c49f39c, 0x9574353f, 0xd51e3b0c, 0x9bf3aeae,
+       0xf1478ec3, 0x39b6cd57, 0xe0d2faa6, 0x25fb537c, 0xde98161b, 0x6a58ee2f,
+       0xfda8bf7a, 0x417d5376, 0xf6a687e0, 0x6cd15fdf, 0xe36b7f7a, 0xdff7a63d,
+       0xaa675aab, 0x6c3ff7cf, 0xbcf37f6a, 0x96f7a64d, 0x0ebe2ee7, 0xbfe5a8e5,
+       0xc6eb8664, 0xfb89da47, 0x48fc1ed1, 0x8f483c53, 0x24594d93, 0xdc9aa707,
+       0x4d75f654, 0x1eb9fbb1, 0xe26064ac, 0x071f480c, 0x5ea067da, 0xff3fa466,
+       0x08167d2c, 0x922ffd40, 0x6f27f09b, 0x58185950, 0x83696258, 0x47203c7c,
+       0xcf39efbd, 0xe8200dfb, 0x97be8653, 0x6f3fe27b, 0xb460bcd8, 0x887fc71e,
+       0x811b2dc8, 0x58bf5ceb, 0xd7df63df, 0xfd17cc4a, 0x49bbb19c, 0x3ac45bce,
+       0x7d72ab53, 0x7b33bb50, 0xb5dffa26, 0xf1b0b86a, 0x0275e35c, 0xa24f5152,
+       0xfc819e75, 0xe2605200, 0x7c930297, 0x0997eef7, 0x09d47aae, 0x31d757a0,
+       0xea0b70df, 0x51c1f099, 0x38404fd7, 0xef5459bc, 0xbd75a0ca, 0xb0f669b7,
+       0xc7d20ae3, 0xa6c9e547, 0x689e5479, 0xbc7953f2, 0xb7ca8aa9, 0xeca91a9b,
+       0xe5415a69, 0x2a014d9b, 0xa76a68df, 0x1d4d8ff2, 0xda6b1e54, 0x4dabe540,
+       0x9afb2a41, 0xfa0e54bc, 0x4dfe862b, 0xf0aaf617, 0xa1e5602b, 0x973119fa,
+       0x4ddb6856, 0x42c9ee72, 0x7da33f39, 0xf8f6885c, 0x58e06399, 0x57c625e6,
+       0xa625bf2c, 0x95ec97a3, 0x7fd020ca, 0x8ef7d0ca, 0x87274e24, 0x6706cd85,
+       0xf633dd9a, 0xe3859ea7, 0xcb20aea9, 0x99e482c0, 0x2fd38ce3, 0xaf487dac,
+       0x7989d1f3, 0x02e68a07, 0xf23c4e3d, 0xb7ec6297, 0x497fac45, 0x875a6507,
+       0x0f09f859, 0x6f0a2bd2, 0xec0daeb4, 0x3cfefa12, 0x883d3bf8, 0xe851eebf,
+       0x74921fbf, 0xc84cffea, 0xe3c414c6, 0x3020e4de, 0xe4733b3f, 0xe3ca1709,
+       0x7e8b2cb2, 0x8c1e0e3c, 0x4f33aeb2, 0x9fd7a2d7, 0x4cfd732e, 0x93bb3487,
+       0xca7763d6, 0xaf90130d, 0x18f8fd74, 0x95167fa4, 0xb2cb3f46, 0xc838fd54,
+       0x056da9eb, 0x0efd7c29, 0x7b7075f2, 0xf82bf12a, 0x6ffed485, 0x7ea24f0d,
+       0x0b18780c, 0xa8ec77b1, 0xc15de00f, 0x99cbf797, 0x5f8a67f2, 0x8fd6bdb1,
+       0xc1b05ed1, 0xfc505f7f, 0xd1baa140, 0x1ca7436f, 0xe7c44db0, 0xc1e34ddb,
+       0xe7c36e77, 0x5cff22fe, 0x13b0ab7c, 0x75847151, 0xb358de22, 0xd79ba1cd,
+       0xbd535495, 0x375b2ba1, 0x07f833ad, 0x946b3fc8, 0x5a9be414, 0x8afd45c1,
+       0x7c012ed6, 0xf53716b5, 0x76f120db, 0xd51ef675, 0x874e8f0f, 0xc112dd38,
+       0x88e9aa77, 0xaf79015b, 0x080783b2, 0x5e7555f0, 0xee7a865c, 0x1325a874,
+       0xf91ac1ed, 0x38be9dcc, 0x48b4efdf, 0xa0d2de34, 0x8ebcc075, 0xd060fe0a,
+       0xfc9cf1af, 0x889da62c, 0xb85af7aa, 0xefdb1d9d, 0xf9efd141, 0xfdbf53f0,
+       0xee95f968, 0xefaa78a1, 0x93f540fa, 0x15ffc11c, 0xe064f047, 0x3be2d6af,
+       0x7ab4fa88, 0x8f645bdb, 0x0a06b49e, 0xfd0e747f, 0x5a7e7434, 0x8d49c516,
+       0xa4c00579, 0x8a167184, 0xeff02ef8, 0x7ac3afcd, 0xad6fdefa, 0xc7c00d6c,
+       0x5156833e, 0xca906070, 0xa245f502, 0x435430b6, 0x2cf7dd71, 0x60aa8edc,
+       0x81d1173e, 0x1da31475, 0x66599a79, 0xb34e9e23, 0xa2535d97, 0x45aef0e8,
+       0xa8b33d25, 0x80c76cdd, 0x2faa6bfd, 0x57ae60d9, 0xa899b9b2, 0x5bd72a4f,
+       0xf9a25059, 0xc1ffde99, 0x97fe13a2, 0xb855c6b0, 0x3fa0b6ae, 0xd42ee308,
+       0xe0023299, 0xa3e5fbab, 0xeee718c5, 0xc43f70b3, 0x4d2c8f88, 0x7757f0e3,
+       0xf0bd526e, 0x94d09dfe, 0xf864ae9b, 0xae15707d, 0x925d8103, 0x287bab67,
+       0xfc2cbf7e, 0xeb1af0b1, 0x8d3890f5, 0x9b6ea380, 0xfade3714, 0x4333e099,
+       0xd64b7f5f, 0x4dc17e4d, 0x1bf28f58, 0x97116452, 0x748c9995, 0x03dbad3f,
+       0x4f7a1496, 0x4ec0fb71, 0xe605a79b, 0x37c5b8f7, 0x76469e4c, 0x6a8b1142,
+       0x4fc5b8f7, 0x97a57bcf, 0x656ed12a, 0xed08b84a, 0x88635850, 0x0fc1554f,
+       0x08ab9272, 0x064ecde3, 0xdfd028eb, 0x3f41f086, 0xd7559cab, 0x778c22b2,
+       0x7f43bc83, 0x8fcab9f7, 0x68775048, 0xd9fd8621, 0x7cf1ccb2, 0x6f5cdb87,
+       0x2f803fc0, 0xf8a38d61, 0x2538f253, 0x86618f06, 0x31e9d0fa, 0x4e809f3f,
+       0x61fdd918, 0xb11763e2, 0x2d769438, 0x6cf8c32c, 0xe83bd2ba, 0xbfa3e56f,
+       0xf8a7e1c7, 0xae5fb402, 0x22f5f6f3, 0xb5fcbe7e, 0xced3c399, 0xce1a8fa1,
+       0x16190682, 0xfbe23755, 0x9c161567, 0xa6f435f2, 0x28d5561b, 0xe2df39bd,
+       0x40f4859f, 0x49f0893d, 0x64df8e30, 0xd1eae607, 0x8630be72, 0x1c32be3f,
+       0xbfa4cce9, 0x9bfe2d6b, 0x70a18ce4, 0xb3fee57c, 0x30bff486, 0x72bf3cde,
+       0xf48663ff, 0xffaf1f5f, 0xb33e5fba, 0x54fc003b, 0x2e83ecfd, 0x9ef66660,
+       0x01e991d2, 0x6d6ed7ba, 0x9e5ca173, 0xa42e0254, 0x79417beb, 0x3f0e3076,
+       0xf90d916c, 0x31526af4, 0xd1f10ff1, 0xfdeea7a9, 0x1f55da0e, 0x14eab56f,
+       0x0b66d81f, 0xeb2980db, 0x7cb94b43, 0xc5bdb36c, 0x403fabeb, 0x32e86cfe,
+       0x9fea8beb, 0xf189983d, 0xf0a4a066, 0x1fe4c39f, 0x53f96fd4, 0x0d5dda39,
+       0x5ef4806c, 0xfe3877ec, 0x07b234d9, 0x4329a816, 0x7cfb1bdf, 0x0d2f020d,
+       0x903f7ba1, 0xc87a5849, 0x5f6d8cdf, 0x07fdec25, 0xc53a6765, 0x97632ef9,
+       0xf8199f21, 0xef6e4160, 0x93f93cb7, 0x9e00b7a2, 0x75bf2dde, 0xf9a3e349,
+       0x33bdeb93, 0xff1e8b9d, 0x3cb13b95, 0x8c5e81f5, 0xf58dabb6, 0xfc25ddd9,
+       0xacbcbd94, 0xe85d86b5, 0xb26ed607, 0xd748027a, 0xe9f89e67, 0x79971823,
+       0x0b19e6cd, 0x733cd7fd, 0xa02bd5e8, 0x9ac3b35e, 0x869f2d7e, 0xe8466526,
+       0xadff00d2, 0x43a11c98, 0xa90e2ff5, 0xf9fc09ee, 0x3d08b4ca, 0x57ec766a,
+       0xf8a184d9, 0xafdced28, 0xe87168f6, 0x3956f9d2, 0x4f2d13fa, 0xfea2a27e,
+       0x8939ef7a, 0x838bcf0d, 0xc8874dcf, 0x113c462e, 0x069d051d, 0xbed316e9,
+       0xfa82e801, 0xec53a0d5, 0xfe84bbfb, 0xe3dcfec7, 0xfe7f9f89, 0xf947dc2b,
+       0xf383cda3, 0x1df9faaf, 0xbbc79c2e, 0xebe7234a, 0xbd32db47, 0x35956e30,
+       0xc953a990, 0xf63d579f, 0x25b7e203, 0x49907f47, 0xcde60ff1, 0x10ad90b6,
+       0x2df9c6c8, 0xcd2378de, 0x89f992af, 0x951eaaef, 0x7d5eb87d, 0x3bd9b0a4,
+       0x8e45c8e2, 0xbbf1f5c2, 0x80c1c19b, 0x0b8bbdf9, 0xbc2bee07, 0x52b7072c,
+       0x8a76effc, 0xd8c0fcaf, 0xa8cb620f, 0xd39d91fe, 0xd8d903e9, 0x27958357,
+       0xacb75f9a, 0x9cfa46ee, 0x8e1de91a, 0xa606e371, 0xa43e0404, 0xf95fa02f,
+       0x9ce1ace8, 0x14adcc3e, 0xdf40ef8b, 0x6c73e297, 0x3af56ddf, 0xb1df4c8a,
+       0xe322f22f, 0x03e3172f, 0xaf6849dc, 0xf6099bbe, 0x95f99c5f, 0x037ac62b,
+       0x7f145576, 0x9737c945, 0x70f72df7, 0x3de436f9, 0xbe366738, 0x5c2bf3ff,
+       0xb43bf07e, 0xf0ae0057, 0xffbf7a70, 0x81f48906, 0xc9e3858d, 0x90ab16f5,
+       0x837bf36b, 0x056e004f, 0x7e41ddd7, 0x08d3fec1, 0x56c764ff, 0xa2ef87ae,
+       0x8e0365f4, 0x9fda1ae7, 0x844bb721, 0x662867fc, 0xb91b67f9, 0x27f627dc,
+       0x612e3c02, 0x11f4fe0d, 0x4f905794, 0x7daebfdc, 0x79c3eac6, 0xe0fdbfbf,
+       0x3905dfab, 0x90d3bf7d, 0x8cfeb353, 0x9daad395, 0x393c58d3, 0x10d31f7d,
+       0x3c29c9e2, 0x5aa72b8f, 0xdff1f10f, 0xf81a7f4b, 0x7f062abb, 0x844c3e86,
+       0xf87d58c7, 0x571dd947, 0x57bfc21f, 0xfe50f158, 0xe0cef833, 0xeba7eab7,
+       0xcc7c5346, 0xef834be0, 0xe0d2f906, 0x46f121bb, 0xdf62fe13, 0x030630db,
+       0x58f6f970, 0xbb508e29, 0xc2ffef97, 0x4c478777, 0x69793c25, 0x871d6319,
+       0xd747a447, 0xcef53183, 0x98def698, 0xbda62fba, 0x68dea63f, 0x75db5f6a,
+       0x2d79e550, 0x793b5361, 0x9dec23c5, 0x35f8f161, 0xd0d2fdc8, 0xf9006a07,
+       0xefa01b42, 0x80b377ad, 0xfbe1e313, 0xf48f8a64, 0xc1578e03, 0xf3dbfd38,
+       0xd1279882, 0xa771e0e6, 0x15750c81, 0x7d7eb9ea, 0xe37685c0, 0xf1c78380,
+       0xae037dfa, 0xed7b28d4, 0xe932bdad, 0x9b209ee9, 0x84afcf1d, 0xa6e48415,
+       0xcf7a2587, 0x64b3fbe3, 0x8c0ad46d, 0x1ec874b7, 0x3454e10c, 0xbcc2ecdf,
+       0x05bdfe82, 0xe783cdd7, 0x69945f8b, 0xed1fb0db, 0x872414f4, 0xf28ec957,
+       0xc0b24ee7, 0x5e303343, 0x75fb97bf, 0xec636b15, 0xf896b60f, 0xae5b52a7,
+       0x3f04fea2, 0x7ef36dec, 0x6a839705, 0x46d55fd1, 0x7be37bf3, 0x7b45b1dc,
+       0xf98b7abd, 0xfff85fbd, 0xf3e44541, 0x8493624c, 0x4fe3cdff, 0x92cf0f42,
+       0x0f375fc7, 0x447fdff0, 0x7f5fb866, 0xf84caf66, 0xef9db33f, 0xfe9c53cf,
+       0x01e7e472, 0x9e067fd2, 0xd47e517a, 0x77a9fac4, 0xff177fd7, 0xf764f908,
+       0x06ff45eb, 0xd7eeef65, 0xf58d7f0a, 0xd461fe5f, 0xfb686ceb, 0xb41ce7d2,
+       0x9cffd22f, 0x7fbbf893, 0xfd46efdf, 0x6c7beb08, 0x7fee8f14, 0xe42293ee,
+       0x6dbbfe97, 0xfadfa855, 0xb47f7247, 0x4527df65, 0xb69eb43d, 0xab7edd12,
+       0xda1edca8, 0xa53797fb, 0x56612c74, 0x973c2768, 0xf0d3f24c, 0xcfc5072b,
+       0x527df7fa, 0x7fe76d1c, 0x8bd4f9dd, 0x277ecafd, 0xe113b79b, 0x3cfbe54b,
+       0xfcbebf0d, 0xb7cc6689, 0x1757ed08, 0xdfd2fbc1, 0x7a845e7c, 0xb7277fb3,
+       0x3dacfa7f, 0xdc7ee18f, 0xeef3adab, 0xfb9e02b6, 0x80728850, 0xcf0f6d3e,
+       0x8a193944, 0x2e29cf97, 0x38f8a178, 0xc0f8f0ad, 0x243e3e3f, 0xce6fd72f,
+       0x79c25da0, 0xebe6fa7f, 0xb39e07a8, 0xf31a5f11, 0x99b3bf7d, 0xcdf393ec,
+       0xbffeb35b, 0x3a1707c2, 0x217c296f, 0x1ff4bef3, 0x143bde7c, 0x2b17c137,
+       0x7cf94307, 0x7f549ddf, 0x7821e9c6, 0xafdf902f, 0xff9f07f9, 0x4efba697,
+       0xfcebbba0, 0x07feaef3, 0xba62779f, 0xa09b78bf, 0x2cf98ebb, 0x9cf9bf0d,
+       0x7ab2fbe0, 0x1ff58d6e, 0x9a25cf5b, 0xafc761bf, 0xf23a78b1, 0x5e871e31,
+       0x9ad3ac02, 0x863b6e73, 0x9b8cd707, 0x295da3ab, 0x1a4fecc7, 0xdcadafe5,
+       0x9f71924f, 0x237ae312, 0x098f5c79, 0xf0b689bf, 0xab456860, 0xd155bb24,
+       0x5a7b7156, 0x017b74f1, 0x592e6b2f, 0x215ca1e8, 0x1f98f936, 0x3c33b9eb,
+       0xf18eaf14, 0xe6255b1f, 0x559ec095, 0x11d6f92e, 0xe3ac67f4, 0x115b612c,
+       0xb9616f95, 0xad21c45a, 0x73f26aba, 0xbae6f1b4, 0xdbae6dc3, 0xc6767f44,
+       0xb167b7e1, 0xe5a3c620, 0x98e80f8b, 0x524f26c7, 0x07750498, 0x3fa008eb,
+       0x7f32cb61, 0x664c13ff, 0x31e088cd, 0xe432f357, 0x43b0ab0b, 0xc14fd0cb,
+       0xd18fae7a, 0x43b0a5fe, 0x0b2f7495, 0x0f755e20, 0x3fa2fc43, 0xe07f0610,
+       0x504fed85, 0x53f4e1fc, 0xe1077d6f, 0xccb5f9a9, 0xbecf80ec, 0xc6164eed,
+       0x8aa095ef, 0x48754dfe, 0x467c52f6, 0x1f5f1709, 0xd8689fb5, 0x3acf3597,
+       0x3bd53e69, 0xe16bc16d, 0xefddeafb, 0x7f7ad114, 0xcbd900f7, 0xcf24a781,
+       0xa7bb0256, 0xab0bf708, 0xc6e76e15, 0x2b0df7d2, 0xf77bd3f7, 0x78c3cf24,
+       0xe78db480, 0xde775671, 0xe545b56c, 0xcadefcbf, 0x1da186f3, 0x49e05ff1,
+       0x1068f289, 0x41fce8be, 0x7dedbec3, 0x75f0e252, 0x0f988359, 0x476dbd5a,
+       0xaa35c61f, 0x683cd98f, 0xfb6c362e, 0xa5e6e280, 0xeae33ecf, 0x364e3f21,
+       0xfc43b5f9, 0xf1326dc9, 0x8ea87d43, 0x13a85dec, 0xc677d45f, 0xcf9cab8f,
+       0x7679a9ef, 0xa000eedf, 0x3f17e6b0, 0xe4dc6173, 0x1756f754, 0xcedb95f9,
+       0xe219cf1d, 0x73de763f, 0x14f1ff4e, 0xb27601fe, 0xbff18d55, 0xbb230db7,
+       0x8e2be017, 0xf06c4797, 0x1f33cd5b, 0xcdf1863d, 0x3fef9dde, 0xfed6f086,
+       0xd0c7c3f5, 0x39cf656e, 0x68e7dc74, 0x28bfea78, 0x377c643e, 0xccf1e55a,
+       0x467f27be, 0xf03eb571, 0xbeb7b1db, 0x428eef7d, 0xc76fa5bf, 0x87e899a7,
+       0x6b37df2f, 0xf977ce38, 0x2ce1d2ae, 0x251bdc8e, 0x02f06df2, 0xf4b17ae2,
+       0x483a183a, 0xa069f5f6, 0x8337fa37, 0x3ace80f1, 0x8b715f1e, 0xf8f6c038,
+       0x7e21d3f1, 0xebfae87f, 0xa58a9aae, 0xe3ea83d5, 0x2bfffebc, 0x1789c740,
+       0xf7edbf40, 0x3e273f08, 0x1fe34efd, 0xc2abffe8, 0xfbf411cf, 0xf1f8b428,
+       0x685df047, 0x3fff4258, 0x3378017c, 0xaa49b3e2, 0xf28ab677, 0x8a69f3b5,
+       0xaedd20b7, 0x3df68985, 0x8c28d1f3, 0x0eb49f6b, 0xfdf3c6dc, 0xb1fa3a6d,
+       0x40fefbd5, 0xebb7d3f2, 0x993fc528, 0xb1f69388, 0xae3c7fc1, 0x1af57225,
+       0xdc7938b6, 0xe31fe040, 0x3d176e0a, 0xce03f117, 0x215c46c7, 0x49a13c51,
+       0x777917cd, 0xb751ee3c, 0xa7e175e5, 0x4d25e847, 0x75bd3a47, 0x81b738ce,
+       0x70f11d07, 0x2c7c7459, 0x3066dc7e, 0x65e82a8e, 0xe306c5c4, 0xc5cf505f,
+       0xfa504878, 0x0fa38b03, 0xb8f136fa, 0x7e359f5a, 0x2f118e7e, 0x3a18e7fb,
+       0x244cf31b, 0x9e9c861f, 0x8b2ffe0f, 0x6dd51a9f, 0x4f0317e2, 0xd7c59fbd,
+       0x17aa8fe3, 0x709d9fb6, 0x3256a5bf, 0x5ad763ed, 0x1f911bfc, 0xa96f42eb,
+       0x3f03bcfc, 0xb7cc6387, 0xf623e457, 0x1c53253e, 0x41e75565, 0xfab1e3d2,
+       0x8b8fd8c2, 0x9559f785, 0x5df515db, 0xdde89d7c, 0xd06a0ce9, 0x3d81ef4f,
+       0xdbf5cfc4, 0xce38a2df, 0x50bf6de1, 0x55d6a27b, 0x5182275c, 0x7cfef7f0,
+       0x078f117f, 0xd8e8fcf2, 0x7189f671, 0x1fc6f61a, 0x07fb61a7, 0x026a71a6,
+       0x2fcf2a9d, 0xa778f73d, 0xd8cdef14, 0x2b6ea9df, 0x53c1fcc3, 0x78ecf29d,
+       0xd541bffb, 0x825f3a6a, 0x81e525eb, 0x2de7e51f, 0x449cbea6, 0x8fcbd679,
+       0x253d7ece, 0x3c204b1d, 0xe66a17f4, 0xb1fa1a7c, 0x3bd20477, 0x32bbf474,
+       0x11bb53ae, 0x64f651bf, 0xa58d2bf1, 0xc50bd04e, 0x22a6f86f, 0x9beac6bb,
+       0x4c598ecb, 0xc338c3f0, 0x85681d71, 0x03fcf07e, 0x3c2151e6, 0x367cabb2,
+       0x16eb23c2, 0xef2711dd, 0x28f9aad5, 0xd7e8dd0f, 0xccf39baa, 0xdc5367d9,
+       0xc5df4fd8, 0x2f917e46, 0x51f4f105, 0xb4bc8df7, 0x95ce52fb, 0xe852773f,
+       0x0f26decb, 0x1cfcab0b, 0x441bd608, 0xded571fe, 0xa9de7483, 0x6e6253aa,
+       0xd652d7c0, 0xa9f37241, 0x43f22a9a, 0xf543f6cc, 0xfb53dfde, 0x5f6f10ea,
+       0x3da93ac3, 0x9b09179e, 0x8c4a63e4, 0xbbf9c1dd, 0xd48de45f, 0x3ca62d9e,
+       0x874e0342, 0x6f59cb8d, 0xefd26e93, 0x869f08b5, 0x69bab7e7, 0x61ceba9c,
+       0x768c71a6, 0xa0af6775, 0xbac1c2fc, 0x56fc4dd2, 0x689ff677, 0x6af9419c,
+       0x243c22ca, 0x09847fee, 0xd3ff48ee, 0xfa46f04d, 0xc6e3419f, 0xcd669fe6,
+       0xecc5f1e5, 0x301979eb, 0x2654e5ce, 0x70f25b05, 0xd23fdfdf, 0x9cb3ed06,
+       0x310ef3eb, 0xf946073a, 0x926c63db, 0xe246f942, 0x5d69d8fc, 0xbd60580b,
+       0xbcdb447d, 0x3ca3066e, 0xe8b67184, 0x2e16043c, 0xb461fd42, 0x263ef21b,
+       0x3f17214f, 0x0b281501, 0x9e440af8, 0x23d648c2, 0xd1b2ffa1, 0x8e29cfc9,
+       0xf82dd2d6, 0x3fc213fd, 0x0e21ce30, 0x7318b739, 0xe77cf15e, 0x4b4bd314,
+       0x61ed1f6e, 0xafb6d1ac, 0xa4adcf14, 0x63b25cdf, 0x3398ce84, 0xcc52c7f0,
+       0x59ff4f6b, 0xa86ca4c9, 0x1df569ff, 0xcfff5465, 0xa0a34992, 0xfffb79fe,
+       0x35f6a329, 0x96ade512, 0xe8653cda, 0xbd657c07, 0xc460037c, 0x43af97ac,
+       0xbdf69c7a, 0x3762d371, 0xa80c41e6, 0x87ccbf1c, 0xe74e46ed, 0xded5cb78,
+       0x1a7881d8, 0x4669e96d, 0xbef8f27d, 0x8f51524f, 0xf84e99bb, 0x8eab59d1,
+       0x68f02679, 0xc8e717fa, 0x2bcd8ba7, 0x4aa7f833, 0x7e91fbf3, 0x7b8c17ab,
+       0x7bc61ca0, 0x9db26aa4, 0xf399ede7, 0x4e9e9819, 0xf410acf4, 0x51ed3844,
+       0xe44bf979, 0xc7cfca80, 0xa5f58874, 0xa4f1c74c, 0xc5fcad40, 0xae1e5fa5,
+       0x8a5f06e5, 0xe751a5f3, 0xbc42ef1a, 0xa9f9ad5d, 0x78d73d8c, 0x43f7cd9d,
+       0xe5764f9c, 0x375851d9, 0x9ec629ce, 0x80ca6477, 0xbebd9e25, 0x4c779c59,
+       0xbb1cef04, 0x9b8e357f, 0xcef71bff, 0x135f2023, 0xa60f542b, 0x315c4e68,
+       0xe7e14335, 0xa1df290b, 0xcb2fd041, 0xdd90e5c2, 0xb5bf68c9, 0xd17926df,
+       0x43bfee9f, 0xb736f5a7, 0x6bf25ae2, 0x3af393fb, 0xffa82f31, 0x297cfc47,
+       0x1ca34e66, 0x129bdc8d, 0x0e48b876, 0x83918e3e, 0x8976cd8f, 0x2ffedc79,
+       0xd43d5ddc, 0x03fa2e9f, 0x72333983, 0xe65fb83e, 0x937f68eb, 0xc918e09b,
+       0x1ed1fb02, 0x7ef1d0bb, 0xff9f336a, 0x8b6fbc05, 0xc4f6fbc6, 0xd0567bf4,
+       0xf478d9ef, 0xba873d8b, 0x610fe6d0, 0x0f2b77bb, 0x87bab2af, 0xa58d3f9e,
+       0xf1d2836b, 0x323a8630, 0x76407ef7, 0x89b74181, 0xca193c2b, 0x7f1d1330,
+       0xdc4ef083, 0xc70581fb, 0x93f7e835, 0xbfdf7904, 0x23fb71b5, 0x79ccbc76,
+       0x38fe393d, 0xe0c55fed, 0x2e7e945c, 0xf8d317b2, 0x0e3c2dc3, 0xc27db434,
+       0x95cff3fe, 0xf3a4598f, 0xc7ff017e, 0xfe064f10, 0xfc89b0df, 0xfff8a1b3,
+       0xe0379c1f, 0xc00bca9f, 0xe173f1ff, 0x6ac3f0df, 0xc1a85e84, 0x9fe026fd,
+       0x66e7b93f, 0xe5b8c3e6, 0xbffc46b2, 0xf62cab74, 0x66d7bd23, 0xc8f44667,
+       0xf71bcbd2, 0x970f815b, 0x9f112a3e, 0xeb738856, 0x2df38bef, 0x957df9b1,
+       0x27a402f3, 0x17e79fcf, 0xb3543d24, 0x73fcfccd, 0x9ddff09b, 0xe5e5146c,
+       0x4a39f806, 0x2c45c859, 0x4268cffe, 0x9aa4545f, 0x61d2c5da, 0x94c5a364,
+       0x3a5d9e0f, 0xe5f90fd8, 0x1ff71659, 0xeff6ee28, 0x1cf18656, 0x353e92af,
+       0x2a98f88c, 0x25bf6195, 0xfe8d6e42, 0xdb30af46, 0xf3017965, 0x7682bff9,
+       0xb1bff9f3, 0xf6a6391d, 0x37c86d17, 0x7838bfbd, 0xa5fde989, 0xea9b26db,
+       0x30af3a13, 0x35d89fb5, 0x149f54d3, 0xfda996fe, 0x4d732394, 0xdfdd69f5,
+       0xecbfb535, 0xfbd342d8, 0x4daa7bcb, 0xb93cafef, 0x6abf54cc, 0xed4d9fe0,
+       0x5eb98bc3, 0x9594d03c, 0x0c0be78b, 0x5db81cbc, 0xfcf8e8b5, 0x5e8b42f6,
+       0xd33cfd14, 0xb2c22eeb, 0x70fe8bd8, 0xb5297922, 0xaf46e767, 0x6acc25cf,
+       0xf6a56bd2, 0x97e0bad8, 0x402fc051, 0xb376d9fc, 0x38d11b5e, 0x47cc1da3,
+       0x0c74b396, 0x7c834de5, 0xfae7635d, 0x900bca8d, 0x7bb61f2f, 0xe74c3eb7,
+       0x4be563ed, 0xa02af946, 0xacfb4032, 0x977943cc, 0x7ccc3b0f, 0xaf40959a,
+       0x88b76adc, 0xef0767b8, 0x50e23f4f, 0x3c62724c, 0xfd149b3f, 0x2d725a5c,
+       0xea24efe5, 0xf0b59ad7, 0x2fa02d9a, 0x2a7ed9ad, 0xf36de78d, 0xf3f3712c,
+       0x4d7fb2ee, 0x10c376bf, 0x3b2ee9fb, 0xbfa65bee, 0x9be610fc, 0x4032dfd5,
+       0xcdb66dfe, 0xdd48978c, 0x53e79c33, 0x4279f9b9, 0xb1b9ff9d, 0x5c1afda9,
+       0x2e798def, 0x266e6d7e, 0x26e40de6, 0xd97777f0, 0xac7e9eb9, 0x0a9aeaa9,
+       0x76820b3c, 0x5ce47158, 0x4370a8f6, 0xa3e9da39, 0x43f43e45, 0x4b79f896,
+       0x31f02aff, 0xda28151c, 0xf14a9a07, 0x6f95d3f8, 0xc79814b8, 0x7ffe2d6f,
+       0x3858be45, 0x9f98bbb1, 0xcd64f65f, 0x9d0b04a5, 0xd0f437e0, 0x10f7cd28,
+       0x605195ea, 0x86f3b99e, 0x16fc33c2, 0x783cecdf, 0xf1669adf, 0x901f5468,
+       0x25753c70, 0x7da0c363, 0x82655feb, 0xe5c0f5af, 0x6aa3d794, 0x1b778a7e,
+       0x0f2264f3, 0x7fef88c0, 0xf9037e94, 0x0c97ad81, 0xe461df9e, 0x6ebe6a17,
+       0xf5a3f7ec, 0x75b71a56, 0x3f7a64a6, 0xfdb8eb4a, 0x1951c030, 0x9fb8a64a,
+       0xe43be1b2, 0x1c59a8c7, 0x24c7d69e, 0x3c112b96, 0xe2ed2e3c, 0x3c3c00f8,
+       0xe6f6744a, 0x26316c7d, 0x52ebef0d, 0x39d73a54, 0xe0bc4132, 0xa65f8125,
+       0x768990df, 0x6645f654, 0x0ff5e578, 0xf3187ede, 0x7b257633, 0xd360cbb0,
+       0xf34f410a, 0xe7d2db7c, 0xda1f375e, 0x3322bcb5, 0xf771fd4c, 0xf3469630,
+       0x38c18390, 0x05e836f8, 0xf484bf70, 0xd3943793, 0x9d04f33c, 0x519d0097,
+       0x7c5967ef, 0x99ee89b3, 0x8cf38616, 0x42f7ff85, 0xebb15f6e, 0xaacf4fdc,
+       0x30cb66bc, 0xde482b2c, 0xda13d98e, 0xfd0baf57, 0xfd3c7af3, 0x3f7bbe73,
+       0x1f75e76a, 0x5af652c6, 0x58db3d84, 0x83276d18, 0xf4813abe, 0xca72ea30,
+       0x7bd422ca, 0x4f31ed89, 0xf9de617b, 0xc3b431ed, 0x3b0cef90, 0xb376cfec,
+       0x5fa512fd, 0xfb73b13f, 0xd00bca85, 0x7e919faf, 0xae386efd, 0xc6a192fd,
+       0x1c536fd7, 0xba0dff1c, 0x2f8f28ca, 0xa14bbec1, 0xef3b8a43, 0xf9cfeb44,
+       0x64fc8bfc, 0xbd0d4f83, 0x560cfdce, 0xd03ed2a9, 0x7bc10d99, 0x52df710a,
+       0xdbbca7cb, 0x588cfd44, 0xc40eeff1, 0x91b781af, 0x013e330e, 0xe7076e8f,
+       0xe0872a13, 0x68f016b1, 0xac71e131, 0xe0761ce3, 0x55ebd657, 0x7d3773e6,
+       0xdfa0df02, 0xf4ef1c55, 0x63166ff5, 0xc6fea2bc, 0x7fbf498f, 0x99e671e5,
+       0xefc30fd7, 0x07247186, 0xff5cb3ee, 0xed1f1157, 0xcb5eb8a1, 0x30528bae,
+       0x7337588e, 0xb9d86f50, 0xfa4f983d, 0x9b6ef4ef, 0x9d3ce117, 0xa74be3c6,
+       0x18765f77, 0x37ef1be3, 0xa257c91d, 0x3fd395ec, 0x856c5a3f, 0x3cef4efe,
+       0xfe90ac5a, 0x8cbe120e, 0xfc5f75f7, 0x45a7d8be, 0xf20c09ce, 0x3faf9d9b,
+       0x6e3c1deb, 0x6bcc13f2, 0xf3d8c89b, 0x364e3cc9, 0x3f72d33c, 0x02916f3e,
+       0xb6838c01, 0x18a5dd48, 0x9b7c0c77, 0xac99b9d1, 0x6cc92beb, 0xe3602acd,
+       0xdb3be0f2, 0xac611df3, 0x52777527, 0xac769dfe, 0xaba58c3b, 0xdb8bc067,
+       0x7d49fa5e, 0xcd0e963f, 0x9ef110bf, 0x26f9e036, 0x3f5ed31e, 0x44e298a7,
+       0xbbd7294a, 0x82920b03, 0xa6514f78, 0xd7147bc5, 0x1647339b, 0x93fbe2a5,
+       0x71ff7cc9, 0x1d2bd66d, 0x2e3e3079, 0x7a7f1403, 0xef7e4ad1, 0xecde91b2,
+       0xb2fdf0c5, 0xb7c4e949, 0x7d9833ec, 0xfb9639d4, 0x145943d2, 0xf00cf8ff,
+       0xdbfb8c52, 0x4d1eec8c, 0xad0af7e1, 0x0eaf30b2, 0xe63536a5, 0xbf611dde,
+       0xb7fa170f, 0x58096ddf, 0x78ea2f01, 0x110cbb73, 0xfc810a77, 0xf183198d,
+       0x5d953b57, 0x18c67a4d, 0x9aafd7a0, 0xdbdca8b2, 0xcfe7a6e4, 0x32a38d35,
+       0x32a1e4dc, 0x8a3dd2dd, 0x71a55d16, 0x57e82ddd, 0xe8b0a6df, 0xcb623b7b,
+       0x3df89b7b, 0xc3fd463e, 0x00a02cf1, 0x7a143e1d, 0x29a5f9a4, 0x4d0f5fc4,
+       0x0e27a800, 0x15e1fefd, 0x86505eff, 0x3c3f525b, 0xfa065052, 0xe78921f0,
+       0x26bd8033, 0xc5e7bbc5, 0x76b21f28, 0xd89e62a4, 0x502c1c2f, 0x91798596,
+       0x0729df03, 0xfbdc7196, 0x1765651f, 0xff71fcc3, 0xf6c60aff, 0xc56d5e39,
+       0x07d9d873, 0x6f91945e, 0x9f7e2ed4, 0xd7c934cf, 0xec11798c, 0x9df7c646,
+       0xe6335f15, 0xc4dff673, 0x6fdfb8dc, 0xc1cfb38c, 0x0e3d83ed, 0x1269f74e,
+       0xaf9b37a7, 0x8182bc8a, 0x2375e8a2, 0x83d4fdb6, 0x007ad29f, 0x611fede3,
+       0xe2806f1a, 0xcbbe8987, 0xdd29f03e, 0xdfa173ff, 0x50a2bff5, 0x0cb41f3c,
+       0x7e6917bf, 0x1235a6e6, 0xc78d1f6f, 0x9dbe357e, 0x075892f6, 0x6e9cacda,
+       0x73f1e70f, 0x5e841bc3, 0xffd71851, 0xf99e4b3f, 0xf30dca02, 0x603ed1a7,
+       0x1423888b, 0x17501b1f, 0x70bdf938, 0x78cf5025, 0x402d27c3, 0x99e8217d,
+       0x4edf312d, 0x27d67e7c, 0xd7ba84cd, 0xfb197be1, 0x91b45ac9, 0xacf8033d,
+       0x23736ddb, 0x6af819db, 0x31daaa39, 0xef633e1f, 0xd86fb45b, 0x68a8f522,
+       0xcf787e12, 0x6caf14a7, 0xf36636b1, 0x186d47fa, 0xb389fccf, 0xb3ac61f1,
+       0xcf65a7c0, 0x170c3f03, 0x09f1f0e7, 0x4390b1ea, 0xb71f03d4, 0x421f817a,
+       0xef875e56, 0xd6423f89, 0x8e7805c6, 0xd0adeb1f, 0x3bd5285f, 0xad7502c2,
+       0x23d6c3f9, 0x68dd6157, 0xefb521ff, 0x6edce873, 0x4879fcd4, 0x0ebac1ff,
+       0x5d546775, 0xe76675e1, 0xbabf31a5, 0xfe529f83, 0xce5efd70, 0x9c37888f,
+       0x879bde27, 0xfd19d8eb, 0x4dd9ab98, 0xae42e6f1, 0x3e26c3af, 0x6ea7ce33,
+       0x5259f8b1, 0xccfd9e94, 0xa634ff58, 0x7bc79f45, 0x4465db1c, 0xd7e227f5,
+       0x4def78b9, 0x037dba01, 0xd6f11a54, 0x72a1e67c, 0x0739b6cc, 0xb2f9a072,
+       0x616f415b, 0xfa914a4a, 0x1983d47d, 0xcac37e31, 0xcd3fce64, 0x255725c9,
+       0xe25eb943, 0x14e0347a, 0x90a3d272, 0x742bd9bd, 0x961dfbd5, 0xb23bee00,
+       0x5e7a5615, 0x5b7fce2b, 0x5fbceeef, 0x67e37dc6, 0x5c6fb4ac, 0xb12be793,
+       0x4f66bd42, 0x4599a79e, 0x526b9ff2, 0x6b27333b, 0x58987391, 0xf645a49f,
+       0xd6bbeaef, 0x83fcc28d, 0x46bff6f7, 0x292d7ef8, 0x0babe08f, 0x4efd551d,
+       0xbd54cfda, 0xc73dfed0, 0xeb47bae0, 0x93c39b5d, 0x067de782, 0x11efc77e,
+       0xe671d2db, 0xefef289b, 0xee98b4af, 0x03ca33bf, 0xe0bcffa0, 0x04df3f18,
+       0xdcf0190b, 0xb99f9041, 0x7afbcfd0, 0xdbe10ba7, 0x825df5e2, 0xd25978a6,
+       0xe00e5988, 0x5ef9ada3, 0xb18932dd, 0x6b8cd6db, 0xbf5183b3, 0x462fd555,
+       0x692dbbbe, 0x75f21b62, 0x7ca6438d, 0x0f10b057, 0xfc88c779, 0xace7a804,
+       0xfb859da9, 0x2ed95f7e, 0x1fdb30a8, 0xbef9eb0d, 0xa505d806, 0x48f53fc8,
+       0xec5ba80f, 0xf7fe74dd, 0xfc2624b6, 0xc579f322, 0xc8deba41, 0x3be7bce3,
+       0x367558b7, 0x1a27ce89, 0xdc92d7f5, 0x94aa47a4, 0x54f3ed00, 0xb9d1759d,
+       0x8e3fafc6, 0x723e74dd, 0xc11a38e8, 0x1b538c61, 0x57f48719, 0xc8076bed,
+       0x89703e1f, 0x297adf61, 0x877cb59e, 0x78713bc8, 0x943f6387, 0x01f4455f,
+       0x57780b3d, 0x01eb06f2, 0xc1cef405, 0xb333bd41, 0xe9172cad, 0xa687a51b,
+       0x5792f49b, 0x4c1d3a01, 0xb7d2f432, 0x8a4fb7e2, 0xd46f9f69, 0xb1f6a7af,
+       0x11c4fcf0, 0xbda1dba9, 0xb06db9f2, 0x39d1f08e, 0xd2fee8fb, 0x47bff18c,
+       0x97fc19fd, 0x28715493, 0x60e5fa00, 0xd704afaa, 0x991b819f, 0x71e1e51b,
+       0x89e1c065, 0x124e43a2, 0xceaa175f, 0x7fc2625e, 0x2645ef04, 0xe4dbbffa,
+       0x2f07ed36, 0x9d077ed9, 0xe831c98f, 0xbcfc02c5, 0xd302c6d7, 0x87fff03e,
+       0xe1c2abe3, 0xd947004d, 0x718e19df, 0x7022f1a6, 0xf7c1378c, 0x5390e155,
+       0x879d986f, 0x85b35bf6, 0xb4cc59ee, 0x68f9ec04, 0x2169dd37, 0x4b4309bb,
+       0x8605bf98, 0x1241e935, 0xdee76809, 0xf9805b6b, 0x1d856e45, 0x9e50d251,
+       0xb466eebc, 0x90a07fe7, 0xedcf017f, 0x0aa8c9d6, 0x1f78bc3b, 0xedc15b14,
+       0xbf857730, 0xe6fa1f8e, 0x842383fb, 0x59d02d5e, 0x7a13de09, 0xab82f27f,
+       0xf75e0192, 0xb01b3bbc, 0xfd2d26dd, 0x926636a9, 0xda4bb257, 0x3017dba4,
+       0x4d3e0f58, 0xcc76495a, 0xc76e24f0, 0xdb656c48, 0xbde3cb91, 0x767af2e7,
+       0x1859cacd, 0xcdde0847, 0x2a7f412e, 0x1e7608e8, 0x69b43a40, 0xde43a41e,
+       0x9c76c1bd, 0x858f7cbf, 0x35394dd6, 0xd6336db8, 0xa0f42bef, 0xe54c115d,
+       0x59a075fa, 0xab4673a3, 0x78b9dc9a, 0x074b495f, 0xb736075f, 0x8c25d0ce,
+       0x15806957, 0x9c6d6f7c, 0xb4f6f68f, 0xb3691f7b, 0xcc7a8e5f, 0xe74c3ed3,
+       0x5c6cacf5, 0x7dbe58d7, 0xeb0f7892, 0xe599b05a, 0x7a91a9e8, 0x8d60e7c1,
+       0xa4799e90, 0xfd8b9bcd, 0xfc66adce, 0xb71843fb, 0x87a83ad8, 0x9a777bf8,
+       0x31d413c0, 0x8e6e4e9f, 0xf9832fbc, 0xd728f13e, 0x7fd0d953, 0x13e69720,
+       0xac61bb20, 0xc071f342, 0x3ba82ed8, 0x7da7ce2e, 0xd783a0bf, 0xefe62e07,
+       0x751afd8d, 0x6bf685ac, 0x8e1f021c, 0x055ede6c, 0xfe8c32ff, 0x7ee35382,
+       0xc32de29c, 0x198d357c, 0x3e3cbcff, 0x9233f629, 0x28807ef0, 0x2eb7b47e,
+       0xfb6acda3, 0xbd3ef318, 0x2bae6b9a, 0xfd10b3cc, 0x3f37592d, 0xc4592abf,
+       0x3658d3e3, 0x5814dfee, 0x5d8f64fc, 0x6c1602c4, 0x520b317f, 0xd30b2979,
+       0x87ac09f3, 0x643113ea, 0x9bc7805a, 0x1640fcdc, 0x3768c8f3, 0xe237ce66,
+       0x6859fe4a, 0x164ccd9f, 0xe86cb571, 0xcfa5da1f, 0xe1fb4a99, 0x8c7be357,
+       0x3cc6f937, 0x7e4dcb30, 0x7b68b8f1, 0x0d2f58cf, 0xc042ae7b, 0xc52c93dc,
+       0xfb0c17b5, 0xebc1c2ae, 0x012a95fd, 0x210b80d9, 0x1dfd7fd8, 0xce31cb0b,
+       0x95efac62, 0xb959ce22, 0xed1324a1, 0xf3fd8ab7, 0x2bba0fc9, 0x8b6fdb99,
+       0xfd51cfd7, 0xd87cf013, 0x2a0bf202, 0x976fd8e2, 0x6fd88d4f, 0x5885ec89,
+       0xbae82dbb, 0x02b1ee88, 0x5ef17aac, 0xf75683a4, 0xc7ca0f5a, 0x9e48633d,
+       0x255e4982, 0x65c1ea15, 0xc30b4f6e, 0xa877097d, 0x38ffdf1b, 0x0e4dee89,
+       0x0695fb8a, 0xffbc01f3, 0x9c917d2a, 0x7cd8fc78, 0xdca98380, 0x7fe632df,
+       0x51fde920, 0x02b98f48, 0xc96a3daf, 0x1e97485d, 0xcb173bd5, 0xcfffcd2a,
+       0x73d5c748, 0xc5981f0a, 0xcd8bf422, 0xb04f4867, 0xe89571af, 0x3b6c2af7,
+       0x0cdd286d, 0x5ddac73a, 0x0e7e25cb, 0x1abcd13a, 0x7a4c5ace, 0x854f723e,
+       0x4fbe7a4a, 0xb38723f8, 0x04afebfc, 0xbacd5e92, 0x717fe215, 0x148b47bf,
+       0x59d5faa0, 0x88cbf731, 0xa1729b3c, 0xf9877fb7, 0xbefc2e33, 0xf42f79e3,
+       0x2a0b0d73, 0x4587f7c8, 0x4bf80d9e, 0x6c9fb44a, 0x49afd094, 0x36e9bece,
+       0x6719afd7, 0x13db7fae, 0x7bbc3eff, 0x7ed3749b, 0x7e78bddd, 0xf65e0e32,
+       0xabe8bf08, 0x62c46bdf, 0x20f71cf3, 0xbf30ebdd, 0xe79be494, 0xf83b2639,
+       0x7ef08879, 0xa16f3f07, 0x34309ba9, 0x257e00d0, 0x4ec9e1fa, 0xfb9e3f78,
+       0x4d4f7899, 0x8fb795b2, 0xe3c44bdc, 0x2cbe19f6, 0x64f03711, 0xe5f099cd,
+       0x857f46e1, 0xf615a4f2, 0x9227d230, 0x1fbe69af, 0x9bf274e3, 0x611fa8c5,
+       0x1c62373e, 0x1a8788c0, 0xf97bf9f3, 0xf88af739, 0xeedd2c44, 0x4b76e64a,
+       0x2a39d20b, 0xe82add8e, 0x0dca177c, 0xb8a1fdc0, 0xc921feef, 0x995e7947,
+       0x82c6e016, 0xda3e7598, 0xda7c0f2e, 0x0cf1865a, 0xc518e787, 0xde5d842b,
+       0x7fdfca92, 0x8e548f78, 0x60db5e7e, 0x186daffd, 0x1873686f, 0xbd50bff5,
+       0x60e58f25, 0xf0ebc47c, 0x9efe21f7, 0xc6143e77, 0x765b767b, 0x7f94dcd9,
+       0x26fdde90, 0xdcc95f9e, 0x5df8a36d, 0xb4f3c8cb, 0x9f698acf, 0xa72842c7,
+       0x42e7db09, 0x7b48f4fb, 0x3a6495d6, 0xe5f86b47, 0x53b8c667, 0x1fe8e352,
+       0x5836d4a3, 0xadd6f74c, 0xd476c255, 0x3c3d6b17, 0x2fa22b3f, 0xb278a683,
+       0x769401b6, 0xf788dd94, 0x5590633d, 0xf7c8fb15, 0x5a3d1e29, 0x9f56694f,
+       0x9d5afd8e, 0x1eddbb93, 0xad69fec6, 0xb77d1ca7, 0x060bcc16, 0xcb5f22bb,
+       0x7578855a, 0x70473d5a, 0xc5a74e9e, 0xcdb2798d, 0xa9e4859a, 0xde53b745,
+       0xad74ab6b, 0xf46b7c8e, 0x0851eceb, 0x9e5e230e, 0xf80a9e68, 0x5cfc8cb9,
+       0xff593df3, 0x8469e37b, 0x72f721d7, 0x88fcbc1d, 0xa99aed1b, 0x52e7ca16,
+       0x4ef634b2, 0xc1ccbc9c, 0x712836f1, 0x676d8ee1, 0x9d213fe0, 0xa42e3dad,
+       0x7f169f47, 0x49afdcdf, 0xde4f4f5f, 0x9c5fa312, 0x030c2c7f, 0x3d49d61f,
+       0x23c829df, 0xd06bf7f9, 0x33a4fd7f, 0xe93752ae, 0x352fda19, 0xf68b79f4,
+       0x0be79db2, 0x4b63ef9b, 0x5e067fc4, 0x622e2fac, 0xcbd19f3c, 0xe1f3bfb0,
+       0x7d8529c1, 0x49331f94, 0x0a1fbb89, 0x9f29829e, 0x8ec7ef0a, 0x4169b7ce,
+       0xe53806be, 0xb476fcab, 0xe6b39a17, 0xbebe31da, 0x875f714a, 0x2f03dffb,
+       0xc6e3dd82, 0xfcb35cfd, 0xb8bb6518, 0xcd3ef7bf, 0x575ef712, 0x3e47b8bb,
+       0xd04879f6, 0xe5ff7da7, 0x112e4e74, 0xe63580ff, 0x5ec475c3, 0x1f78e8ac,
+       0xf0e56cb8, 0x21d8123a, 0xf089bf46, 0x077ecf75, 0x8c7bdfbf, 0x59eb883d,
+       0x786d78ec, 0xb7de0f6e, 0xac013c01, 0xdbf1f2e7, 0x3f142aa6, 0x9893b874,
+       0x35bdaa3d, 0xffe12a63, 0x678e968c, 0xf21b5908, 0x0cb81c63, 0xcb34053c,
+       0xf3f7dbd7, 0xc8e5f0c7, 0x5f910b57, 0x17f2f8a2, 0x7ca1b4da, 0xe2006b89,
+       0xbe8fe105, 0x319ad36f, 0x85bdee26, 0x8633f843, 0x30678a6f, 0x1c379f3a,
+       0x77d04dca, 0x53a3dc48, 0xfc1cba87, 0x359bdab9, 0x5fbe83a6, 0x88392ae2,
+       0x1f7714f0, 0x4264e7e0, 0x407efc19, 0xb8ec7df1, 0x275f271e, 0xca9d4e3d,
+       0xa7de6394, 0x421b77f1, 0x3c6e49dd, 0x8b4a18a7, 0x1f163bff, 0xd0bf866a,
+       0xf419ce21, 0x68db7c50, 0xf30b7c5f, 0x50f2866e, 0x83b76b12, 0x2686fd5d,
+       0xbfd81cf2, 0x083ab888, 0xdd738c2e, 0xfca52faf, 0x87fe6308, 0x3ed86680,
+       0x48a7b333, 0xdd06bf92, 0xbdd331b6, 0x1ef67568, 0x8b7cdba2, 0x4fc43dff,
+       0x4c9eb1c3, 0x3e5e87ac, 0x467a7645, 0x069fb70b, 0x7f9324f6, 0xcd3e9439,
+       0xd9ed5f04, 0x3618161c, 0x4ab56e94, 0xdae4ec98, 0x6058a3b3, 0x603bcd0a,
+       0xbfbc8b4f, 0x74d8c6ce, 0x1cec2ff4, 0x789f884f, 0xc84978f4, 0xd00f41b5,
+       0x053a974b, 0x834f103d, 0x87f716f4, 0xe97b8af4, 0x37f616de, 0x675fb9d3,
+       0x76f44bdc, 0x3d3ee0e1, 0xeb54d3dd, 0xf7803ef0, 0x32a3b07d, 0x2a2df7e5,
+       0x2deef7e5, 0x305379b2, 0xf7e8b05e, 0xfb4cd4b2, 0x17ef9c62, 0x32f5fc0b,
+       0x0f5f9d0f, 0xfce875ac, 0xbfb3263e, 0xc950f791, 0x9e61df94, 0x7a4c974a,
+       0x16a96165, 0xbb8b7ec0, 0xe78d3e67, 0x93db2a45, 0xa2f2fce9, 0xa04e786f,
+       0x01e8bf9f, 0x277f1b87, 0xf96bf964, 0xefd0d925, 0x74f307f2, 0x15e4ff94,
+       0x87bb2cbe, 0xc19d6bb1, 0xda93f472, 0xa40b05a4, 0xf3740c49, 0x7c6156cf,
+       0xf4bcf95d, 0xe7d4077d, 0x6156bb3a, 0x18d7e25c, 0x6d3b250f, 0x93fa394f,
+       0x469fe14f, 0xf07015fc, 0x888b11d4, 0xaab0bc3b, 0x25fe540c, 0x068b2119,
+       0xdf703f30, 0x1cf0ab0b, 0x779a666c, 0xfbc60592, 0x2a5efbb7, 0x70055fb7,
+       0xe3e1303f, 0x37fef00d, 0xd90ffdf7, 0xf1274017, 0x52f2f1fd, 0x8672bef8,
+       0xc54f7f51, 0x8b327a7a, 0x41d389d8, 0xe323f3be, 0x1a185da3, 0x2e9c8b8c,
+       0xdf6f832f, 0xaa58d99e, 0xef27ff40, 0x78d570fb, 0xeb65d440, 0x8c2f744b,
+       0x8fbefa7f, 0x2321be68, 0x64f81c7e, 0x3173ed15, 0xbc2b41ff, 0xd5d25c57,
+       0xc3a55476, 0x9874937c, 0xc2f6b0ff, 0x7e47b3d5, 0x3718f90d, 0xb5d5fce4,
+       0x93920cce, 0x51d288c3, 0x777df82b, 0xcb9df283, 0x3eb076f9, 0x9f9f87ae,
+       0xbc59ea30, 0xbe3bba1e, 0x70a570be, 0x8a4a1c3d, 0xd0a97eff, 0x30ef8043,
+       0x92bae9c5, 0x22f36383, 0xc7e403fa, 0x69e49d3e, 0x201fd71d, 0x06679847,
+       0xbfb71b72, 0x21af2b2f, 0x48761f71, 0xbfa326f1, 0x9031e86c, 0xc71c64bf,
+       0xd69b74ed, 0x85eee2b9, 0x703f5fa4, 0x371e1ce9, 0xa9464fc7, 0x7b308f59,
+       0x1fb46177, 0xf5c9cabb, 0xc6a5de66, 0x8d58453e, 0xbe589fde, 0xe79ce4a3,
+       0x1e316b63, 0x476f651c, 0xfe4651e6, 0xa17e90f9, 0xdfe8b73f, 0xf042fe33,
+       0x5f079fa5, 0xf3af84e9, 0x9fd233cd, 0xb4309e39, 0x1fec553f, 0x11d79875,
+       0xcf9c3e35, 0xfe21fc08, 0xb3fa512d, 0x6353e852, 0xf76fbcff, 0xe4d79bc5,
+       0xcfcb8f45, 0x9f7d025b, 0x09ebdfc6, 0x3d453e80, 0xaf78ac56, 0xddc5f6c1,
+       0xefda3a69, 0x82ad6fc0, 0x37e414df, 0xb4a1ce83, 0xef9a12c6, 0x1cdf493a,
+       0x190beec7, 0xefc1dbfc, 0x8b7e1d65, 0x05105e5f, 0xa1efa19f, 0x7fe890ff,
+       0x47e7e72a, 0x56f9f907, 0x9fe11f94, 0xdd0f4f32, 0xff0b1dcb, 0xd3732825,
+       0x5dabd6a2, 0x3173ca0e, 0xf955f6f0, 0x6a17b0df, 0x2e4bae13, 0xb1f87382,
+       0xed0dcbb0, 0x101e508a, 0xd0ef9d9f, 0x2ea18afd, 0xf755e199, 0x1bd46f38,
+       0x649e86c5, 0x8e678795, 0xa225bb21, 0xbf64dd97, 0x6c337a18, 0xefda47b7,
+       0x5bcb2ad3, 0xfb8aaf51, 0xd065d3d9, 0x702393e2, 0xebe4e3bc, 0x8b3f74e3,
+       0x87edff7b, 0x87f3939a, 0x2bc3c798, 0x09bdd266, 0x9d3d62c5, 0xf8a013de,
+       0x131acbc9, 0x87c72beb, 0x675f5eb1, 0x38b9f9eb, 0x47e2641f, 0x49760ea3,
+       0xd220a5bd, 0x1b9fbe3f, 0x0b9ff7c5, 0xcfa58cfe, 0x804fd5d7, 0x61e20087,
+       0x067bc086, 0x0afef1d4, 0x85fac0a6, 0x347322f9, 0x28bc9acf, 0x8fae35b8,
+       0xd70b6433, 0x8b91e763, 0xfc4c61f4, 0xe493878e, 0x6e0f8239, 0x38ba14b7,
+       0x738937de, 0x202c878a, 0xc31fb427, 0x3bb7d9e7, 0x15cdfa9b, 0x7a56feed,
+       0x77c89379, 0xbac5ec31, 0x64d88d5f, 0xf7f79f86, 0x4bc71763, 0x24ef31f1,
+       0xfac663b4, 0x07fa0f34, 0x0f73ddc5, 0xe141fe60, 0x3e78bc5e, 0x9d85e7c2,
+       0xbb814e5c, 0xdc5e5e04, 0x34efdd1e, 0xb390d397, 0x0a3cc9bf, 0x1e31318f,
+       0x7da37397, 0xe3e34bb9, 0x886cfcc0, 0x47acc54f, 0x076ff28d, 0x9e00ef87,
+       0x7c05a963, 0xf036daa0, 0x705cea16, 0xf8e503b7, 0x1ca0f318, 0xb02e75f7,
+       0x62ba404c, 0x4a3b9102, 0xf3e7ac3f, 0xe050ec30, 0xcbe44ecb, 0xd491ae79,
+       0xde63d8cf, 0x7ef0f1e4, 0x534dda2c, 0x670abef1, 0x2588fd10, 0x5d8fff2e,
+       0x0c3717c8, 0xb77c6294, 0xd9b1b93e, 0xb07cf511, 0x27b4177d, 0x13cbf63e,
+       0x33efce10, 0x98b8df7e, 0xd80d340f, 0x153abc60, 0xea80b4e4, 0x485bc461,
+       0x6e07ede5, 0x60a85fa5, 0xdfbf32f5, 0x6befd60d, 0xb65f3f88, 0xd17d21a4,
+       0xb93b424f, 0x52e5f656, 0x9b70d8fe, 0xf001d707, 0x0fdf883b, 0x80e29839,
+       0x12805ffe, 0xf92cf4f5, 0x33f73a76, 0x7da240ab, 0x47bfc303, 0xd27e85bd,
+       0x2648df75, 0xdd9f647e, 0xade30631, 0x4e9cc919, 0xf45d8fd0, 0x8e4fb763,
+       0x8e7fdfc8, 0x1dfc98ba, 0x243b7d63, 0xa1cfd449, 0xdcdd2eab, 0x6107e512,
+       0x0fffa87f, 0x6f727349, 0x7e17fe47, 0xe987d91c, 0xed177591, 0x345ac995,
+       0xbe0203dd, 0x47c8519e, 0xda28f6d1, 0x2cf683a7, 0x6afab59b, 0xcd97b3d0,
+       0xd5e30cee, 0xab81cde8, 0xfa0bbeaf, 0xacf6059b, 0x2ed0f003, 0x1e50e2f8,
+       0x43d0ddff, 0x07ba2563, 0x7f9270fc, 0x1916a37c, 0x1bc45327, 0x727e4532,
+       0xf32f1266, 0xdc1eb853, 0x36e24a29, 0x1f8aef6c, 0xef15c89f, 0xf5c2c5ff,
+       0xf8929ac7, 0xbb4fcc79, 0x699c66be, 0xcf7b14bc, 0x0caed3f3, 0xe533cf71,
+       0xf5f8f169, 0xec1ed109, 0xc453a21c, 0xcce7e2ae, 0x38d43b0d, 0xe4975e6f,
+       0x42e2807b, 0x155f82af, 0x83fc7fc7, 0xef07db8b, 0x673a3135, 0x3b9e2efd,
+       0xc7bfe42f, 0x2ba5f584, 0xd6f3a41f, 0xfb482cd5, 0x645bd5e3, 0x8aee79d3,
+       0x7bf46d95, 0x8941159b, 0xcbf425b9, 0xb65cfc7c, 0xa512ffc0, 0xf3dfc551,
+       0x8a67dfc2, 0xe36aaefe, 0x5a7b9894, 0xeaf8beb9, 0xd34ce7f6, 0xbf447f7e,
+       0x179d9394, 0xcfc1afdb, 0xdbe876b1, 0x79d36e4d, 0xc72b85f3, 0x59cdf396,
+       0xf3117ede, 0xb516fcd0, 0xc7e19817, 0x3cba91df, 0xf7837c31, 0x19dd82c8,
+       0x4aa70b88, 0xfe78d07a, 0x103fe036, 0xe17eae75, 0xc70431c9, 0x1fbf9776,
+       0x470222f9, 0xe2980b32, 0xeff83364, 0x9c7839d8, 0x7024f811, 0x9adef5ae,
+       0xfeed75f2, 0xfdd8124b, 0xbb577f45, 0xae16f8bf, 0xc4875967, 0xde5f22c6,
+       0x32c3b662, 0xe72e3453, 0xf731c929, 0xc7b88850, 0x182f6e0c, 0x7850ddfe,
+       0x97f7d2d6, 0xc17ef195, 0xec2ed90e, 0x5edcf1e5, 0x7b41b7fe, 0xfe517bf9,
+       0x5265da27, 0xfe33ea01, 0x43bbf19d, 0xa65ea779, 0xa7efc1fc, 0xbe75fb70,
+       0x0528bdee, 0xf915afda, 0x17c643ea, 0xd6b447bf, 0x4d2fb83a, 0x3e9b63f9,
+       0x7f05a3bf, 0x0760625f, 0x07a0ffd8, 0x9e7d1e4b, 0xbe32e1ee, 0xce8af6fb,
+       0xbf8015d1, 0xb5ce8269, 0xd61f6e1e, 0x18eac27a, 0x96a727e8, 0xb9db95c3,
+       0xbea2525f, 0xede2adcb, 0x356291be, 0x44caffc5, 0xcdc524bd, 0x0aab01ef,
+       0x5da0634b, 0x922dc6ce, 0xefe1fd82, 0x393c0131, 0xfd182c8d, 0x5339443b,
+       0xedf35db9, 0x45a49ba9, 0x687823e3, 0xaf19ccb7, 0x33dadd03, 0xceb83d93,
+       0xbffba13c, 0x7da87885, 0xf5f94c23, 0xadd1bd97, 0x4bbedda0, 0x92935ef7,
+       0x5b83c111, 0x1d7073d6, 0xc3837e4d, 0x17e831d9, 0x7685f5f3, 0x9bce894e,
+       0xb327ddb9, 0x85db8c23, 0xde654eb4, 0xbbf4ce3d, 0x62699976, 0x7e64c89d,
+       0x599627ca, 0xa3bbed3b, 0xd5fee38c, 0xb99b85dd, 0x6ff9cb1d, 0x0b6f8156,
+       0xfc359f3e, 0x3f78c9e2, 0xb0dac144, 0xfd57bf82, 0xe3f18dab, 0xfe054bbe,
+       0x38151e61, 0xe71e633f, 0x3b4617d3, 0x84f8826b, 0xb3c92721, 0x8c1dfbe3,
+       0xf5e9cfdd, 0xe977fa68, 0x9556c41e, 0xc0cc877e, 0x77dd2eff, 0xd393c217,
+       0xdc2249b9, 0xb88cf188, 0x79473e1d, 0x9f355b7d, 0x0fa84c03, 0x5d1cec56,
+       0x5a0fad11, 0xa6cfa255, 0xc370fc98, 0xe2275fbe, 0x5f75c72f, 0xbeb7d23b,
+       0x77c51d6b, 0xbfe16e96, 0x3f109317, 0xa93f8817, 0xed75cb8a, 0xe3e53b3c,
+       0x10aa3c94, 0xf95a6bfd, 0x6ed67aef, 0x3ae3c1df, 0xf507992b, 0x0ee76d46,
+       0xfe3c62a9, 0x690ee27e, 0x473e1471, 0x7f2906d4, 0x21a722fa, 0xc59f5c7f,
+       0x89c63bf2, 0xec394ed1, 0x6f5b76e0, 0xfdc01689, 0xbfab5ed1, 0x66f5db16,
+       0x0f307b27, 0x0bffc0c8, 0x7ca6ae3b, 0x5b4ee703, 0xcb76cb18, 0xb43b2ce6,
+       0xf544bf6b, 0xd2ed5f20, 0x5e20cffd, 0x085f14d2, 0x774d4fbf, 0x5be19a7a,
+       0xd64d8db7, 0xc3c70bb5, 0x71fc3165, 0x372e4ad9, 0x87fa83ff, 0x464d84e4,
+       0x852179b9, 0x3f6017fb, 0xd8757f91, 0x93b1e7ca, 0x53f37871, 0x7f897bbc,
+       0xb8d1a48f, 0x0961b539, 0xa779d5e3, 0xa7ce9a76, 0x7bcbf845, 0x3bf0cbe0,
+       0xf22a7dd8, 0x3fd08d5b, 0x916e8f25, 0xfb8289de, 0xf04c8a68, 0xbe076ce5,
+       0xfefde8d4, 0x7b53a66f, 0x6733cfba, 0xd5df44bb, 0x51c5fbc0, 0x4798c67a,
+       0x0c737d1c, 0xd1bdabf1, 0x37d73cfd, 0x145f1e61, 0xf3d2c6f0, 0xe57bd0b8,
+       0x73d35cb0, 0xf70e3035, 0x27e70f3d, 0xfc867f51, 0xf1ebcac7, 0xa23f6e14,
+       0x1468b49e, 0xd23b259f, 0x3768cf80, 0x32799f5f, 0x4dd0f085, 0xa8dba878,
+       0xa9667cd0, 0x47b731be, 0xa2c7c3c9, 0xbf3703bf, 0xad35f749, 0xe251e5ff,
+       0x890ebac7, 0xc76e3eff, 0x8c46f551, 0x949e040f, 0x86bcaed1, 0x21ec089b,
+       0x35da4f71, 0xeb8fae21, 0xbc143b42, 0xd3e0d337, 0xe80753bc, 0x4ebab57e,
+       0x083f431b, 0xa433eff8, 0x1a9f2c5f, 0x6df431f8, 0x2fff3d2c, 0x6e47f68d,
+       0x00008000, 0x00088b1f, 0x00000000, 0x7dd5ff00, 0xd5947c09, 0x66fdf8b5,
+       0x9309990f, 0x124c257d, 0x49921536, 0xca082248, 0xb22c2124, 0x20940138,
+       0xc807b0db, 0x62f7d2a6, 0x41832fb5, 0xdff6794a, 0xf4155b58, 0xdad101d9,
+       0xa0a0d6a7, 0x820e8301, 0x29b6ad08, 0x689f150f, 0xd9114ac7, 0xc5ad8d32,
+       0x9ff95f57, 0x33bdee73, 0x61997df3, 0xefdfd4b1, 0xcbbf9fc5, 0xb777eefd,
+       0xce73dfb3, 0x2f3186fd, 0xc58ca963, 0x958c624f, 0x935effc2, 0x941e706f,
+       0xc33793cc, 0x127b58c6, 0x32b6e85b, 0x475fdf96, 0x7f2b31ef, 0xf5e7699e,
+       0x8d9e0546, 0xdda76c66, 0x632f6093, 0xbdc0baac, 0x4ea9c70d, 0xc1b6738f,
+       0x4aa77938, 0x30a4b0de, 0x9c54e0d6, 0x4a6af071, 0x1c378c15, 0x9d09d1fe,
+       0x409e7133, 0xc608cd6e, 0xb8dfe02e, 0x5ad8c970, 0xd4bc60c6, 0x333f3e64,
+       0x5e717204, 0xb9fc7cc6, 0x25606d9e, 0x7639fee1, 0x9e07ad07, 0x9673f9fb,
+       0x5e111eef, 0x1ca75cbf, 0xa15d927f, 0x6ae83671, 0x7d61db86, 0x9de2d21b,
+       0x49e8f06d, 0x1db067bb, 0xe63fa9c6, 0xd774e3f7, 0x7836eb1f, 0xc38fb8ac,
+       0xb78c0726, 0x24dd71fb, 0xfe7fd41f, 0x394a81b8, 0x44dda95e, 0x0dda95e3,
+       0x2b878eb4, 0x3fa55eac, 0x34dc4694, 0x3e2d6b94, 0xade3c02f, 0x2a0e1339,
+       0x6ed98c85, 0x7cb1f937, 0x1eb8b753, 0xe2ccdfdb, 0xe9d06ff3, 0x86fac4ee,
+       0xeb0cacfb, 0x32aeed3b, 0xb31beb84, 0xf53f0813, 0x199f26b5, 0x4bc9f9c6,
+       0xad7baf0a, 0xacff063e, 0x8a5accf7, 0x9c4a58fd, 0x9fc429f3, 0x56e9bf67,
+       0x17f780dc, 0xd8c6967a, 0x1cffc614, 0x3935ee2f, 0x0e94f9e0, 0xc08be5c5,
+       0x76c77d43, 0x8fd812c3, 0xb7809fb1, 0x9e186b80, 0x4c13ee1c, 0x14971bcc,
+       0x7f7e47c6, 0xa00ba73b, 0xeaf78417, 0xc7ece267, 0x0bae7c2d, 0x47437ff0,
+       0xd4deaaa2, 0x3e3f6999, 0x8d5f5c2c, 0xd83a40ff, 0xceb8acc6, 0x39ceb17a,
+       0xb86dcf3a, 0xe04b06ef, 0x5b501180, 0xf268347e, 0x09d1a358, 0x2dd5dfa7,
+       0x7c721abf, 0x32ab6324, 0x1299520e, 0x98cce9cf, 0xdf23f7cf, 0x7ef0225f,
+       0x6fd09633, 0xd40dd215, 0x98769757, 0xfabfbc18, 0x01c9b378, 0x231275a5,
+       0x418f58f8, 0xef9c8d69, 0x633ef487, 0xeaff500f, 0x7a098ef8, 0xcff57b80,
+       0xeb1b7b14, 0xae593ebb, 0x03bb9850, 0xf1ecfbc6, 0x108b097d, 0xd05f5fbe,
+       0x6fd872b3, 0x3defdf1c, 0xee304fc8, 0xe0006799, 0x26cdef44, 0x97bf6516,
+       0x1ff31e3b, 0xab9e1051, 0x3ccfec05, 0x8ffa3557, 0x67de2f40, 0xc3073bfa,
+       0x373f4f96, 0xc23feef3, 0x1b6ccfba, 0xd923d4e7, 0x7e89b9b4, 0xce71a982,
+       0x293f40ad, 0x0149367a, 0xd8edafbc, 0xfa063097, 0x516cfe7d, 0xfdfa1989,
+       0xa9fdf058, 0x082df497, 0xfe7efb97, 0xbed84dc2, 0x9b24a7da, 0x7e679e71,
+       0x182cf7f6, 0x135b6ea7, 0x3db59842, 0x0029bafb, 0x5b7ce9ef, 0xfa67f3f8,
+       0xcfbdf1db, 0x26f07c9f, 0x475b7784, 0x7a9fb51b, 0xdfd50b72, 0xaf0bf9f8,
+       0x57bc0ffd, 0xe2704eef, 0xda5ea77b, 0xf7a9784b, 0xdfb85c18, 0xf0fd7458,
+       0x9fc4bdf6, 0x6fc4d740, 0x31cb96ac, 0x7e92d749, 0xc2f9ff3f, 0x614748d1,
+       0x6f9fc3f9, 0x00b6ba00, 0xc7e86f5d, 0x69f7d218, 0x2babbfc1, 0x3cb01bad,
+       0x2d5c7cfd, 0x14d1b7ee, 0xeb889218, 0xc2e9ce19, 0xdf56f027, 0xd1b18771,
+       0x9c69fd4a, 0xb1ef80f7, 0x79f4011c, 0xde1de802, 0x246176da, 0x824bf7ce,
+       0x2a37bc1f, 0x7b3be00e, 0xae0a27de, 0xb3787e27, 0xf3ad3571, 0xbb0ede59,
+       0x5f2f6c8e, 0x4b51e9c3, 0x56edbb07, 0x0f9c8f41, 0xe4d476b2, 0x980e4838,
+       0xf38e5c9d, 0x79d565fd, 0xfcf06cda, 0xa71e35e6, 0xfbb8f01e, 0xd909e1e4,
+       0x30f9ff50, 0x5fe12465, 0x34bf10af, 0x4f34ad7a, 0xfb254b43, 0x487bd614,
+       0x9d9a4bf0, 0x39206e19, 0xbdd385b0, 0x58ac1981, 0x4e490437, 0x26e86c34,
+       0xc6d869be, 0xc12cc9d7, 0xea3699dc, 0x2921bd67, 0x67e80ebc, 0x983d52b5,
+       0xd408db7b, 0xd25ade3b, 0xad130e3b, 0x079494f7, 0x7f385bcc, 0xd2df9844,
+       0xf883cc74, 0x6941334f, 0x06a6f2e5, 0xaf6e3fc6, 0x6bca3df8, 0xe3f5a659,
+       0x65385aed, 0x69f6f226, 0xd92a2e89, 0x7d2ac933, 0x34ae4b10, 0xac3ffc0a,
+       0x5d239604, 0xd9c57779, 0x3490029f, 0x121814de, 0x13525729, 0x09ce9c39,
+       0x8bb739ba, 0x3a9bcbd3, 0xf7f7179d, 0xb6ebd6e6, 0xead73ca0, 0x4dcea537,
+       0x7c046af8, 0xe2bda199, 0x9e1cd63f, 0x8eb2fa8c, 0x1adf9139, 0x6e7a0877,
+       0x8dcf4466, 0x714b359d, 0xc994ecbc, 0x7a82bd4e, 0xd909e3e1, 0x67ac6f50,
+       0x592fc865, 0x42ee578f, 0x854eb2bc, 0x9d7ac60d, 0xbff6077b, 0xa9c1a539,
+       0xb5bd43cf, 0xef02c335, 0x9cac3cdf, 0xc03c3ffa, 0x79e38151, 0xebed19ab,
+       0xf487a361, 0xd799c3d1, 0x355f5139, 0x230dd67a, 0x73f4727a, 0x18f33b62,
+       0x1bf7c4ee, 0x46d8f3bd, 0xee1f0a25, 0xeed45c52, 0x41c5f78b, 0x0a9d29ff,
+       0x276349f1, 0x12b3c3e7, 0x7634b23e, 0xcef9c02f, 0xaf3334ed, 0xb793a612,
+       0x7ae44d76, 0xe93365f2, 0x2eadd3c9, 0xd6a829f6, 0x4bcf4253, 0x2e7eae38,
+       0xccfc474f, 0x1d719a66, 0xda3ac44b, 0x27ee5c8d, 0xf05e390a, 0x81475f00,
+       0xa24153c0, 0xa126944e, 0x1f39dabf, 0xa885bdd9, 0xf98acec7, 0x2691cff0,
+       0xdd4c14f4, 0x744fd4b0, 0x1f1cff5e, 0x2aecc52f, 0x0e822bbe, 0xa5a37da4,
+       0xae44caa7, 0xdf1eb26f, 0xc830a0af, 0x8a867c7a, 0x63ae6f4f, 0xe7d826fe,
+       0xfceb8fcd, 0xeec90ae3, 0xf1e49db9, 0xaadb135a, 0x826f1df4, 0xb2757f58,
+       0xfd4158bb, 0xf64adb33, 0xfacf8843, 0x687174b9, 0xce289587, 0xbb85da36,
+       0x9def0754, 0x1139b34c, 0x1d12d36f, 0x50a5ed51, 0x371d8d7f, 0xc85bddb5,
+       0x6d75a1f2, 0xe7845abf, 0x2c9da09b, 0xfd0ecfd8, 0xadb4bde1, 0x48dc9e63,
+       0xc68da6f2, 0x9768951d, 0x066d2beb, 0xb816a4f8, 0x62fd70d7, 0xcfdb4673,
+       0xdf472171, 0x58a0bd98, 0xcb33f487, 0x93f0fc4a, 0x9cc59557, 0x219140de,
+       0x7f3879df, 0xa78fe030, 0x648f441c, 0xbb363507, 0x91e9d17d, 0xd8234bf3,
+       0x5f4a7145, 0xc49f8c7a, 0x9bca38e5, 0xf2543b48, 0x947fe4a7, 0x61e1cefb,
+       0x7ffc95ba, 0xce7e7cb9, 0x1cf0f9c8, 0x3ce91fec, 0x39bbdf44, 0x0b5c6f7d,
+       0x1bed087c, 0x22db0f81, 0x9301f6e4, 0x40eff897, 0xafc23f7e, 0xea1c9903,
+       0x7de3278e, 0x97948e38, 0xf7ddda4f, 0xdabca224, 0x913d687a, 0x8d6f90ad,
+       0xe4307fbb, 0xc5937662, 0x00b3c7c0, 0x8fd246bf, 0x2b6dc005, 0x728bd2a1,
+       0x6d45be3e, 0xa7f2c907, 0x7cff5c89, 0x986fbb63, 0x45bb2062, 0xe75eabe0,
+       0x03ee29f9, 0x08a03eed, 0xedc2db96, 0x19d434be, 0xc6b627a8, 0x4dbed0fb,
+       0x179e634b, 0x2bc7aca3, 0x55e25bf8, 0x0969ffda, 0x89edfdfc, 0x26d97edc,
+       0xca2ddbde, 0xf1057388, 0xf9e74383, 0xeb63e984, 0xd60fd913, 0x3d72ed45,
+       0x858973a1, 0xbeed37af, 0x46375b21, 0x57cc33e0, 0x9e2094d7, 0x1bf01e0b,
+       0xf3c35b16, 0xa5a6bd48, 0xea3f5c1f, 0xcd4fdc3f, 0xb5efd8f0, 0x2be715ef,
+       0x0b773d0d, 0x9125adbb, 0xfe8cf7f1, 0xde3f10bf, 0xef686361, 0x92b83901,
+       0xaf4d5d61, 0x347ce50d, 0xfb04382c, 0x24f64a0f, 0xebbf4125, 0x813e0bc7,
+       0xced033e7, 0x39af3037, 0xf46ef109, 0xbcf02205, 0xef04f105, 0x5e2cd8f7,
+       0x7949f03d, 0x113ba7b2, 0x3256f3e6, 0xccf51fa7, 0x209e4177, 0x197f32df,
+       0x16269bca, 0xff384048, 0x4239eadd, 0x1eefabf4, 0xfe400ac2, 0x7c42812a,
+       0x3f3c48fe, 0xe90f04f7, 0x9d61437d, 0xffc096bd, 0xeeeb031b, 0xf4e0535d,
+       0xed1f38c2, 0x87e770fe, 0x3bc7da30, 0x631e0bcd, 0x5a36fde1, 0x72431674,
+       0x614e7eb8, 0xe4511db5, 0xc78109f2, 0xcc59f3a6, 0x0333ef0b, 0x5c0375cb,
+       0xf0724d9f, 0x09a086e7, 0xf3a6ac4d, 0xf60bccb9, 0x563a47d0, 0x099c6d17,
+       0xed7e5c49, 0xb465a380, 0x5c4929f6, 0xe7c8effe, 0xa2dc16fc, 0xd60e50f8,
+       0x93fdacb5, 0x6ebff81e, 0x254fcd8d, 0x559da334, 0x75faf767, 0x40372885,
+       0x781114fe, 0xc3ca5967, 0x33de0dfa, 0x7b58458c, 0xf209c0e1, 0x4fd0b16e,
+       0xfadf3a4b, 0x9d49e50a, 0xc2c65981, 0xee2d4b38, 0xf4d0d903, 0x02697599,
+       0xdfe5f78a, 0xf50d2bb9, 0x76bcfa4f, 0xe39bd713, 0x2a9f68ed, 0x0bfaa9ae,
+       0x87b317f1, 0x12c7640c, 0x2f2f019e, 0x25fbb924, 0xf5e77ec1, 0xe7efa467,
+       0x91e5c5dd, 0xa12dff7c, 0xf1f4b49f, 0xd83c0c71, 0x475f2b93, 0xb825b7fc,
+       0xbbdc6853, 0xd6e4aace, 0xf4f02539, 0x773f4863, 0xf14f9cd8, 0x11dd72e1,
+       0xe02c5df4, 0x8ebcfabf, 0xdc53d4f0, 0x0f25a43d, 0xfb9834e9, 0x757bc03e,
+       0xf48ed997, 0x89bcfab2, 0xfdfb2cf0, 0xdc0415a1, 0xf17d7090, 0xf01341c9,
+       0x3984b5dc, 0x97de23d7, 0xde67886c, 0x8685b908, 0xe347d22a, 0x2ce34679,
+       0x28eb7aee, 0x10d1bbc2, 0x6c593a20, 0x1b1e12b1, 0x1d681bcf, 0x4cf1836c,
+       0xdc07f640, 0x2ae0963f, 0xbf79fdc2, 0xc4f1363f, 0x1d30f075, 0x3dfed39e,
+       0xe91cf865, 0x491295dd, 0x49fe8eef, 0x5326af00, 0x96dc0e88, 0xe5873b08,
+       0xeff8d4d8, 0x5ff8443a, 0x5098f16a, 0xc1732f5f, 0x788f5239, 0x87d997f2,
+       0xac7be247, 0x9775c2fe, 0xc12cef8f, 0x80991fd7, 0xc3c8a3fe, 0xbe5c4929,
+       0xcbdf2b3c, 0x51f27ce2, 0x117bab2e, 0x84a16bcb, 0x8be51f7e, 0x0fa8897a,
+       0xf1a5ef11, 0xc9f047ba, 0x3dfc8547, 0x0af73ced, 0x5d93db3c, 0xe82f08b5,
+       0x5d2137e7, 0x23e716bc, 0xe414b4fb, 0x3bb1ca1a, 0x0a7d9007, 0xf283cbf2,
+       0x27f1e60b, 0xd2667bd2, 0xe419ac1f, 0xa7b1e01b, 0xd9f041cc, 0x82740158,
+       0xd98f6672, 0xc611d5be, 0x16a7c4ab, 0x3ac46b8f, 0x1bdeb1bf, 0xfd2218ae,
+       0xd6f7a01d, 0x67bd7124, 0x9584fe42, 0x363db898, 0x7445f088, 0x7c7cbfa2,
+       0xf1c712dd, 0x6ffa7c00, 0xfcdfa449, 0xe5f92223, 0x525f0267, 0x4fd47d9e,
+       0x2484d78d, 0x2fbf172e, 0xb24acbde, 0x0ce93d73, 0x947ddf12, 0x294fdfc4,
+       0xda46fae0, 0x7e888fdb, 0xb23e0249, 0xfae3fa94, 0x223b6a49, 0x949f8c49,
+       0xe0254094, 0x838421f5, 0x5f203bd4, 0x0fc089fc, 0x93375ef3, 0x82eb617c,
+       0xe0ff9043, 0x4e4947bd, 0x920b8398, 0x06dc5f41, 0x84a98c76, 0xf3e165fa,
+       0xe1eee73e, 0x0c6c2e92, 0xb956f1f5, 0xc920d29f, 0xb46bd07b, 0xe40cc5af,
+       0xfc697286, 0x327785af, 0x4d3fd681, 0x15bad070, 0xb4884c3d, 0x70398c3f,
+       0xf3fb803c, 0xb861a949, 0x263be76b, 0x2495e0e8, 0xe90270c5, 0x231598a5,
+       0xeefc16de, 0x187cdb0b, 0xe2ddacf2, 0xfcfe81d5, 0x2af3ce99, 0xeee6738e,
+       0x1f7f6443, 0xb487f933, 0x9bb4a35b, 0xa23c4ffc, 0xfe17db84, 0x8135ef42,
+       0x7dd1d8bc, 0x61b3a7e6, 0xf5bb8bdf, 0xf1729c4e, 0xe7797fbd, 0xbb9fb47a,
+       0x1f3c4e8d, 0xc07f1e82, 0xe66eeb80, 0x9d31e2f6, 0xff4e0e9a, 0x733cfa8b,
+       0xec0be054, 0xa4dbb21b, 0x971639dc, 0x3d60c850, 0x307f992b, 0xcc25efea,
+       0x0ff2c265, 0xca98ac77, 0xaccb7e00, 0x7d1e486b, 0xb264e77e, 0x2f33977b,
+       0x60d92fb5, 0x7ea443fc, 0xaeaed658, 0x5d5478af, 0xd753e95f, 0x2ae27e43,
+       0x964f9fb5, 0x7f4e64e6, 0x93ec41a7, 0xecd6b11d, 0xfb477b43, 0xdba0af5e,
+       0xdd89903c, 0xef412728, 0x4d69dfa3, 0xe51d2b9c, 0x153d9afa, 0xc7f317e9,
+       0x96bf9d35, 0xd44646f9, 0x21437643, 0x1df725f3, 0xa71242f7, 0x21d71c1b,
+       0xc5f3c1e6, 0xfbe8cae9, 0xb4925bf8, 0x78d1fa53, 0x4e3176a1, 0x5a04be78,
+       0x4b79d347, 0xa958f58c, 0xd1e5e9ff, 0x964b89e7, 0x7a55d8f3, 0x853fdc32,
+       0x5e7135eb, 0x74d1f496, 0xcb9e833e, 0xc377b4ba, 0x7db872fd, 0x27ec72c5,
+       0x4a72c3e2, 0x3f259bfa, 0x4b30aa7c, 0x1e87f926, 0x6772e714, 0x3f99fa21,
+       0xf9083b45, 0xb5e3a271, 0xc9712c00, 0x1887a33d, 0xa2fcc3f2, 0xd5d007dd,
+       0xdc8440a9, 0x4b6c981d, 0x64eb7d21, 0xd2579c4e, 0xabbb82fb, 0xbd607bfb,
+       0x2ab7bfbf, 0xe74113dd, 0x898fff21, 0xb318ff9f, 0xd32cf4aa, 0x9d25e1e8,
+       0xc81377a0, 0x42821ade, 0xee7b8fe7, 0xce5f7a26, 0xe74869dc, 0xe6867b3d,
+       0xfd01fe7a, 0xd333d72b, 0xa8c8c8bb, 0xfc0c4c0e, 0x67ac4337, 0x345bd766,
+       0x32e2cebf, 0xe62e3cd2, 0x91d1a7b0, 0x8417af99, 0x37ea01a7, 0xce8fd686,
+       0x8ac6c634, 0xdc5d2bf5, 0x9451bc6e, 0x0327b16c, 0x79c66dd7, 0xe638be61,
+       0x6db2c0cb, 0xe581d3b4, 0xe06dc538, 0x9e78e0eb, 0xf0739ac0, 0xa0259d7d,
+       0x1584fbe7, 0x10ff61a4, 0x136ea8bc, 0x7ab375f5, 0xe7c32c17, 0x11c91b56,
+       0x27875893, 0x30e1e419, 0xdc162f92, 0xffead9b7, 0x1365f71c, 0x41d2b7a5,
+       0x67cdec7c, 0xc7e8d7e4, 0x6bce183a, 0xe2f59eb5, 0xaecced66, 0xdece3d60,
+       0xa187bfeb, 0x757ab49c, 0x97272445, 0x549ca326, 0x788e5ede, 0xfdccb901,
+       0x0ddab13c, 0x21636ed0, 0xd6249739, 0x5ce426d7, 0x4870e326, 0xef9a2e66,
+       0x53e5b6c7, 0xeb30aa19, 0x6ffb051a, 0x1074984a, 0x80869bd7, 0x49e4f687,
+       0x4adc9506, 0xe9ebab75, 0xa67aeab5, 0xb0b75d47, 0x5fa47663, 0xb8ceefc5,
+       0xa9e74c90, 0x3157e861, 0xbb31790a, 0x2c975f1f, 0xfeeb2637, 0xa9c4fb31,
+       0x2637973e, 0xebf91899, 0x56162cd2, 0xc6caf644, 0x7caf6e64, 0x7d76c5ec,
+       0xf179e490, 0x035ac738, 0x8d7d67e0, 0xf00fbce2, 0x9f66debb, 0xd37e8f5b,
+       0x5fdcf1f9, 0x59b47063, 0xf2cb7da1, 0x9c46e744, 0xb0ccfd1f, 0xf671f59f,
+       0x5e21cfd5, 0x7bf8dbe7, 0xe31eb82c, 0xda365b86, 0xe81d1bed, 0x304e0b57,
+       0x8cbc5da1, 0x28b2b7d9, 0xf035fdf4, 0x49f7ac0d, 0x145e03ac, 0xf9f22f41,
+       0xc05e7c36, 0xf1cae3eb, 0x0affc9dc, 0x702b12ba, 0x42966cbd, 0xaea69171,
+       0x93f47eed, 0x9316d415, 0xe17dfc9f, 0xdf8261ef, 0xd3f0d7af, 0x537d3098,
+       0x77a8b17b, 0x69bdd75b, 0x97507285, 0x98a6dff0, 0x82355c45, 0x76f1702f,
+       0xddce5078, 0x0a4e3405, 0x932707e7, 0x6f4f9c7f, 0x9c3fe160, 0x2f3c2aa7,
+       0xa2f1a5c9, 0x7f837aed, 0x18eff22f, 0xf28b1651, 0x8913f9cd, 0x5675bb1e,
+       0xf9c74987, 0x478052d9, 0xe11eb76b, 0x41ff6e52, 0x46e7ae1b, 0xae654fc5,
+       0x8a3d41fb, 0xc80b12df, 0x5187e401, 0xbbe46aae, 0x8eccf1b6, 0xd2fc7576,
+       0x9e1da762, 0x6fe0bfbf, 0x3cdfd007, 0x1c519db2, 0xf709b661, 0xf572ab8e,
+       0xab397d47, 0x2ffef156, 0xdebc77c2, 0xfdfa1837, 0x3d157c79, 0xc19a6867,
+       0x2d046bba, 0xf5b1e7ca, 0x8fad4eab, 0xf15499d6, 0x2b14cc90, 0x4f270bf7,
+       0xf64c9638, 0xfe478f2e, 0x6193ca41, 0x93ca186c, 0x413f7e08, 0xebf15efc,
+       0xdd40f258, 0xadc1e42e, 0xb24691ae, 0x905c85cf, 0x7c8dd7f2, 0x30e6fd07,
+       0x6fe90036, 0x39266b16, 0x2562b87d, 0x98db85c9, 0xfe7088d7, 0x41e392a0,
+       0x24e67bae, 0xab733db5, 0x5d9f5d5b, 0x3877b5ab, 0x73bce4dc, 0x19f6ea3c,
+       0xa49d5ed2, 0xfde757b6, 0xa489d7eb, 0x6e9fd377, 0xe31030b8, 0xdedcfc0e,
+       0xf1f16b54, 0xe88183b8, 0x8f1d71b4, 0x2e75372f, 0xf1153fba, 0x3b232f76,
+       0x5942f811, 0xa6fc9c3a, 0x3c08b2ca, 0x14fbd765, 0x6d43f794, 0xbedcef12,
+       0xdbe8df79, 0xf789718b, 0xc0ab0257, 0x7899f73a, 0x1c7f6d5c, 0x58dfa2f3,
+       0x016da3d2, 0x17027ff7, 0x727ae3d4, 0xb44ef1ec, 0x4ae837cf, 0x21ba5fc8,
+       0x6bf2a6c1, 0xe9cb5c6f, 0x1d49fa50, 0xf6825666, 0x6b336cc5, 0xb7fee0ee,
+       0xadac24fd, 0x13e63fdc, 0xc26386fe, 0x75f6840e, 0xc8d39fe4, 0x6e64d481,
+       0x1dcea61f, 0xdad07e46, 0xf452e2ae, 0x227e8343, 0x64b1fcff, 0xf5aff507,
+       0xeeff9314, 0x8a1ceb66, 0x6d75349f, 0x86b52c31, 0x2299c6e9, 0x1678f9ec,
+       0xf216f48f, 0x2668bd7b, 0x74cfd7bf, 0x8c14d2ee, 0xe4fc9a17, 0x37a08adf,
+       0xff4b1e7a, 0x36f810ac, 0x2ce7ba56, 0xbcf4b803, 0x39e27263, 0xe4652d95,
+       0x57697b1f, 0x0cedf922, 0xffc91833, 0xf08c1575, 0x267e83d9, 0x8967ff58,
+       0xaf876475, 0x4e49da53, 0x409a4b9f, 0xdd655ff0, 0xbacde74f, 0x228e81c7,
+       0x6daac0f4, 0xd66afaea, 0xfae4e74d, 0x23d0fae7, 0xf72933c9, 0xfba8771a,
+       0x796a41b1, 0x72e42c56, 0xb339db89, 0xeb5e971a, 0x5de7e02c, 0x3ec03038,
+       0x0936deca, 0xfb3ce97f, 0x91143889, 0xb3172b4f, 0x276c7a93, 0xb97f9cf5,
+       0xf3132dfc, 0x9943f568, 0x326e8fb0, 0x61253cc0, 0xf18ca77b, 0x975d7efa,
+       0x5e17433e, 0x27e8a96f, 0x7f292ced, 0x462abe25, 0x3a044881, 0xc8453bbb,
+       0x8f967c97, 0x89f186f8, 0xa4cc15ce, 0xbdf1a249, 0x231abe78, 0xf07a03e6,
+       0x75795d22, 0xefd21f16, 0xf499a57a, 0x69ed0592, 0x1e2a3728, 0xd4afbf92,
+       0xef08f579, 0xe679acd1, 0xac6f7854, 0xe11e3ba5, 0xbdf27404, 0xfd30d494,
+       0xee7f31b4, 0x47454576, 0xf1267ed4, 0x48e951d7, 0x07ff09ea, 0x02984edc,
+       0xaa71c63b, 0xe5029031, 0xd79f857e, 0x627f5a26, 0xd6bffec0, 0x993a264d,
+       0x5c067cc4, 0x8d5db55f, 0xea1989ff, 0x1f4764fa, 0x04bca0fa, 0x94e78097,
+       0x9776ea61, 0x2d4c5794, 0xd7d8f2af, 0x1fb0ef64, 0x9e0ef81c, 0xd85be3df,
+       0x51ea0330, 0x3839cfd6, 0xe9e8fc4a, 0x871eab94, 0x4a253a78, 0x28c7a21c,
+       0xfa1a03ce, 0x6a703c6a, 0x4c2c03c1, 0x6e1f9287, 0x0cfacd60, 0x3af29b80,
+       0x80dcf78f, 0x30f407f4, 0xfb86c2ca, 0xb94abe91, 0x87f24eff, 0x5172b7a4,
+       0xc9e5203b, 0xe9103640, 0x38cec6eb, 0xc6813ebf, 0x501f9861, 0x7a95c62c,
+       0x6dedda5f, 0x55d0faa3, 0xfa80529e, 0xd49bf39c, 0xe71523fb, 0xa1e4f763,
+       0xbb25eedd, 0x7e8e823d, 0x00a47445, 0xf67f111d, 0x76ea8fd1, 0x7c499d0d,
+       0x7ae3891f, 0x133582b1, 0x39d2cd7d, 0xacd7f4a8, 0x6558bd20, 0xfec0659d,
+       0x74e0cd6f, 0xb0e91e36, 0xd357df00, 0x5d459549, 0xcc21d2d7, 0x579c8ba8,
+       0xe8b1974b, 0x99d2206c, 0x97c98bd4, 0xae2fb3a6, 0x717d9d3e, 0xe5267425,
+       0x7b38f6d6, 0xd9d61595, 0x1e90a754, 0xa0cef918, 0x6d0fac36, 0x75bb23c8,
+       0x1f73a27b, 0xf6f337b5, 0x1e976ed2, 0xd60a3ff3, 0x773cf688, 0x5a9bd615,
+       0x2e861da0, 0x43f3c23b, 0xdbcbdd06, 0xde6bef8b, 0xc0fb4367, 0xfeeffbcb,
+       0x013ebd7c, 0x45eb7dda, 0x2af68aff, 0xe06d37ac, 0x78c33ffd, 0x69e6114f,
+       0xf9f0daf9, 0x39e40f35, 0xdb95b1f9, 0x7ec4e3c9, 0xee2f2bb7, 0xbced7ea3,
+       0x96038adf, 0x6bec8c7e, 0x24dee76e, 0x71ee39f6, 0x4f94cfbe, 0x00e49e6f,
+       0xf41658ba, 0x4275dd92, 0x724e5f57, 0xb4f9c62d, 0xc1cf6942, 0x5d882272,
+       0xe7165d2c, 0x8f3e7d06, 0x29856e07, 0x1db9528a, 0x1868e320, 0xb089afaf,
+       0xf9528a67, 0x97be49b9, 0x40180496, 0x236cd87a, 0xf38cb2ff, 0x0a611ff9,
+       0x91ee25f2, 0xc4623ff2, 0x341626fd, 0x7130bd93, 0x05f78ca0, 0xde618b0c,
+       0x4c5f0be2, 0x297fe688, 0x97fee54f, 0x40ff2293, 0xf1f3af3e, 0x48ed873c,
+       0xa4085924, 0x7e42bfad, 0x3cf18edd, 0x6cbc9cae, 0xd795e214, 0xb13ea7c7,
+       0xc00e4371, 0xf06cd757, 0x55cb32a2, 0x7a637f28, 0x4ff7f337, 0x89febbe8,
+       0x5137e606, 0xff5f0f3e, 0xc3d036f2, 0x9e5c7444, 0xc7f02add, 0xfa260ec6,
+       0x54f0259d, 0xd3e42a93, 0xe5123648, 0x6f02add3, 0xfec059b7, 0x6edcbd25,
+       0x5b8dc8d4, 0xd9ced153, 0x56eed314, 0x4ae46bb7, 0xb977989d, 0xb257b7b0,
+       0x2725d920, 0x27951f14, 0x7b7b7137, 0xd908f5b5, 0xb99b3d35, 0x02cf599d,
+       0xfd68f764, 0x519fab87, 0xd43a1bd7, 0x754ea6f5, 0x978467bd, 0xd4d9e9e6,
+       0xbb7e8e50, 0x21df47ba, 0x949d713f, 0x7cb53e2f, 0xcb9a0301, 0x25ae4797,
+       0x9637cf7f, 0xe9c1cf1b, 0x1f955ca8, 0x596a4f79, 0x65e43f84, 0xc8d1e79e,
+       0xc7bc39f8, 0xef50d2d6, 0xea4fe308, 0x293cad23, 0xfa44f216, 0x297ca40d,
+       0xc14f5c66, 0x171df179, 0xe3b1abbe, 0x1778911e, 0x7f50aae7, 0xa314f761,
+       0x74f483dd, 0x053e746d, 0x736bf43d, 0x9a1e847e, 0x7c216a53, 0x3c23adeb,
+       0x3c3d1556, 0x73f17a96, 0x435dba9a, 0x749cf22f, 0x9997a0bb, 0xf980a918,
+       0xd1715bff, 0x4af0ec79, 0x5ab72f4e, 0x7ebd10d7, 0x8bd38ab0, 0xf95daf3c,
+       0xffa5ccf9, 0x10b3e726, 0xbd81c49d, 0x5cece50b, 0xd0729e79, 0xe149b8b9,
+       0xe0b0d074, 0x1daa2783, 0xb870b961, 0x221aa595, 0x64db44e4, 0x84e305b3,
+       0xee7e466d, 0xa3e53199, 0x7211c5f2, 0xf15715c6, 0x758bc23a, 0xb3ff92a5,
+       0xa5fa5e21, 0x75b33cf9, 0x21f2ffdd, 0xe227bbca, 0xfbdace29, 0xa4932328,
+       0x94a1f1f7, 0xc45a7cbf, 0x567ae5a3, 0xb5e6781c, 0xcb63f200, 0xde30e2af,
+       0x7df15abe, 0x27e313b9, 0x906fcf66, 0xfceb573e, 0xec27ee26, 0x9ca9b8a6,
+       0xd3dfb637, 0xf4d7724b, 0x41c3d706, 0xa3e51fa5, 0x9121f3c2, 0x69a3abf1,
+       0xf5280e3c, 0x2fc2bbe4, 0xd52a16d7, 0x64f2887e, 0xefb8c7d7, 0x1fbe1577,
+       0x248cefef, 0x8eefd1cf, 0xcad055f1, 0xefa93b2c, 0x608f307a, 0x11e465db,
+       0x7b72169c, 0xd71ee028, 0xeba27f7f, 0xa4ffee0c, 0x149e9788, 0x0993b5f1,
+       0x57f6de3c, 0xa6865fa1, 0xa2717ef1, 0x71e2293c, 0x71d49327, 0x7c5ef918,
+       0xbc77ef1a, 0x675962d5, 0xb335f8c0, 0xa4041bac, 0x99b988f6, 0xf1e633f2,
+       0x4aecf5fd, 0x2231b2dc, 0x569691ce, 0xfa0d3431, 0x19bbb5ed, 0x3fdb4b96,
+       0xbbfa4531, 0x645f707b, 0xf5fdf077, 0xce52f1c4, 0x3356969b, 0x3de10d34,
+       0x0cf84027, 0xbacb47d5, 0xb9efc69b, 0x50d9cb91, 0xcebc3bfd, 0xfa42df84,
+       0xd5c563cf, 0x503471b4, 0x101cfc38, 0xdae0fdc7, 0x297cf838, 0x7c1c44d7,
+       0xf34f909e, 0x7e3fb8bb, 0xcfad8581, 0x5d85f686, 0x9b9cfce9, 0x8aa21de0,
+       0xafe37b83, 0xd241ef28, 0xee80cf67, 0x7378dc50, 0x41b8dc44, 0xe41b0dc4,
+       0xf7a876fe, 0xaaed2637, 0xa4c78dc7, 0x6b1b8945, 0x465e0bf3, 0x1850627b,
+       0x39da770f, 0xf5f5aadc, 0xed57e855, 0x2f28ca5d, 0x4b43cefb, 0x7aefd0da,
+       0x33d00fe7, 0xec8cf249, 0xe70106ea, 0x754afb58, 0xe54398eb, 0x1cc7eecf,
+       0xf4cfeb11, 0x64eaa924, 0x55e447a9, 0xa965d766, 0xce680ffa, 0xb03fbd57,
+       0x7b555ae5, 0x5544b79e, 0x8370d82f, 0xedc1fdea, 0xd0faaa95, 0xbd566f47,
+       0xfbf2cc5f, 0xa0ebff93, 0xec447d1e, 0x550cdf1a, 0xdccf75fb, 0x19ffeaae,
+       0x2c787e6b, 0x9c43b7bc, 0xd5d79867, 0xbb9cbc3d, 0x23fd705f, 0xfaab163a,
+       0xe51d29b7, 0x7e35947e, 0x7bc0afc5, 0x96be04cb, 0x4138f376, 0xd52ae751,
+       0xf813a7f8, 0xfc6d10bd, 0x93d70613, 0xb0a9d63d, 0x78df4acd, 0x83d75d68,
+       0xa7bf31eb, 0xe4145c6f, 0x055bf427, 0xe3b418e7, 0xdace76b4, 0xe90a5b34,
+       0xc5962c9b, 0x174b5ae9, 0x7b03b256, 0x3f93d71f, 0x790d98b0, 0xcbc12c64,
+       0xbe8e7cc8, 0xdc65ebf8, 0x9cfbd5cf, 0x56b2f28d, 0xf4425a1c, 0xd350ce68,
+       0x4d439c45, 0xd4c3f117, 0xaa736174, 0x28ffa0e9, 0xe1681d35, 0xd352e89e,
+       0x7fc00b05, 0x7096f011, 0x9e4f7095, 0x2d1ba6a4, 0xf0584bbc, 0xfb53e500,
+       0x459fa714, 0x6e773f89, 0xca5d7da1, 0x4d3e7c8e, 0x7c051bc4, 0xb577ee47,
+       0x3c6e0959, 0x63da4b8f, 0x68ff6166, 0xbed2fefd, 0xfc2693d9, 0xe91c624b,
+       0x78af5fcf, 0x8a1f5ce9, 0xe7f28dcb, 0xaed0f3fa, 0x4fdc666a, 0x969bdee4,
+       0x48cfd51a, 0x19f963cf, 0x09675c25, 0x73356e7b, 0x197b3f91, 0x3bbc90f3,
+       0xfc92b35e, 0x3fac2b43, 0xe9e6f8a1, 0xaa5edc19, 0xf3923e63, 0x07bf1c57,
+       0xf845947b, 0x5470b561, 0x0dbf14ba, 0x07d08de5, 0xea4bac59, 0x4fbf0f03,
+       0x316fb1a1, 0xaf21171e, 0xc72bbda4, 0x7293f097, 0x466f8e4c, 0x81f20d3f,
+       0x61b1ae46, 0xda8c78da, 0x606c833f, 0xcf8c8f29, 0x7c645838, 0x0997eb47,
+       0x5ce063fb, 0x07e9f30a, 0xc031b5e6, 0x8bbb48db, 0xac657dfc, 0x973e2e7b,
+       0x4ff218fe, 0xfe42c35c, 0xea7a9889, 0x99def112, 0x58f0255e, 0xaf38df5e,
+       0x18031b8c, 0x3a10fd3e, 0x841c558f, 0x87bb19ef, 0xf51d22a6, 0x8f3a4ff5,
+       0xe8e30abe, 0x48e4c175, 0x6f2861bf, 0x7ed0095f, 0xfbae636e, 0xd1fd8459,
+       0xcc263ac8, 0x30ff43cd, 0x2c04c7e8, 0x758b1fb9, 0x0360ed6a, 0xb0758ff9,
+       0xd5f7a413, 0x9a0e222c, 0xbaa76e17, 0xe65d6fbe, 0x8eca5ce5, 0x2edd2678,
+       0x9f3cc59c, 0x27f90988, 0xceb197cf, 0xe14f3273, 0xa4c0134d, 0x53879c24,
+       0x43ce2e98, 0xc710ac85, 0x492b3e07, 0x0929bb47, 0xe48952f8, 0x0ede50c3,
+       0x43e1f7b5, 0x9e65fecd, 0x4a56de82, 0x9125a17e, 0x780cbdfb, 0x5fe57b48,
+       0xfdc00ec1, 0x541dd35a, 0xec77e86f, 0x9736173d, 0x28f2ab76, 0x80704c9b,
+       0xcbc17f41, 0x43ae4f22, 0x4ecfaf6d, 0xf1b809d7, 0xe0a5ce73, 0x221f1b15,
+       0xe3e04daf, 0x992fed72, 0x38e126d7, 0xc7c85d3f, 0xa917dc30, 0x2f3a1ae0,
+       0x28bee086, 0x5c25dc1a, 0x3f7596ce, 0xdbd2f88d, 0xbc21a48e, 0xcbdc12db,
+       0x4701fdf1, 0x5d142703, 0xfad55d78, 0xda8f9433, 0x7ba7a9db, 0xf2378d6a,
+       0x5dc6a67c, 0xe711127a, 0x053eccba, 0xdceba9c6, 0x99e0f647, 0x60b01056,
+       0x856a9d7f, 0xf1170d29, 0x1de06817, 0xf7247ceb, 0xba1a6ff3, 0xb030f993,
+       0xa3d2fbcf, 0xe0843be6, 0x70176ea0, 0xef0fd6a8, 0x911e181f, 0xe60863c7,
+       0x0fa088ce, 0x126e3eed, 0xc1a770f4, 0xde38effd, 0x0f39dd27, 0xfad578e3,
+       0x085903ae, 0xdd0a359f, 0xe6671a63, 0x333346f7, 0x51b2bdf8, 0xde276681,
+       0xb1c8cdbb, 0xe86d1c52, 0x3c9a1e77, 0x196ee904, 0x47fc38a3, 0x5a4aee6b,
+       0xcf3c3c32, 0xf7474550, 0xf17b191d, 0x6296efe3, 0xe51e71bc, 0xf337cc0f,
+       0x7fbc87fc, 0x8017f789, 0xc4dd793c, 0xc697c82c, 0x27ba66fc, 0x93d44c12,
+       0xcf4532ff, 0xc9fd23c6, 0xa1fbcbf5, 0x7fc579f2, 0x1ef0536c, 0xae3e7ca2,
+       0x4ef2382d, 0x5d229728, 0x3ff78594, 0xb2382aae, 0x43c61ad9, 0x3d69aa63,
+       0x2ce783da, 0x3cca5f5c, 0x90376638, 0xe163593c, 0xb06c71fc, 0x6dfb673c,
+       0x8c6d1e78, 0x1ebff573, 0x3d3bfbf7, 0x9ff673c3, 0x89feaeed, 0xd9073fb4,
+       0xbcec6bdb, 0x4f9139df, 0x4a83e6be, 0xb6a6a73a, 0x7adbcf45, 0x2b9f9d33,
+       0xf27135ea, 0xf29f837a, 0xef31eaaf, 0xf9f86479, 0xcb3de695, 0x3d2d76bc,
+       0x7f73a454, 0x81a26369, 0x9ee88a19, 0xef62fbb5, 0x7d77fabd, 0x3d51fbd4,
+       0xab528e82, 0xce1a5c78, 0xf4f35153, 0xf36ba44e, 0x4f7402f4, 0xb7a79436,
+       0x459d22ab, 0x87a43f19, 0xf954bbce, 0xbb6f3273, 0xca78fcf1, 0x2e33eb97,
+       0x86b0e78c, 0xc162f3f3, 0xbfc042bf, 0x46e6f311, 0x72e73e46, 0x8a4f3c25,
+       0x240b83c8, 0x67fe3f20, 0x91ee9ea7, 0xdd41e7ff, 0xd651ada4, 0xe1c1929d,
+       0xc1aa6d76, 0xd70ef98d, 0x4b6b99f9, 0x7be5f994, 0xbc8a3ef2, 0xdf5da997,
+       0x02c0ca8e, 0xe3e63f5c, 0x9ccf9b46, 0xd72be1c1, 0xe38923bd, 0x3335f1a3,
+       0x718057dd, 0x477a6f29, 0xc9396052, 0xcf1abb07, 0x3bcf0279, 0xd2e40e6e,
+       0xdcc9a8fd, 0x1e8b108f, 0x6e782456, 0x3f51b944, 0xfa065e1b, 0x2b343729,
+       0xbafe08f6, 0xe1843d14, 0xb5e153ae, 0x844ddc2f, 0x3cae395f, 0xa8fe7cdf,
+       0x3e1ff29e, 0x96f82c3f, 0x5e78acb9, 0xdaf4245b, 0x41c78ce7, 0xe8576f3e,
+       0xc3d8b35c, 0x97c80b58, 0x9356db45, 0xa9fcbc1d, 0x9d51eb91, 0x417bf3e1,
+       0x00ca2c8e, 0xe2e50899, 0xf838ea75, 0xf8fa07d2, 0xfea45909, 0x499ac65c,
+       0x89ff2c7f, 0x7b1d5fba, 0x27684fe0, 0xe8f3e369, 0xe43b45eb, 0xce710c86,
+       0x28e56728, 0xea7cefff, 0x24a6130b, 0x93ffa2c7, 0x19074f20, 0xa85aae50,
+       0xa76ad33c, 0xab867a72, 0x32e00332, 0x9d53c33f, 0xdf9d7e81, 0xd6f47871,
+       0x80fd72f7, 0x2f417697, 0x9f3cf599, 0xc7973cc9, 0xdf8fbfaf, 0x98780003,
+       0xd21edccd, 0xc677bff7, 0x8fa55a74, 0x80fae8e8, 0xe922417d, 0xd206671f,
+       0x13b3ca7b, 0xdc9e5127, 0x842ef1b3, 0x570ac6df, 0x361bfa31, 0x8bfbf0d6,
+       0x9f8f3316, 0xf473fefb, 0x18e6181b, 0x2560f1d4, 0x5ded6f9e, 0xc7e8fd7b,
+       0x13fba0d9, 0xb86d1be5, 0xa5ffe789, 0xb37b02e9, 0xa5f3c2f3, 0x3032fbc6,
+       0x9d7a9ebe, 0xa62dee89, 0x9b8a2be8, 0x1a8df223, 0x147a0e05, 0xdef08fc7,
+       0xc810f7ba, 0xd7b7185f, 0x5c59efc0, 0x657e38cb, 0x1dce18de, 0x019ec769,
+       0xa2b261f8, 0xa1db5fac, 0x9fb08df8, 0x29db1d86, 0x9f7f533e, 0xea2e6d3f,
+       0x28185f9d, 0x95d725be, 0x25667af2, 0xbea4b1c6, 0xb9d8ab99, 0xe9d84c5f,
+       0xe3fc9873, 0x415ab071, 0x7d847317, 0xc39e373e, 0xe6733179, 0x2ddbbf62,
+       0x2c07412c, 0xa3aab734, 0xdab7f68c, 0x90768898, 0xb6c4e78c, 0xb3fba21f,
+       0xf1b69f1a, 0x704ab8fb, 0xca720e08, 0xf8c5d8c8, 0xc10ca1ee, 0xbdf84377,
+       0xb9883634, 0xf8d87e30, 0xe82dd0da, 0xe3f7306f, 0x479069f1, 0x64255196,
+       0x3ef05b2f, 0xe357cafc, 0x279794fc, 0xaeecc2e0, 0x6bb7cc62, 0x4253919a,
+       0x83471f79, 0x73895df4, 0xf12e40c6, 0x0519c82d, 0x19f3e174, 0xa006a9ee,
+       0xb02cc6f7, 0x61fea0c3, 0xcf5e02c6, 0x41d72c0f, 0x32d990dd, 0x1df780d5,
+       0xc09c0daf, 0x1b66427a, 0x2c092f6f, 0x9afd43d7, 0x1d7907cc, 0x58406a0f,
+       0x4e8f99e5, 0xa7f8c2f5, 0xe39d8512, 0xe43dd00c, 0x7543ddc6, 0xfcd37e91,
+       0x4e97ae4c, 0x4ef7f1c5, 0x3385b1e5, 0xa2c3de10, 0x94ca6fbf, 0x953b71f6,
+       0x3fb2bf72, 0xafde88cb, 0x5bf7832b, 0x8f0fee29, 0xe21b678b, 0x9bce3c78,
+       0xdfd87800, 0x89e29435, 0x01248cbe, 0x34a71837, 0xa7848e3c, 0xbbce4f1c,
+       0xca31f50a, 0xeff72361, 0x0243f6ca, 0x3acf307f, 0x8b90679a, 0x919dbbdf,
+       0x03f88c53, 0xde0419bc, 0x7937880c, 0x4dc71fef, 0x3fb9242c, 0xfbf3fd12,
+       0xf3f786bf, 0xd2d6ebc2, 0x9f427bc9, 0x71e36cac, 0x016260d4, 0x78b8d3d1,
+       0x52911df1, 0xc9ae3ef5, 0x3f217ae4, 0x7fe79133, 0xae92f087, 0x026d3cd0,
+       0xba01398e, 0xfba57887, 0xda4ff93e, 0x5cbe0477, 0xfd903df8, 0xe56cd79d,
+       0xf71249fb, 0x49b9037f, 0xa83ddf64, 0x5ad4ef1a, 0xc051ff4d, 0xa4dfb890,
+       0xfdffea02, 0xe7a16638, 0x5fa86b6c, 0x43b7215e, 0xdf953ed1, 0x9bde6069,
+       0x307c6458, 0x0e863df4, 0xbc39df7e, 0x62a5a9cf, 0x4fb1769f, 0x4fa7df3b,
+       0x48ecaf45, 0xad967730, 0xe0871d2f, 0x786f1a1f, 0xc54f1889, 0x43c6d1e7,
+       0x97858ebe, 0x274e4cec, 0x722f0d57, 0x86781a9d, 0x9f59ace0, 0x37f22784,
+       0xa6ae1bf5, 0x04ceb94b, 0xf87d9f41, 0xce1bef3b, 0x35fbc157, 0xa0f3cddc,
+       0xd74d4399, 0x74f23b0d, 0xfb202f98, 0x3f8fa3d5, 0xbbcfec35, 0xff9c5329,
+       0x8c4e5872, 0xcccac37c, 0x407ea8b2, 0xff3dae7a, 0x3cf224f5, 0xa21fad6f,
+       0x8dd9d527, 0x67bd12f7, 0x31fbbdf9, 0xc60cbf1a, 0x86b45e8d, 0x8bf585fb,
+       0xe42edeba, 0x52bf5f63, 0x57d71730, 0xc97cae6a, 0x5e6c64e1, 0x9e492fe6,
+       0xbcaff697, 0x8bea0f2b, 0x7af07537, 0x7917e576, 0x6e97cf20, 0xbcf24eda,
+       0x2fcabaf4, 0xf99eb1f2, 0xe71f6f22, 0x3de5097a, 0x8ea7139c, 0x13db0ccf,
+       0x341d32cb, 0xc74abeaf, 0x76428e90, 0xb266ebcc, 0x635c2463, 0x5d66a595,
+       0x5fb8b473, 0x781e8863, 0xfe14649c, 0x5df981d3, 0x301f7ce2, 0x3df7cea8,
+       0x745efc09, 0xd2bf9ecf, 0x33bb913d, 0x1e21773d, 0x2ccfe29a, 0x7dfa83c8,
+       0x5c531ff1, 0x1d81714e, 0x87137e82, 0xf583cd9d, 0xba36672a, 0xab626ed1,
+       0xc103169c, 0x60b3f855, 0x7e00178f, 0x8bf6beaf, 0x34f9b27b, 0x68c75c6e,
+       0x5e9a0721, 0x8c4beafb, 0xb29d36e7, 0x3fddd13a, 0x5dd36bba, 0xee8d7768,
+       0x5c57f5fa, 0x2d7bf30f, 0xd1a3dd72, 0x47cf095f, 0xfd699a75, 0x59aebba3,
+       0xf98fef86, 0xa402aeaf, 0xf98f1b93, 0xf42c50db, 0x5b2579ec, 0x7d859f75,
+       0xcd3cd176, 0x09347198, 0x51823f8f, 0xf1e09fd5, 0x8454ccd3, 0x5794d7c7,
+       0xf0f52e76, 0x353900fa, 0xc086f7d5, 0x70f8a77e, 0xc4e7eb2f, 0x6fbc84f8,
+       0x1e83f5ae, 0xc1fd81ad, 0xb0831bf3, 0x79fb0882, 0x080b79dc, 0x82bd7092,
+       0x55eaaa25, 0xfbd54c96, 0x553cf6d5, 0x6b8cc4fb, 0x1d93ed54, 0x94faaac5,
+       0xef55a361, 0xa856734f, 0x9a8cb7ea, 0xc6bf7aac, 0x17aaa355, 0xef543bfb,
+       0xa9d83c8f, 0xf4c23f6e, 0xa3928788, 0x96587dce, 0x3b91771d, 0xf364fcb5,
+       0xff472c3e, 0xeb438399, 0x7ce1be07, 0x2e7c3ec7, 0x7bdac0fd, 0x3c2fd240,
+       0x99f56f5b, 0x337ffba2, 0xfbe1050c, 0xbf1d7af9, 0xab77f407, 0x63a46de7,
+       0x1c680f79, 0x090181fa, 0xf2cf0bd5, 0xb8f3fafb, 0x2228ec9f, 0x1cd3e506,
+       0x8f17f91b, 0xff9f9b1a, 0x07f7c790, 0x31bbdca0, 0xf7daab58, 0xd51ef3b8,
+       0x4ad82bbe, 0x50ee9e0d, 0x77edabd5, 0x989fdeab, 0x3ed556b1, 0x0d03f1d9,
+       0xd5541e9e, 0x693739a7, 0x8345b4f0, 0xdaa85fa7, 0xf09bf643, 0xfe86bd53,
+       0x06c72825, 0x0f10abba, 0x120c9d37, 0xb775463e, 0x6e9e2157, 0xf841da38,
+       0xabbbf52a, 0x1f965c50, 0xa587de6c, 0xd861ce1f, 0x0cd68def, 0x3ab7f72a,
+       0xa0754fc8, 0x07951875, 0xfcf49d5b, 0xa8a3ad57, 0x45d5bb7c, 0x275a6fe5,
+       0xeaddd951, 0xb5a3b2a6, 0xb17fde83, 0xb9fb93b5, 0x83df4392, 0x80fe8018,
+       0x2340ba73, 0x59757646, 0x3f2869fa, 0x9c0bf5cf, 0x5e7dfac3, 0x1078da65,
+       0x2214061a, 0x512e7fc0, 0x3d76ca0e, 0x4d780594, 0x9975e2cc, 0x73a1d16f,
+       0x3e1da315, 0x0fc27360, 0xbb18030d, 0xc33bad7f, 0x16ebc89e, 0xb1b213a8,
+       0x87e1378f, 0xdfb01cae, 0x40dc9551, 0xef5869f5, 0x89ede389, 0xa1a6139b,
+       0xe38dfe1d, 0xf13eaee1, 0x5eb801f0, 0xf9fc3c6d, 0xfa1b0e93, 0x3d7f0e71,
+       0x38f086d4, 0x2e59fc2c, 0x045c6c56, 0xd8a18565, 0xa8f67a88, 0xe5912ec6,
+       0x4315758f, 0x9d0edc70, 0xdfca56f3, 0x90c8d9be, 0xfc28677e, 0xd3df2bdc,
+       0xd07d7367, 0xe74ccd33, 0xd73a23a9, 0x5317ca32, 0x9c204f82, 0x4fe737ab,
+       0x63d53d43, 0xfc22e60b, 0xf1e736aa, 0x09f06a7a, 0x375119c5, 0x6d94f872,
+       0xf86d5c76, 0xcf834454, 0xd73b2c84, 0x00d77e63, 0xfd6403b4, 0x01ab8d48,
+       0x8548f9f9, 0x67dd306b, 0xff399b71, 0x9f746dba, 0x655c1987, 0x75f846b7,
+       0x9232c8de, 0x17859d9e, 0x79bfd0fa, 0x5cf89ebb, 0x1640cf0b, 0x4e89c3b7,
+       0x27399cf0, 0x4705ce9e, 0x003bfc74, 0x1648f47d, 0xf74e1bb7, 0x637fee8b,
+       0x3395ee02, 0x09df9e1b, 0x89acf5e3, 0xdc7ba1a3, 0xeb1ec943, 0x3ae80669,
+       0x7cd93ca0, 0x9d9bb796, 0x8f142402, 0x82ff8b9d, 0xeebbe7f6, 0xf0bbcbfa,
+       0xe26bc7fe, 0xec43a49d, 0x6efc12d7, 0x4fcf2f17, 0x34fd90b6, 0x4a80c67f,
+       0x45738bd4, 0xcd816f7c, 0x3e614690, 0x3f09a243, 0x5ad4b551, 0xc8201ebc,
+       0x98d4a796, 0x754b53f0, 0xc7ac7739, 0x07a0d572, 0xb765784d, 0xf5f6f87e,
+       0x0036c668, 0xfc91970b, 0x0ad3bc0b, 0xa2d85aeb, 0x9cf3f077, 0xfaba27bc,
+       0x2453f28a, 0x79111efd, 0x3a040044, 0x8ad92aaf, 0x64a49cea, 0x4b2c3b0b,
+       0xd8238fd8, 0xf8ea0b88, 0x8c2cc6d4, 0x677fcc0f, 0x81f88c48, 0x8fd85dba,
+       0xbcf899ef, 0xc87eefda, 0x1d627579, 0x99404c47, 0xcede4f68, 0xed6140f5,
+       0xc195f717, 0xecbb0bfe, 0x583fca3a, 0xf113b0d8, 0xf029dbd0, 0xc89d6468,
+       0x8bbd334f, 0x2e1ca63e, 0x4bd7fdcd, 0xb7674be9, 0x5f522abd, 0x55dc0696,
+       0x5472fa91, 0xf50abdb0, 0x328fd4a2, 0xad6fea2e, 0x99b97213, 0xd6fee9e4,
+       0x681faa16, 0xb07952f5, 0xcb908375, 0x76fed4ed, 0x2e42a3eb, 0x7e5c84fb,
+       0xb5779e86, 0x5af952d6, 0xb6ca87ab, 0x8476f704, 0x878b2cdf, 0xdcdf0ef2,
+       0x77186664, 0x5332edeb, 0xc47005be, 0x60a58f13, 0xee99913e, 0x8af36a3f,
+       0x443e72b4, 0x7cfa3b0f, 0xf20f646f, 0x081f287b, 0xb181c5ed, 0x7330e9e9,
+       0xbd2e50d8, 0xe482b59b, 0xc38761d0, 0x7bf4f686, 0xbe90579b, 0xd872ec38,
+       0x3f7f508c, 0x3dd78eab, 0xea199b0e, 0xf1d73747, 0x5b0ebdf7, 0xc83fd41c,
+       0x7ddbc95a, 0x1fe3828c, 0xf34e3567, 0xca659ca2, 0x2a8fe47e, 0x5078de4b,
+       0x2bafa017, 0x4c5f23f6, 0x1e3458cc, 0x964a62f9, 0xb263e883, 0xaa7eed63,
+       0xc062db0f, 0x6b2e57ab, 0x57ec3af1, 0xc0635299, 0xee73e37e, 0x26fd8758,
+       0x10d07a0c, 0xf0d26fd9, 0x3eb0ebed, 0x80c5b9d5, 0x9414e9f6, 0x71e16563,
+       0x4bb65d64, 0xdef32d39, 0xa4dcba8a, 0xdd3b0a0f, 0x5c240fa4, 0xdcd5672a,
+       0xa6aaf18f, 0xe0aec54e, 0xa129663a, 0x0ee63fa0, 0x37f7e236, 0xdd9f5e41,
+       0x2d6daf7c, 0xd6135bf0, 0x0ffaa06f, 0xaabf0ed7, 0x68abfbf2, 0xc17dfbf2,
+       0x31efa8ef, 0x137dfd9f, 0x5b8a7eff, 0x6ba9a5c0, 0x13be8d91, 0xb4363cca,
+       0xfa136eb3, 0x6e5176fc, 0xfbde12c4, 0xac7f2891, 0xe1b3e973, 0x98ecbf79,
+       0xbb2121f2, 0x735ff88c, 0xbb46243f, 0x6cf60f90, 0x183beabb, 0x47df8c0d,
+       0x9cde54bb, 0x9b5bff36, 0x758ab247, 0xf5e5701c, 0xc7a91fcd, 0x7d056b7b,
+       0x9e65baf3, 0x3bbf36b4, 0xc7eaae74, 0xca2d69e5, 0xebeba01a, 0xe8a1c362,
+       0x8a287012, 0xfb3e8706, 0xbd7f3c61, 0xc8915e4f, 0x8beed763, 0x77f95279,
+       0xbb5e457b, 0x2e927f76, 0x9dafeefa, 0xe1c0dfc3, 0x055df60f, 0xa17ab9e2,
+       0x2adfa18d, 0x7bbcfe52, 0x95a3f911, 0x4e4b5767, 0x90d85ece, 0xeaa5df4b,
+       0xc36ec72b, 0x98e56a75, 0x2daf07bc, 0xf78a9da5, 0x11bf30ed, 0xe7840fbf,
+       0x3cd2affc, 0x3d1f108b, 0x752fc195, 0x094d0e78, 0x4fee1c10, 0xe7c52cf4,
+       0x2be7898a, 0x93e37cc8, 0xd12fef3a, 0x7b23bb6e, 0x73b7c917, 0x47802ca8,
+       0xf28ea0ea, 0xbdddaf6c, 0x61b1fb0a, 0x966fca01, 0x3e5622f2, 0xdcd99ded,
+       0x725be9ee, 0xa57993be, 0xcabe5b3d, 0x25ddff25, 0x3c1622f8, 0x0363f5aa,
+       0x77a3ef78, 0xcfe93c54, 0xe3f30a33, 0x54cf7cf7, 0x72dd91a4, 0x80c98066,
+       0x173ed5e5, 0x8430199f, 0x8f9ed7c6, 0xb28e64cf, 0x4c2779f0, 0x9937f2c2,
+       0xef514a27, 0x53e456fd, 0x23bc9a76, 0xe1fe837f, 0xaf1471d1, 0x940945bf,
+       0xe7b41c22, 0xe68733ea, 0xfb0a3a55, 0x7f61af9e, 0xf57f71e3, 0xc7eee89f,
+       0xde7a5767, 0x92f96fae, 0x98fafe61, 0x6199af96, 0x7f3937e4, 0x3a152777,
+       0xb4f0aed0, 0x7f5c8921, 0xa809ec06, 0xeb2f2a5f, 0xf4e702ac, 0xf97388bc,
+       0xfcf35fa8, 0xcf6a512c, 0xa3be7de7, 0xceabcab7, 0x97f0ac03, 0x3e8a1e51,
+       0x7cf74090, 0x153bfc75, 0x2deb4f32, 0xf3879e71, 0xe4d91bfa, 0x55ceeb87,
+       0xfbbfd79d, 0x487b82c1, 0xde51c40e, 0x9f9df3c6, 0x7f5ae2a6, 0xd3fa9ddf,
+       0xfa611d57, 0x497fb26e, 0xfaf59270, 0xfd555e96, 0x77f0dacc, 0x559ef0a1,
+       0xa4f5dffd, 0x6d8f4097, 0x37b13c20, 0xe846774c, 0xa7f1d657, 0x408bbc10,
+       0xc020d5de, 0xdb78bce8, 0xabf41774, 0xe621e711, 0xc5d790fd, 0xcd2011f9,
+       0x7de2a9eb, 0x1774c2f6, 0x40335b8c, 0xf6f077b6, 0x78bc72c1, 0xeb299ede,
+       0x646bbc62, 0xcf5e33fd, 0x6ee3fd93, 0xb78dbaa1, 0xf6fd967f, 0x297be474,
+       0xab66cfdf, 0xf204dfbf, 0x65d94ffe, 0x51bbcd17, 0x207d0bb7, 0xfd54d7bf,
+       0xeff1c9dd, 0x2876df20, 0x7f584394, 0xf7fc91af, 0x0a3a93a7, 0x2b33bf23,
+       0x55dc73f3, 0x6ad7ca36, 0x56e87978, 0x425bc8bd, 0xe22ac5bb, 0x2b7ad5eb,
+       0x1f7a5dc5, 0x963d72e0, 0x65bcb7dd, 0x7d7f0ab7, 0xa1f7c5da, 0xf3093029,
+       0x3a61fd9d, 0x83602fdd, 0xa01f29ba, 0xbf228e7f, 0xa2f74987, 0x4a5c7e65,
+       0x79e17301, 0x3895e539, 0xe3d17dfe, 0x976f24dd, 0xd9fdc2bf, 0x91f69b0d,
+       0x77ac5b7e, 0x89e93f90, 0x0e6a4f7c, 0x8d9cfbac, 0x7972077f, 0x97c46bcb,
+       0x11761ce3, 0x8f0e0af7, 0x1c80e784, 0x8615ff91, 0xc5ce5e7f, 0xff6eafe1,
+       0xeb5fc327, 0xedf79747, 0x1e615d57, 0x8f1b39df, 0x9e053afb, 0x9473a0fe,
+       0x418d780b, 0xd65d9d78, 0x8f51243d, 0x94ddd849, 0x7fad56b7, 0x57cf0cbb,
+       0x8636cdbd, 0x74a73f78, 0x051fbe17, 0xc473daff, 0x70465ca6, 0x9c9af096,
+       0xa7be87d3, 0xd3be025d, 0xa6f84dbe, 0x2726021b, 0xf28f89c6, 0x7795caef,
+       0x9914c1ff, 0xc390d3ff, 0x4eff6bf5, 0xf993071e, 0x1b76e16d, 0x378893c7,
+       0x7b78cc35, 0x249bc62c, 0x678b8c3f, 0x003f181d, 0xba0a76ba, 0x4b5d2276,
+       0x9dc70dfa, 0xf8145fa0, 0xa997e986, 0xf4d6f6f2, 0x4b96dba5, 0xdbe5b5c0,
+       0xb00eeb84, 0xbb5e297f, 0x32fc8e33, 0x263f385a, 0xfde12ae0, 0x58ffe09c,
+       0xe10e7e70, 0xe1f5765c, 0x438e5cfc, 0xf090d7e5, 0xb48fa58e, 0x8eeb91f8,
+       0xdf65a7c2, 0xe4c74f84, 0x0865390a, 0x16ad5e50, 0xe5f52fef, 0x812e57a7,
+       0x4dbe57f7, 0xa6e16bbc, 0xfc45eb2d, 0xddfcfb56, 0xeef2989c, 0xfff1c0aa,
+       0x7e605c5a, 0xfb555ef3, 0xaa4396c2, 0xdfde45f6, 0x411c565d, 0xadbff7fa,
+       0x238c8278, 0x85697f4c, 0x5a8de30e, 0xae64f0fd, 0xe00068bb, 0xffdd96f9,
+       0x5c7dfc3b, 0xca10dd7c, 0xec4bbaab, 0x7fb18be5, 0xa01ef8fd, 0xb99a2faf,
+       0xded8f57f, 0x118e8dcf, 0xfe65e97d, 0x45731d79, 0x96fcd9d0, 0xced119df,
+       0x73160f9a, 0xe96b38b4, 0xa4afee00, 0x0b9028bc, 0x4c6616b5, 0x5b507901,
+       0xd73defcb, 0x89314062, 0xda07bf4a, 0x1f981ba7, 0x635d4fbf, 0x14cdf835,
+       0x63df54e7, 0x57ef8b37, 0xd56494b3, 0x4bbd767d, 0xb77bf94f, 0xd1f1e28e,
+       0x741daddb, 0xc1ce780f, 0x83decefb, 0x5bcebcbc, 0xe5d7f3c6, 0xd6ffc1fd,
+       0xb3dc495d, 0x8c52ed14, 0x9e22280f, 0xe291877e, 0x167edae9, 0x7ae9dfb1,
+       0xeccde785, 0x9297f9e2, 0x077f613f, 0x5efc25cd, 0x46befe0b, 0x3fd1b34d,
+       0xeaed10b4, 0x375764bd, 0x885b5a8d, 0xaf1a6bf8, 0x0c2e627c, 0x5a9a6f9f,
+       0xb5fd4cfe, 0x5e5b59f2, 0xe3f53fae, 0x2f4483d6, 0xac741cf2, 0xad754fd5,
+       0xb8de757f, 0xe478a77f, 0xdafb3fe8, 0xb5f31cb0, 0x61ebfdeb, 0xeed681df,
+       0x207fc87f, 0x8fd206fd, 0x484bf5a0, 0xf3bf2239, 0xaf0068b8, 0xc5054b33,
+       0x97819839, 0x18aede52, 0xaf2f47d0, 0xf971701e, 0x27ff6eac, 0xa5cbe7cb,
+       0xae0cfaff, 0x7f74b557, 0xc9cfc674, 0x5be92cdf, 0x30f3ff4b, 0x9fe60507,
+       0x7dd0a4d7, 0xed15daef, 0x37ca31c6, 0xd655f7a7, 0x6e1cb9e3, 0xc570bd1a,
+       0xf221c0fa, 0xbe74f437, 0x70efeb30, 0xe2439fa2, 0x78be89e1, 0xbc097adb,
+       0xf136fd6d, 0x1e2f57d6, 0xf4cdf05f, 0x13d95322, 0xb1f4067b, 0x625ef627,
+       0xcdbf7bdf, 0x37dc477d, 0x85d7a05a, 0xfe60d5ef, 0xf67de635, 0xd2fdf8f8,
+       0xfa76bcba, 0x2a36001d, 0x6ef28098, 0xff3d1ee5, 0xcb83197d, 0xfdf11990,
+       0xffcc33b3, 0x8ae3d21e, 0x41fbfcb1, 0x46e8bcda, 0xcabd2f91, 0x27ee83ba,
+       0x2663bf6a, 0xc51baef3, 0x99efda78, 0x7bf2fec9, 0x99efda05, 0xf2201c9d,
+       0x09584bad, 0xb8b943cf, 0xfa873d1c, 0x733e223c, 0xf256ebee, 0xc407042b,
+       0x363bc8fd, 0xfb2f978c, 0x507ff1e2, 0x8f045ecf, 0x996ff6ea, 0x6db6f57e,
+       0x4aed1f74, 0xc390f7e9, 0x2cb73fd5, 0xf243972c, 0xc93355e6, 0xf63df91b,
+       0xa79e3b9e, 0x7cf508ef, 0x7b0e28c5, 0x8f71efa9, 0x13afc33b, 0xd7dc78de,
+       0x8ebc0366, 0xff25e639, 0x1e23e8dc, 0xfd7b77ba, 0xf8cc2edb, 0xddfbc567,
+       0xb4b75c7a, 0x137da467, 0x5ee25f96, 0xbaabc89a, 0xa577395c, 0x567fc5f1,
+       0x8fde515c, 0x97f4673b, 0x781eefe1, 0x77d1c577, 0x9febb43c, 0x8bedcb90,
+       0x6e13df58, 0xc84cf04b, 0x0a667185, 0x2bbf213d, 0xdfe7ad5c, 0xd6edef13,
+       0xcd707f93, 0x97ebfef7, 0xed2e398f, 0xf7b26857, 0xc9973d46, 0xefc749b2,
+       0x395494ad, 0xcf122f28, 0x942fe86b, 0xfbed43fe, 0xd65477df, 0xeb551d22,
+       0x70bb76c7, 0xf5f28f3d, 0x5357c2c4, 0xfe45904b, 0xf9ac481e, 0xd994f69b,
+       0xb297bf23, 0xf4915729, 0x09613f6f, 0xe972fbe3, 0xb9daffe2, 0x799eba65,
+       0x23afd015, 0x7bb71f14, 0xe77fb719, 0x172a6eb1, 0x1e9520b0, 0x2c2fefc6,
+       0x972a4e66, 0xc9953732, 0x110fcf0e, 0x60c63d2f, 0xbe9be51a, 0xf4e1b7fc,
+       0xc69bb95d, 0xe24e63b4, 0x691b8ad5, 0x629ebeed, 0xd1eeff07, 0x8bbdbfce,
+       0x3df3d9f4, 0x8dc965e3, 0x5b5c12c7, 0xc7c4a372, 0xe7a1537f, 0xd6ba96f7,
+       0xb1a8be90, 0x3c6c3ef3, 0xd359bb8f, 0xc27f88f3, 0x8b7d3372, 0x3f189b94,
+       0x8e89f11e, 0x54acbfe7, 0x9dbfbbe8, 0xd8b11d01, 0x3e796588, 0xceb61dfc,
+       0x447dbc1d, 0x814fa243, 0x71d188fa, 0x448efdbc, 0x9937de1f, 0x97c402cf,
+       0x89b6f10b, 0x7123ef1e, 0xabbf28b9, 0x5f241a0f, 0xbacbfe81, 0x04defc2c,
+       0xf9420c0b, 0xa7e7885f, 0xfff3e728, 0x945efc15, 0x517de5cf, 0xb21fdaa5,
+       0x79cb972f, 0xe072a3a7, 0x19af2840, 0x708fdae8, 0xdeea4a29, 0xfa2950f8,
+       0xe30c7481, 0xbe8d9f32, 0xb298e29b, 0xe5476cdf, 0x05ef7c21, 0x7bf7e785,
+       0xc37b88f7, 0x1916982c, 0x54764b0f, 0xc9e516fd, 0x897ec27b, 0x5dfc5705,
+       0xf3947740, 0x2d17cca2, 0xf91b33c2, 0xef7d19e5, 0xd78505ec, 0xb86dcb3f,
+       0x62959d65, 0x8fb45e07, 0x013c3b67, 0x04c8af9c, 0xfff5c2b8, 0xc6bfb887,
+       0x2fd1739a, 0xb309e2ba, 0x0f8bed0e, 0x7de31d40, 0xbce10f9e, 0x7047e58d,
+       0xf7f2c66e, 0xf2c66e70, 0x63373813, 0x9b9c29f9, 0xde765cb1, 0x66fd1f89,
+       0xbeba06eb, 0xfd1e74e2, 0x12bd407b, 0x3dfe72de, 0xe9df9a26, 0x437c10f0,
+       0xe8c5def8, 0x485f5bf7, 0x5d25660c, 0xf67ade84, 0x13d735fc, 0x3ca1af05,
+       0xde7a255a, 0xd78149da, 0xd2061dc2, 0x819d85ff, 0xef11e584, 0x689a0799,
+       0x1e76239d, 0xcff1c04f, 0x75f043d9, 0xe9e5b029, 0x0f375e3a, 0x3af8236c,
+       0x0381ae1d, 0xe3cf88cb, 0xfcec2cb1, 0x3de31faf, 0xf29f182a, 0xe0947a22,
+       0xd05e74c3, 0x070b43ec, 0x1217afb9, 0xff6237bb, 0xe3e67617, 0x30ee404e,
+       0x474837ce, 0xaefdb44a, 0x62def5a5, 0xfde2960e, 0xe82e5ba0, 0x3b65e6a3,
+       0xe704151d, 0x64de92dd, 0x97d05bdc, 0xe537dbc4, 0x4c78ed6f, 0x65053f7e,
+       0xd2f503a9, 0x176809d7, 0x81fc88d6, 0x7e831dce, 0x0ecdf74b, 0x6fde19ea,
+       0xf3524a2e, 0x1c818cdf, 0xb11cb24f, 0x7c46e4c7, 0xc4e7b0bd, 0x30befc20,
+       0x32d067e0, 0xe072bf78, 0x73bf9560, 0x36afe8c4, 0xef42943f, 0xceadefd3,
+       0x31aa5b61, 0x65ae664f, 0xa5b89bef, 0xaa4ff6f9, 0x61664f31, 0xcb007286,
+       0x09bc8e45, 0xef231f98, 0x56192c17, 0x6a590071, 0xec86b3aa, 0x32140ab9,
+       0xcaa1fa11, 0x4e3e2f12, 0xb251f52e, 0x23313eaa, 0x64fef55b, 0x7daa8147,
+       0x54ebb0ca, 0xa9de72ed, 0xf7aa91ce, 0xf982928a, 0x7d839e78, 0x3fa5eff0,
+       0x3e17bfc5, 0x9b91e762, 0xf4fa83af, 0xefa56fa7, 0xda20be49, 0xe558bfa7,
+       0x00f47c43, 0x50604d3c, 0x83f51c9d, 0xc1c21f87, 0xfa85e734, 0x701e4f3d,
+       0xbce32e39, 0x42738970, 0xcb1fefac, 0x0273dafe, 0xa31fcdc8, 0x797a2cdc,
+       0xb4e31d96, 0x2afe8c2f, 0x9b4ff30b, 0x0fcfaa07, 0xc426e8b1, 0xb7e38a1f,
+       0xb514f791, 0x7dd8c374, 0x39790e82, 0x8fbf30fd, 0xed72a577, 0xc8d7288f,
+       0xfc15e05f, 0x7f8d4a22, 0xfce4c8af, 0x8fe85ded, 0x378f477a, 0x24f74292,
+       0xf5bfe397, 0x4b677a61, 0x999fdcb7, 0x68bdcf42, 0x7f0a370f, 0x8503b3df,
+       0xf7bf553d, 0x70d2ccfe, 0x89f35b3b, 0xaf767dea, 0x5f555eb2, 0x3faea797,
+       0xb23eb150, 0x6c7b2c7f, 0x4c8ba3f9, 0xaf78119e, 0xfbfa8956, 0xa4f5a1b9,
+       0x67b0b908, 0x13d9c905, 0xefd2577b, 0x6fdf6b64, 0x4fd0f184, 0x9e863cb9,
+       0x8e69f295, 0x5c8f7f9e, 0xce4bbedb, 0xf3babce7, 0xa7b0007d, 0xb857ca7c,
+       0xbfa0fdfe, 0x274914c7, 0x67bcc5fb, 0xbdf83d37, 0x676e012f, 0xd573f177,
+       0x37ae44d9, 0xa67c770a, 0xecfea1d3, 0xd0abe9c7, 0x3ea1d01e, 0xf78ba9ea,
+       0xa689fde2, 0x7bca3695, 0xbe0fca2d, 0x3b062967, 0x1f99e06c, 0xffcf0059,
+       0x2350978d, 0x1e0f71f4, 0xf47ea0b2, 0x596fa767, 0x9c3c7487, 0xad5d19e7,
+       0xdb051e7d, 0x4a80ec8c, 0x20162f2e, 0xc57d09fd, 0xdd355440, 0x0bfa42cf,
+       0x85c20be5, 0x3d1dccf2, 0xfa09fdbf, 0x79710f45, 0xb9847e81, 0xacb80f64,
+       0x0742ff6a, 0x83a15eff, 0x4ea8977f, 0x3f258f3c, 0x376fed56, 0x6af2f9e1,
+       0x0cbf8fcb, 0x8ae7df14, 0x4f0e272d, 0xed363c01, 0x7a2af7e2, 0x67f706bb,
+       0x0b437211, 0x7547a6bf, 0x7eb2dfc4, 0x093f4bae, 0x03ffe1f9, 0x461ceed1,
+       0x00008000, 0x00088b1f, 0x00000000, 0x58b5ff00, 0xe554700b, 0xdef73e15,
+       0x926c857d, 0x843c83cd, 0x1abbbb84, 0x6dc909a2, 0xa8f3135e, 0x6a32424b,
+       0x0c226ead, 0x457a8b19, 0x6daf2045, 0x958a3682, 0xe0856e9b, 0x54eb4d60,
+       0xa0e0bdf1, 0x8d3532b4, 0xe09064e8, 0xd6254652, 0x508ab5da, 0xa8d6619a,
+       0xdd849431, 0x38e957c6, 0xeff9cf43, 0x10deecbd, 0x30da755a, 0xfff9cfe4,
+       0x39fffeff, 0xe7fc79df, 0xf345301c, 0x9c00979a, 0x002b9fa5, 0x2a00fa7f,
+       0xf3e47070, 0xedd00990, 0x1c45bfc0, 0x816abeeb, 0x4c471c72, 0x2dce1c00,
+       0x13900f9b, 0xbb1f4efb, 0xcb1079fa, 0x078bf462, 0x76036bac, 0x79d8173a,
+       0x1bfb0711, 0x48be464a, 0x8ea45a5b, 0x3334457d, 0xd10bdea0, 0xb3f22f3c,
+       0x06730384, 0x9ccd07de, 0x23870bb4, 0x90f55923, 0x4107238c, 0xb11d94b1,
+       0x700956dc, 0xcd1c7abd, 0xff0d21db, 0xd1302ec8, 0xf2a02d3d, 0x1fd57d7d,
+       0xddf870cf, 0x9715918a, 0xc1f00720, 0x3c47d5de, 0xba2054b8, 0x412b7dd9,
+       0xdf808331, 0x7b737aa7, 0x056bcf90, 0x116f66ee, 0x0e29d1d1, 0x97523fef,
+       0x7639f9c8, 0x7ce9cffe, 0x6623ae5d, 0xc98fae6f, 0x5131ccb5, 0x2e789080,
+       0x9e26ce13, 0x570c478f, 0xfa3ed013, 0x6fd02b39, 0x6c210005, 0xfa5dee14,
+       0x99800c83, 0x22b0e055, 0xe009d7bf, 0x35e1a401, 0x9397606b, 0x2fbfc7c4,
+       0x50b95c47, 0x2e99f11a, 0xc88b54b6, 0x2fef5677, 0x871e94c0, 0x9bd1ea1b,
+       0x8e8bd314, 0xe87cf9e3, 0x3c86d6f7, 0x6eccdf28, 0x6ce2b24e, 0xe85a24a7,
+       0x53dacefc, 0xf7895ebf, 0x89048677, 0x0f567e43, 0xf8463c1f, 0x041a6e0d,
+       0x4300c5d3, 0xb8d9869b, 0x0a0f66da, 0xf1ae4cc5, 0x97290170, 0xd7ad7263,
+       0x33a72668, 0x7b931eb6, 0x9e6fdd16, 0x00bb473a, 0x2ef6489e, 0xfc36f927,
+       0x2b23b3f4, 0xb52ddb89, 0xa08513a9, 0x18a2dada, 0x001625ff, 0xdd1ff23b,
+       0xc9d81895, 0xad7b41ee, 0xc9ebd98c, 0x7b47f903, 0x5be4fd70, 0x87ae6666,
+       0x7d3d1eea, 0x761bd237, 0x4f9c3225, 0x439281a6, 0x07173beb, 0x0770dc14,
+       0x21eb1d1f, 0xa49287dc, 0xe9feb85d, 0xd85f8b53, 0x17baf483, 0xcd88912e,
+       0xd768edae, 0xb9a7f788, 0x4bfcd048, 0xc83bec39, 0x635def56, 0x9e15ef53,
+       0x2d50f25f, 0x2e9f3fad, 0xfeba3dd1, 0xf04a9f26, 0x05f5e200, 0x681d8b04,
+       0x6538a77a, 0xdb83c782, 0x38273df8, 0x8b26cbb4, 0x7288a77c, 0xf7fc7fad,
+       0x3ca0d41f, 0xf0ffcf0d, 0xbf91cbd1, 0x07cdef75, 0x57a6273a, 0xb5ba8fd5,
+       0xaf851afb, 0xaf68c393, 0x29ddfb33, 0xa7c31450, 0xe382776d, 0x2b869b63,
+       0x4c18effe, 0xc35dd035, 0x0b8f8e39, 0xa81b7462, 0x673b4318, 0x35da7922,
+       0xe5e76abf, 0x0e8fa48d, 0x40fb3308, 0x57642dc4, 0xa1e702a5, 0xd07d1078,
+       0x6d9ff0ca, 0x3c8b0f67, 0x1e76cbb3, 0x93f441e4, 0x65b074d2, 0x2acadf93,
+       0x1707917e, 0xb1007cef, 0xd34c4179, 0x65bf3efd, 0x8e7dbc49, 0xf64abe75,
+       0xeccaddb9, 0x98012a73, 0xe7bece5f, 0xed953119, 0x9cfb635f, 0xdf3e83f9,
+       0x234ffbd9, 0x009e045d, 0x17ea5f7e, 0x638c7ecb, 0xbe97a68f, 0x924eef6c,
+       0x2fe0fd6f, 0xe19b795f, 0xc75de4f9, 0x76c3dee9, 0x5b783fa6, 0x41c23dc5,
+       0x9fa1c92b, 0x0516c6b7, 0xbbf11953, 0xcfafdd83, 0xb4763c4f, 0x27f3c658,
+       0x062c2e5e, 0x42d5e7b4, 0xc409e268, 0xe85274e7, 0x871c46c4, 0x5325ff0e,
+       0x6fcf9fb6, 0x3b0cef7b, 0x38a7a74f, 0x93b50e35, 0xb4ff381c, 0x322c3bcb,
+       0xc3e3573f, 0x184b03f8, 0x51428d7e, 0x723fe90a, 0x6cdfc8d2, 0x75f3f53e,
+       0xf5f3f4fe, 0xfa686f7d, 0x8a84b69a, 0x35be70d3, 0xbeb4644f, 0x2a1c9d3e,
+       0xbcd3b54e, 0x8697dd43, 0xb5bd9c74, 0xdfa89fd2, 0x6dc61b56, 0x95b5afe4,
+       0xe6c0fc93, 0x389b8a15, 0x6f5c6506, 0xe1a7decf, 0xda1b5e06, 0xcecd0af1,
+       0xd99d2320, 0xed5072dd, 0xb716857a, 0x3341806f, 0xe31cbfa0, 0xa0b4eefb,
+       0x3e0d4dfd, 0xe3e3966c, 0x3f9c72ae, 0xe3edf85b, 0x050f52ae, 0x1da7bf14,
+       0x412f8576, 0x133916bf, 0xb90b97db, 0xa5d70fb4, 0x3281da20, 0xc8fc9564,
+       0xf7bc33cf, 0x6edfe114, 0x1f931609, 0xc33ddfe8, 0x8a7e6ccb, 0xe90d7b7b,
+       0x62c14c1b, 0x5491c38a, 0x3829700b, 0x1e4297ce, 0x02f943c4, 0x98895c58,
+       0xef0875a1, 0x7de06f2d, 0x3c58f643, 0x7967e3d4, 0xae23ce21, 0xfbaf3475,
+       0x794dda2b, 0x4c7f7189, 0xefdd231e, 0xe57c99e4, 0x706fbce9, 0xd5c97f0e,
+       0x2830fdd6, 0xbeacfea8, 0xee1a35a3, 0xe2811e00, 0x7746a74b, 0x923e716a,
+       0x9404536c, 0xea3f66a7, 0x531ae905, 0x188d20f0, 0xf517a005, 0xf5410d5b,
+       0x3c6361bc, 0x156437a7, 0xd90b977b, 0xa9ad5cbb, 0x03e7337b, 0xde8dabd2,
+       0xe01f1c2f, 0xdf8d0242, 0x3d1b2887, 0x88d130e0, 0x32e3606a, 0x09b1b2f0,
+       0x12bc6c7c, 0x3578d806, 0x1af1b20c, 0x2e11b108, 0xbd81fa0b, 0x263af707,
+       0xab863df0, 0x5de9e0ee, 0xbe095f2e, 0xe3c3fcb9, 0xc2feed54, 0xaf946078,
+       0x3478eefc, 0xf8cd9c81, 0x0b2e10ba, 0xebdd980b, 0x3ec958b8, 0x0804bbf1,
+       0x0758d364, 0x15ce7661, 0xce78c864, 0x444d1052, 0xd1878037, 0x8f10df8d,
+       0x926cb0aa, 0xa5c0e68b, 0xb93b6e61, 0x03e5c34a, 0x4c7e72c2, 0x4539f75f,
+       0x037aeb46, 0x83de93e4, 0x7909f5f3, 0x627967c4, 0x862267fd, 0xdfce358c,
+       0x47184d7a, 0x7beacbcb, 0x64ff48dc, 0xae953ec7, 0x85c97fa9, 0xfdceddf4,
+       0x5f525d2a, 0x2e309666, 0x65de2373, 0xf830db48, 0x824e2027, 0x1c2a805b,
+       0x62e484e5, 0x0ab3bf40, 0xfa133ece, 0xb0237595, 0x00272338, 0xbb988a84,
+       0x49f90267, 0x6ebf9aab, 0xdb7aa870, 0x27659166, 0x0b61ddf2, 0xff888b26,
+       0x2cc6be86, 0x58b72f7a, 0x9c3ff3d4, 0x8abe162f, 0x3ef15ab2, 0x4e4c695b,
+       0x9012575c, 0x4f62730e, 0xff7633af, 0xd3afb837, 0xfbe17159, 0x3dcb6516,
+       0x7cb60eb4, 0xd02ffd20, 0xa1a1f3de, 0xe9e2491a, 0x3fbb077e, 0xd3df949c,
+       0xd95d4b8b, 0x7f68fbde, 0xbbb54924, 0x152f48fb, 0xe37f1e17, 0x9cebdcf4,
+       0xf7d23e63, 0x8a412bd5, 0x23209f43, 0x9cafce78, 0x75f69fb2, 0x32bce1f1,
+       0x12cfd7d4, 0x4ec8584f, 0x50e63b74, 0x7e50ab79, 0x160207bf, 0x8eb51fe6,
+       0x3b98f973, 0xdb9107e6, 0xa5c43cf1, 0x306debdc, 0xab6572e3, 0x558d10ef,
+       0xae0340f2, 0x84033dd0, 0x5d10977f, 0x3a717643, 0x27cb3df5, 0xaa174fcc,
+       0xafc5a8f6, 0x1ba30391, 0x17a4a817, 0xebb0fce2, 0xff2f99c0, 0x9aeefa86,
+       0xbdb44bb1, 0x3d63ff66, 0xfee80f54, 0x21a0d987, 0x58fee8be, 0x0a0d6c3d,
+       0xb7a5df6c, 0xf7bafed3, 0xa714dcc6, 0xfb0b18af, 0x8c8e5d29, 0xfaa05d1c,
+       0x7fc79e85, 0xf7977dc5, 0xa0a051a4, 0xcbd9798e, 0x728ac042, 0xa17e5375,
+       0x9fd20ad1, 0x526ed0da, 0x9ec7bf68, 0xd5ad7283, 0x7d18eae4, 0x097542dd,
+       0xbc90a31e, 0xd7fe34eb, 0x35eb793e, 0x0bae2f94, 0x00ef6398, 0x0b1b6ffe,
+       0xdbbe266c, 0x29e71b76, 0x5dfc9262, 0x94edf7da, 0xef29b9af, 0x82ebee33,
+       0xf8a0ff6d, 0x9c6c35d5, 0xca4ce43f, 0xded57a60, 0xccf2d03f, 0x243db43b,
+       0x7fd59d9f, 0x65158096, 0x47aa7eeb, 0x6b9d1072, 0x8dbc5897, 0xfbf10fde,
+       0x6674c9e1, 0xaedfba23, 0x3f9607eb, 0x3c9638eb, 0x3e90f567, 0x62cb9e4a,
+       0xf3e63179, 0x78c11f2c, 0x04b4ecc2, 0xeed0e131, 0xba8d4c5e, 0xc5e7bc78,
+       0xf2890291, 0x3c9b7ded, 0x31c5d1f0, 0xbf7cf4fe, 0x60d3d851, 0x36ea3aa1,
+       0xaa70a3ac, 0xbf59f47b, 0xadeee90d, 0xda103b40, 0x9bca1482, 0x100b0e2a,
+       0xf02073a0, 0xc28e2d70, 0x649e2d3c, 0x871f7e63, 0x0f388247, 0x58fcb8c4,
+       0xe9aad7c7, 0xcd20b12d, 0x5d249eb0, 0xa53ef864, 0x5efc65ca, 0x2a8a84f1,
+       0xdfab9e29, 0x332e7aa7, 0x3e73f7ec, 0x13364829, 0xafb87fc6, 0xceb18356,
+       0xc21af6be, 0x52cafd29, 0xc92dfec3, 0xbec9874d, 0xcd373f6b, 0x409f03b2,
+       0x06135776, 0x52f51c78, 0xaf5c653d, 0x92007f78, 0xf784fef1, 0xf606f2e3,
+       0x5bca015b, 0xde71a2ac, 0x62ecd2e2, 0xb78c2c21, 0xaaee188b, 0xf24ccfdd,
+       0xe12a2ecc, 0xcb6b47e2, 0x04336709, 0x9b71f3c4, 0xdbf691a1, 0xaa2fcc2d,
+       0x8a247b47, 0x46bdf347, 0x8d5ab3fc, 0x46c8e7f8, 0x35ac17bc, 0x33eb9de2,
+       0xd7a8bde2, 0x3153af88, 0xafeee7e2, 0x64bfec36, 0x2f40dea0, 0x61b57ede,
+       0x1681a5ff, 0xfbb85d03, 0x25fec306, 0xeb0dab83, 0x0debc325, 0xcd9dbaeb,
+       0x05ef83b6, 0x19d967bb, 0xfe9c7c0f, 0x76eb3d75, 0x1ef87650, 0x6fff3dc3,
+       0xfe9137fd, 0xfa6ae029, 0x81f2d46f, 0xb7279277, 0x9b5ebb91, 0x73b5c6a8,
+       0x335a84fd, 0x2cfed7ab, 0xd12437a6, 0xf37ded5e, 0x041bef6a, 0xf07b32b7,
+       0x0a5a543a, 0x9e288749, 0x36f31e95, 0x61e55f10, 0x131421df, 0x1a07272a,
+       0x07bf6852, 0xdaa64744, 0xd7fda272, 0x32607155, 0x99d215f8, 0x57af3c31,
+       0xdc1484fa, 0xc075f35c, 0x392dc2cf, 0x1fac657d, 0xefa955c4, 0x0127b345,
+       0xd4b8714c, 0x48efe955, 0xc74fe311, 0x611fef5f, 0xaa16003d, 0xc05b7807,
+       0xdf2b9cef, 0x2c0bb691, 0x7e59931f, 0xb32726f6, 0x5b72d2be, 0xfbe28f28,
+       0xe7d92ca2, 0x9a76b8c2, 0xcf964497, 0x093f6171, 0xd8c12115, 0xecd755a3,
+       0xcb0e3aa1, 0xdf08b859, 0x59babe4b, 0x1df633b1, 0x6cb54ae1, 0xba9f9fa6,
+       0x885dbbe4, 0xd8e738ff, 0xbedf865c, 0x8f2a7d53, 0x80ab2fde, 0xff529448,
+       0xd691b3c4, 0xb24df5cf, 0xb78c3e50, 0x08545e61, 0x8e1ee50a, 0xe8a721d5,
+       0xfce3cbb0, 0xdeccdfb7, 0xb2ead02d, 0xf4bc351b, 0x76956cba, 0xb11e38ff,
+       0x8df9e316, 0x5c326fc3, 0xb4a7b2da, 0x724f943e, 0x2eb7f9e0, 0x5d5297b4,
+       0x49329e0a, 0x3af5e7ad, 0x6df0816d, 0xaebd55de, 0xb6fed0bd, 0xbd4349ec,
+       0xe7d27b0c, 0xeece47ec, 0x56e4c57b, 0x9adf1fcf, 0xf1a1dec8, 0xbfacb9ad,
+       0x34ff3b18, 0xdf46ff3b, 0xb93b06bb, 0x06aff7b9, 0xf945bbfb, 0xce1eb0d0,
+       0xa0179a88, 0x7257e1fc, 0xf8847e9a, 0xad6cbf4d, 0xf5157aa4, 0xeb8ae836,
+       0x5c1f8413, 0xfbee8cbc, 0x9dfe72ef, 0x29b63be1, 0xba6efac4, 0x1d36279c,
+       0x53787463, 0xe5b38d98, 0x7d5bebd4, 0x0a01fcb4, 0x728e5f28, 0xfab9a4f3,
+       0x356eb535, 0x9a5b1fdf, 0xf1ef4f59, 0xa4c5ae58, 0x9d2af98e, 0xe9536553,
+       0x8c692ba6, 0x54fded98, 0xe0718edf, 0x561ed0e1, 0x6eefe271, 0x64cf73c1,
+       0x3b227fca, 0x2d1f5aef, 0x743fa136, 0xe26f8495, 0xa7f79f50, 0xe79a21ca,
+       0x49cc1930, 0x53e67c63, 0x2bc930dd, 0x82c61cc5, 0x34b76794, 0x364fa89b,
+       0x2f4d394f, 0x6fedd5b6, 0xd2607aa6, 0x9647faa2, 0xc3f98dbb, 0x9c7c8741,
+       0x042f3fd9, 0x7d956ec9, 0xb317605c, 0x25a5b0b7, 0xde8f2629, 0x9b7aa1af,
+       0x82489bea, 0x38bb8e3a, 0x3447cf86, 0x7fc6c456, 0x7d4eed51, 0xf9683755,
+       0x2e7cb6dc, 0x809ff583, 0xf3ef02fc, 0x1ca21e50, 0x99b2fb50, 0x35e50328,
+       0x7ab1bd98, 0x6b35f4a1, 0xde87e290, 0xe5d2f9d7, 0xb865e764, 0xc64d7ed5,
+       0x9f80d643, 0xbca1efbd, 0xc073e466, 0xf90ef98c, 0xfac0fbf7, 0x0fd4d368,
+       0x97cbd38b, 0x874eb52e, 0xf5d400db, 0xdeb41dac, 0x827e3a31, 0x2ed3c9e2,
+       0x3866e1d9, 0x4f149588, 0xb20f923a, 0xd87fef7c, 0x59b8b3f7, 0xf35612fd,
+       0x77efad53, 0x6fa67c21, 0xc4523d0f, 0x1e525cfa, 0xa5f3a1f1, 0xa2e3a9f3,
+       0xe73b19f3, 0xdebfdb3f, 0x89e9d2bf, 0x93e4b6c7, 0x6afe213f, 0x6ee0515f,
+       0xfbe3996e, 0xd7aab732, 0x1e6f6cbe, 0xa7debfdd, 0xf662f7f6, 0x71d77031,
+       0x76a3878a, 0xf42f0f16, 0x3b396cfd, 0x3c328c0e, 0x489bce50, 0x8b3938be,
+       0x1e9ce5e2, 0x9148fa39, 0x8be5ddf8, 0xbf5886e4, 0x4ce3b235, 0x77df889e,
+       0x18f37fec, 0xde8757d9, 0xec6bdf77, 0x61e75827, 0x57369a9d, 0x995f1cbf,
+       0xaacbfcb8, 0x64d0bf7f, 0x6f131efc, 0x930f47ea, 0x829e535f, 0x83d92eef,
+       0xd5eeeefe, 0xfc2e17ea, 0x74fb8b06, 0x66fdd91f, 0x9fef614e, 0x73f0afde,
+       0x6e91bef8, 0x1ef61ee5, 0x12ec8b08, 0xb45eedd9, 0xbbd910c1, 0xfac893c9,
+       0xe5eab3d4, 0x72f22dd7, 0xef0db7b2, 0x3d5167d6, 0xd5d6f43d, 0xbea65d5a,
+       0x5d9a1547, 0xc4fdd056, 0xb30a517f, 0xbf8d72d7, 0x3de61b4a, 0x8aed0a2e,
+       0xb425f6a0, 0x37d6c73e, 0xbfdcf50c, 0xb47f5701, 0x001af055, 0x00000000
+};
+
+static const u32 usem_int_table_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x51fbff00, 0x03f0c0cf, 0x18354d8a, 0x18f48418,
+       0x19f48c18, 0x23e99618, 0x0f8969c4, 0xdfa65173, 0xc181859c, 0x81ad8812,
+       0xdf8816d8, 0xbc303231, 0x7f5e2467, 0xbd8208a3, 0xa181805f, 0x076fc809,
+       0x0c4229d2, 0x7640e90c, 0x055f1033, 0xf1023ff2, 0x2d3e205f, 0x2a20c0cc,
+       0x0c60c0c8, 0xdc4032c4, 0xfcdf8222, 0xa6f20256, 0x44fca8c2, 0x10afbe34,
+       0x840bfd7e, 0x23afcbf1, 0x6b0d8f20, 0x1f1f928a, 0x1de81479, 0x8ea7ec08,
+       0x0caa9e16, 0x18d56b0c, 0xc542be18, 0xd9e491fd, 0xa163f981, 0x295d842a,
+       0x0930c0cf, 0x8ea01728, 0xa02adcdd, 0x9ca064fc, 0x0f8406b0, 0xa8580a00,
+       0x00036810, 0x00000000
+};
+
+static const u32 usem_pram_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x7de5ff00, 0xd554780b, 0xb3dae8b9, 0x24999ef7,
+       0x42499333, 0x49af0842, 0x701a8802, 0xb15e1008, 0x9441024c, 0x420a03a8,
+       0x84089c45, 0xd112f210, 0x03b39f43, 0x4f6950f2, 0x0f52d62c, 0x89e0a0ea,
+       0x0201b41e, 0x60e8188d, 0xda2d43c0, 0x3eb01160, 0xd5e4013a, 0xd1500c90,
+       0xd77af4b6, 0x67b5afff, 0x4899def6, 0xedce78f4, 0xba7c37bd, 0xff7af6b2,
+       0x7faff5ef, 0x44e648ad, 0xf2120642, 0x244cfc25, 0x084880e4, 0x3b4d1d19,
+       0x8a3a690b, 0x3592e510, 0x242045b0, 0xa7eff7b8, 0x2e422f49, 0x5974ce34,
+       0xb8290932, 0x844e0d64, 0x6020a07c, 0x7693e5a1, 0x6890efbe, 0xa29dcafd,
+       0xbda6e504, 0x63bed871, 0x7c8010a3, 0xa7f5a5b5, 0xbc3e6813, 0xd02f2453,
+       0x66d049ae, 0x9c846922, 0xe3f612b6, 0x34be63b2, 0x372b658e, 0xe3079bed,
+       0x48593595, 0xba7f6d1c, 0x7e40f451, 0x402116e9, 0xaf9578e8, 0xd06731af,
+       0x840516fe, 0xcd173886, 0xecd2796f, 0x62b213b2, 0x908e87ef, 0x7ef3908d,
+       0x7199712b, 0x390d651d, 0xb6079484, 0xeda0c94d, 0x6e0ab7cb, 0x7cbfed13,
+       0x980ec5e3, 0x3ca3795f, 0x2dfda458, 0xae204fa9, 0x2fec6ca1, 0x72d78c09,
+       0x29dbc712, 0xcaf1820f, 0x26643eae, 0xf653ac22, 0x3a4abb40, 0x3ab7580f,
+       0x06ff79ee, 0x67854f1c, 0x3c74cbe5, 0x35eaaf5a, 0xac4b0dc1, 0xcc1f1132,
+       0xb8f5e3a3, 0x60da2fd9, 0x21e6b57d, 0x4a3aed76, 0xca3ac176, 0x53cc9b03,
+       0x4dbf306c, 0x689cd2e6, 0xffea4b7f, 0x0dbf3f4d, 0x9a7dbdd9, 0xde7a6372,
+       0x243a414f, 0xc4272f9a, 0x25fb40d3, 0x7d3cc052, 0x47fbf458, 0x7be21242,
+       0x5c48bd49, 0x14ff68d6, 0xd2a484f3, 0x7f4fbfff, 0xf65070a5, 0x325b03d8,
+       0xea5b78a3, 0xf1459c04, 0xf1c9c976, 0xb4f38528, 0x4fe9abfd, 0x3e741f01,
+       0xa6277e75, 0x63a7f33f, 0x85df94fa, 0x3fda7b70, 0x7e0dd314, 0xc67f7e37,
+       0x8dd3163f, 0xcfa60f7e, 0x1a62a7f9, 0xdeb17bf0, 0x98d9fe0b, 0xf0fbf66e,
+       0x32fe4bfb, 0x35fdeb4c, 0xff15fdf8, 0xfab74c72, 0x9afefc15, 0x0da62d7f,
+       0xb74c3afe, 0xda68be03, 0xbd600fe8, 0x4c7afe5d, 0xf80dfc9b, 0x09bfb77d,
+       0x8e1c75d3, 0x20527c8e, 0x3c383851, 0x4ed149c4, 0x053d8b92, 0x7b27cd32,
+       0xae6d3e59, 0xf9a66052, 0x53cd1f34, 0x045464b8, 0x9f342c0b, 0x07cac351,
+       0x5a1490fc, 0xc2807e69, 0x79d6b3ca, 0x3e68e30a, 0x0f958eab, 0xc614a8d9,
+       0x0090fcd3, 0x6b61bf2b, 0xe68130b0, 0xe560686f, 0x24c99bc3, 0x0f0fcd1b,
+       0x21ee7cb2, 0xcd3b24cf, 0x7cb2b6e7, 0x24ca47de, 0x85e7cd07, 0xedf1fb58,
+       0xeb65d101, 0xb2ed878a, 0xb8a13e6b, 0xeadca8da, 0xbcd1c691, 0x7110f5d9,
+       0x3328f853, 0x0a1f523c, 0xe583d90f, 0x2c5ee541, 0xb07b346f, 0x01653dfc,
+       0x3ec977e6, 0x54a53f2c, 0x87d9bcb2, 0x479457e5, 0x2b24df30, 0xf5ad6e58,
+       0xc159bcb3, 0xb5da8cf2, 0x396effd8, 0xb539e580, 0x6ef9624f, 0x7fcb0073,
+       0x9e33e8f6, 0x52bf34c9, 0xf40d3df0, 0x9232d348, 0x90d4f40d, 0xb4f4a5ee,
+       0x81b3205a, 0x440c7f7e, 0x7572e947, 0xe1f2331f, 0x5ef277f6, 0x9fc5fe04,
+       0x7d2f905e, 0x6c4cf1e9, 0x23f63cff, 0x6bc47ed3, 0xeefb93f7, 0xb93f5d58,
+       0xfda996ef, 0x95bd43d4, 0x67eb3d71, 0xf5e3bbfb, 0x5cb779f3, 0xce1b67ed,
+       0x75b3dec7, 0x5f3efee5, 0x57df9f3f, 0xc6ecfda8, 0x6cf524f9, 0xebef8d3e,
+       0x7ef8d3e1, 0x382d3e04, 0xcd9ed49f, 0x3d51d467, 0x8d1d467c, 0xf610e7c0,
+       0xfd67a7d3, 0xc3d51e34, 0x0468f1a7, 0xbae3ef3e, 0x5d6cf7fa, 0xe1e98ea3,
+       0x0458ea33, 0x7ce09f3e, 0xcfd67b32, 0xf0f58fae, 0x0471f5d9, 0x9fb0673e,
+       0x575b3dc1, 0xf87a27de, 0x81127de4, 0xb9fb184f, 0xecfd67be, 0x9f0f44fa,
+       0xe0449f5d, 0x67ec57f3, 0x95d6cf58, 0x7c3d27f7, 0x8114fef2, 0x7e80498f,
+       0x3e6cf446, 0xe1ea9f4d, 0x0469f4d3, 0xcfd8093e, 0x67cd9ee8, 0x7c3d69ec,
+       0xc08e9ec6, 0x780097a7, 0x7eb3d71f, 0xe1eb4e9a, 0x023a74d3, 0xcfd8fe9f,
+       0xd75b3dcd, 0xf87a33d8, 0x81133d8c, 0x575c10cf, 0x987be501, 0xd8fda10f,
+       0xf767efbb, 0x767c3d05, 0xe7c0885f, 0x88a7ec26, 0xed7d93f6, 0xe877c67e,
+       0x23be33e1, 0xd8b19f02, 0xeb3dadcf, 0x1e877767, 0x223bbb3e, 0xf84029f0,
+       0x75b3dedc, 0xc3d4ef8d, 0x83277c67, 0x3523c8cf, 0x9cb41c93, 0x48b742ea,
+       0xf7684c9b, 0x179a0478, 0x3a2f2c9d, 0x12ec04dd, 0x4837b551, 0xeda447ab,
+       0x72935b6d, 0xbb5a271f, 0xac3a70a3, 0x31ad4ecb, 0x3891ddad, 0xe7675e36,
+       0x75927924, 0x19a994f9, 0xdea9faba, 0xef795d2c, 0xcae837d9, 0x7572f8fb,
+       0xe365bef9, 0xd7fbf575, 0x03f2ea14, 0xaba6df97, 0xd0cca99f, 0x7ed7b3e5,
+       0x707f5757, 0xf2ba03dd, 0xeb9436eb, 0x2c0fafca, 0xac6fe5d5, 0xfeaebeff,
+       0xba1586b0, 0x1e9a9bf2, 0x088f95d7, 0x1f974cfe, 0x5d19f079, 0x2fadd1fd,
+       0x1cc7cae8, 0x3e57457f, 0x975db42e, 0xb776709f, 0x39b3cec1, 0xf3c8df4f,
+       0x613dd022, 0x331f7f76, 0xbb417bda, 0x0ce6f319, 0xfbf1da1b, 0x53aea5ec,
+       0x37e6bf14, 0x517abbe7, 0x094e02fc, 0x1905ebd5, 0xe885d765, 0xfbc647f7,
+       0xefd273ae, 0x377d988f, 0xa7d86339, 0x92041e94, 0x04cba90e, 0x8d7cb1a9,
+       0xb0b1e8cc, 0x6d21d5ef, 0x29b57db4, 0xe689243c, 0x1b0589fb, 0x139f7e80,
+       0xf1a7484c, 0x7a81a922, 0xfb8216f1, 0x79993582, 0x7a1a2a2f, 0xf29fdb5d,
+       0x77ed10a1, 0x074becad, 0xda85e33b, 0x21d80ac3, 0x75d3fbab, 0xa2f21065,
+       0x0ca83870, 0x97fbeda2, 0x7f68fba6, 0xd3b53316, 0xe99be3b5, 0x7e3839f8,
+       0x5aff8c3d, 0xb25be337, 0xb7c6eac6, 0x8dd3280e, 0xf1d3356f, 0xa81ed49d,
+       0x4f8f80fd, 0x909e3091, 0x3807c21d, 0x194065be, 0x4cc6bf8e, 0xf1da2bf7,
+       0x37e323e3, 0x85ecbf01, 0x58c747f1, 0xfd78d67f, 0xeb9407fa, 0xeb666fd7,
+       0x8db6b37f, 0xeb8f1f8f, 0xd8da116f, 0xb39407fa, 0xbf585bf5, 0x111df191,
+       0xf5841ff8, 0xfadddbbf, 0xebf5f3b3, 0x5fa1581f, 0xff8d85bf, 0x3e39ed5e,
+       0xffc70dbe, 0xad8e7083, 0x8e05607f, 0xdcf8b66f, 0xbee63f40, 0x3a0135f1,
+       0x0547e93e, 0x17206f53, 0x43a40e3a, 0x13512993, 0x0b2113f2, 0x3c48f1e7,
+       0xf12bb7a3, 0xde50de94, 0x049df828, 0xa3cb64a8, 0xeb4e2efb, 0x9816b64b,
+       0x39612e41, 0xe42cafdd, 0x24d05d53, 0xa7937d22, 0x74c1812c, 0xa24d1dbe,
+       0x4f05f902, 0xf9001cdd, 0xf7216d57, 0x449da17b, 0xd3fdf082, 0x417b0f9f,
+       0xba632ebb, 0x1d3e4eb0, 0x645bf0d2, 0x8648551f, 0x15f9d0d6, 0x8e8c1101,
+       0x7dd04fe6, 0x8bfba110, 0x833ee88f, 0x293c9250, 0xa13ef1b3, 0x87c825fb,
+       0xca097ee8, 0x76c5a909, 0x3fbcf144, 0x4bdfce88, 0xae0f1fd4, 0x29641ef3,
+       0xf8c49fda, 0x213ac4f7, 0x7fb8f800, 0x7e050279, 0x4a253e74, 0xd74f2e8a,
+       0xb7c3f587, 0x0417810a, 0xf007c3ec, 0x23fbce99, 0x9f9a5f30, 0x8e6d64ed,
+       0xa1f7f451, 0xb6bf9828, 0xb445c52f, 0x4788bb9f, 0xcfdb4dee, 0x1322565c,
+       0xd0b97013, 0xcfd0297f, 0x196e997c, 0x2a4a7e01, 0x41c4e1c9, 0x275dfbe7,
+       0x47ba7feb, 0xccd2153e, 0xf56cb667, 0x667ce978, 0xff388897, 0xcbeaa6bb,
+       0xc137b8ff, 0xd34e1a63, 0x9c71ebb5, 0xf97d5e99, 0xf9f5b33d, 0x9e7d3e39,
+       0xf4193dea, 0xc665bdde, 0x742c14ef, 0x7023739d, 0xf3a513a5, 0xe1c38fbc,
+       0xd1591abe, 0xadb615e1, 0x1438396a, 0x85d7047c, 0xf5aec5ed, 0xcfae5fef,
+       0xfcfa2897, 0xfe86b5fc, 0xe69cdd39, 0xf4013ff8, 0x4033d341, 0xa79e141f,
+       0xe5447d38, 0x663e9eaa, 0xe8c19645, 0x69c75d43, 0xf4e0a189, 0x0b1f4646,
+       0xd36212eb, 0x1e844943, 0x52fa5a3c, 0xa71e61e9, 0x3d398f87, 0xa7a0da2c,
+       0xb02439ab, 0xbfb69d2a, 0xc43edd77, 0x84a151d3, 0x540fc3d1, 0xe8e9087a,
+       0xc1e9c7c1, 0x9c79bf88, 0x8f7de61e, 0x9f1183d1, 0xa10f4e21, 0x9265970d,
+       0x14af15d5, 0xc53cba0f, 0x4eef0183, 0xc503d033, 0x787a4c47, 0xba6eb220,
+       0xcf9f9a70, 0x8be0bacb, 0x679603d3, 0xc209d801, 0x7767db09, 0x84e54fad,
+       0x4368bf2e, 0x3757fc6c, 0xd29ca415, 0xe1b2abcc, 0x9a5394d6, 0xa7ea4b7a,
+       0x038bf2eb, 0x17f57473, 0x95d1286d, 0xac5bac2f, 0xf6bf9f2b, 0x44be5d41,
+       0xfeae9ef9, 0x756bcbfd, 0x3cd5f7e5, 0xb7bf2ba6, 0x7e5d49ec, 0xba97ef8e,
+       0xdeccf7fa, 0xe99f2ba4, 0x7e57597d, 0xba6dd4d7, 0xebcf74fc, 0xbda6faba,
+       0xf409dfd7, 0x24547f98, 0xf29c7f60, 0x4fee90bb, 0x7a6287fb, 0xbe46efd6,
+       0x8b1fef38, 0x96a6a1e9, 0x956813f5, 0x13b3c2cf, 0xa59fd309, 0x2d908924,
+       0x6bb5bc2b, 0x139f41f3, 0xaf2fbbd4, 0xf4ab5598, 0xe4c0d2a3, 0x6f173842,
+       0x48e09330, 0x4a500442, 0x18b0fc7c, 0xd10fcf2d, 0xcbee94f2, 0x3148378b,
+       0x5243f3cb, 0x7fab7ecc, 0x19d03256, 0xe5133fc3, 0xec17d267, 0x9f6e4ea3,
+       0x042bcb1b, 0x277ed5e2, 0xfff20564, 0x2b9fae45, 0x544e4ccc, 0x4853ef6c,
+       0x0e0f901c, 0xf1aaf9a9, 0xf573281a, 0xd6c8fa06, 0x0da2f1f1, 0x3ce4ea37,
+       0x2a6def01, 0xdd48d9d0, 0x13f525f7, 0xf7daed74, 0x2aef3889, 0x40e32190,
+       0x4d5b7a7d, 0x2d8397a0, 0x061aee03, 0x361cf4f3, 0x4a6abc81, 0xddb1fb45,
+       0x94e5353f, 0x62f47804, 0x1b3fd67a, 0x1f7ed3d3, 0x65fca7a6, 0xd7f09e98,
+       0x2ff21a60, 0xbf13f4c7, 0xfe47e982, 0xd1fe98b5, 0x71e9875f, 0x8f4c06ff,
+       0x1e9803fa, 0xfa63d7f1, 0xd301bf9e, 0xa6137f56, 0xa60f7e1d, 0xf0a9bf2a,
+       0x59ddd230, 0x03cfa7ae, 0x9d057dfd, 0x4bfd365d, 0x517edaed, 0xc57cfb3a,
+       0xfc956a8f, 0x1bc5bf68, 0xd24e9c2c, 0xbff0f474, 0x068c8740, 0x7a70b17a,
+       0xbc5e5d89, 0xf2cafe41, 0xb31c90fc, 0xfe17eaff, 0xb46de87b, 0xdfa3d989,
+       0xf4a2de94, 0x4f40d7d4, 0xa7a2d7d9, 0x9474710c, 0x9c9b469e, 0x7a71ff4c,
+       0x11d6027a, 0x0b71ff63, 0x1aa97518, 0xc093cebb, 0xdcfcd9fc, 0xccb45a81,
+       0x5ec7cd9f, 0xa2b6eb49, 0x0a1817fd, 0xf434be78, 0x5fc0436f, 0x5538e97f,
+       0xafdd9994, 0xdd2f48cf, 0xfb83ddc3, 0x5500d2a0, 0x96bb23a2, 0xb833c5c7,
+       0x54c899c6, 0x63c84b92, 0x3f725f83, 0x89798390, 0x80fb4324, 0x463dba7b,
+       0x06a6d4bf, 0xae0b5ef8, 0x8657ed2b, 0x9fa77f43, 0xa41e7bf9, 0xaecc4da3,
+       0xd1116f8e, 0x17c127be, 0x88df00dd, 0xd3b8b23e, 0x1e1e0fc1, 0x7da2766c,
+       0xe1e9b010, 0x5e7cd0a7, 0x518f7e14, 0xbea2b518, 0xf8474baf, 0xa432ba0d,
+       0x77e00f4f, 0x2d7f392d, 0xc8103e78, 0xe7816ff8, 0xb5e3e4b5, 0xb8f122e4,
+       0xeba26b5e, 0x2c3bdcef, 0xc81771f7, 0x9fb62cc1, 0xeade06eb, 0x3e7195f9,
+       0x6be9442b, 0x9a6771d1, 0x03adc74a, 0x24e71d08, 0x7f6d0bf0, 0x263af1a9,
+       0x6fbb54bf, 0x13d025a7, 0xd4c85ebc, 0xa1b0f7f7, 0x5f074bbf, 0x6b7ec074,
+       0x79c9ba69, 0xd41e062a, 0xd321b2b4, 0x9fdad369, 0xa5fcfa4d, 0x036a613a,
+       0xc4ae89da, 0x9e8187bb, 0x0d4f3a70, 0x8e9db902, 0xd2cfdaa9, 0x14f3b374,
+       0xebe77b95, 0x3ed913b3, 0xc1e4c02f, 0x179424d6, 0xac56fde7, 0xa7cf6dff,
+       0xf9d47ebb, 0x4e48d210, 0xd31e415a, 0xebeeecb2, 0xd2cf4b77, 0xc7e0cc5f,
+       0x15f2cd24, 0xf4ad0fb0, 0xd6412fbf, 0x6af30913, 0xa20dd5bf, 0xbe09b962,
+       0x478dd56f, 0x33d4b9db, 0xbeb32fd6, 0x72246f8a, 0xaa5ba55a, 0x8f83f62f,
+       0x37e81530, 0x3fb7a9ce, 0xeaf97493, 0x9d4e3ea6, 0x50bf0a3d, 0x046a4bf9,
+       0x82a7e809, 0x64a74f93, 0xf9d02b5b, 0x424e0f3d, 0xd5815ba0, 0xcc86b4ab,
+       0x2b9c173e, 0x3775bc33, 0xe9bf8a3f, 0x32f92512, 0xc39e1d6b, 0x3f5c3596,
+       0x85ccf419, 0xe06995c6, 0x5e225837, 0xa31bc47a, 0xef20a7fd, 0xca5f0347,
+       0xcf7dbd61, 0x7ed083e9, 0x17e8efd5, 0x9ad3b625, 0xf989bb7c, 0x5efd8c63,
+       0x5ae47ae1, 0x7adaa9f0, 0x09d80a78, 0x35553846, 0x50fb345d, 0x797fd22e,
+       0xf0a93851, 0x5ef45e7b, 0x5e56fd01, 0x8b7e86df, 0xe432b2b3, 0x2f215f07,
+       0x96cfaebb, 0xb3413a7e, 0xc2b4852e, 0xe58c0f38, 0x3dd71103, 0x7e39521f,
+       0x013277ee, 0xd2ae4439, 0xc0799a5a, 0x1794d6a6, 0xd03cefdd, 0xe018a4b8,
+       0x7bf60e7d, 0x202e6e54, 0x81e2075e, 0xfec1e5d4, 0x4d3102e6, 0x205d3805,
+       0x6a4639ef, 0x992190f0, 0xff74ce11, 0x3f3b4273, 0xe5d1ffba, 0x9747fee9,
+       0xd233252f, 0xf4a09e20, 0x04049929, 0x3cae9f5c, 0xbf62725e, 0x6acd488b,
+       0xbf546bb0, 0x224e03e1, 0xabf3a5f5, 0x79b3f5fc, 0x991e7425, 0xd44fb312,
+       0xc9c5f0f3, 0x0de5fe6c, 0x5a1ecc9b, 0xe471b27e, 0x69a12a2c, 0x886ac0fb,
+       0x0a76500f, 0xaeae2dee, 0xf3bafdf0, 0xb557ce37, 0xcb9cba97, 0xd65479f3,
+       0x0c409e0b, 0x6249bb3a, 0x83eaa674, 0xaadd7c89, 0x219a68ff, 0x35e40f7f,
+       0x86f9a6fe, 0xcfcc6ff2, 0x9f8e88bd, 0xd37d179f, 0xbfc654a4, 0xa4163fb0,
+       0x37f3d230, 0x4bbd3fee, 0xa348f7ff, 0xfbfec5bf, 0xf68cf9e9, 0x9d5bff3f,
+       0xf32ea0ff, 0x7fd58eaf, 0xdd5fafe5, 0x5e7950a5, 0x3b9fabfe, 0xce33b508,
+       0x6e697549, 0x2d8aff8a, 0x07401cab, 0x01c52567, 0x202e7cf4, 0x90c40d4e,
+       0x81245b67, 0x4d8f2dcb, 0xfc26ff00, 0xff3ffb4a, 0x807713ca, 0x45b2befe,
+       0xb2dfa276, 0x50b412de, 0x5c6aad7e, 0x63864c5c, 0xd7e58dbe, 0xdf21145c,
+       0xf2cfa7a4, 0x1a79ff7f, 0x4a50b1c4, 0xff426be9, 0x03f7107c, 0x9d3f9b55,
+       0x9abdfa02, 0x8ccf9184, 0x2ffc60ed, 0x94ff5192, 0xb1914840, 0x69211d1c,
+       0x54fd9ed0, 0x51713e37, 0x216fc074, 0xeb18bbf4, 0xfefb7197, 0x0bdec969,
+       0x3218d7e5, 0x0a97e406, 0xf660120f, 0x7f97cafd, 0xce8dbc31, 0xeff37da7,
+       0x4e06821c, 0x6a5d9f2a, 0x6efcff98, 0xb2f2f757, 0xd6a1f283, 0x81f5548e,
+       0x4bef89ab, 0x215a599a, 0xa8131d07, 0x24d8a85c, 0xb9fa15bb, 0x5f17d5e2,
+       0xc5fc067a, 0x83dc581f, 0x5e4bff69, 0x3c74703d, 0x26d92fcd, 0xcb662af7,
+       0x516909b0, 0xffd354bc, 0xf146e796, 0x80e3be50, 0x7d8c35d9, 0x147261ff,
+       0xedb64b1f, 0x5d619333, 0x61a931e1, 0x8b64399f, 0xb6869781, 0xad676029,
+       0x3373f97c, 0xedced0b8, 0xccef4815, 0x74dcf018, 0x8030ed00, 0xe391e213,
+       0x43378229, 0x178a6afd, 0x9e2ae790, 0xb9cbe58c, 0x5cfe813c, 0xafcf4839,
+       0x97e3a6ed, 0x86e2d1fd, 0xf6bd97f5, 0x71d60390, 0x7461aa46, 0x34aaecfd,
+       0x4cb71d0f, 0x989cd256, 0xcf65efb2, 0xb6f48c3d, 0x69c3f0e8, 0xe9e80fcc,
+       0xa4dd4263, 0x2df581f4, 0xd71338dc, 0x487c4a57, 0x8acf6577, 0x9f8f905e,
+       0xb6ea6449, 0x57d17c18, 0xccf27266, 0xa590d40b, 0xfb033beb, 0xefe7906f,
+       0x46bf1889, 0x67e883c8, 0x85af987c, 0xff98685a, 0x74f0cacc, 0x39713249,
+       0x2d75ad4b, 0xd35e6ebd, 0xdf39f80a, 0xce1bd3df, 0xa489aab3, 0x5f087870,
+       0xc3c57ed2, 0x7e19bd45, 0xe3ca4b88, 0x359da8ed, 0xfd43be09, 0x3713d956,
+       0x7c8ed75c, 0x7f1d1999, 0xce9f1f19, 0xa3ec1e3b, 0xedb16933, 0x55645bfd,
+       0xae3d500f, 0x7f0d2fa1, 0xfcdf7e33, 0x956fe318, 0xa7d303df, 0x8e5ff942,
+       0x7681fe30, 0xbce91fa0, 0x7cb1bd82, 0xca02dddf, 0xc6090b03, 0x32cdebe2,
+       0xb97d6be7, 0xde74274a, 0xa1a89092, 0x193fe817, 0x53768fe1, 0x9db453e9,
+       0xc3565e46, 0xfdae8e78, 0x88bb7ca9, 0xac9a7ff3, 0x91b27fe7, 0xf6f77df1,
+       0x5efcc2ab, 0x67a5e072, 0x7f295f80, 0x57e02e2a, 0xfeeb0bd9, 0xa396d6f3,
+       0xfa7ca5df, 0x4f9506e7, 0xc8d3f2f5, 0x1fdb65a7, 0x469f4026, 0xbf73fd3e,
+       0x4f93121a, 0x7c98f7e9, 0x3ff42fda, 0xf8553f2a, 0x3f00c77d, 0x07761e55,
+       0xfc3ca347, 0x94c57250, 0x08e7f487, 0x7f4aebc9, 0xf4a9dd2a, 0x951ffe56,
+       0x44ee4103, 0xbba552e8, 0x74aa5d08, 0x1eaf5c67, 0xab72c67e, 0xdecf104c,
+       0xafdc65d7, 0x38b33456, 0xadeeda4c, 0x4e10a3be, 0xa463541e, 0xbdbeadee,
+       0x2180f9b4, 0xefa860df, 0x86bde431, 0xbe433efa, 0xa2bf5746, 0x104cc5a9,
+       0x3d5d41ff, 0xe433f971, 0x7a2c4a64, 0xab7c200d, 0x159a2f1b, 0x185b0ba0,
+       0x882bcbdb, 0xe17d7102, 0xc3ee223d, 0x578c293b, 0x6b60bf83, 0x72a14066,
+       0xdb1c5563, 0xcd5387ef, 0x75ce41ab, 0x648ec33a, 0xfb31c7c8, 0x761bd3b7,
+       0xc8ec6924, 0xe51166b6, 0xa6402874, 0x50c7dac6, 0x0cf0820d, 0xd9caee91,
+       0x689152b9, 0xfc1cb01b, 0x1ba27536, 0x6a0b055c, 0xb9c071ef, 0xf673674e,
+       0xf7e9b39d, 0x3115bf85, 0xde33a4ac, 0x45e61c31, 0x47d48f14, 0x4b387fb3,
+       0xe9f3a794, 0xb337e67a, 0x7582c47d, 0xac83fb06, 0xb529fa43, 0xfc83332d,
+       0x09ff76a4, 0xe30879fd, 0x5fde7283, 0xb97d46d9, 0x1de29eda, 0x9be5cbf7,
+       0xbe3ee5f5, 0xf2a4dcdf, 0x823208c5, 0x9f98f7ef, 0x22e1cb83, 0xd9cee731,
+       0x079dfe14, 0xf9a16245, 0xc222cd4b, 0x2156d2ff, 0xa22afe00, 0x557f22a4,
+       0x3fca3091, 0xc0ed4e15, 0xe5eee63f, 0x8fcefb53, 0x74007ef3, 0xe1c3ebb2,
+       0xf6d346ff, 0x790c1f5d, 0x3ebff203, 0xd243e036, 0xbda4feb5, 0xdeae7871,
+       0xf48ed7b9, 0x9de7b9dd, 0xfc803f01, 0xcc3716eb, 0xe7ef73b3, 0x3a5e81c3,
+       0x40ca5857, 0x67f675be, 0x7b95cefe, 0x421e1f3e, 0xe228fa7d, 0xf6cc90ed,
+       0xff9a975f, 0x0bd089fe, 0xb02aba52, 0x2026f613, 0x8eef54ff, 0xceea78c3,
+       0xf9e79f3d, 0x7adedf6c, 0x451c78aa, 0xdecc9da7, 0x624bf30e, 0x6fd50271,
+       0x96b17b8c, 0xb8d95f8e, 0x969f3ccf, 0x3fcdfa4f, 0xecdc8386, 0x9feccedc,
+       0x1cf4390e, 0x931c09c4, 0x5321583f, 0x1300757c, 0x90f21065, 0xf0126339,
+       0xfcb85749, 0x3d4ffd03, 0xffc74785, 0x3c10f035, 0x03d9be4c, 0xfdd60156,
+       0x443e4fd7, 0xe905a1bf, 0x9fef5d52, 0x3ed16a1b, 0xedbad6b9, 0xcff33366,
+       0x6eb33ffd, 0x7593d821, 0xaf93fce7, 0xc2ecbb7b, 0xa0f919f9, 0x79ef9d2b,
+       0xdaaff304, 0x1edf38dd, 0x3ff17bd2, 0x36bffaf9, 0xbc53b7de, 0xeebdae3b,
+       0xebe4ff25, 0xbfef1eee, 0xeef1c79d, 0xbf337bc4, 0xefce07f9, 0x27b9caeb,
+       0x72dcffcc, 0xabf5bbae, 0xe4c5bc76, 0xf3a02d6d, 0xecea4d9b, 0x49cc5860,
+       0x420874bd, 0xfffd2d13, 0x2be60bd2, 0xd523ce1b, 0xfcccd9b4, 0x839c3223,
+       0x4cc971d3, 0xd8ffef81, 0x6e0ee9be, 0xafd1dc3f, 0x3bd6ed14, 0x27aecc3c,
+       0x305bd792, 0x16f0e20a, 0x4a1fd1b8, 0x20fb8f72, 0x9e66f33f, 0xdf1fefd7,
+       0xa0478815, 0x031dfb76, 0x3b041ea6, 0x527ecef6, 0x36d2c2d0, 0xf077df48,
+       0xfbf563ef, 0x7d3e399c, 0xfad99efe, 0xdfde4cfc, 0xe8ae302c, 0x42bcb3f8,
+       0x729ffc00, 0xc152a7ff, 0x942f2a1f, 0x3c402089, 0xd82acd4e, 0xeaf4cc4f,
+       0x7d806fdb, 0xd85fc6af, 0x4021e6cf, 0x43b73217, 0x2cdcdb27, 0xf04bcfdf,
+       0xa1db88dc, 0x510f2f52, 0xbbf1a272, 0x69bead8b, 0x1d617e70, 0xef1c202a,
+       0x1ca2275c, 0x3808e6b2, 0x1958ef2f, 0x353f41e3, 0x3f00f379, 0x54c723c5,
+       0xc34d9f7d, 0xcc5a700d, 0x6a4a5ce1, 0x57224ed0, 0x3f32fcbf, 0x04c5fc0f,
+       0x1ec5aced, 0xfba76e42, 0x217cd281, 0x79f94f18, 0xc4944491, 0x0aa3f05c,
+       0x8fce84e4, 0xcfc3cfaa, 0xfda2d277, 0x777eab5c, 0xa76dfc74, 0x737ca27f,
+       0xb7b51062, 0x8f063cfd, 0xbaa07f30, 0x99bfbb6f, 0x42bab1c1, 0x3d216408,
+       0xe6af6506, 0x858c68fc, 0xf4ffefed, 0x8fc891c3, 0x2c3aff05, 0x0727ed91,
+       0xad5a7da1, 0x571429fa, 0x2e4ff822, 0x73f36735, 0x5f0e49b6, 0xcc383e0c,
+       0x807f73f7, 0x769a3138, 0x44ea164e, 0x30902fd8, 0xc99509fa, 0x8c4b6471,
+       0x16dec638, 0xd62ff713, 0x7e12fee0, 0x23c03cc4, 0x9b4459fb, 0xf06b2626,
+       0x73f6eeb6, 0x78aef0d2, 0x9a139f80, 0x2affa4f3, 0x08ff617c, 0x171c3d70,
+       0xb18de29a, 0xfc39ebde, 0x2bfcdf8a, 0xd19bc7de, 0x5c03299c, 0x75164c66,
+       0x1699afe7, 0x248fff6e, 0xc55e6123, 0x18eade6f, 0x28397807, 0x5dfee1ba,
+       0xb345f375, 0x9eb9c62f, 0x3fd09e11, 0xeec81f9e, 0xc9e78052, 0xd811c49f,
+       0xcfc3bd9f, 0xfe20728b, 0x055d073d, 0xe557f01e, 0x697f985a, 0xf089c58d,
+       0x40b8abbd, 0xe6e3a54e, 0xc0473a34, 0xaf065891, 0xdd9406bf, 0x60c60868,
+       0x197ad4ed, 0x9b5eac15, 0x6b1559d9, 0x02ad7bfd, 0x3f710f3f, 0xe7f85632,
+       0xbfc15bc3, 0xa08583da, 0xfbab2687, 0x135d2375, 0x534b8fe4, 0x09e80085,
+       0xbe6177d8, 0x7cf7dd98, 0x95cac4c7, 0xab9e4c19, 0xf3846f74, 0xd57e9cfd,
+       0xee1cfdf1, 0xa87d380b, 0x6be15670, 0x9f5aaf9c, 0x5a89abca, 0x4d9dc73f,
+       0x3d035e23, 0x382cd55a, 0x2aabb44d, 0x3e066429, 0x527a6eac, 0x1cfe3f06,
+       0xea97eb17, 0x73dae191, 0x091635e1, 0x3b92d3e7, 0xc9d01e61, 0x9ed475e5,
+       0x0b3deda1, 0x0e403a2e, 0xff7263bf, 0x2ac5ee1e, 0xcb648aef, 0x0fabc857,
+       0x26dbcefd, 0x337eda4b, 0x55779e71, 0x96e0c814, 0x9f62b7b9, 0x4f435bdc,
+       0x58c92c6b, 0xa8cf7eae, 0x77c2e570, 0x43ce1e3a, 0x4085a9f9, 0x434e7f7c,
+       0xbc33de2b, 0xd18926b7, 0x3ec35961, 0xb133e633, 0x3a9e3abe, 0xee9f918e,
+       0x8fc7d62e, 0xea149fce, 0xb6297007, 0x63b99704, 0xd60de9d0, 0xebf31f88,
+       0xa50f09e9, 0x1fffe1db, 0xaa6589e9, 0xbc61089e, 0x52fedab2, 0x3bd13d57,
+       0x5a589e96, 0x780deaeb, 0xbb27ba58, 0xd2c93037, 0xc5a516df, 0xfbef13d2,
+       0x31e479d9, 0xf3b73f7e, 0x6e27aa6e, 0xbb89e8d2, 0x8c4e90e3, 0xf9523eed,
+       0x427a5ae4, 0xb0ffdbc5, 0xf41f79bc, 0xeefe0c44, 0x5989e834, 0x27a825cd,
+       0xea2ddd66, 0x9e8357ef, 0xdd317b80, 0xb48289ea, 0xdd979839, 0xe7e83109,
+       0x1f476e7d, 0x30da71e3, 0xc18be80e, 0x6f8e2756, 0xc9dd1bd4, 0x2a7bb7f5,
+       0xc10fffd7, 0x4beb9559, 0xfe7bb267, 0x2090e95d, 0x439d2f3d, 0xf400bae5,
+       0xd2fae4c8, 0xcd3fb8fb, 0x20bd6720, 0xe5694767, 0xe55f6b2c, 0xbaa17a63,
+       0x7317f329, 0xeb77f969, 0xd695b764, 0xee546eff, 0xeee569e6, 0x8f8b2b60,
+       0xcb7722ea, 0xdcbddc98, 0xa7ed123c, 0x31f7d6ee, 0x9e54b797, 0xa0c7720d,
+       0x1373d98f, 0x4ea8f774, 0x9ccff88e, 0xef2fc01d, 0xf82e7888, 0x0e03b729,
+       0x51cff88d, 0xb0af4f60, 0x07703d32, 0x9f8767c7, 0xca9936dc, 0x980b4981,
+       0x55b95d3d, 0x3555f844, 0x1aaffe32, 0xd1701f14, 0xbfdc94fc, 0x92def9e2,
+       0x8f7cec3d, 0x40b8a0ae, 0xef25ff83, 0xbf835684, 0x0126c979, 0x0e2127cf,
+       0x88b9e01d, 0xbdd4b3c3, 0xc639f704, 0x9fd504f8, 0x2debc95a, 0x7e84de6e,
+       0x42dc6357, 0xcedba0e5, 0xd8a47ec1, 0xbc50f0c2, 0xca6c0843, 0x43727384,
+       0x7863f73d, 0x60d9512e, 0xebe44f38, 0x7306285d, 0xec7ec076, 0x963ba2f7,
+       0xc236ab9e, 0x08bfeca5, 0x2e14c397, 0xe1fbfea3, 0xa81c1dd2, 0x687e8f7d,
+       0xb41e3c23, 0x9733fb72, 0xfc3e028c, 0xb941e4d4, 0x622dbca2, 0x2782c9dc,
+       0x75deeb07, 0xf97d73f0, 0xbab7c98e, 0x62abd40f, 0x368b29f1, 0x46903b6e,
+       0xc81b73f3, 0x2f637008, 0xc3d7a0da, 0xe8dfbd11, 0xb73ebd42, 0x71009b66,
+       0xbdf90b8e, 0x93c0b2ad, 0x7dc61ef8, 0xa79ea9cb, 0x5ae7e7f5, 0x7abe707c,
+       0x728c2e38, 0xd7dba553, 0xe56d1f38, 0x119939f8, 0xa9fa8c9e, 0x3f227049,
+       0xbe98e306, 0x778278a2, 0x7dc65a3a, 0x85e3853e, 0x189a2ff9, 0xde29ab1e,
+       0x34a79f80, 0xb33d7cf3, 0xf355ef03, 0x25c0420d, 0x27dd5c80, 0x043f77b3,
+       0x24702292, 0x9c23f468, 0x69a415db, 0x8da7bcf0, 0xc116ffd1, 0xf4021f8d,
+       0x73c137df, 0xeccf74b7, 0xbbd29e98, 0xacd7a70a, 0x3c707f5c, 0x2d6b8e1f,
+       0x3ae7891e, 0x3fdf1b82, 0xf3c24e69, 0xec755388, 0x8e668f1d, 0xc05f2367,
+       0xaefb43be, 0x389874c8, 0x8d4ea9c4, 0x1c3f38c3, 0x65d98b37, 0xb914f95a,
+       0xafd3c707, 0x4d52d71b, 0x8b1ed15a, 0x26f9a3c6, 0x385f6058, 0x71f49055,
+       0xf3a46162, 0x2bffa16f, 0xfbeed496, 0x8c4ee927, 0xa9c87d3f, 0xfbb2777e,
+       0xd2df3c35, 0x5cd8ef3f, 0x6bcbdf0a, 0xa16c3745, 0x8eb931ee, 0x79bc83e6,
+       0x2fc0265c, 0x1ec90f97, 0x501207a6, 0x73bc94ef, 0x9525ef12, 0x5226d8b0,
+       0x5fa623f2, 0xfcf9f24e, 0x0f6dea91, 0xc34852f8, 0xe4cf7868, 0x22bef76e,
+       0x465bf817, 0xe7055e1d, 0x724d7769, 0xf80a3d1e, 0x67bd8c7c, 0x24ed6273,
+       0xf43da7dc, 0x76fc80a0, 0xda0de29c, 0xf33bbccf, 0xee3a51e8, 0xf1536b7d,
+       0x27ae6c7c, 0x979c1675, 0xba243dcd, 0xfcdeb45d, 0x3836ed3b, 0x54369b2f,
+       0x7c0d3e24, 0xe8ad23ee, 0xf35b99df, 0x77984ce0, 0x6287d519, 0x8b87a426,
+       0xa37e437a, 0x15abed80, 0xddee199f, 0x68b86eb5, 0x2fc7451e, 0xec00f5a5,
+       0xbd591bd5, 0x1b82cdea, 0x9b4b7842, 0x5979449f, 0x07c059ba, 0xfda95a43,
+       0x06fd656b, 0xd6dfb4ac, 0xcd3db48d, 0xd0f6822f, 0x59a4e6ef, 0x4d560e70,
+       0xc7ed89e7, 0x6779e2d6, 0x8b476d29, 0x07e6eb49, 0x1bc5bfb1, 0xbcf70205,
+       0xfe66c6ca, 0x77f42c74, 0xf9437648, 0x34bf7db1, 0xd1e7bcc3, 0xfed0faf1,
+       0x22a18be7, 0x40fdc7f4, 0x323be270, 0xbf88c1b6, 0x3430584e, 0xf8cd9238,
+       0x7dea205c, 0xe71b492b, 0xc58e2b30, 0xaf2e9749, 0x0aeb0d5d, 0x2699a929,
+       0x668baba4, 0x28a7e3d0, 0x7ed47dbc, 0xf166693d, 0x49ca2d13, 0x47234873,
+       0xc6cb8a1f, 0x0a9a0bf6, 0x217e3cf0, 0xbc79e2f1, 0x23d996af, 0x02e2ab6d,
+       0xb261d802, 0x6f7c0073, 0xefc16559, 0xfd32af1d, 0x843fd1d3, 0x1b33d47e,
+       0xd0f70265, 0x7ecc6e56, 0x6678f01a, 0x26f48cab, 0xa3cecb3e, 0xfccabd17,
+       0x591b2d64, 0x999667bf, 0x5048fbd9, 0x5e8bf34e, 0x7abff756, 0x2aea5639,
+       0x94653947, 0x0ae25d4b, 0x0335aa9f, 0x579176c9, 0xbca0a6cb, 0x077aa72a,
+       0xbc8bad08, 0xfd1ab7ea, 0x33f45d9c, 0x28faa9b1, 0x4a52e217, 0xdbcffb2a,
+       0x1f7c7400, 0x0d6efc0b, 0xcfd9febe, 0xd856ef41, 0x92a97c09, 0x8c0b4f9c,
+       0xcbf0082e, 0x9f6de6dc, 0xcd941f01, 0x9577c38d, 0x801e034e, 0xe0a5d66f,
+       0xa0696939, 0xc6ade104, 0xa0da2e69, 0xffd573a7, 0x1227c738, 0x957f568f,
+       0xa68f1025, 0x511fb1de, 0xdce3a57a, 0xe20424df, 0xbdb7c804, 0xcc28f0f5,
+       0xcb5e713b, 0xceb07db9, 0xec7cf48e, 0x0157177b, 0xa1fbcebd, 0x275ec040,
+       0xe8356f8a, 0x820daac3, 0x8bb9fc0b, 0x2fdac87e, 0xde61eda2, 0xe8c97ec7,
+       0x0bb7d28a, 0xe36abfe8, 0xfd616f93, 0xfa0b82cd, 0x04a9b63f, 0x453289ed,
+       0xb9be5824, 0x540ff70d, 0x52fc614f, 0x01a6228b, 0x6a3d57fd, 0xa4a98271,
+       0x974a91d2, 0x953e3c6d, 0xefc3dd58, 0x6132eda2, 0xe95da952, 0x442d9c51,
+       0x49d029f4, 0xace8c2b5, 0x0dd955ed, 0xba6d7364, 0xcf99f764, 0x3e2afd70,
+       0xdc0a733b, 0xf54458b7, 0xcb69d023, 0xb06649c6, 0x0404ce23, 0x4aefc73c,
+       0xb5a6c497, 0x7cba54a3, 0xfaf26056, 0x5dae715a, 0xa5d38ee8, 0xa8947f4a,
+       0x71595f71, 0x8f702648, 0x3e8f48da, 0xc41661b9, 0x46bc9419, 0x3be743d7,
+       0xd0f7f569, 0x48e1575e, 0x2f9069f3, 0x893c5895, 0x12950fca, 0xdafa3b8b,
+       0x3f8c33f3, 0xe51ece29, 0xc5c59107, 0xffb8e904, 0x8c45f5b9, 0x4af0bbc3,
+       0xdf681ddb, 0x00e941bc, 0x4ed5bfe0, 0x08ffb882, 0x6f2a1ca0, 0xa7183d14,
+       0xeef30528, 0xd5dbecd2, 0xbf258b38, 0xcbbc23b2, 0xc5025bb7, 0xaef97db4,
+       0xdcf1c393, 0xe318457b, 0x04579446, 0x12898fb4, 0x40f70e1a, 0xef1625ca,
+       0xf60bb461, 0x77fdb1c6, 0xb309ebfb, 0xea136ec1, 0xe5697bd9, 0x16c8f70d,
+       0x67775f8d, 0xc3d6ac9c, 0xe2851873, 0xc3b9ee19, 0x74efb4fc, 0xed1e71a9,
+       0x2bfa332f, 0x9ed1926f, 0xd6dfaf2b, 0xe57df101, 0xcfb82dc7, 0x88bfaead,
+       0x7e93caf1, 0xb3be2af5, 0xea24dd56, 0xc4babbe2, 0x788bd555, 0x58d5522e,
+       0x341f7189, 0x5523e78f, 0x0be3b10d, 0xb3ff15af, 0x767b57e4, 0x4b841429,
+       0x03bbfc76, 0xdd6b5ddf, 0x2bfbc0e2, 0xd71d5ff5, 0xaa8e25d8, 0x8cafb1e1,
+       0xbf0f3aa3, 0x133ac250, 0x3538edc7, 0xc99ead0e, 0x3cbf3a35, 0x713f0c6f,
+       0xf57adec4, 0xce20e7b3, 0x9ffb7db7, 0x56f9839f, 0xcfcbaffc, 0x4506fc41,
+       0x91ec139c, 0xc7de57ea, 0x9db54938, 0x3ff7cf10, 0xc63bff2f, 0x607c7697,
+       0x1d6f4371, 0x000cce7b, 0xdb63a37b, 0x6e20d35f, 0x229ed974, 0xdb2ce7f4,
+       0x8937a939, 0x53502fe1, 0x0f40dba0, 0xf88d5be2, 0xc16c696a, 0x140b9338,
+       0x221f20df, 0x950d7171, 0xc5d0ce2c, 0xc6b6e1e3, 0x12ee238e, 0xd778d6ff,
+       0x5c83379d, 0xc176646c, 0x8ee0e335, 0xd4de3c50, 0x7d6dfc03, 0xd893cb8c,
+       0xbf00bbf8, 0x8c0d3c50, 0x7dc1c7d7, 0xf9f0b8d6, 0x31aca067, 0xb838dba5,
+       0xa6e00f60, 0xc7b729c6, 0x07886e79, 0x1ffedafe, 0x78087718, 0x7c81762b,
+       0xf8006cfe, 0x61cacf85, 0xf7843ff4, 0x5cbef058, 0xc8639ef9, 0x0f3b1d3f,
+       0xe1301c63, 0x241dc2f1, 0x3be2c3f2, 0x7aa7afb9, 0xcfc59db3, 0x7c43f871,
+       0xdf81cb9d, 0xa31d1c79, 0xaebe3563, 0x92bab8bb, 0x2efe2cf8, 0xabff8b06,
+       0x8f21fcdc, 0x4be28b57, 0x6a780b18, 0x4578cafb, 0x804e0e15, 0x9c6d18c3,
+       0xc5f8ec68, 0xc7313c48, 0xe40fe017, 0x940e2474, 0x5c41fbe6, 0x46384060,
+       0x8e83c862, 0xb4be2c4d, 0x2f7d8e43, 0x9d1b8d55, 0xd3e06f1b, 0x45e2cf40,
+       0xafff35af, 0xe3db9f0b, 0x11afd85d, 0x6357ed4e, 0xe73f71cb, 0xef7c6ffb,
+       0xde3042a0, 0x3c71f86b, 0x6c689bdc, 0x14bbe333, 0xaf89feea, 0xd3fb9db7,
+       0x31115fda, 0x4375709e, 0xa371ca0b, 0xe7e2a8bc, 0x3ef9c624, 0xd55be7c9,
+       0xfb44f4c4, 0x46c07b76, 0xf37f69fb, 0xaae7a475, 0xcf186dad, 0x0efd56f8,
+       0xbe734873, 0xa0227a0c, 0x6bfb7f99, 0xdca386fb, 0x1944efe6, 0x9e3e79c7,
+       0x9bab87ed, 0xbd538f63, 0x9c6ea2f5, 0xd9834a25, 0x78f6bb69, 0x3dcf25e7,
+       0x56f9dfd0, 0x6f9d2f66, 0xbac6a710, 0x5e22b377, 0x75a0e7e6, 0x12faa52c,
+       0xb3b2cbdf, 0x4744b1f7, 0xcb5fda3c, 0x278f63ec, 0x8cd482f6, 0x6b2b15f1,
+       0x8fc63c79, 0xef80e9dc, 0x08dbf695, 0xc01577cc, 0x978fb357, 0x76023e9d,
+       0x1dee9c9b, 0x51673da5, 0x65ee6fe7, 0xfe0d0122, 0xf6a7d997, 0x9127fd86,
+       0x8f307e94, 0x973eb23b, 0xfab5ff40, 0x5c9eff99, 0xbe08393d, 0x03ce4ab7,
+       0xd6dfb429, 0x5c1b82c9, 0x3ee95daf, 0x9b1f3ba0, 0xfbbfd1ee, 0xb0fab109,
+       0x136e4bbe, 0x537683da, 0x10ab49d0, 0x3a6b5c7b, 0xc45d606e, 0x8861a525,
+       0x3fb9c63d, 0x25deb7ee, 0x7594220d, 0xf50a79a9, 0x1dee92dc, 0x92b1c48b,
+       0x720b5de1, 0x57a51064, 0xd557a71b, 0xbf67672f, 0xf8437ed3, 0x0e52465e,
+       0x5df205a9, 0xdda1f767, 0x33bf9eb0, 0x42867f42, 0x8932441c, 0xe1df6b77,
+       0xdeeae3a1, 0xeae3a0ef, 0x7d1e49f2, 0x74aa653e, 0x497e962a, 0x2298f3e1,
+       0x490e10da, 0xbf752645, 0x2d383c56, 0x54a4ef3a, 0xf9420ee2, 0x338c36ed,
+       0x68a5eca7, 0xe9b361d7, 0xa7e74de7, 0x39891393, 0xe6c4c521, 0x24eefba9,
+       0xefd7012e, 0xf3a77fd1, 0xa6ffe5d5, 0x48893bca, 0xd66cef20, 0x7fe1c256,
+       0x47ef0749, 0xd3fd43a5, 0xef843f00, 0xf70215ab, 0x3af91214, 0xfabaf8e8,
+       0xb00ef04e, 0x90fdf5f1, 0x7ded4e7e, 0xfeb89bc2, 0x26f0496b, 0xcd3e5024,
+       0x0183581b, 0x24e9f9c0, 0x36bdef07, 0x94f942f7, 0xe310bcb5, 0x463a844e,
+       0x11d68357, 0x61419be4, 0x1e42df16, 0xd47b478d, 0x5c4a2562, 0x2293dc2e,
+       0xa30b9c8a, 0xb9ff3804, 0x57689856, 0x6b4a5ad2, 0xb8735db4, 0x2290b4d0,
+       0x688a01a1, 0x4f04d6ff, 0x7abf8c06, 0x34dd2fba, 0xb53e3e02, 0xe43f7f6a,
+       0x23c1ebda, 0x1fd61268, 0x0b337838, 0x18f78205, 0x800e4628, 0xe48badfe,
+       0x6bee1049, 0xf247c5d7, 0xf7952b1e, 0x3f2c5975, 0x2afd6134, 0x25a43778,
+       0xc6143bd1, 0x0de75621, 0x4c15de78, 0x4b5ff5c6, 0x1cf3a8bf, 0x253439ba,
+       0x9bf3147e, 0x83acfbc2, 0xd3fb91ed, 0xd8b787a8, 0xf7107cd4, 0xc3c6de11,
+       0x1b2ad728, 0x09b9630e, 0x981d34f2, 0x37d29a12, 0x9e5b9089, 0xfd28b178,
+       0x2f1f887a, 0x75d13749, 0xf1789f7a, 0x4383a480, 0x920e0ebd, 0x1c0325e9,
+       0x705afa5e, 0x84bc26f0, 0xbae9e870, 0x09dc5d29, 0x60569af0, 0xc6b377c2,
+       0x7fa1b71c, 0xa1c4fe85, 0x6cfde23e, 0xad7ee6ea, 0xfda11fba, 0x2fa5a3dc,
+       0x574a9db5, 0x364dd1dd, 0xdec0de71, 0xcfd3d44b, 0x0f8f04da, 0xf0492bfa,
+       0xb8a9edd8, 0x3dcfbc7e, 0x4f73e7cd, 0x6ba5191e, 0x9c8df362, 0x1ff18761,
+       0xf1a09c58, 0x582b4ecb, 0xf9d1662a, 0xa42f0396, 0xba93d746, 0x421b895c,
+       0x31ea99d7, 0x4b767c61, 0x813aaf82, 0x3b31c3ce, 0x0b2b841c, 0xa46f8863,
+       0x42f94620, 0x1ef56f1d, 0x5d5f5fb6, 0x60ac0a62, 0xf402bde7, 0x908fa517,
+       0x8cc23e81, 0x90da9a3e, 0xdb9aaa3e, 0xd5347d18, 0xc17d0216, 0xf3ec19b9,
+       0x047848eb, 0x13d57de0, 0xfd49166f, 0x8424dd29, 0x74a5f757, 0x51609321,
+       0x75c21c71, 0xf0fc4c65, 0xeaeba9f9, 0x0775bf0e, 0x81c89eb3, 0x1321e4fd,
+       0x70a9779e, 0x92bdeb53, 0xe72fe2c0, 0x00757dd8, 0xa1b1ea87, 0xdbf960b7,
+       0x7187be0f, 0x33438e1b, 0xc77b41f6, 0xae4314dd, 0x8775b8e8, 0xc83be056,
+       0xd01d7475, 0x2b092265, 0x87bbd7a0, 0x089fe307, 0xc9eec03c, 0x21b47801,
+       0xefc2bcbf, 0xc3be5121, 0x1303b5fb, 0x2f0ffbd8, 0x9138b026, 0x3888275f,
+       0x30275fcf, 0xd0f526bb, 0xb7ec3325, 0x61351faa, 0x734854fd, 0x947febb4,
+       0x7cb893b7, 0xf150f062, 0x9513d2a9, 0x8ef009a4, 0x7c938fc4, 0xb5a3090d,
+       0x909c93f4, 0x6d4fe9a5, 0x713f53f7, 0x747aa02f, 0x1e07fecc, 0xe94abd02,
+       0x76ba27e7, 0x8038e4c3, 0xe81f5a9b, 0x687e1633, 0x0ed0bdbb, 0x617b01c6,
+       0x22a5fedb, 0x43d087be, 0xfbc1e6bc, 0x5e7eb47f, 0x4ed9a902, 0xd225e7db,
+       0x3c29f214, 0xfbe79bdf, 0x23fb34b2, 0xdfa049b7, 0xebbf7137, 0x171e04d1,
+       0x986f3920, 0xccf20c31, 0x8f4fcb8e, 0xf2a0bd47, 0x87e5dc2d, 0x9f896b73,
+       0xb385675f, 0x9537804c, 0x29b0a58f, 0x2b4aa768, 0x2099724b, 0x3f6de18e,
+       0xbdd4b75d, 0x7aedb9dc, 0xf8d03f76, 0xcf9f3cfd, 0xffafb637, 0xf0dee5d2,
+       0xa56f8079, 0x19d3f435, 0xfd755f34, 0x5c1f3c65, 0xe1355091, 0x302fdeab,
+       0xabedffce, 0x1f601c67, 0x99617c76, 0x1ececb1a, 0x78f46368, 0xdb1b3fd0,
+       0x39f7f1e5, 0x9e356f48, 0x110f7355, 0x865db8ca, 0xefc2cca8, 0x077d6768,
+       0x53e02045, 0x7da19291, 0x1f9e2642, 0x47dc344e, 0xf9904efc, 0x30c0f2f9,
+       0xdd712500, 0x2f9c6c0d, 0xa5649d98, 0xa99ce0ff, 0xbd8b9f88, 0xda56f92d,
+       0x136f7f69, 0x979abe76, 0x7902d352, 0x17fd6162, 0x6a7bfd10, 0x26ebbd79,
+       0x89bf4327, 0x9adfe899, 0x67943564, 0x69c8122b, 0x71899d92, 0x63444589,
+       0x81bd319f, 0x9d1c7776, 0x69f1c817, 0x93dc4b43, 0xfa65f979, 0xb90b40df,
+       0xbf66ba7f, 0x8e6bab71, 0x7eceb27b, 0x5d77c3a9, 0xf10ff77e, 0x167158fe,
+       0x746362ff, 0x75efd07a, 0x11b3f9c3, 0xe12e859e, 0x2babbb51, 0x34708ddc,
+       0xab855dc2, 0x1f058e11, 0xc72727b9, 0x2e119380, 0x286ea445, 0xee1531e8,
+       0x6dbcb846, 0x76f17465, 0xc7df058e, 0x70625b7b, 0x919a9b7c, 0x0f4e3dec,
+       0x2a45b5da, 0xdd98581d, 0x11db7a4a, 0x3b9daa4f, 0xcdfccec9, 0x8576b846,
+       0x28b8a7a3, 0xb7beba2d, 0x9f405e00, 0x6623ee09, 0x307137e8, 0x27048fe2,
+       0x075c6d12, 0x23be069d, 0xd5759138, 0x337ede95, 0x9d9bdf04, 0xcede85f8,
+       0x729e6a2d, 0xb704fc0e, 0x14792bf4, 0x8405a3fc, 0x285c336e, 0x243f188f,
+       0x529d2264, 0xd3d09e38, 0x8537ef1b, 0xeab85395, 0x4789b3cb, 0x4e45e74b,
+       0xcebfbee3, 0xb8dffa0d, 0x7ece957e, 0x75c61f05, 0x674a9785, 0x77ee3655,
+       0xc0fd20ca, 0xfafe1e5e, 0xdf9044a8, 0xa63939a4, 0x71cc625f, 0x3e1fa46f,
+       0x40b1d23e, 0xceef917c, 0x1c82ffec, 0xa4b5443b, 0x13ad8e46, 0x316d2b7d,
+       0x2f4a98e4, 0xddbc7337, 0xe07d944c, 0x4899ba5f, 0x07ec897f, 0x7feba332,
+       0x21f7c6c2, 0x585f497d, 0x5c139fe7, 0x75f22f4c, 0xcd4dd646, 0x9f3f184b,
+       0xb56f9f8f, 0x120e3de1, 0x7023da96, 0x6b77c2cf, 0x74727314, 0x4faf321e,
+       0x6610d406, 0xf7c5cdcf, 0xc85c298a, 0x79d10997, 0x84826c04, 0x79f0b6ef,
+       0x2ab7a85c, 0x9ef6c710, 0x036cdbe8, 0x687087bf, 0x0a4fae38, 0x67fd010e,
+       0xb4dcbf2c, 0x69ca0abf, 0xc7ac52bd, 0x6444bfe7, 0x1ef087fe, 0xcc85e04b,
+       0xca54edee, 0x5427a8d6, 0x7b87c8be, 0xdf013790, 0xbcc2fb05, 0xa3aa8227,
+       0x658bdee9, 0x682c2fb8, 0x9c6095ca, 0x60a69703, 0xf1217fbc, 0x1adf6048,
+       0xd748dfe9, 0x418e3a46, 0x115fdcb7, 0x94fb001e, 0xaa2f4baf, 0x9ba1171d,
+       0x51ba7a23, 0xcfd285e9, 0x3a7e80ef, 0x34fa7d47, 0x8cefdd98, 0xfa069cba,
+       0xa3d3b54f, 0x5de788f6, 0xf6776f80, 0x7fa76aba, 0x0fbdf368, 0x9e1224f5,
+       0x86b3ed07, 0xdf704cba, 0x39eece3e, 0xfb55df0a, 0x0efb5ae5, 0x886e9fb2,
+       0xe3ccdd29, 0x11306878, 0x5957cf7c, 0xb97ca02a, 0x1865848f, 0x591abeef,
+       0x179dbfb7, 0x07e4fe17, 0x7b585e70, 0x1f33ea1d, 0xd889b144, 0xaf1dc59e,
+       0x68777ae6, 0xf5c00878, 0xf6fae5fe, 0x7ba696c4, 0x8113f517, 0xc5e7fbed,
+       0x7ee15285, 0xafa2896e, 0x5d5f1c6f, 0x635fb187, 0xbb136abb, 0x52ef035f,
+       0xc37635bb, 0xcf6636e7, 0x36fbe646, 0xc280f77f, 0x9cfe04db, 0x6f51ebe6,
+       0x9f3f0776, 0xd2472335, 0xda158bbc, 0xeb1d9963, 0x1c7511fd, 0x4973de15,
+       0xbfcf0aab, 0xcca6fc19, 0x7f31f3ee, 0xa0a9e980, 0x4d5e3cee, 0xa3278507,
+       0x41a837dd, 0xa2bb3b40, 0x5f34c0a1, 0xfdb3ef67, 0x1f7b1770, 0xfa80c5de,
+       0xbd98fb8d, 0xfb8b50df, 0xb6468a86, 0x6704d9ff, 0x227c19d0, 0x880fb839,
+       0x4e216bec, 0x1fde12aa, 0xb841e564, 0xc75d9eea, 0x6fb04fea, 0x08363f30,
+       0x74bea5f6, 0x3ff34dd9, 0x95b57679, 0x67569fee, 0xf7423892, 0xf27ee34f,
+       0x637594ec, 0x7b259729, 0x91ef7804, 0xc6db57e6, 0x3d1f7cf5, 0x571b27e1,
+       0xc1213fa3, 0xecd76b9b, 0x8fe3bb6b, 0x7c746041, 0x25b67ec5, 0x8ec13bd1,
+       0x25f987f2, 0x64bff88c, 0xfd022575, 0xd9f7c63d, 0x007f2db7, 0xd7710ff7,
+       0xf1001d5d, 0xef1cf960, 0xbd99d8b7, 0xeec09d59, 0xfa2c3f6f, 0x3b7e816e,
+       0x043abcdf, 0x0f6fc8fc, 0xb6fb893d, 0xe43efe66, 0xda197f21, 0x671e2a49,
+       0x7d9d99d8, 0x0e2df5db, 0x3edc77d8, 0xef780ffa, 0xdec482fc, 0x6b1f6b4b,
+       0x7bb9d9d6, 0x6033456c, 0xc14a6afd, 0xce5c8226, 0x38ffb51f, 0xf4eefbe8,
+       0x7bfe5443, 0xe4ff9004, 0x3c34e1ea, 0xe03c69ff, 0x3b65df00, 0xa17ec7bf,
+       0x01ed25b1, 0xfb6e569a, 0x5bf60383, 0x2efaf9f3, 0xbef8ad48, 0x114ec54e,
+       0xe3a085df, 0xfe0bdda6, 0x79f9c6e5, 0xac61b38f, 0xfb97fd5a, 0x5ebe968f,
+       0xf7c3f4e6, 0xf07b543d, 0x8012ab66, 0x8ad735f9, 0x99bdefe8, 0xf89cfc44,
+       0x46c4c82e, 0xe8e713d1, 0xcf7e1f6a, 0xd395faae, 0x99699e30, 0x1dd38d93,
+       0x917fe65f, 0xf79a024c, 0xa0a5f203, 0xffcff308, 0x53c08d22, 0x660e1783,
+       0x7c062fad, 0x183dd913, 0x7ec895ba, 0xf9f93fb4, 0x0fd9fd11, 0xe5ef41ef,
+       0x5e34df99, 0x12026bbe, 0x1bd1f3a9, 0x7cc3b005, 0x907398bd, 0x4ed579c9,
+       0xde85f89c, 0x53b46a3f, 0x3c479b0b, 0xbc2097da, 0x080bdfd9, 0x4b3b559b,
+       0xa786bf6f, 0x095bb4c4, 0x25e91279, 0x34f66777, 0xf7275f78, 0x8c2726b7,
+       0x7bd3873b, 0x7c65e375, 0x048aa5ff, 0x55794167, 0x120ce8a3, 0x751a1788,
+       0xaa8bf023, 0x34b855f7, 0x0eb16d5d, 0xebdaff07, 0xd40573a2, 0xe90cfe6b,
+       0xafefe470, 0x68ea5ea2, 0x93fdf196, 0x3a9f3dea, 0xffec6be6, 0x2ef6668e,
+       0x49f3674a, 0x94a6f7fd, 0x36dda11b, 0xeed7db13, 0x096feb7f, 0x737e6f20,
+       0xee0a52f5, 0x6fbd55a7, 0xf68dafb0, 0x265ed1b4, 0x8811fe62, 0x944a2abb,
+       0xed442889, 0xff7a2ee0, 0x9da8f223, 0x85ffd574, 0x31884f60, 0x670e00ec,
+       0x7c049e3a, 0x820bb464, 0xf68f6e76, 0x2ef0b927, 0x94d5d360, 0xb4cf7825,
+       0x02b9c139, 0xdecc3efd, 0xfe7fdce9, 0xfbe0d367, 0x33bd9121, 0x7e445570,
+       0x92ef737a, 0x7c0d2181, 0xfc4444a8, 0xb173e95d, 0xff5a0de3, 0xe67881ca,
+       0x37dc9707, 0x442bef6a, 0xbc3807eb, 0x3cec1982, 0xf780c94d, 0x3db1be7e,
+       0x5f65dedb, 0x91c831fe, 0x0a786b4a, 0x1b21f588, 0xff80ccdb, 0x9fef7639,
+       0x48697c98, 0xa428b800, 0xe3a12fb0, 0x4293c596, 0x2d70aba0, 0xdefc4271,
+       0x132683ce, 0x96d465e0, 0x79b38c4c, 0x2e379f85, 0x6733a86e, 0x62d6e46a,
+       0x56755e7e, 0x6b240656, 0x30742fbe, 0x40f672f9, 0x7f28f3f9, 0xc190b03f,
+       0x916df431, 0x1dc9c983, 0x56da6566, 0x84c277a8, 0xbff67ef7, 0x782dfbb5,
+       0x71f17657, 0x5fd008d7, 0xac2e1d03, 0x15e874d7, 0xe9ae977c, 0xdd5e8223,
+       0xa225cdbc, 0x06fb8e89, 0xdbff3171, 0xa7ee1311, 0xe24b7e23, 0xf6758149,
+       0xecfdb073, 0xba4d071b, 0xf837adf3, 0x0776a7fb, 0x83a24393, 0x1fb6bff9,
+       0x7d014c2c, 0x33eec730, 0x4eff803b, 0x14c35685, 0x6a9d7f54, 0xb23b8d7f,
+       0xfa30da7d, 0x9376b8eb, 0x3aedd013, 0xeb0882f2, 0x24259d75, 0xec5d2049,
+       0xd39fda31, 0xefed1a91, 0x1fd6768d, 0xc09bc79d, 0xc1fc2aaf, 0xf3439d83,
+       0xc94ab46f, 0xc2a59f10, 0x3a875d5f, 0x7881abbe, 0x9590d936, 0xc2bfdb3c,
+       0x87c6ac6f, 0xf512748e, 0xcba47add, 0x2e3dd85f, 0x8283d207, 0x03d9f1f6,
+       0xece768f1, 0xa491fae0, 0xfe440c97, 0x702a78e1, 0x9d477b30, 0xe7e3774f,
+       0xe9abfc73, 0x57eba5d7, 0x74829764, 0x741fdfc3, 0x366b4129, 0x653581c4,
+       0xd1d5dfe3, 0xe3e6c9c4, 0xdfeacffc, 0x990a6b9b, 0xab8f704c, 0x84908f6a,
+       0xd0f49acf, 0x99d08e5e, 0xd7f480d4, 0x1f209c74, 0xc83fd797, 0xde5486fc,
+       0xf0b977f0, 0x87f81c1c, 0x11f7879f, 0x79ae3a68, 0x08becad3, 0xf803a0df,
+       0xca270a2a, 0xd4d69037, 0x175e8199, 0x22e9632f, 0x78bcae7e, 0xb3f90f83,
+       0x0f8b2374, 0xc4c8e59c, 0xf4e05c79, 0x19f14c4a, 0xd8723f10, 0x579dd26e,
+       0xf1676c7e, 0xd71ae74c, 0x94b8c0b7, 0xbd02e6be, 0xf27a6f8e, 0x4aae9869,
+       0xcb36e7af, 0xbc594fd8, 0x84bddcfe, 0x11e775e3, 0x36e3ef46, 0x2ef085cb,
+       0x388538d4, 0xc6fd0fc1, 0xc8222de6, 0x9e8037ef, 0x839f1933, 0xe07b3dbe,
+       0x83ef84f1, 0x11336b9e, 0x30ef77f0, 0x1a6db293, 0xe9bfd8be, 0x2dfe3ad7,
+       0x869dafaf, 0xb250f57e, 0xe55e7200, 0x3bee155b, 0x915beecc, 0xf030efff,
+       0xfed664ff, 0x5d0bc069, 0xffce7ad7, 0xfe52a7eb, 0x36929fa7, 0xcfd00927,
+       0x77ec730e, 0x437ed6c2, 0xd5c88bfa, 0xbab91750, 0x357281d6, 0xe3a6c8e4,
+       0x097edd57, 0xf99104fd, 0x3f59ba71, 0x4c9ba559, 0x475fe001, 0xe0083831,
+       0xf40ae145, 0xfbe1ed4c, 0x5720e467, 0x9cf0941e, 0xf1039f86, 0xce350df8,
+       0xa8d7e55f, 0xd6f9533c, 0x47984bf7, 0x959ae4de, 0x14a7af60, 0xe79f482b,
+       0x64c0df04, 0x01cecfaa, 0x0790c71f, 0xae3c39cb, 0xbd6bbec8, 0xf4019e7f,
+       0x7e77465c, 0x51b21eb0, 0xd45e0270, 0xb646d772, 0xe5c5d93f, 0xcd5dfa91,
+       0x8778637f, 0xb91bbcbb, 0x997e81cb, 0x4ce219b0, 0x1e980487, 0xf2214223,
+       0x96dd3103, 0x98b67c01, 0x6aefafea, 0xb939d7f4, 0x8554e90e, 0xadcb9043,
+       0xdd6c492b, 0xcf9e7c35, 0x5a37ad81, 0x92417f03, 0xa2cfc604, 0x845cf8c0,
+       0x181dcffe, 0xfbd22b7f, 0xdde9b1ed, 0x64a6fb09, 0x9b3abbf8, 0xa6933e90,
+       0xca1ef13a, 0x971dc97a, 0x028fb3a4, 0xf2dfee98, 0x01afdc0b, 0x77bf02fd,
+       0x4065ff47, 0xdd0624ff, 0x6bdd2807, 0x01d2a7f0, 0x1c8f8ba5, 0xa460f91a,
+       0x50bcf50b, 0xc30ecb85, 0x8975e379, 0x85fc1e4c, 0x375705cb, 0x7aea2f71,
+       0xcf9e31be, 0x65f3c176, 0xbe015f23, 0xfc70f955, 0x2b35fc1a, 0x5efec9d1,
+       0x31f3c7db, 0x9f8ea4ce, 0xf1f0353b, 0x89cb79d4, 0xca7cee82, 0x92d46e78,
+       0x751293e0, 0x454b53e7, 0x3e944e57, 0xbb3db88a, 0xcf058b74, 0x0941b7ed,
+       0x7c7f6de0, 0xd42f7b40, 0x93c35129, 0x6257ba82, 0xa55bce26, 0x3372d70f,
+       0x2ff74419, 0xf64b3257, 0x2dcefc43, 0x30f14aad, 0x666d8eba, 0x71dbeee5,
+       0x15bee01f, 0xd8b5bffa, 0x8e7884e4, 0x00538f24, 0x68aa06bf, 0x6c43c3e0,
+       0xeed9919c, 0xebff711b, 0x79048f72, 0x4de38030, 0x870aafc5, 0x775cf4ee,
+       0xe1c59d78, 0x8dcbca93, 0xce0be472, 0xbd3cad37, 0x44511cb6, 0xf10727e0,
+       0xfe6110ad, 0x45fe4cf9, 0xc13e48e4, 0x8989c573, 0xe6a2397a, 0x323945bf,
+       0x472b5131, 0xca6286c6, 0x9313fa11, 0x2f3753ff, 0x1c963b44, 0xdec76d8f,
+       0x70f4c899, 0x5a4fe82a, 0x7fe1552f, 0xc5d136e7, 0x71875791, 0x2d9b758f,
+       0xcaade718, 0xa4ddc721, 0xae6efe10, 0xd42df403, 0xfc77dbba, 0x4def3866,
+       0xfce0bb37, 0x461c9cf9, 0x1ba39fbc, 0x0fa43af0, 0x8ef800af, 0xf8088f21,
+       0xf63f9441, 0xb17bfe63, 0x6964f919, 0xb9fd4111, 0xa418cb7f, 0x2ce2b2ab,
+       0xbcb6e801, 0xf280493e, 0x134ec9e4, 0x1d7529c8, 0xc89b9663, 0x07c891a0,
+       0xf835130b, 0xe0d4a318, 0x981dcfdf, 0x93974be2, 0x713d3ee8, 0x3f5a2df7,
+       0xbf3483d0, 0x07ea3d2e, 0xb635f9a2, 0x03f73d3e, 0xa6d7fb2d, 0x4277f035,
+       0x4b3c39d6, 0x0496dc61, 0xf34832ef, 0x4488d77a, 0x65aeb723, 0x7a537dbf,
+       0x26fee6a9, 0x71a54ad2, 0x3bbfce9a, 0xfe85deaf, 0x9f3035dd, 0x4fd38caa,
+       0x2ef87743, 0x9b7b4c46, 0x9717a3cd, 0x8223e40b, 0xade5e8f8, 0xa2ffc111,
+       0x70f59dca, 0xcbf6cbc8, 0xa8ab9c02, 0x0b7206fc, 0xae3568ec, 0x765ffc02,
+       0xb007fff4, 0x3513e43e, 0x62bac2f6, 0x9177cc53, 0x7db44e5f, 0x3499f2ab,
+       0xf7d77dff, 0xb1bc78f3, 0x32f4fc88, 0xaf2627e3, 0x489f17d7, 0xec1ae763,
+       0xf887c0fd, 0x70afcf18, 0x5ebafeff, 0x461cf7d1, 0xc40acc58, 0x710f12af,
+       0xcbf13539, 0xb410b342, 0xdfec3c43, 0xf746c760, 0x61337fd9, 0xbd8ffcfa,
+       0x8ec13353, 0xc1b9326f, 0xefc5518f, 0x1207ba47, 0xc0d2d7bc, 0x682c57df,
+       0x51e479b1, 0xac5af7f0, 0x47b5defc, 0x36325e7f, 0x2d2b603c, 0xc16cd95f,
+       0x59d8d1bf, 0x0e1dfea0, 0x567bde37, 0x9dfc3be1, 0x4e3143f5, 0x0373aa54,
+       0xc710bd9f, 0x4e217ffa, 0x044aefad, 0xb9dddd7d, 0x2cf2fe7d, 0xfeaa1ff4,
+       0x5070fcca, 0x8564b804, 0x2c16265d, 0xc291c6c7, 0x9eabd704, 0xb87037e7,
+       0x5db838ef, 0x379e3d04, 0xec256eb9, 0xfbb0be73, 0x8ddd028e, 0x79dbd7cf,
+       0x169a84a3, 0xdc931778, 0xa47f704a, 0x884a47f2, 0x269303ec, 0x03c878e9,
+       0x59fc732a, 0x47d83ecf, 0x00897a26, 0x88e269fd, 0xd25fa0da, 0xdedc23cb,
+       0x2e1efe0b, 0xbc95dbff, 0x0b071d9f, 0x5ef7e005, 0x570593ad, 0xdefa574e,
+       0x51edfb00, 0xf005de2c, 0x0703eeaa, 0xf80dc7fe, 0xf5220877, 0x9cdecc9d,
+       0x024df3e0, 0x4f5d3397, 0xdc66e818, 0x3c0b40ec, 0x4ca63579, 0x34bb3169,
+       0xb04c59eb, 0x0521bebf, 0xb8e7d1d7, 0xbb5200af, 0x19fb093d, 0x7188367f,
+       0x086bbd32, 0x6ff50f86, 0x53f6823d, 0x01569aff, 0xe0e3b8f0, 0x7edf389b,
+       0xca59fbad, 0xb73b6af9, 0xd979d407, 0x6ed67fb9, 0x7fe67a67, 0xcb003503,
+       0x00800081, 0x00000000, 0x00088b1f, 0x00000000, 0x7dedff00, 0xd5547809,
+       0x33b9f0d9, 0x65932677, 0xdf64c992, 0x9441206f, 0x16164380, 0x96127697,
+       0xad864d86, 0xec300906, 0x144c9201, 0x96c7d8b4, 0x901a6201, 0x62d168da,
+       0xd3e0758b, 0x1b6296fe, 0xc1d43504, 0x368ad84e, 0xd05d40ea, 0x10417cb6,
+       0x60090aa5, 0xd68fd0fd, 0x73df7def, 0xcdee666e, 0xcfb51444, 0x1fff7ff3,
+       0xb9c39f1f, 0xdf73dcf7, 0xb9cbeef3, 0x2ece9a67, 0x31157748, 0x56dcdb26,
+       0x7963196b, 0x346eb9bf, 0xa9ac678b, 0x10de9ddc, 0xc3e6d8c7, 0x2a2beefd,
+       0x61dbcc65, 0x8c2a1470, 0xc6312f5d, 0x19f63246, 0xb19b7dfe, 0x31999b24,
+       0xd5a66e78, 0xd683671d, 0xc879d553, 0x3e9e4304, 0x0dde347c, 0x327f33cf,
+       0xa58c1963, 0x8ed3bc76, 0x62aea4f3, 0x9b61a60c, 0x1890ee3b, 0xcd5cdadc,
+       0x9a14a258, 0x58c4de0f, 0xdc13630a, 0x12e8c76e, 0x6558cfb8, 0x6cc3ce2b,
+       0x8cac53b1, 0x9dd130fd, 0xc751ef81, 0x8f67984f, 0xd61717ed, 0xbc3dcf17,
+       0x1616399a, 0xc0fc3630, 0x1fac5dfc, 0xdd63fb63, 0x06e79ad1, 0x86ed1bdf,
+       0xe7123f75, 0x5debc7cc, 0xf7c2ab12, 0xae16c76c, 0xbef1376f, 0x78206ad5,
+       0x6a24db96, 0xab14db65, 0xc9e38535, 0x45c60436, 0xbcea71f3, 0x66d73b6a,
+       0x4c28bc20, 0xa0b1fc21, 0xe304f1c1, 0x0e0d70eb, 0xe62b1b8d, 0x1ee9d1bd,
+       0x4bddc325, 0x0d997756, 0xf84723fa, 0x51011bf6, 0xfbbd2bc3, 0x58736865,
+       0xe02b7ec3, 0x9a32558b, 0xb593a927, 0xe2589903, 0x3c674eb1, 0xb36e9fdc,
+       0x786efbd3, 0xde219bbf, 0xc2e6254b, 0xaae1e875, 0x07257014, 0x8716242b,
+       0xe0557178, 0x356587fa, 0x4a004d18, 0x604db332, 0x659b19fd, 0x92ae0853,
+       0x46fdce11, 0x32e9da84, 0x6373bce2, 0x537cf46d, 0x780fe73e, 0xcf3e027e,
+       0x24d29d92, 0x7fd86f80, 0xba01b632, 0x48570fbb, 0x67be114a, 0x73196f34,
+       0x469e9e22, 0xe5c1867a, 0xcefc71b4, 0x3de87812, 0xf10abbbf, 0x38341c91,
+       0xf8649825, 0x831f38b1, 0x3657c3a1, 0x64fe1118, 0x00189416, 0x95b1af68,
+       0xacb22703, 0x7484875a, 0x9aeb179d, 0xe079a363, 0xb3f22962, 0x9e0eb7c1,
+       0x49de34fb, 0xc9fcbe7c, 0x0b29db68, 0x067d8411, 0x26b5d7ff, 0xb69efa6a,
+       0x81a9db0c, 0xfc72fea1, 0x3b31f007, 0x186c2cc0, 0x16fcb563, 0x5ee8cc7b,
+       0xb3a9ef8e, 0x0f3fde74, 0xfebff5fa, 0xc40cccd8, 0xe75c4ee3, 0x638b87d3,
+       0x47f187e7, 0x4cb3ae23, 0xf815ef43, 0xa5de9ebc, 0x38f7a092, 0x9bd2b7a0,
+       0xa26b56de, 0xe493b7a0, 0x24c5c12a, 0xf5f01e7c, 0x770f4e03, 0x7259f209,
+       0x0191a570, 0x1e90bb1c, 0x87a65771, 0x2b56efca, 0x874a87a7, 0x136758e6,
+       0x19056bce, 0x2b7af7c4, 0xbebc40d8, 0xd2a1a271, 0x7ecf8117, 0x72e38b6e,
+       0x7e78b573, 0x352cc99f, 0xffe66784, 0x0fbf67ef, 0xbfe0f778, 0x9ff7848d,
+       0xde005f23, 0xbac3fbe3, 0x9df13a7f, 0x834fe454, 0x0945fba5, 0x37e751f0,
+       0xc258462a, 0x4eec7bba, 0xad63ffa4, 0xf10a2392, 0x3f1237e3, 0xe314d63c,
+       0xc10fca8b, 0x8499ee7b, 0x687aec21, 0xc0b3fc85, 0xece90c35, 0xf7ef1449,
+       0xe9e01f42, 0xcfeef1b2, 0xc3dbdc12, 0xfe63c9f5, 0x9e23447f, 0xa2b3a507,
+       0xc2384953, 0xac4de349, 0xc126cfe7, 0x2ff8517c, 0xb43af109, 0xf58288d9,
+       0x28aef75d, 0x376dd123, 0x759c37ce, 0xe009bd1e, 0x0a8ecdfa, 0x6f8c3b83,
+       0x347db62e, 0xefc01f67, 0xc21f8d89, 0x7d8e0012, 0x9f200797, 0xafc7f7a9,
+       0xef7a4f9a, 0x6f7ba34e, 0x0d2f5c38, 0x30f5c93c, 0x1e9db6ab, 0x4a76af84,
+       0x0a02c59f, 0x65032de3, 0x18c383c0, 0xfbc230e3, 0xbcf8635a, 0xa849fbe5,
+       0xc042bad8, 0x3dafe20f, 0xaeb7f086, 0x9f2ee410, 0xe7097ce0, 0xb335603f,
+       0x117eb80c, 0xa9c711e4, 0xbc055f70, 0xf63a467f, 0x76db3786, 0x85f0563a,
+       0x0f5f0431, 0x300e905d, 0xd32ad1bf, 0x8c58ba3a, 0x6ad9e903, 0xbfa43276,
+       0x1b9738f7, 0x82f56e95, 0x65fcbae7, 0xbeb0dcc7, 0x3b658ec7, 0xb6aef9f0,
+       0x7806d18b, 0xdc13afdf, 0x630e10a7, 0xda3c774e, 0x8bfefdc3, 0x911676d7,
+       0xd78d3b7e, 0xb49c762f, 0x6aae8bbb, 0x645f5d7d, 0xae391e7d, 0xb6204a59,
+       0xc4a96c51, 0xea50dc22, 0xb7f248f8, 0x210d227f, 0x0fa863f9, 0xb7ccb9bd,
+       0x34ddd60e, 0x74d3f058, 0xebdca0a6, 0x04b3fde9, 0x30b667d7, 0xe090ddb9,
+       0xf8cb1292, 0x698ab27b, 0x8044c69d, 0x0bcbc873, 0x5c064c4a, 0x768668df,
+       0x0aaadfb3, 0x39f81276, 0xd1bcc2ca, 0x99924e30, 0x5a1c54d7, 0x0bfacf5f,
+       0x60e90f2f, 0x9c78deb4, 0x6b5f8017, 0x603cf800, 0x87e4360c, 0xf4403baf,
+       0xabeb13ab, 0x8c05c4b3, 0xdbb61eb0, 0xaaa761f4, 0x86f5fa07, 0x8193e81f,
+       0x1c2b79f0, 0xdf48dcc7, 0xeb1ce3b7, 0xd0723f10, 0x7ad2b2e6, 0x1b3ef0b2,
+       0xd71d2f31, 0x79d63fbf, 0xedf9ea23, 0x73f1186b, 0xb7cc53d7, 0xf3bb160d,
+       0x65f88180, 0xf88ebb2b, 0x85c33afe, 0x9238ae39, 0xbb8442e7, 0x4062d834,
+       0x53e85bbd, 0xaf4fa80c, 0x0c1ab60d, 0x81ee07c4, 0x65173f02, 0x8ed06f80,
+       0xf255e306, 0x2fc4d0c3, 0xaf409f20, 0x4e5ebe32, 0x376f152f, 0x09b83e09,
+       0xa10686f1, 0xd3b0fe5b, 0xd01bc212, 0x7bd96587, 0x6758c7cf, 0x7da9e22e,
+       0x3a037bcf, 0x17fabe61, 0x78839bde, 0x147dffa9, 0xdfe8c131, 0xfc809b5f,
+       0xb23cae7e, 0xeae1f33f, 0xfe0c8706, 0xfb12b7d4, 0x65af5e91, 0x09fa3341,
+       0x3bb7ad75, 0xae7d30e4, 0xa61d6ffa, 0xbf9c44e0, 0xd6c8cca3, 0x3a2f9e00,
+       0x08b1a786, 0x5f6d4276, 0x600d7f41, 0x11d8424f, 0x134a7bcf, 0x2768ffb8,
+       0xdf1fa07b, 0x31c6bab1, 0xf9efa0ba, 0x5746863a, 0x89f9e0f9, 0x93c83f3a,
+       0xfadaedc8, 0x41876e44, 0xce113b21, 0x7d5acfb3, 0xb674b85e, 0x0678f5f8,
+       0xfbbb3a78, 0xe05e25cf, 0xb82cb3a3, 0xb39479e2, 0xfa18e28f, 0xbe87135d,
+       0x1ac6b25e, 0x479bcb92, 0xfcdfb5f0, 0x0af1cbdc, 0x73b89f8c, 0x0c37b27f,
+       0xf933377f, 0xcebe1ea3, 0xf5f2f7c7, 0x0073b931, 0x7f3d83d2, 0x76815526,
+       0xc9839ee2, 0x0d520f9c, 0x4295e748, 0x2f0efdbf, 0x13dbf985, 0x1f13d557,
+       0x4bbafda9, 0x0a4be616, 0x3341cbeb, 0x4bbade9a, 0xe307cc71, 0x935a25a6,
+       0x26580f91, 0xd33d44cb, 0x20bebe27, 0x55d7f53e, 0x3d0c767c, 0xc57e8b93,
+       0xe1fc3eb9, 0x87ae3136, 0x9f8357ef, 0x7ffa872e, 0xae71a7fa, 0x5b73c22b,
+       0x1d1773c4, 0xdfd0d323, 0x140e689b, 0x638c22d8, 0xd4f447cc, 0xcba5e9e3,
+       0xde71624b, 0x55452f67, 0xa1eb8246, 0xf357c344, 0xaa003a53, 0xa3707f30,
+       0xa254fdd1, 0x42a707f0, 0x8bdafebf, 0xf40f5163, 0x7bd08bf0, 0x3b6f3337,
+       0x3f9eafca, 0x833f7a54, 0xcdb94374, 0xb7485962, 0x9c2a261f, 0xa83c846f,
+       0xa3c7a1f2, 0x66609dbe, 0xc07148ee, 0x8d783dfd, 0x87d05e66, 0xc89ab62b,
+       0xf97cbfbe, 0xc025e9cd, 0x316defef, 0x2bc2d6d9, 0x9fdd1e6b, 0x5fb853fd,
+       0x26ca3433, 0x253dff41, 0xbf728050, 0x0ba351e4, 0x2dbde1f9, 0x4017522b,
+       0x6fc801fb, 0x64b1c02d, 0xd7ae89ab, 0xae93bd6c, 0xbd72119f, 0x4194d1e4,
+       0x3e5f2fa8, 0xe91521b0, 0x1fcff358, 0xb2e9177d, 0x341b6cd3, 0x1ddada14,
+       0x18746392, 0x1e3d97be, 0x34efe9ad, 0x875c1ab0, 0xb926574a, 0x002bee7b,
+       0x1e44e9cf, 0x1d355cd7, 0x137f5a03, 0x89d3cbfc, 0x65bcbfdc, 0xbebbac1a,
+       0xf5f922ec, 0x90c50ffb, 0x9c43f93d, 0xc0c7fc91, 0xd3faffd0, 0xf51fd0f5,
+       0xbe41d94f, 0x18f3a09d, 0xd2c66741, 0xb62f6f49, 0x3da8fef0, 0xa39ff932,
+       0x37c246ac, 0x031b8f8c, 0xc625bff7, 0xa2cf4007, 0x4de3321c, 0xb8c2469b,
+       0x86260931, 0x815be876, 0xd8191365, 0x925f6fc9, 0x5b0ce9df, 0x196b054f,
+       0x3970fe88, 0x3baee933, 0xca3ebc65, 0xa63ebda2, 0xf419fc60, 0xb4d8c61f,
+       0x93be55d7, 0x84ef82ed, 0xe87fd8be, 0x804e0fef, 0x30ee2df5, 0x257cff92,
+       0xc20afc7d, 0x5f9d232f, 0xcf01deaa, 0xf2b02cbd, 0x1af7e5f2, 0x46af9033,
+       0xf42d6c48, 0x591cbbdf, 0xbe08271e, 0x3be80c64, 0x49df4430, 0x7d3da58e,
+       0x23c9f714, 0x23e9ef6e, 0x8f5c5ffc, 0x0a9ebe7d, 0x867cf224, 0xe5e86ede,
+       0x1bb29be6, 0xcc1e8713, 0xfda95af5, 0xee1fb615, 0xaf577ae4, 0xe276f427,
+       0x0d7e9d7e, 0xc68307d9, 0xf42fdc3e, 0x984ec848, 0x8d7c4ec9, 0x7b24f0f1,
+       0xfc187884, 0x7797c218, 0x38714c98, 0x71535bf8, 0x929c515c, 0x5c60ae54,
+       0xf5162fdc, 0xee7123d9, 0x3cb0f619, 0x2d1da0d4, 0x3d1bd406, 0x369319f9,
+       0xabc6a34f, 0xfebe76d5, 0x43ef3b72, 0x7e714abc, 0x3aabfe5f, 0x6af79abf,
+       0x4f3c672a, 0xe9fdc890, 0x8315037e, 0x81c0e30d, 0xd7a406e9, 0xf58b810a,
+       0x4e8bd3ab, 0xb7df7f01, 0xfd16a15a, 0xbbce7c70, 0xf5d6862f, 0x821ae4ae,
+       0x8a5eb772, 0xecdb5fcc, 0x2e60efc2, 0xf5eaffb2, 0xe87d1545, 0xd7ccbb69,
+       0x5cccf0f5, 0x6ddecff4, 0xf5172dbf, 0x6f00bbe7, 0xd905fd10, 0x7e79f091,
+       0x1e4203d5, 0x44ec2c7f, 0x7ffb88a2, 0x7d027282, 0xcee76690, 0x8b975c22,
+       0xd5bee6e4, 0x74fed455, 0xdfba2af5, 0xf7a7cf60, 0xba8fcadb, 0x4efd03fa,
+       0x1d92346d, 0x0d766458, 0x4ee78448, 0x3f940c59, 0x5710d938, 0xaf0e3bb9,
+       0x17178a33, 0x09e13c3d, 0xaf5e586f, 0xd651d701, 0xd9b73af7, 0xd77f4eaf,
+       0xb478ceb1, 0x78fc3d47, 0x7e3d97ac, 0xf1829ecc, 0x8e2a6761, 0x01c148f3,
+       0xeab8283b, 0xc3cf0dce, 0xb9ce25fd, 0xd5aef90d, 0x5ca106cc, 0x7b70c6b4,
+       0xbb7387a3, 0xabf5b3e0, 0x703e0a07, 0x7c029d14, 0xeb7e172d, 0x22a768bb,
+       0xe277fdd0, 0xf3ab68b9, 0x7fa27677, 0xb4e7f91c, 0x8d97e00e, 0x11a7cef1,
+       0x76c3884e, 0x8d2c3b63, 0x56ace3e7, 0x4e87d09b, 0xae35c789, 0xf908f63d,
+       0x3bf2beb6, 0x25a6387a, 0xf3eb3c71, 0xe6ab6a3e, 0xf5880e7d, 0x34dbb2cc,
+       0x95a538f9, 0x7be52339, 0x34cc93f2, 0x34e9dd3e, 0xcb7d2ac6, 0x1dfba95d,
+       0x5af311af, 0x0851cc55, 0xad4dda4d, 0xcaef98ed, 0x835bed18, 0x44a6b0f9,
+       0xa37a1cbd, 0xe7eb1e31, 0x617aa436, 0x5dd06a5c, 0x4e38066e, 0x5c12a427,
+       0x0d61ac69, 0x6dd4abd2, 0x1e9745a0, 0x6a49f188, 0x4a430cf0, 0x09047e84,
+       0xfb79468d, 0x027dd599, 0x616c37f1, 0x82b33ac3, 0xc52f42f9, 0x77246771,
+       0xe3f81d9e, 0x8898c1cc, 0x5505ee7e, 0x4c8aa56e, 0x8fa5e934, 0xa50f089b,
+       0x07343f8f, 0xfc7d2de1, 0x9614b23b, 0x324f88ff, 0x0733f8d1, 0x3e51e597,
+       0x5628ade2, 0x5e7bdf98, 0xf79f1273, 0x2ef7c0b4, 0x33be6473, 0xcd5f4924,
+       0xff04ed4f, 0x0da7ab46, 0xfca16549, 0x05dd7d59, 0xedc7d3d2, 0x42fc3edc,
+       0x09943d6e, 0x42c5fcf8, 0x2fbc40e6, 0xe52b727b, 0x5b997755, 0xf5c0edc7,
+       0xe6181bd4, 0xfa1c0e57, 0xf44ca1fd, 0x432a170f, 0x79e83fd1, 0x137b63be,
+       0x0d45ff5e, 0xcff88a1b, 0x61203df0, 0xe8e3e59e, 0xc7d7c216, 0x35b1444f,
+       0x47a5a4b0, 0x1f7dc75a, 0x0d6b9bfa, 0x7e8af50c, 0x9326f0dd, 0x80db1d21,
+       0xd38230c9, 0x4a9ff51f, 0x332c6077, 0x1ba543d2, 0xb4276fe2, 0x8e789e07,
+       0x3ae157e0, 0x9e10a09d, 0x73b93d97, 0x6649f21c, 0xf8c25dad, 0xabeb855f,
+       0xd1af89da, 0xa525967e, 0x79fb217c, 0xfb045243, 0x8f9bb7a9, 0xc66f39c4,
+       0x3f64aef9, 0x74fd090f, 0xf7ef126d, 0x0c3a2dd4, 0xd3d34794, 0x57bd80e5,
+       0xd2627b1e, 0x9fb1e455, 0x7de9dbb5, 0x76f63cfa, 0x2da3d733, 0x4a773676,
+       0x29d87904, 0xea6c35e0, 0x4c5da336, 0xf5114bf6, 0xfdcad592, 0x739bd039,
+       0x1ceac293, 0x011abd7a, 0xfc718bbf, 0xfb023bb5, 0x62715470, 0x5dba2c41,
+       0x71067dd7, 0xd4f7846a, 0x5654f90b, 0x4f50b502, 0x47d23036, 0x64f1f7d0,
+       0xfd42405e, 0xe0f0f403, 0x37aa57bc, 0xa9ca1305, 0x97d6a4ce, 0x9a48274e,
+       0x925376f8, 0x3779ce3a, 0x87d397ce, 0xf4235fbe, 0x8bdfac0b, 0x92bc907c,
+       0x6a28ea69, 0xc1b924fd, 0xd14b992b, 0x8bca30ac, 0xd7b925e6, 0xf75c6098,
+       0x06d8e648, 0x5b6a84fd, 0x7b4bea39, 0xeb1da38d, 0x79674d2c, 0x76e9bd1e,
+       0xf34b5be6, 0x7732f5f0, 0xf913df3f, 0xf1e16e9c, 0xd4576abc, 0x6bbd81f5,
+       0x3d70e249, 0xf639f498, 0x2b946bee, 0xab9417df, 0xdd0cbe27, 0x7482fa9f,
+       0xa2596057, 0xdf7fa26e, 0xff4b842e, 0xdd93e03e, 0xee4f845f, 0xc975b2fd,
+       0xc5abe958, 0xfaf1bdc9, 0xfe08a4a7, 0x8689c6fe, 0x93ae3281, 0xd92238c5,
+       0x7149e3bd, 0xe87d74df, 0xa6b7a0b8, 0x1a7f043e, 0xb5b1fe7f, 0x41af578e,
+       0x52315f38, 0x0fd8f69c, 0x6748cd3b, 0xc2a0deb5, 0x3814f9eb, 0xd743ec12,
+       0x7b6a06a7, 0x952fdee4, 0xbe57dc60, 0xe7f932ff, 0x929fed5d, 0xf3a5de7f,
+       0xdef7d5cf, 0xf0007c81, 0x91c6318c, 0xc2d85cfc, 0xa64608f3, 0xcc26ecfc,
+       0x31361f97, 0x4ffc429f, 0x17ad0bfe, 0xc5b017fa, 0x299a4ff1, 0xe2f25cde,
+       0xb80161ae, 0xc0c23094, 0x257c3094, 0x1298633a, 0x4aa4af86, 0xe29fa6bb,
+       0x4f8cd4ca, 0xb9a7eaab, 0x4ebee19f, 0xa6ab3f73, 0x69cfd358, 0x3e3341b8,
+       0x7866ec0f, 0x5e3bdf3f, 0xf37fbe33, 0xb0bf4d54, 0x78cd36e5, 0x0b0675e6,
+       0xc50b9d60, 0x3cd9af3a, 0xc41e335f, 0xb3758027, 0x1fcc8245, 0x587b1f6c,
+       0x50b20302, 0xf5ae43e4, 0xb7ccd32d, 0xd79b45a8, 0xde023c20, 0xec49b716,
+       0xcdb788e7, 0xfe35fbda, 0xa0b29a07, 0x5ed3ea5d, 0x2cf5865f, 0x7b53f909,
+       0x6b8319fd, 0xd711c605, 0x24f36b26, 0xf7afa457, 0xd7d12b9a, 0x3bf1c011,
+       0x2d6fe4ac, 0xc9017179, 0x96ba5451, 0xcc4ad1be, 0x762fe2e7, 0x1f775da0,
+       0xfc1cfbfe, 0x7e5a1d59, 0x664fe3d0, 0x00b287dd, 0xe49f7aae, 0xf8deb008,
+       0x95b6da5b, 0x4fe3d4e0, 0x3ac9b78f, 0x758fed7c, 0xc32e4d4f, 0x234ac9ba,
+       0x255899d6, 0x6c5f57af, 0x874868fb, 0xf52ba9a2, 0x2db94755, 0xad5d4239,
+       0xd768eb0b, 0x47502fb3, 0xe209ffdb, 0x962c0a21, 0x46c9e809, 0x753d2c38,
+       0xdd50e8b3, 0xd4b7af44, 0xf2f6f416, 0xa1e7d264, 0x783ae37a, 0x1bc2587a,
+       0x8a13ca2e, 0x1fba93fa, 0xc337dd45, 0xd53af8e2, 0x2b0f0079, 0xe5099e70,
+       0xdf8c58f6, 0x83b81e76, 0xdf7511e2, 0x7c3c920c, 0x4c5f987c, 0xff15b3fa,
+       0xf4f64199, 0x9edcc9fb, 0x6aad83de, 0xcec0594f, 0x69ec2bdf, 0x75a8f35f,
+       0x695abea6, 0x66ea919f, 0x638c52dd, 0xfe7d045b, 0x8c57f270, 0x95efde4f,
+       0x39387d7f, 0xf3b93e3c, 0xebd421e2, 0x9247f780, 0x7b008fc9, 0xe5ec8529,
+       0x49e362cf, 0x345fbade, 0x0b81aefa, 0x824a2c17, 0x0f5428bd, 0x937bc3d3,
+       0x0e48b325, 0x75f8a3ab, 0x62a69af9, 0x4afcbfee, 0x38feebac, 0x8af76f6e,
+       0x2f1747be, 0x5c799a78, 0xe350d20c, 0xf613f30f, 0x5c795b26, 0x17be5b1c,
+       0xf22adee1, 0x12f94d0a, 0x9249afbd, 0x9ddfaec8, 0x6bf74150, 0xd8fdcb93,
+       0xedcc933e, 0xa9f45ef4, 0xc7e96da0, 0xbec451e1, 0x55fe7512, 0xe4aafc62,
+       0x26f76a0a, 0x64ff84db, 0x6de90ebb, 0xbcd27589, 0xfae46366, 0x9e64beca,
+       0xdcc0280f, 0x4e484a64, 0x58f5fcd4, 0x5f30c7a1, 0xe4c2451d, 0x3526389c,
+       0xc666af94, 0x27335e9b, 0x44b53c8b, 0xdf513b8f, 0xb1d05b7c, 0x73b5bcaf,
+       0x9600eda0, 0xade77a45, 0xf311e903, 0x94b18ed6, 0x652786b7, 0x7f3e975c,
+       0xb588748d, 0x6fe1e487, 0xaf753dc9, 0x6d37d46c, 0x8c3af766, 0x019fba43,
+       0x0f2e167f, 0x5e5275f4, 0x7f47707b, 0x4d1bc607, 0x159f6cf9, 0x630d67f9,
+       0x75b6efe8, 0xc346d61a, 0x665e8dfd, 0xb723fbc3, 0xc96638f0, 0xcb81c566,
+       0x687c4134, 0xf7c90e2d, 0x091392bf, 0x539d6d7f, 0xbdcf31db, 0xa3b33a71,
+       0x2d616859, 0xbfd1e2a3, 0xc622c2d8, 0x7e089f51, 0xcfbe509a, 0xd29ff288,
+       0x81147c0d, 0x73249f4e, 0xbef903fe, 0xbc317284, 0xd7917ddb, 0x207eb895,
+       0xdaf18715, 0xdff90301, 0x8d3fe7fa, 0xe42ff51f, 0xc8bec183, 0x2b029bf9,
+       0xb1c1b7e7, 0xc705392e, 0xa334eeed, 0xeaa25a1e, 0x260685d3, 0x09a7dd03,
+       0xc2db4eba, 0xcbb021f7, 0x54667d9f, 0xf3462efd, 0x4b13d433, 0x987d5ba6,
+       0xcfe2590f, 0x2e5c12f7, 0x1e3df289, 0xf61711ff, 0xda969497, 0xbe76fe30,
+       0x03d3a4cd, 0x5c6365c9, 0xb4ecc91f, 0xaec81faa, 0x64fd5326, 0x02b7e0aa,
+       0x827042ab, 0x0b18dede, 0x65b25ff8, 0x87dc3ecd, 0x307ffaf2, 0x331c93aa,
+       0xc9c30f76, 0x56720066, 0xb32b6315, 0x987c62ea, 0x8ba661d7, 0xc29fbc79,
+       0xf7a12d7b, 0x48bff0ce, 0x626639eb, 0x51f00b5e, 0x155bded7, 0x529b5ff4,
+       0x6be20e2c, 0x6e3c5f51, 0x464bdf74, 0x47aeee45, 0x63fa66d0, 0x61bfb86d,
+       0x7f71999d, 0x40e310d7, 0xeb8a4ffc, 0x619f3194, 0x1196ee4a, 0x38528b8f,
+       0x27e7d17e, 0x11853fff, 0x06598c9d, 0x853cb74e, 0x9b40acfa, 0x629f1c97,
+       0xcc197210, 0x6293ebc6, 0x1c54ae8f, 0xdf14b780, 0xfaf41978, 0x2ba384a4,
+       0x2a3fa1f3, 0x1978eb65, 0xd6527ef8, 0x41f28fd1, 0xd9498c05, 0x8e83fbc6,
+       0xfa0fd47e, 0x0ff949df, 0x6491bfde, 0x794b8d82, 0x08b7bc7c, 0xe669b7e7,
+       0xf5c8cc7f, 0xc6b6d5cd, 0xc4434328, 0x9a8a63bc, 0x7c2666f7, 0xc7ffcb8f,
+       0x5d7f6863, 0xa7063eea, 0x018fb349, 0xfc02c639, 0x15f04136, 0xfca78e4b,
+       0xbf4178d5, 0x1da07209, 0x0258379f, 0x586bdf84, 0x06f90da3, 0xb3e9b5b0,
+       0x0fefde92, 0x7f2d3bd9, 0x9dd04e49, 0x02096f40, 0x7593e434, 0x1a3b98ab,
+       0xfed081fd, 0x3fdf0309, 0x7ef85cc1, 0xfdf51e15, 0xd202e0bd, 0xb870f6ca,
+       0x2a3cd0b6, 0xa3435d5c, 0xaa4f28bc, 0xeae1555d, 0xc97fba92, 0xa64a1480,
+       0xb5d2126d, 0x2b9ddacb, 0xe1ef3f41, 0x4fd40984, 0xe4a5fee9, 0x389beb08,
+       0xd94eef1d, 0x46eb1e3b, 0xbbce8d07, 0xcca36e51, 0x33511f7c, 0x9ef02fc6,
+       0x5edc52fb, 0xdf0233ac, 0x77c80239, 0x43d26639, 0xf9b54ba3, 0xcf827592,
+       0x3b7952a2, 0xe1a5aa26, 0x67a5f008, 0xc0d6c4b7, 0x8be5cf78, 0x931fb466,
+       0x4ecc27fc, 0x9f77eb68, 0xaabea330, 0x53cc3ec7, 0x511cc5bf, 0x1aa5256f,
+       0xfc6bba55, 0x033983e3, 0xfdc64dee, 0xaa250b27, 0x27b1de10, 0xeff60c71,
+       0x64ab8798, 0x769bb6ec, 0x9cb6418e, 0x17bf6aed, 0xf3acb9db, 0x99caaa20,
+       0x5fc6a36e, 0xab13559d, 0x376777f1, 0x73fa6924, 0x203a805b, 0x655773d7,
+       0x300ae369, 0x4ccf088d, 0xfd43fa16, 0x38e82556, 0x10637d33, 0x74cd25f7,
+       0x619dbc9b, 0xaff24df3, 0x7708ed91, 0xf520e483, 0x3e0a65eb, 0x10af8b37,
+       0x5e1bd95a, 0xc6d31ba7, 0x55f52393, 0xaa038a16, 0xad780fb1, 0x14fa35ae,
+       0xa660f109, 0x89369efb, 0x7dc47bee, 0xd6a48d4f, 0xcf1ec987, 0xdace3015,
+       0x6d0c647b, 0xbf7e11ef, 0xaadcef0a, 0x8fc433ca, 0xd757dfc2, 0xfd80a555,
+       0xca3feb85, 0xf384c379, 0xc49efdce, 0x5d69f292, 0x78353aa7, 0x3767f6d4,
+       0x758cfb68, 0x318f309a, 0xfaf69577, 0xafc2294b, 0xa106c41f, 0x229abd3c,
+       0xa25f24c9, 0x1bce61ff, 0xbe0004af, 0x51d746a3, 0x735acfe4, 0x4763ea80,
+       0xabea6e8d, 0x3d7ae1f7, 0x3f03b923, 0x2258e481, 0x72675cf9, 0xbfd1cada,
+       0x6f8893ae, 0x3f30b167, 0x9e343f22, 0x7ddec6fa, 0xbbd0aa53, 0x5495aed1,
+       0xd92bdba7, 0xa34b809e, 0xfe8ca765, 0xea3ebae1, 0xee54e674, 0x20c2bd17,
+       0x06b807aa, 0x9d029320, 0xf04b4c06, 0x03bde179, 0x8bcf30fe, 0x1280ff7e,
+       0xe50503e0, 0x099bdb9e, 0x02dcdec2, 0x85fa277e, 0x55ad8c03, 0x37afdfa4,
+       0x0bbf48db, 0x0beaa43b, 0x76b5afe7, 0x61f64268, 0xd96e4b8a, 0xea3cf1bc,
+       0xcefe82c5, 0xbe0007e2, 0xfbf9a2fb, 0xf923dbef, 0x7d553f70, 0x9fd221d1,
+       0xf81ec069, 0xa174fade, 0xfbb4db47, 0xaf50d2e8, 0x2c4cc321, 0x5866f7a2,
+       0x92776e54, 0x1502941e, 0x3f40cf86, 0xfef789a5, 0xf9215b36, 0x2ad65d4f,
+       0x9873bae1, 0xf1da0d77, 0xa610a07f, 0xf6abda84, 0xfa4b47f3, 0x14bac43a,
+       0x3bd3f3f4, 0xb20714cd, 0xca57f36e, 0xff9ef5fb, 0xfa67c8c7, 0x54f961f9,
+       0xebc50f3f, 0x7f31e397, 0xfedec773, 0xcd4fbb9f, 0xe3c6d168, 0x1e369b26,
+       0xab50309f, 0xb439267f, 0x88f2677a, 0x53fb9afe, 0xf734839c, 0x689655a7,
+       0x375c33fa, 0x5adfc66a, 0x8fd34a35, 0xcbaf1f4a, 0x2df3680f, 0xf9b503b1,
+       0x9b43ab16, 0xf17a895f, 0xf0092a99, 0x3b78b662, 0x668780dd, 0xf6118d90,
+       0x14191d90, 0x8da1830f, 0xc38e8929, 0x546879b6, 0x39a4f900, 0x51e7c793,
+       0x1e99de2f, 0x092c7980, 0x1a582c3b, 0xabe48df9, 0xa02894c0, 0xd7bcea89,
+       0x37f5a3dd, 0x5cb8323b, 0x54b4eda9, 0xac34fcf7, 0x64a93c63, 0xc8367f71,
+       0xc61896e3, 0x2d67a2fd, 0xbfe917e4, 0x2ecd693b, 0xe7c54aaf, 0x3d5271ee,
+       0x1b31b587, 0x99b719e6, 0x59f57e45, 0x04573d33, 0x4c33bc8e, 0x72a74fbe,
+       0x5721fb7f, 0xbf9c38c5, 0x16560fde, 0x3bf369e5, 0xd69bac66, 0xd1e3dbfb,
+       0xbd710d9e, 0x5e3cc663, 0x73b0bae8, 0xd60c7772, 0x6ad77e7b, 0xfdefb88c,
+       0x075e54e1, 0xfaf4243d, 0x71433bec, 0x90b0f953, 0x93bd9ebe, 0x0cf66faf,
+       0x2c13e933, 0xdbd244b8, 0xe77ba7a0, 0xc1edc2b3, 0x517bbe4d, 0xd6fe8077,
+       0x9d3b9b8c, 0xa0d54bc7, 0x418e51b7, 0x67ef6b9f, 0x017e9137, 0xdeb9ae7d,
+       0xcfa3da98, 0xe7833e8b, 0xef22b98e, 0xc1963fef, 0xdcc7f9eb, 0x0fff08a3,
+       0x4fd11e01, 0xde17a87e, 0x84af3e38, 0xf690a7af, 0x8fd37461, 0xf5c1953b,
+       0xe87d53f8, 0x5d050feb, 0x62c149b7, 0x571ea654, 0x2cedf10c, 0xa9c27b8b,
+       0xc7c7a412, 0x98f7584d, 0xd0c48cfd, 0xfda5fece, 0x6977da45, 0x153079de,
+       0x5a7ac3f7, 0xe032a60f, 0xb2935abb, 0xe078fd06, 0x3dfa070b, 0x82016df5,
+       0xa4b5aebf, 0xb5d7af1d, 0xc5540e49, 0xc7e7dd9e, 0x67593ad2, 0xb721d613,
+       0xd3d701f5, 0x4dec8ec2, 0xb8f5a855, 0xef689de1, 0x7cf94777, 0xe801f212,
+       0x8f6b8425, 0xbfa05ac4, 0x6225bd6d, 0xe05bb9fd, 0x337ac0fb, 0xf0b557c5,
+       0x50e3ae3c, 0x05b321ce, 0xac2768f9, 0x1c75c24b, 0xf38b1199, 0xf43134af,
+       0xcef8542f, 0xe38f04e6, 0x085adffa, 0x5f5c0e01, 0xf848d0b7, 0xc8a56b7e,
+       0x51322e4f, 0x3352e67f, 0x85feebf1, 0xef309b27, 0xff2d56f7, 0xa2d4626e,
+       0x701e507f, 0xdd4952e6, 0x67e1a6e7, 0xfcf55f95, 0x5edfe7a9, 0x75735a7c,
+       0xaa56fa7c, 0xb107ef88, 0x81e76821, 0x90d263ee, 0xdfe6ee7f, 0xde5d5547,
+       0x78034a6f, 0x1cd935fb, 0xb06cdfb8, 0x2a6f77d1, 0xfcfd89ea, 0xaddad0fe,
+       0xca37d712, 0x5987286d, 0x41b666cd, 0xfee23e42, 0x2f4887ef, 0x4b7683aa,
+       0x05ef14b1, 0xca5ea1fb, 0x319bbf57, 0x37dc2ab1, 0xf49ee603, 0xd2e7e0cd,
+       0xe3086eb7, 0x7e085fdb, 0x20e0f554, 0xa4ef7333, 0xe66b407a, 0x29e79814,
+       0xe4e7af13, 0xfb0af98a, 0x829d8f77, 0xce349d75, 0xbe0b1f2f, 0x4c96fb51,
+       0x9eeb1f3e, 0x649df845, 0xbf1f78e1, 0xeb8d502a, 0x5f766038, 0x31387d46,
+       0xb45a8df7, 0x5efdcd73, 0x223ca22a, 0xa9cec853, 0x91fef9f1, 0x01596def,
+       0x36be8deb, 0xbd18e886, 0xf21b01f7, 0x69617471, 0xdf023b9a, 0x92e7ada9,
+       0x4720dcc2, 0x51fa97f5, 0xeca7f6ab, 0xfda6633b, 0x63f3fee4, 0xa52e4e49,
+       0xb9f575d3, 0x076e42cb, 0x6aa87d8b, 0xb4f4135e, 0x3438a23c, 0xc303c54e,
+       0x086581dd, 0xaf44e3cf, 0xa1b3b715, 0x00febd3c, 0x7b528fdf, 0xf3079a44,
+       0x9a726adc, 0x6fdf00e2, 0xc04d5424, 0xad2f37fd, 0x003dcc66, 0x9859fff7,
+       0x10fb8cdb, 0xae0fd46d, 0xd1fea74e, 0x6fb50ad5, 0x1a4a5c58, 0x40e333cc,
+       0x69e52143, 0x55761e73, 0x3aba7bc0, 0x6daf824c, 0x3eb52f84, 0x646fd174,
+       0x717fb816, 0x79ebc4b7, 0x9739fe02, 0x893b9932, 0x7df1b7b1, 0x55ba9ef0,
+       0xe77d267f, 0x163f39a8, 0xb5a1a2e3, 0xefb09a27, 0xb18ff559, 0x071c4fe8,
+       0x3d7e41fb, 0x12e9f7f8, 0x662391ea, 0x7d57f7dc, 0x3cf34ec9, 0x8b1ee865,
+       0x417de5f2, 0xf1d43aa2, 0x34e6f3b6, 0x82189f6e, 0xe7d605b2, 0xa5e7f804,
+       0xc7933cf1, 0xe9c0d43f, 0x2ae3c05b, 0xd7ed0fc1, 0xf48f1a7d, 0x5e52acb0,
+       0x3f9f11bd, 0xbf28646c, 0xe3ba2a1b, 0x38f4916d, 0xf006cbcc, 0xbfab6075,
+       0x16f6655f, 0x2ab9e03a, 0x5b7de443, 0x027f05b3, 0xc03e29a6, 0xe515293f,
+       0x86cdff99, 0x29d82525, 0x80c409ee, 0x8ff6cf1c, 0xdb63233a, 0xb477b120,
+       0x277b18f1, 0x8bef6fcc, 0x5b68bf0f, 0xa1c9f38f, 0x2c8dc63e, 0xb8c20fcc,
+       0xefde6991, 0x4e6ff1e5, 0xc23b9a41, 0xa0e47b3a, 0x40299333, 0x4066faaf,
+       0xfbf20977, 0xdb9ed475, 0xe50523f3, 0xfdd312c7, 0x3609da30, 0x467140c0,
+       0xffeb579d, 0xb83c84b8, 0x6773ff84, 0x825e369a, 0xfa1568b8, 0xc5171043,
+       0x2c384163, 0xa75fd25e, 0x7282c978, 0x041def05, 0x023a79f4, 0x1519d5dc,
+       0xcf7e403f, 0xe7c42d65, 0xf91cf80c, 0xe6cebf4b, 0x16d79134, 0xe5133d72,
+       0x8db7f91a, 0xde7eb5cb, 0xcde51925, 0xf17acf08, 0xbe2f6e7d, 0xd5f3e0c8,
+       0x2f84666d, 0xe13b66cf, 0xecdb2ce9, 0x3cbe00aa, 0x9e60700b, 0x8ae5cbb5,
+       0x8dbac44d, 0x8f6b15db, 0xfa81e90b, 0xdcf431cd, 0x49a982fa, 0xa8ffa0f3,
+       0x6d73fbe0, 0xe7882ca3, 0xfcb99b39, 0x1e3befa9, 0xf2849998, 0x36ea6654,
+       0xb67ee03b, 0xfa3c44ff, 0xa67b657d, 0xf61ca125, 0xba4b6705, 0x1dd57380,
+       0x7b77f813, 0x85870b60, 0xb59e72ea, 0x7fe23301, 0xfc462af9, 0x5fecfedb,
+       0xcf8e51ea, 0x686d63f9, 0x8deecf37, 0x45f7d2f5, 0x0cf9442f, 0xde1dc512,
+       0x676bd004, 0x90b79d4d, 0x68c7b97f, 0xf3ceff43, 0xa30f07c2, 0x8d9e7a3c,
+       0x2d8f4f42, 0x3ce8fff7, 0xff5abdda, 0x10f233b8, 0x6ffeffda, 0x55ba8795,
+       0xa45f9177, 0x6d583ff6, 0x3d1ea171, 0xb13d7327, 0xf9176dbc, 0x5f2fcbbb,
+       0xf0f5821c, 0x7bff7bb3, 0xcf35ea18, 0x430e2e1f, 0xfe79e67d, 0xefbc30e2,
+       0x21b62e79, 0x9c92bf92, 0xaabc2469, 0x35ff32f6, 0xfa1f9359, 0xfc8390a1,
+       0x7eca96c6, 0x23b2bf80, 0xaf0f29d3, 0x342b2fde, 0x650477d0, 0x5a4e8faf,
+       0x635cf614, 0xebc4ae50, 0xc74647a5, 0xcbe30c2e, 0x35261915, 0x795574cf,
+       0x0f2bbc1d, 0x04e3cb0b, 0x1868ce0d, 0xf3283eb7, 0x9235bdfd, 0xf00be30f,
+       0xf1cff45f, 0x2696cbef, 0x9f9036f9, 0xb8309ae0, 0x8e85fb14, 0x15aa0a0d,
+       0x3082c1cb, 0xd066693f, 0x3e028810, 0x0547f2aa, 0xca0fbfc8, 0xfc2fa827,
+       0xdfe739a7, 0x114be6b3, 0x8f0333f2, 0xae3d418e, 0x9fc0d3cf, 0xfd56e115,
+       0x7706eaad, 0xcfafc20e, 0xfaadccdf, 0xf487e50e, 0xa0fc9bf9, 0x8a54986c,
+       0x2b5e7b75, 0x64dc1f5d, 0xfd517941, 0xeedfa450, 0x2cdff208, 0xab9546e4,
+       0xe881a0c6, 0xb0ac18d2, 0x46bb4014, 0xe60ddfdc, 0x692fbf14, 0x027b4ff4,
+       0x978d08f3, 0x0c1d8d6f, 0x6d7c6af8, 0x4befc32a, 0x96156cba, 0xf2ee7c42,
+       0x8a332c77, 0x7fa2fc42, 0xfb9d2b9f, 0x213f2165, 0x172bddb2, 0xd977fdef,
+       0xffd39bbf, 0x883fd877, 0xa7a747c3, 0x8b3e1c50, 0x1c7849e7, 0xaa1bb7ae,
+       0xbde7563e, 0x71cb9d33, 0x867c7d6f, 0x97881bfc, 0x99df1f49, 0x6cb8d0ae,
+       0x8a2494ff, 0x9e9b5fa3, 0x9ef5c4a4, 0x30ecbfbf, 0xcf7a8bd8, 0x1e71faaf,
+       0x05a0f3af, 0xdf271ce3, 0x2e99e67f, 0xd55f7ed1, 0x24b8f3ef, 0xd53dc7f2,
+       0x538e1f26, 0xe74e0ae1, 0x4e19d579, 0x0a5a2f93, 0xffaa87f9, 0x21df73d8,
+       0x9fd57dd1, 0xa0c6fd54, 0xa771e78b, 0x6ffbf297, 0xe9b5dc58, 0x440a0f58,
+       0x91b2f5d3, 0xea703afc, 0xdfe82cc1, 0x91895dfa, 0x527f0bfc, 0xbfbd53e5,
+       0xffdfc179, 0x6feff773, 0xcaa9fc11, 0x3e4eae59, 0x68f5fb54, 0x3d53c71a,
+       0xb424efda, 0xfc689fdf, 0x60bcfd72, 0xf4e9bdbf, 0x4be7a31c, 0x915d975f,
+       0x98bb73e2, 0x07e905bf, 0x40f0766d, 0xc39bc239, 0xb6ffb482, 0x2ebabb2f,
+       0x0fd1a0c3, 0x0a8ffbfa, 0xf24af1bf, 0x59bffcfc, 0xef4b9f9e, 0x5ffdb7a9,
+       0x7e3dcf2d, 0xffdf1f61, 0x07946755, 0xc631fe90, 0xca396086, 0x114c9fdf,
+       0x113fd3eb, 0xb9c41c7e, 0x983e3e1a, 0x5c603663, 0xf9e1a9e4, 0xe544e681,
+       0x5e5f8a55, 0xf0bed234, 0xa20710e5, 0x92ecb6ff, 0xf45ada8d, 0xf59da193,
+       0xea1311e4, 0x5a355997, 0x77319bf8, 0x9edfcf8b, 0x79bf43ef, 0x794d1b36,
+       0x44fed9a5, 0x6eb3ee1b, 0x843d694e, 0xc27de572, 0x3e113ca8, 0x6275fd7e,
+       0xdbe785bc, 0x5f69126a, 0x01f9d325, 0xfef41bb3, 0xb82fd6be, 0xfa89e451,
+       0x6f9e0ff2, 0xe57ae68f, 0xbce491b0, 0xd74bf31e, 0x73f66633, 0x1559e0bd,
+       0x8c13794d, 0xf7ae10d7, 0x0b3e4957, 0xc6275dc0, 0x29072fbd, 0x34f544ff,
+       0xffc67218, 0x25ca2a40, 0x47eb6a73, 0x4ebf8f75, 0x475f537a, 0x7516efb2,
+       0xd1ba9ea1, 0x75fb0930, 0xa1a64f10, 0x9328a97f, 0x9f00ff11, 0xea997f66,
+       0x7c385c17, 0x59cfe292, 0xa7fd787b, 0x79a8fd57, 0x891faf3c, 0x3cfa1bfd,
+       0x43bcdce4, 0x2b94b307, 0xdbea8dd7, 0xae30988e, 0xe87fe5e8, 0x0cc48efc,
+       0x4f319e6d, 0x3cdc79e6, 0xfcc364bf, 0xe3c09e54, 0xe431f5f0, 0xdbfd8f57,
+       0x07d424c2, 0x4dce9d2a, 0xf73d78e1, 0xb4e547d6, 0xb26fe045, 0xf5d61a2d,
+       0xff2b5bfc, 0x8afbc59c, 0x56e7c145, 0xed77d2c6, 0x1623bb7f, 0xb43cfaf1,
+       0xb9f35fb8, 0x7cc47263, 0xb7a126e4, 0xc80e1ec0, 0x8f787b40, 0x60cb4bc8,
+       0x7ca1ad0f, 0x5db9fe8e, 0x0866b9e2, 0xb98f2853, 0x9bf7d787, 0xa9e3dc33,
+       0xf63f48ff, 0x4e87f904, 0x02ef3bca, 0xd17cc6be, 0xd62c5820, 0xc31b7f9f,
+       0xd45eb11a, 0x897ee29c, 0x8311e8e4, 0xcf047282, 0xbbc99d53, 0x88fb2153,
+       0xe7ac2f29, 0x649b010c, 0x7c0d7da1, 0x8275c47f, 0xc710198e, 0xa0093d62,
+       0xe6f58e99, 0x33aea241, 0x38c98624, 0xf7267dff, 0x8eb16b86, 0xd63b2ed4,
+       0x92381090, 0x7d255cf0, 0xf272497d, 0x675ab8ba, 0x7de3eb52, 0x7c2499d5,
+       0xc39fdf0f, 0xff624aeb, 0x624f5a9c, 0x915175df, 0x0688dd6b, 0xf6eb7186,
+       0xd775f66c, 0x22d21a91, 0x807e79d4, 0x33fc8df6, 0xc3715d6d, 0x4f89a7c0,
+       0xf13d6cbf, 0xd5f674f9, 0x82f74ff6, 0x0f47e39b, 0x85e26977, 0xfeb78a54,
+       0x64f15ff9, 0xc917fd67, 0x4775761e, 0x1de520b1, 0xdd9e793b, 0xea43bfcf,
+       0x252db882, 0x9dbececc, 0xfb9c10a6, 0xff88a3fc, 0xc7470777, 0xb0a378e2,
+       0x9b5febe3, 0x1fbf0d3e, 0xda6506f3, 0x9e160397, 0x41ddb0e2, 0x96fd0cb9,
+       0x1b2e91af, 0xcfac23d3, 0x93edc312, 0x45ca8e5e, 0x833ca45e, 0xb7a8c7f3,
+       0x59e5fc78, 0x3628ebc9, 0x953c17a1, 0x8783d266, 0x35255272, 0xa9169e7f,
+       0x9ba7b2ce, 0xa5ecc6ec, 0xbdabed12, 0x5b4b3aea, 0xba5bb0bb, 0x58e574fc,
+       0xe57d9bd2, 0xe6eac3ad, 0x553bfb9a, 0xe79837fd, 0xd867fbaf, 0x86f6bd68,
+       0xb2c8e5a1, 0x46bffaea, 0x2333b83a, 0x9c6be1d0, 0x37d66d7f, 0xa575c75b,
+       0x37f0b37e, 0x3ff3c37f, 0xffcf0dfc, 0x8b37ea6c, 0xfd246b7f, 0xffce35fa,
+       0x9f8c37f1, 0xf808b48e, 0x1f757ff9, 0xafcebe80, 0xafa017df, 0xb8bd47f7,
+       0x7ef78bc8, 0x0eec6d24, 0x7f896b40, 0x55024ab6, 0x6e3e272d, 0x713a3b41,
+       0xad83af24, 0x6df16d1f, 0x03fb4295, 0xccad7c54, 0xada9f1e6, 0x0937bce8,
+       0x0ceb9cf0, 0x3cc24e8e, 0x714648d9, 0x38b45770, 0x65b64d77, 0xf87da14c,
+       0xa0a98cb6, 0xf8fb9b37, 0xcc57298e, 0x691d97d7, 0x46af2ecd, 0xedd3677d,
+       0xdddb5697, 0x6b68ff22, 0x996dfbe3, 0xa54c64ac, 0xe8192af7, 0xe01c250f,
+       0xcc03e3d7, 0x52e095b9, 0x3c52a7f2, 0x7c23e4a8, 0xaf7a8a0f, 0x7c80fc7d,
+       0xc1db47cc, 0xe07ac42f, 0xa4175803, 0xe346d678, 0xcb9df7d4, 0xd07befe4,
+       0xdfac24c4, 0xfbe5af7a, 0x975fd899, 0x1d79ea6a, 0x79a9c0a6, 0xbef3d512,
+       0x5fe30997, 0xb68a0436, 0x06260be5, 0xb6ed16fc, 0x95f19d51, 0x2067ff91,
+       0xd7899eff, 0xf8d856f7, 0x3718fd90, 0xf62b1c03, 0xceff1096, 0xcdf237da,
+       0x0a3b8c6a, 0xbd24f9f8, 0x2f914ae2, 0x1df22638, 0xad40be6a, 0xe455fd6b,
+       0xfe638e49, 0xcc4eda05, 0x29bb4087, 0xdb75f0d3, 0x11994da7, 0x8941f3e4,
+       0x2fbc87e7, 0x8950fcf3, 0x7c3fd1d9, 0x5156e4df, 0xe0179d17, 0xdf350b75,
+       0xa7ac5db3, 0x20636ee4, 0x92d2fc0a, 0xb466c1a6, 0x394d25f3, 0x710ed831,
+       0xe2580cfa, 0xa770b99d, 0x245fa541, 0x588dfa3e, 0xddc3fae7, 0xa5dbd754,
+       0xcb9ff3ab, 0x9617fbe4, 0xce387364, 0x576a3265, 0xd0ebca14, 0xc9b84c7d,
+       0x4c2739a6, 0x5c43676d, 0x6bce708c, 0xf8ab70e6, 0x46501d9e, 0x1c4e7be1,
+       0xb6c26eec, 0x147f26b8, 0xcf6bdbe5, 0xe6ffa137, 0xd0f17cb9, 0x665f29b7,
+       0x989e3056, 0xbbcda9d3, 0xfdf36535, 0xfe24bb96, 0x9c77a79d, 0xc971f14c,
+       0xc7f89938, 0xe29a3b3e, 0x1989bb57, 0x853fb0e3, 0x95c545fb, 0xcfb0a3c9,
+       0x3f9227a6, 0x49587c58, 0xca14545c, 0xadc7d983, 0x5d3c414c, 0xf22abeb1,
+       0x9c586f69, 0x2fcf481d, 0xebad5f5b, 0x95f68d78, 0xf152ebaa, 0xfb49d6a2,
+       0xfbaaafaa, 0x1f953c1c, 0x7865f669, 0x98b1eee4, 0x7bd92c7f, 0x59f62cc2,
+       0x43f3d2da, 0x3d92d7f5, 0xaaeea9e7, 0x0d3d59d6, 0x86afc9e7, 0x947ce8e7,
+       0x067f2012, 0xabddc9e8, 0x59f5fd79, 0x36db0780, 0xe013bf58, 0x1fac3dfa,
+       0x1fac3f5b, 0x7ab0bfaf, 0xd581b520, 0xadf76a0e, 0xc7ad411e, 0xb5ea9e7f,
+       0xed7b3317, 0xde7aa48f, 0xe3eba351, 0x48feed4c, 0x7debebea, 0xaf9e18c6,
+       0xd1361cf1, 0x0e9e0c77, 0x72efe90b, 0x8c3cbcff, 0xe23e3e0f, 0xebb843ce,
+       0xc616deb1, 0x8e9ce717, 0xe3af3c68, 0x8d11cb9c, 0xf692b675, 0xffdc6633,
+       0xcd072f52, 0x88030f98, 0xa26b70b3, 0xbe79f767, 0x1e5fd7bf, 0x62bdf88d,
+       0xffedac5d, 0x4cbec5d7, 0x90c1ec5d, 0x291e927c, 0x5b9c1976, 0x8cec3db1,
+       0x27a6145e, 0x3d78bbd6, 0x3f417d65, 0xae4dc392, 0xc30b897e, 0xe4ac6be6,
+       0xb8fb0bf9, 0xebf0e882, 0x3af366ef, 0x2fcf1d98, 0x09fef08a, 0xdebb5f59,
+       0xefc9109e, 0x85b2f73f, 0xdf691bbe, 0x93af24b3, 0x8f9b4bf8, 0x30b95f5b,
+       0xf1a7bf0f, 0x85628b1e, 0xc9a75f3c, 0x3d5d31c7, 0xdcbcafae, 0x33834aac,
+       0xeeace29a, 0xfadbb45c, 0xbb9319bc, 0x775db973, 0x2473f166, 0x046c59bc,
+       0x7b9755eb, 0x2f5ef99b, 0x2b33f180, 0xd42f640d, 0xa5715cfa, 0x7f0356cc,
+       0xf932af16, 0x29572ea8, 0x22fba09f, 0x15b46c6e, 0x1f9f2167, 0x22db30ef,
+       0x5476abed, 0x0fdcde3e, 0x4ad4779e, 0x95d65c0e, 0xdbb377ea, 0xd164c7da,
+       0x94466dfa, 0x8c43d493, 0x5ded5bbe, 0xbdfbe3cf, 0xf34b598b, 0x0ac71868,
+       0x8fb4360c, 0xf21b3cfa, 0xa3ef9d19, 0x15afc3cb, 0x8b36b07c, 0x8880addb,
+       0xbf858b37, 0xe7a73ea4, 0xa4b3379f, 0xffebcdcf, 0x39fb8b31, 0xebc5958d,
+       0x13be900b, 0x49ed0c0d, 0xa5856563, 0x87be6c20, 0xe79a64b2, 0x260fac41,
+       0x7907d787, 0x175f501d, 0x495cf554, 0x116327fb, 0x5f409bdf, 0xa4f31da3,
+       0xc941faf3, 0x5187e50b, 0xe4e0846f, 0xde94dbeb, 0x22761df3, 0xb862ebe3,
+       0x57bbce5f, 0xf15cfca2, 0xc5f68fc4, 0x895cfe22, 0xa7b9be74, 0x1c5d60a3,
+       0x7289a3ea, 0xe3bf7e19, 0x753d4971, 0x4d27ac26, 0x3c66b57b, 0x32504f7e,
+       0xc411e863, 0x136a8cfb, 0xf69c07ed, 0xbc58d56a, 0x92bfdaae, 0xc6d75b19,
+       0x9281fde0, 0xfbc15a23, 0x7f781595, 0x66008ec2, 0x8424d9d2, 0xb079f40e,
+       0x728c94e3, 0xfdc586f3, 0x5bc0164c, 0x99d44532, 0x9e9db9aa, 0x62629fe1,
+       0xd8d49fdc, 0x1f39fdcd, 0xa2e83e53, 0x47ea84bf, 0xa1efb849, 0x4aaf6428,
+       0xb31d82f6, 0x57d8ec86, 0x666f5fb5, 0xd79f08d9, 0x78431d83, 0x7d7853ec,
+       0x87ff4f5e, 0x65f47f04, 0xc3d2fa97, 0x7cf07f68, 0x294f9417, 0x571db7bd,
+       0x1c33ef30, 0x0f0975fd, 0xff93e97f, 0x3f9e2ce4, 0x9fc3ec4a, 0xad3f08b3,
+       0x6d537dcf, 0x933a9eff, 0xa4bffd9c, 0x2fe224ce, 0xc6a4deb5, 0x9e04f36b,
+       0x68be76d5, 0x0c77f2bf, 0x7e235c68, 0xfc8f60c7, 0x569cc31d, 0xfd44df3a,
+       0x99a0e18e, 0xc64cef95, 0xbbe2b3fd, 0xfc8b9f26, 0x7f3f83a4, 0xc9d7e9bb,
+       0x84935df8, 0x3d806a27, 0x5e76423c, 0xdeaf273d, 0xb7cf01ff, 0xe07df2b6,
+       0xcf916d75, 0xb0a5f99b, 0x3d61a3ef, 0xfb119f54, 0x16eec76b, 0xd9a72275,
+       0xde63e4a7, 0x3c392ef2, 0x8251e96f, 0x5dbeea29, 0xda7bc51f, 0x795f663c,
+       0xfbf57acb, 0x81c91afc, 0x755cd1df, 0xf7c9d31e, 0x3cd97ee1, 0x9eecf8e6,
+       0xc754b87d, 0x7ae4caa9, 0xd12dcaa2, 0x83165179, 0xe7f696ab, 0x22d920bf,
+       0x6776ebed, 0x209d7973, 0x32bf20ea, 0xd5f8fe73, 0x8bed120d, 0x90edefc7,
+       0x817abfee, 0xabf36f7f, 0x8dbdfe62, 0xbf50f75a, 0x5436b9a3, 0xecefa0f7,
+       0xd46fefd4, 0xefd469ef, 0x8e6ca737, 0xefa6f3a1, 0x73a6b533, 0xf04bd7bf,
+       0xba3367c6, 0x1ac5131f, 0xc4ebc922, 0xecf8f2ec, 0xb5f71c32, 0xb22b4ffb,
+       0xdb4ff823, 0x77791c45, 0x160bc436, 0xb85e2916, 0x8b0b9f07, 0x8fafa817,
+       0xbaaebe17, 0xfb367447, 0xfcfdd7ba, 0xbe8f9c37, 0x9d9beb3e, 0x8476507f,
+       0x3c89d7f9, 0xba7f9e96, 0x7f4abe45, 0xf5eb3bee, 0xebb7245d, 0xe6f292cd,
+       0x374f548d, 0xd55d3d51, 0x3e56cdab, 0x3e841fff, 0x45b7db55, 0x9c8a6cdb,
+       0xdc577b2f, 0xbe74683f, 0xe8327c80, 0x72fe6d49, 0x7f36ab70, 0xf69b7d79,
+       0x01a1911c, 0x252139ed, 0xc6e7b587, 0xe7b50594, 0xa63f0cc6, 0x6466373d,
+       0x98dcf6a7, 0x9ed7df1b, 0xb773731b, 0xedf97f36, 0xdf75534b, 0x5d78fa6b,
+       0xfc373808, 0x059651b9, 0x0c6af3ba, 0x626af3ba, 0xe8d5e774, 0xf31147ce,
+       0x75337be6, 0xd768d6e7, 0x5c7ac767, 0xe3d7d5d1, 0x9ea7446e, 0xa3fd71ea,
+       0x2b07b9f1, 0x22f7e80b, 0xffa6efd4, 0xb4d9f053, 0x903ff71c, 0xc76bdcaf,
+       0x755f23d5, 0xc5ca89ae, 0x6d7b8bbc, 0xf8193186, 0x44bf7dc1, 0xac57cddf,
+       0x3dfda0cd, 0x92871a0b, 0x9ccc549f, 0x4ecd27e4, 0x79cf1162, 0x7ae1c9c8,
+       0x89837e6b, 0x65f01399, 0xe7cf198a, 0xd12cdb3f, 0x0e78fcf9, 0xc3e024f1,
+       0xb0f9c61a, 0x7891fd6e, 0xbb0b7baa, 0x82a394b3, 0xa12c34d5, 0xe7f41cf3,
+       0x56b2d4bd, 0xb3cc0673, 0xc93b636c, 0x17fcfe83, 0xc4790ed5, 0xdaad753c,
+       0xf1b61efb, 0x000efd3c, 0x9da334eb, 0xef69b4f1, 0x3b08e5a7, 0x940e60e3,
+       0x565df71b, 0x1597fa0b, 0x36f32f02, 0x0fac364a, 0x4f6c682e, 0x0bfa15b9,
+       0xde291b0e, 0x7ac2f152, 0x4453cf9d, 0x385fdde7, 0xf3fe485c, 0xc3494505,
+       0x1e78ee71, 0x7bb2482f, 0x9d9f5e38, 0xe78e1ee4, 0x65bf75a2, 0xd87c6fc5,
+       0xf2064b89, 0x1a07c017, 0x8d9b7e42, 0xf3cf090d, 0x52d933ce, 0x65e2cf31,
+       0x9c53a477, 0x755ee229, 0xc40b1edd, 0x87d8f1b1, 0x4faf9538, 0xba224cfa,
+       0x06eb4991, 0x03df08bf, 0xb1c50ffe, 0x83596616, 0xa519cffe, 0x5f5d1525,
+       0xf226bdd7, 0x48efe62b, 0x7e62bf24, 0x9e3328e3, 0x777f307f, 0x659fed22,
+       0x186be75e, 0x3c74aad7, 0x287258d1, 0xdf9de61d, 0x6a30ef9a, 0x1389a7e9,
+       0x509f3597, 0x0aea76e9, 0x89153b74, 0xcd2f406e, 0x7a3a49f5, 0xe8927bb1,
+       0xdbeabdfb, 0xbe62160f, 0x344342ef, 0xef42fefd, 0xfdcbc038, 0x4d64ece2,
+       0xd99953bc, 0xf9d1c713, 0x963717e1, 0xf4f4dd11, 0x82d7fcaa, 0x157df8e1,
+       0xd0cadb7b, 0x9fdd98df, 0xd70a9dcd, 0xbe5c4ae7, 0x571baf66, 0xe2ce7e89,
+       0x5f0fae1c, 0x11d17115, 0x8fc08b8c, 0x45c633ff, 0xc45d7fd0, 0x5c626f45,
+       0x185bed04, 0x4a7b4117, 0xcaa84b9c, 0xf1003019, 0xaf90ad6b, 0xbe351cda,
+       0xf98e9958, 0xfd7fcab4, 0xc360ccb9, 0x32ddcf4b, 0xc9b18726, 0x5d3fad4e,
+       0x4feb5d35, 0x636c9a77, 0x135f69d3, 0x77cc0faf, 0xcf19a8dd, 0x798cc564,
+       0x24b0360e, 0x8fec9d74, 0xc73cc662, 0x9a4989cc, 0xce6ddff1, 0x731bf4d2,
+       0x4a6f8214, 0xf5cd7f65, 0x6907aadb, 0x012ef3fa, 0x7b904a12, 0x699cfced,
+       0xa6512711, 0x6f54353c, 0x7861a8f8, 0xde00f7da, 0x744c3a8f, 0x950f4f5f,
+       0x1b370bae, 0x60bb7f28, 0xe60dac33, 0x80b2d53d, 0x6383eae4, 0xa6373a56,
+       0x2bc94769, 0x627fa023, 0x93f68987, 0xba4c689d, 0x3ed1cf1f, 0x1e2523b1,
+       0x3773cbbf, 0xf4805919, 0xacf48dac, 0xc6a8ef3a, 0x163bf435, 0x0e517cf3,
+       0x0779ff94, 0xfb54bfbc, 0xb6803fb8, 0xbc7ca0c8, 0x2405f466, 0xf0939fa2,
+       0xf29a3dbb, 0x989befe2, 0x6b3a7f17, 0xeb872741, 0x6235897d, 0x5ff44cff,
+       0xe00f7c07, 0x65a93b38, 0x28fd01b1, 0xe90a4763, 0x0c8da7cb, 0x76fab6f9,
+       0xbc739d13, 0x56e375f4, 0x38a933ec, 0x48dbd38b, 0xb6c2cbbf, 0xacfcd147,
+       0xc604381b, 0xd475fcad, 0xcf220db6, 0x0667fd45, 0xfe0836fb, 0x3f7a3e44,
+       0x09133991, 0xf86f9e58, 0xaa1491fb, 0xe9f084f3, 0x7eeb821b, 0xe5b57651,
+       0xbefefd00, 0xf48437d8, 0x24293dda, 0x9fbc7a57, 0xe5bd7332, 0x42903945,
+       0x672432fa, 0x05ab3bfc, 0x83aa4726, 0x066955f4, 0x1b53abea, 0x6457944d,
+       0xd79e33b2, 0x3e269ee1, 0x4a73df56, 0x7c22c656, 0xe9f39aa7, 0x1bf9c23b,
+       0x90ef648d, 0x1f78f8ff, 0x301e73f7, 0xf75e31ba, 0x8c6e4b36, 0xb37cf5d7,
+       0xf4e1f6e2, 0x10730e7b, 0xeb7b2327, 0xbc197381, 0x97f6a0ee, 0x37bfe5ed,
+       0xe53b4ac0, 0xd7c383e9, 0x97dfc8d1, 0xcf57e7ce, 0xf7edaf43, 0x6478e3c7,
+       0xfdc385d3, 0x9c7bf013, 0x8919af33, 0x6bf4cecf, 0xf40e9619, 0x6fb0d0fc,
+       0xffa0f7d8, 0x69ef24c1, 0xc6214519, 0x75e22efd, 0x2e6361b9, 0xe5dd0f7e,
+       0x8dff793f, 0x9fdfdcf0, 0xcc483932, 0xfe90a557, 0x697db658, 0x1f7de7de,
+       0x932058c4, 0x199d19e7, 0xb973e012, 0xf3163ad2, 0x4b988b07, 0x1f8e21d8,
+       0x63cf0765, 0xbcf136d8, 0xeb32c9c6, 0xb6cfdc06, 0x38b79740, 0xbc13be29,
+       0xfc692394, 0x79739b84, 0xf381817f, 0xcf2dfb37, 0x469fc167, 0xefc47bff,
+       0x5f7aa8b4, 0xacb5d7d5, 0x8ecdce85, 0xf347edc9, 0x347c952c, 0xc04f1eae,
+       0xd8b51506, 0xdad5e3c6, 0x147ca327, 0xe9602a8f, 0x8980fcc2, 0x4f3f0ab9,
+       0xc3d4fcd7, 0x584bb6c8, 0x374faf90, 0xdf26efee, 0x6f7e60e2, 0xb6d8b37b,
+       0xf34ed1b5, 0x5fb81c9b, 0xd3908971, 0x17c916ba, 0xbb20ebe0, 0xb3cc48b9,
+       0xbd4dd848, 0x8f65ea7d, 0x91687674, 0x16b2cece, 0x78055dad, 0x2a3df0e3,
+       0x5d387abc, 0xc3c256b1, 0x3e7e16b2, 0xefb762c7, 0xb7042dd0, 0xf64a00e4,
+       0x73096782, 0x75c44e8d, 0x71e3c93c, 0x75fa7c3d, 0xac5782f5, 0x62f70f53,
+       0xb180f9c7, 0x064eff94, 0xadd4efed, 0xde87a543, 0xb2e9535f, 0xbbf1cbd8,
+       0x3d112fd8, 0x03f1eddf, 0x5503ed19, 0xc2b585f9, 0x5de79a7f, 0x5b3ea0b7,
+       0x6ff409b2, 0x547f887e, 0x5ac65a7e, 0xea5f91e3, 0x4b09a059, 0xad0267ea,
+       0x8f991ddf, 0xa11d32e7, 0xedaaa3f3, 0x22434281, 0x9f9af0a2, 0xe21cde54,
+       0xaf9e3d6b, 0xc5abd744, 0x0475131b, 0xb4f00e7a, 0x7d2371e8, 0x4e3613d7,
+       0xb25ebfc4, 0xaf5e358b, 0x35cbeb19, 0xee373f32, 0x647a704a, 0x5759fbfe,
+       0x3f0fb784, 0xfdc2abe9, 0x8fb15cfd, 0x559f97ac, 0x4f491098, 0xabfceba9,
+       0xb4572bd0, 0x56e3b2ef, 0x453df646, 0x5f4c7cc2, 0xb0b17afa, 0xced08beb,
+       0xf37a7b43, 0xf18f3a2e, 0xe8bb4ddd, 0x53f355dc, 0xc25f688b, 0xee0bcde9,
+       0x38b5dfc7, 0xd90163bd, 0x573f25f5, 0x1cdbbaed, 0xda8c2fee, 0x1fb1ef3c,
+       0x193ebf20, 0xc5e3754d, 0xce22dc07, 0xe30a3d01, 0x6f5ccd94, 0x8f5c4db2,
+       0x57fb412e, 0x1aeff644, 0x62d7771c, 0xf7c835f7, 0x2ec9d761, 0xfdc0b5de,
+       0xef30bdbb, 0x7589bf5d, 0xb6c96978, 0xdb3bcf00, 0xeaff6802, 0x38f378ee,
+       0xd817befe, 0x56efd7fb, 0xd9d13ded, 0xca2e64fd, 0x75f3b097, 0x36b9adc6,
+       0x5d840bf4, 0x7be377f8, 0xfc9be23e, 0x77ef8e29, 0x4f9e399a, 0x6f78e46e,
+       0xe29fd1da, 0xfb9a77d3, 0xcef51f93, 0xf7c2428e, 0x6f800dc2, 0xad15a3f2,
+       0xf80cd51f, 0xf10138c6, 0x3fcd700d, 0x3b7c08a0, 0x399bbe38, 0xde46d99e,
+       0x5785ec2e, 0x7eeb9d2f, 0x39447fd7, 0x3f782fd0, 0xd2fe403a, 0x748d3bfb,
+       0x67ea99e6, 0x3fce7ea9, 0xd12fcb58, 0xbdf1531f, 0x08704074, 0x07ea97ea,
+       0x788f18fe, 0x2793ba5f, 0x9be17a47, 0xdfd0d339, 0xc7bfbd0e, 0x6e4bfa2f,
+       0x05f45fb8, 0x5ccf52e9, 0x1eb91fb4, 0x121b23cf, 0xfd59efb6, 0x3efd3a5d,
+       0x23e78567, 0x62c398a3, 0xf5b27841, 0x66e7b7bf, 0xe3f9efb8, 0xee73f3c2,
+       0xd6ee3920, 0x2dc7cefc, 0x73c2602c, 0x44ab580a, 0x56ea59fb, 0x3397c796,
+       0x81b4973c, 0xe3c948e0, 0xbe3a83f1, 0xff2068ce, 0xfdccd6b0, 0xe83cf544,
+       0xdc7cb9cb, 0x771e5ce5, 0x46d733fc, 0xf30bbffa, 0xcaafb8eb, 0x3afca66a,
+       0xf8e94bc4, 0x28deef7e, 0x8471dba2, 0x346ff009, 0xc4fd738b, 0x675466b9,
+       0x8acdb585, 0x9da5f353, 0x7a7e528f, 0xfc839455, 0x3a04e4d6, 0xa136f39f,
+       0x35c566cf, 0xcfff50b9, 0xb13b338e, 0xf8bd7985, 0x0aa62263, 0xdfbc3d78,
+       0xf3a66994, 0x9d2dabf1, 0x3b68614f, 0x9de4fd37, 0xd96e0316, 0x3c89b46f,
+       0x92cfeeed, 0x4425d37a, 0x6d39ed1f, 0x79c8989e, 0xee3cdc8d, 0x274e4907,
+       0x60a20fd5, 0x238018ee, 0xd7e14f3f, 0xb675bec5, 0xed64e805, 0x7a9bde7d,
+       0xf9f9799d, 0x3f00b5af, 0x067181bb, 0xd7f84119, 0xfccd6bf4, 0x4dbc88fe,
+       0x33653793, 0x83299476, 0xa8b56e91, 0x9f7e3033, 0xfdc3e097, 0x3cf1935a,
+       0x32b63b28, 0x9954cbf1, 0x6dbc0d79, 0x863ac38e, 0x16ea0738, 0x2319cf81,
+       0xf0012058, 0x7b51781e, 0x01ade21e, 0xc01ae043, 0x6f3c64ef, 0x2b9e086e,
+       0xf06c98a7, 0x54a5571e, 0xed47718c, 0xef062fda, 0x08c7bc84, 0x81835ade,
+       0xcf3779c3, 0xbcc2cc33, 0x8e61e03b, 0x8b180ecc, 0x5e201f39, 0xf685763c,
+       0x2edf746f, 0x35133ed1, 0x7fd2aedf, 0x4edf2868, 0xe0259c74, 0xe39a7983,
+       0x647379f1, 0xa79add7a, 0x14adc7c6, 0x72172f37, 0xb7955cb7, 0xfb795a1d,
+       0xf4474a9e, 0xb36f0173, 0x5c97db44, 0xb0fc14ac, 0x15d78f32, 0xf7c97fe6,
+       0xfe7e38b1, 0x752f2aa2, 0xf57e7c51, 0x7b4593fd, 0x9f9d9e47, 0xfafa2147,
+       0x96a9fb3c, 0xd4ffe475, 0x7b3cc97c, 0x7aa11e98, 0x5eee6496, 0xbe97a888,
+       0x3d40ed15, 0x5adccb3a, 0x7bd710d8, 0x609e7a9c, 0x789a0b35, 0xea699fde,
+       0x718c639b, 0xb5653e74, 0xb5277fc4, 0x35eadcab, 0xc61e6024, 0xbeada444,
+       0xf7379f9b, 0x6fbe68d7, 0x5dc27673, 0x575ca0b7, 0x3a659bc7, 0xad058f3f,
+       0x7d21f9f9, 0xa46e54da, 0xf79907f3, 0x0f58c9d5, 0x877a875b, 0xcce27ff7,
+       0xe891aca6, 0xee2af6bf, 0x197e9a27, 0xd7fd4fe8, 0xfe613b27, 0x3ee283ae,
+       0xef9e837b, 0xb1f057ba, 0x38c9edf7, 0xf521ebbe, 0xfbf27ffe, 0x27fbd5eb,
+       0xab1ffdf9, 0x03fe8bf3, 0x746bfbba, 0xfde11ff7, 0x393b1fc7, 0xaa788bd9,
+       0x7d5d2ce0, 0xea7a4483, 0x819ff403, 0x036bd59e, 0xc36adf84, 0xb056de3e,
+       0xcaf4a180, 0xae7982e3, 0x303fd00f, 0xd1594f5a, 0xdf2dfefe, 0xa3da01f9,
+       0xbfdc7397, 0x6938c3cb, 0xa335e48a, 0x47cd7dbe, 0x3e96e0f6, 0x40fe73be,
+       0xc2a0f3e8, 0x0df153e7, 0xcd5db4f3, 0xcf7a733c, 0xf2979ed3, 0x9c19e7e5,
+       0x979e6bdf, 0x9f9e06ae, 0xfd51e6ea, 0xe77f471b, 0x3b1f38bb, 0x9f39ac95,
+       0x1d0ff97f, 0x625f9809, 0x0aef88af, 0x96e6b6d7, 0x7fcbfcc0, 0x317727bb,
+       0xcec253fa, 0x30325fd7, 0x5f9e0967, 0xa0fda8c1, 0xbfbe2dfd, 0x79bb776d,
+       0xa1ede62c, 0x5706151d, 0xa777cf6d, 0x30d4f29d, 0x3cf7fcfb, 0x00ff2eb5,
+       0xf6fd77af, 0x5cf48c8c, 0xfd3d686e, 0x37dbb473, 0x93bf1148, 0xcdf42a3c,
+       0x577e3ef1, 0xa5e85ba9, 0x176742dc, 0x1e48f3ae, 0xacb7dfe3, 0xf32e7c8b,
+       0x57cf8548, 0x82deec2d, 0x028b5661, 0x8d7b2e78, 0x78bc639f, 0xe6317e4b,
+       0x54e7cf7b, 0xeb78427c, 0xcdda5f33, 0x9e7ea5f3, 0x07b6ad2f, 0x66f28257,
+       0xc5b18aa5, 0xffd8f102, 0x5a47c000, 0x008000fc, 0x00000000, 0x00088b1f,
+       0x00000000, 0x7de5ff00, 0xd554780b, 0x333ef0b5, 0x66491e67, 0x666bc992,
+       0x9e4c2102, 0x08601024, 0x32c3c30f, 0x04118079, 0x6c108027, 0x0f0c49d0,
+       0xf1019091, 0x0cef1516, 0xd4a04784, 0x54436a86, 0xa20301d4, 0x6b111b45,
+       0x4013516a, 0xc18b406f, 0xad6f6b5a, 0x50452037, 0xff5c08d0, 0xff2afef4,
+       0x93ef6b5a, 0x004c99cc, 0xefff7b7b, 0xbe7fbeff, 0x9d676f8f, 0xac7ecfbd,
+       0xed7bdebd, 0x8cedf4c3, 0x7f0c01b1, 0xac64662e, 0x03c0a0c4, 0x00c9c5dc,
+       0xd825af7f, 0xf7af8816, 0x8f6b189b, 0x73ba7764, 0xc3705b19, 0x823648f0,
+       0x28d4ceb1, 0xb186258d, 0xc62b93af, 0xf9f11238, 0x79f1538d, 0x559cc181,
+       0xb37ea261, 0x77ac66dc, 0xb63d60c7, 0xf3192367, 0xe7135be8, 0x4c794025,
+       0xa03bf4eb, 0x09e5111c, 0xf057bf40, 0x34b7b937, 0xc18c343b, 0x161c637b,
+       0x3035db2a, 0x79debccf, 0x6633e328, 0xfd01d559, 0x34975e9d, 0x37f40b6a,
+       0x68c1507b, 0x7f194f1c, 0xc38f20f6, 0xfc77b631, 0xd5961ad3, 0x3cff5d28,
+       0xe03ce106, 0x06d0d1fd, 0xa49ee1e7, 0xf5232e65, 0xbfc0aecf, 0x2a51c559,
+       0xf12dce78, 0x0bdd95cc, 0x50339dcf, 0xa7959705, 0x5edfdaab, 0x3f554c35,
+       0xc631d0c3, 0x0d5bf88b, 0x9df52583, 0xe632528f, 0x98d4f9a7, 0xac1291cd,
+       0xff07afeb, 0x8f1fc3f3, 0x26abec61, 0xb98253ad, 0xeefafdde, 0xab42270f,
+       0xf1bfb08b, 0x11ded879, 0x3f7ac323, 0x2db2d76f, 0xbb267eb0, 0xc65619e4,
+       0x63155096, 0xc3475817, 0xc4be7824, 0xdc16f8bb, 0xba03bbc7, 0xf3419d53,
+       0xbf5b61ac, 0x7bf3c2d6, 0x0cf4472c, 0x5ecf7250, 0x11923d75, 0xfe3b62b3,
+       0xff0e6eab, 0x1e84ec3e, 0x45a6a5f7, 0x61c73f5d, 0x0c33384e, 0x7963c8fe,
+       0x2ef48057, 0x2298ff7a, 0xdcb631a5, 0xe177d7c4, 0x0ef527b7, 0xb0b7cbc4,
+       0xdd8c71fe, 0xbb422f84, 0xc3c06e9a, 0x5a8ac668, 0xa13bea4e, 0x0760f2fe,
+       0xf27965e1, 0x1c31d90a, 0xc174a1ea, 0x952d4ebe, 0x2f4031fc, 0xf86c6d1d,
+       0x3f83c001, 0x8ddcecd5, 0xc59eecf3, 0x95d23c58, 0xf01638bb, 0x758d6ed7,
+       0xf71742d6, 0xf3d095d4, 0xd491dde5, 0x8eda7bff, 0x7bdf0ca9, 0x53bb6255,
+       0x2e069f61, 0xf1a2c758, 0xbdee7f3d, 0x5f8cee30, 0x788254df, 0x72407e5b,
+       0xd0cd1d21, 0x05663fbe, 0x4beacb94, 0x5a19fde8, 0x31c52ed6, 0xecc8bd36,
+       0xcc10c4d7, 0x71dac018, 0x600c2de6, 0xeb35bead, 0xe99fe809, 0x7e305e61,
+       0x34edf74c, 0x91b74d7e, 0x21c87fde, 0x3aea1d11, 0x74a6bcf9, 0x42b9e9bb,
+       0x348eb50f, 0x5d6057aa, 0x695c9362, 0xda8cf6c2, 0x4a1eeb4f, 0x63deb2a5,
+       0x7824cfd9, 0xf2f13eb0, 0xeeb081d4, 0x05920963, 0x274ec4a7, 0xef1f7068,
+       0xc9737b15, 0x330c437b, 0xba874ff5, 0xe84c606e, 0xa8cdd0cf, 0xeb9a69fc,
+       0x99b7e431, 0x23653a6b, 0xb464c7ae, 0xe666be20, 0x0a2c728f, 0xa1ed2fe2,
+       0x1fdc7af9, 0xf427a3dd, 0x00dfe82e, 0x7d505165, 0x9cd77435, 0xcf22f44b,
+       0x7f3ef732, 0x6323f05a, 0x899ca96b, 0xf62e90ed, 0xd018c83d, 0x41161dc5,
+       0xb67f8280, 0xbca2390a, 0x8fb481df, 0x218af8fb, 0x6efe1bb0, 0xc7ecf34a,
+       0xb01476f9, 0x8fd8fdb2, 0x6a5291dc, 0x1fcde7fe, 0xfb88d9f6, 0xe170eb0e,
+       0x1df333b8, 0xdfd02d9a, 0xe0eb3dab, 0x75ad7c7c, 0xbc758934, 0xb1ab65a7,
+       0x4f26f7df, 0x7f4170ee, 0x1e8e0f6d, 0x8ef475ad, 0xf3d0eedb, 0xdf5d2d7e,
+       0x9ad7d832, 0xc81ca237, 0x6f6033ef, 0xdd7aee10, 0x4a95d810, 0x809499cf,
+       0x049761a5, 0x5dd135f5, 0xbf186e59, 0x5688cde8, 0x37b6e3a4, 0xe3066423,
+       0xda7a6694, 0x6f453f11, 0x8096290e, 0x0d075dde, 0xc743d232, 0x7c51d760,
+       0xaf7cdfde, 0xe942b725, 0x4f4fe14c, 0x0a97e71d, 0x8295a741, 0x8f823cff,
+       0xc46d792e, 0xc0d69787, 0x951d61a4, 0x07e1a46b, 0x330ca0c6, 0xbd1d333b,
+       0xab43397c, 0x18cef5a1, 0x85a81b16, 0xbee077a6, 0x87cbef8f, 0xd42dbacb,
+       0x43b7756f, 0xc11c7bf0, 0x0a55df0a, 0x9d2031be, 0xe8255c03, 0xe79a74fc,
+       0x6667a8ef, 0xc3df02d4, 0x49759e78, 0x7a9f9063, 0x416f46e9, 0xb1ba02fa,
+       0x9fe20a2f, 0x30f9b6da, 0xc12fe855, 0x0553744d, 0xfd505165, 0x980e8542,
+       0xe615aa65, 0xaa7d733f, 0xadeb0b66, 0xc1d05eff, 0x17ffd2f5, 0x4d2ace82,
+       0xe81a99ad, 0x708de74f, 0x5d7983ae, 0x454c704c, 0xccdcacfc, 0xe752b8f1,
+       0xbcc3322e, 0x39263e57, 0x5dd88761, 0x9446cce3, 0xf23ee34b, 0x74413dea,
+       0x047bbf3d, 0x661e0073, 0xf9506777, 0x298f20f5, 0x6bf71135, 0x08d7c0ae,
+       0x4e31992a, 0x6559f383, 0x8405fae4, 0x316fdf1d, 0x1bdecbbf, 0xf1813f6c,
+       0xa3abbf2f, 0xc912b3fa, 0xe5d6367e, 0xa5e70a7f, 0x3b9c180b, 0x75675e61,
+       0x2d816fcc, 0xc351abb9, 0x2af780fc, 0xb4f13d28, 0x33b61754, 0xb40da07c,
+       0xe658bb61, 0xbc43cd8a, 0xf4837ac2, 0x23a939e9, 0x7f5027eb, 0x22fd4661,
+       0x8cea3a4d, 0x0f511377, 0x65afd85e, 0xf77e785a, 0x28acb78a, 0x3bb5aa66,
+       0xbf502c53, 0xe9640a4a, 0x951e1040, 0x5d70433d, 0xfcdedf9f, 0x3bb43e61,
+       0xb472ff5d, 0x372f4827, 0xd899adcb, 0xd3e0334f, 0xde6f730f, 0x70092daa,
+       0x74aa27bb, 0x2b9d2f78, 0xef4a1d74, 0x88d3bb4b, 0x0d792eae, 0x012e8fa4,
+       0x7d20b2fd, 0x451fe8a4, 0x487a2bde, 0x996aefa1, 0x536ab1cb, 0x1a9fc04c,
+       0xdd4a7fac, 0xd97f4805, 0x05933392, 0x0f5d9feb, 0xf87e404f, 0xcb59c12a,
+       0x2847f57a, 0xb3eabc3f, 0x57d4e583, 0x5df228ff, 0xfe8af791, 0xffd5fc2a,
+       0xe1dff97e, 0x9e69b1cf, 0xa6be231f, 0x4d8f5cc9, 0x4744cd93, 0x654a1253,
+       0x97eb9fa4, 0x3c8527a7, 0xa792a93d, 0x07d1fbcb, 0xc61fd49e, 0x7b45330f,
+       0x8ec977b0, 0xdc1f7944, 0xe15a535f, 0xcfd0a9bd, 0xcb8954ea, 0xbcd27fe5,
+       0xab03d3fb, 0x7d7fe67b, 0xea61607a, 0x9f81e9f5, 0x103d72a6, 0xf419f72a,
+       0xabff7287, 0xa80273d7, 0xa0613e17, 0x1e1f5027, 0x16ec728c, 0x46f4817a,
+       0x6ae04c64, 0xf325217a, 0x7ee29fae, 0x5b0bd187, 0x7a1bff53, 0x8543a141,
+       0x513e146f, 0x8f9422f8, 0xfe98be14, 0x4fcc6753, 0x31009f70, 0xfec9d764,
+       0x6a8eb87d, 0xe428d447, 0xee7b1ecf, 0xd6fc4480, 0xfe085f47, 0xb517e5e9,
+       0x42f850fe, 0x7f8517e1, 0x2c5f05aa, 0xc38be10c, 0x2647e6da, 0x34f67bc0,
+       0x0f88ebcf, 0xed964f85, 0xfd13d50f, 0xba4315d2, 0x65e0985a, 0x50d55748,
+       0xa195d306, 0x94387e1f, 0xa3ecc3fa, 0x5afed166, 0xa447f4f4, 0x51ffc4a7,
+       0x6a63fa7a, 0xc3e33b78, 0xf53d0eff, 0x34ff67b5, 0xb9f301c6, 0x6de40634,
+       0x4dbd2f6a, 0x3b71877f, 0x05fb9d22, 0xbcd267e0, 0x0283f5db, 0x0aeed8b5,
+       0x151e22f3, 0x59f654ba, 0x22160bb1, 0x4b69401d, 0xf217ff77, 0x2b05fa05,
+       0xd1ee4fae, 0x3a121b3e, 0x2ca7e8f4, 0x1ed83284, 0xbe0ecfe8, 0xdee503f2,
+       0x1b94eb85, 0xcfbe3496, 0xd1fb44ff, 0x4e5e1692, 0x7ff3e2c4, 0x14675f74,
+       0x48af1131, 0xc325752c, 0xc05cfcfe, 0xe2297b7e, 0x52be6e71, 0x92e6dd6f,
+       0x9fc03e51, 0x8a046813, 0x55a7bc77, 0x6289db60, 0x47f4cf98, 0x58fdea7a,
+       0x4c52653f, 0x62447c4f, 0x699dedbd, 0xd2b62709, 0x3e73d47e, 0xeeca74f3,
+       0x18f041e1, 0x7041cd80, 0x83bc087e, 0x3b968fb7, 0x85ec8599, 0xd0d39700,
+       0xf7c794bf, 0x3f641dd9, 0x2e47f0c0, 0x48b0bea1, 0x351be30c, 0xbadf3b09,
+       0x45ad7284, 0xf7e7e862, 0xb83fc1e0, 0xe40935d4, 0xc04941db, 0xdd7027e9,
+       0xf0e01fb7, 0xb6435dbc, 0xbf4433f9, 0x04cb0fc0, 0x92cd75ba, 0x2dfd0b4b,
+       0x690297cb, 0x3df17da9, 0xa7ed4d2f, 0xbf564fe0, 0x3f09f4cf, 0x6fdc7dec,
+       0xde8d3f7a, 0x80fc356f, 0x624de7f1, 0x7f1840ae, 0x2bb45ab4, 0xb613131e,
+       0x2d34befe, 0x0fc45f1f, 0x34787c68, 0xebfb99bb, 0x4a1feda1, 0xa1d2fce3,
+       0x167c08d1, 0x76fc436d, 0x177c15e8, 0x9bba436e, 0x8e2a98c2, 0x5c13e306,
+       0xb4b0abb7, 0xd72f832e, 0xabaf8215, 0x61c7f7ad, 0xd90fe5f0, 0xf055c32f,
+       0xda9a677d, 0x439fc09e, 0xd5eb7efd, 0x9f616bf6, 0x2edd05f7, 0xa5d8e851,
+       0xd918f7a2, 0x9319f44d, 0x8e305920, 0xb11ddcb6, 0x5e86fd15, 0x74499cfe,
+       0xc6a111d9, 0xddff2f53, 0xb7fc8a5a, 0xa58f07bc, 0xdd7f90db, 0x9cf69e9a,
+       0x86ba151f, 0xae81b3f7, 0xef07f429, 0x6f734aef, 0x5d12e7f3, 0x72c13d50,
+       0xf943bcd0, 0x9e0439b1, 0x82bfc214, 0xa07e48ff, 0x653c003e, 0x384b7ca2,
+       0xd10477a9, 0xa7d89b49, 0x432b120b, 0xc851da79, 0x348ec9ed, 0xe34c9e5e,
+       0x8151e3f6, 0x3d0a13cf, 0x41e10645, 0xe8ad3f4d, 0x9bad04b7, 0x413f34f0,
+       0xe96f67e1, 0x1d4f402d, 0x2ffebc71, 0xf36d96bb, 0xa1c2f727, 0x9775fdfd,
+       0xb6e314b7, 0x97fbfd3d, 0xcebc409f, 0xb93b7817, 0xdf84e6ab, 0x4ad9f624,
+       0x30fc867a, 0xca3f0fa0, 0x0fa46a83, 0x3c7d2fa9, 0xfcbe97d7, 0x74bbef21,
+       0xd7ff7957, 0x8577df7d, 0x0974cfbc, 0xb17de43f, 0xec84b76f, 0xbec8496b,
+       0xe5c08716, 0xc9501c0a, 0x572e455f, 0x60db6cb6, 0x2738c04d, 0x4c1659c8,
+       0x37d23ecf, 0xfa1458f7, 0xfb409ff5, 0xd79e97ac, 0x35679e12, 0x6ebaf42b,
+       0xadf60b9b, 0x84f0e514, 0xca36785e, 0x4b6b8221, 0xf583235d, 0x9faa7ad5,
+       0xdfb4a757, 0xf6ebfa40, 0x1b7f4af5, 0x91f65609, 0x38a54db1, 0x8a31fcfe,
+       0xb923aabe, 0x7f20f4bf, 0xf37d213f, 0x43f2ab89, 0x765e087d, 0x90fec084,
+       0x435e8ff6, 0x790fadbf, 0xfd484d7f, 0x31b810d6, 0xbf53ae04, 0x1125515f,
+       0x3d00561f, 0xf28446e0, 0x647d2865, 0xb3d8f7a4, 0x325cfa3d, 0xe2a77d91,
+       0x1cb5e9ab, 0x50de911e, 0x820a675a, 0xea5ed99f, 0xa30efd27, 0x18ea5d01,
+       0xf5cc81ff, 0x741e816b, 0xe4cdc8fd, 0x32e87ef4, 0xf3df543b, 0x3fc0fffa,
+       0x665ed093, 0xb0e4bb2a, 0x69b70d56, 0xbbfdbcc5, 0xa5caac4f, 0x9b80bb28,
+       0x9eafd14a, 0x8e39dfde, 0x7169577f, 0x76c45db0, 0xaca45d91, 0xf53f6953,
+       0x1c5a2bbb, 0x9d99f8af, 0x5f504da5, 0x899ad85e, 0x71e50fe7, 0xa97d04bc,
+       0x235d7d45, 0x5f5338e2, 0x5f51bad7, 0x66b64796, 0x83b60cae, 0xae167358,
+       0x2d41edb3, 0x16bf8fed, 0x54f007f6, 0xd47a1cc1, 0x973177b3, 0x7d43a59e,
+       0x3deacc4c, 0x07e1def0, 0x4f51abb5, 0xde3ab27f, 0x33d0fe8a, 0x3ceedce9,
+       0xbad8331c, 0xa8b6e010, 0xb6de493b, 0xe5429a6d, 0x636bad21, 0x79fa0597,
+       0x5352a5e6, 0x10c7d60e, 0x7f4cee9e, 0xd02d74a1, 0x83ba6577, 0x59c4f7de,
+       0x6f682dac, 0x8c31d16f, 0x46c583a3, 0x9f8aa4f1, 0xbfa14619, 0x9876b15d,
+       0xcacfed15, 0x4d4e965f, 0x1b957682, 0xd25e7474, 0xe0a4b1a9, 0xa65b3cfc,
+       0x6abeb1e8, 0x37fd28bd, 0xf7e6f951, 0x4346d4cf, 0x2527aefb, 0x7f682ee7,
+       0x77e6e5e3, 0xb8bc0046, 0x5b89dd2e, 0x01f806f4, 0x54e71816, 0x168090e3,
+       0x08d3f2e8, 0x7933dbef, 0x17ed867b, 0x3e38eb7f, 0xd7b60c73, 0xfb41d65a,
+       0xed1cf033, 0xb59b33e7, 0x579c24bb, 0x825239b4, 0x8ef99d25, 0xcce75c51,
+       0xe3004306, 0x9e4ca774, 0x9c711a3b, 0xfa5a1d46, 0x88e48cec, 0xde682c96,
+       0x93da96b5, 0xec41b9f0, 0x056c6b67, 0xd342a1e0, 0x4fa43f43, 0xd872c516,
+       0xa59bccff, 0x678f01bb, 0x71421b1e, 0xd774eeac, 0xb7d874da, 0xbad70cb6,
+       0x2f9c44f4, 0x7e6f5bd7, 0xed13bdaf, 0xaf9ddff8, 0x6d7d22b4, 0x46fd7415,
+       0x32b5a577, 0x745aaec8, 0x783a2641, 0x8558ef53, 0x72337df3, 0x367e8490,
+       0xc63c41d0, 0xdf84abcf, 0xfabcf402, 0xd5f630e5, 0x8f6e74a2, 0x7134fdb5,
+       0xd7454392, 0x927e49c7, 0x93f001bf, 0x9e90efe9, 0xcd586d3b, 0x6a7b453e,
+       0x71c53c4d, 0xc208e1d9, 0x445f6e93, 0xe3152220, 0x28a9aea8, 0x39bd9907,
+       0x8839966b, 0xbffb450f, 0xfed4cdfa, 0xfd1ed0af, 0xfffabfbe, 0xd73e0e62,
+       0x8e2fda50, 0xb8d1fb36, 0x966cccf8, 0x913e3f71, 0x87ee677d, 0xa93d16f7,
+       0xe8b03d23, 0x5d35c4c9, 0x6e807f28, 0xba16be30, 0x75d3cfae, 0xf2fd0fc4,
+       0xb4b8fb25, 0xbfb05278, 0xf2ab97f2, 0x7fe9abe5, 0x2e5f2ab9, 0x34f970b6,
+       0x1b9d49f5, 0x58f169f9, 0x9ce78cb3, 0xb5be4f85, 0xf17ee91b, 0x033c888a,
+       0x93f17c4c, 0x4eafda06, 0x816fd9b3, 0x59b44f7a, 0x2df2858e, 0x433f2f21,
+       0x5bff41fe, 0x1e6364cb, 0xee31eb95, 0x9e1f9caa, 0xc348fd5b, 0xe7ce300d,
+       0x06f7302c, 0x1745dfc0, 0x078bd3a7, 0x0c7f14b4, 0x3eac4f3d, 0x80beb2fa,
+       0xe279c75d, 0x9711ce35, 0x1b924eb1, 0x86279dfd, 0x35fe239e, 0x26709cdd,
+       0x239d058a, 0xbcf0b2ea, 0x4738b172, 0xd121da2c, 0xd6af17bc, 0xef300c06,
+       0x371e78a2, 0xfd83ed3e, 0xfdbad3d7, 0x3f178016, 0x62cef5ca, 0xf08c0526,
+       0x563b4de7, 0x8e731c50, 0x12153390, 0x7f7d2373, 0x414ce11a, 0x93d17f3f,
+       0xc5df8411, 0xe1fddd4f, 0xe75ef063, 0xc10919da, 0xa425f57e, 0x9fea448b,
+       0xfb7ae319, 0x43ed6cf9, 0x45ff4829, 0x0c7f834f, 0xcb1c59eb, 0x8a9f9c5e,
+       0x829495fb, 0xbb4a9de7, 0xcc1eebc5, 0xbfc0ede2, 0x62ba3f06, 0xc1d696b3,
+       0x1e90315e, 0x93b75e04, 0xab78169c, 0xaf547f5a, 0xd98c7ae7, 0xdafb09c7,
+       0x6b7c7281, 0x3fde1687, 0x135af505, 0x19dfcfe1, 0x13bf2f14, 0x39224afb,
+       0x95f5c1e2, 0x673ba46b, 0x7a5d3f51, 0x0c94ebe4, 0x6626d76e, 0x8ac8f3f0,
+       0x141de714, 0xe0d87e87, 0xfbca975c, 0x00f32ad1, 0xd35aaeff, 0x35ce88b1,
+       0xb8a0637f, 0x08facd4a, 0xf9344457, 0xd0fdae23, 0x64cc8d6f, 0xcbf61c7d,
+       0xc1ccb9d7, 0xff3c06e5, 0xd5e78648, 0xab172e66, 0x26df0163, 0xe81a204e,
+       0x2bfc2bff, 0x3497f79d, 0x9efdf7a2, 0xfadea5f1, 0xaf88119c, 0x3865b9f8,
+       0xc4b4178f, 0x878c80b7, 0x7bbed1f3, 0xfd1a3b41, 0x87cd8aea, 0xbd9ca2a7,
+       0x1651a5e7, 0xc5e2b57c, 0xb89e903f, 0x2773ec47, 0x37a8f9da, 0xca097e00,
+       0xdf38321b, 0x2e3cb478, 0x87c08374, 0x7d4adfb2, 0x8f1d66f5, 0x473c83d3,
+       0xf6bd5201, 0xb56fd44f, 0x728ac3b9, 0xdd15fab6, 0x13c79438, 0xd72bfcc4,
+       0x11f49a0e, 0x2ea54fd0, 0x697a82c6, 0x1e867f99, 0x12f565e1, 0x25efbdc1,
+       0x7e3d20a6, 0x68d5feb1, 0x234f93a4, 0xff51335a, 0x7088ad74, 0x5805c2ee,
+       0x8bee5c78, 0x30bb99f5, 0xe965537e, 0x5f504b30, 0x0e3d2ab5, 0x9627f4e5,
+       0x7fd63d56, 0x41aa9cd2, 0x4cb165d8, 0x8f25d842, 0x100bf824, 0x7e82cd59,
+       0x4b96ae90, 0xed973f7c, 0x834fac3b, 0xeb10eef1, 0x1fc2f0bd, 0x53ce30b2,
+       0x8591d29d, 0x3bf603fa, 0xf9e2206b, 0xeff48979, 0x575a7df2, 0xfdde88c4,
+       0x0dfb8e5e, 0xec54b5fc, 0xaf03f2f3, 0x7ee904fe, 0x5e77ee39, 0xba017a5f,
+       0xf7cf423d, 0xf8ca9cef, 0x2e9047fb, 0xf0057d14, 0xc61c5d7a, 0xa77c38e9,
+       0x2f3c23c0, 0xb9fdcfe6, 0xf37b2f24, 0xdef4540e, 0x11aefedf, 0xd6b957fb,
+       0x8d757240, 0xe6e76f58, 0xff71a257, 0xf870bc2e, 0xa94f3c6d, 0xd8da0fde,
+       0x05ee8611, 0xfd706a3e, 0xb27f34d1, 0xbd706a23, 0xefebbdd1, 0x6fc173a1,
+       0x4faf8c35, 0x2c8d6f59, 0x8bd4afd6, 0xf8521ff7, 0x1d7c0985, 0x4bf9c218,
+       0x2bf213f0, 0xfaca63da, 0x7dfc713c, 0xc99f3e85, 0xab7d7ae0, 0x34b32758,
+       0x707e2347, 0x00ce517f, 0x8af4b8fd, 0x172680dc, 0x07f9825e, 0xff3297ed,
+       0x5c1e7197, 0xe362b86f, 0x53b1f77a, 0x873496c3, 0x10ecc389, 0x06e4e3f2,
+       0xe00b4a5b, 0xaff00bef, 0xe800ef28, 0x4f1a0e55, 0xbc651ba1, 0x4e955fa2,
+       0xff4375c3, 0x32bfd8ad, 0x28fe27ee, 0x84f9fb19, 0xe650fe71, 0x5165f0af,
+       0xa36982ed, 0x05ddb1a2, 0xae2e7a73, 0x72ff8f9b, 0x77de8586, 0xef005da1,
+       0x8a245abb, 0xfe149f4f, 0xaf0dc9fc, 0xf6e65746, 0xe24bfbd2, 0xfc61fc3d,
+       0x0a9e742b, 0x33d105fd, 0xd368b3cd, 0x2b0869bc, 0x4ba50df3, 0x7d0a6f05,
+       0x648935b2, 0x29d284af, 0x17a298d1, 0x73d3fdb5, 0xca49f24d, 0x3cf3e9cf,
+       0xef613fb4, 0x19718a7c, 0x8c891b94, 0xdbd7f3c7, 0xe904648f, 0x8299f871,
+       0x1fa28af5, 0x0e55b7e0, 0x9e8a2bd2, 0x9d7049af, 0x66b27dc3, 0x3f7ad1a6,
+       0x02facd67, 0xd9d977e8, 0x8ed1a98e, 0xc6f2fb5e, 0x18daadcb, 0x481d438c,
+       0x93d60bcd, 0x211fcecb, 0x1d66afba, 0xaa5fd11b, 0x1987fcd8, 0x3f7d2037,
+       0x9af3a3a7, 0xf4530d8a, 0xbddfb768, 0x8871aefb, 0xe9755386, 0x35cfc724,
+       0x684d1d8d, 0x5ceb1661, 0xa6aafba0, 0x0edee647, 0xb45aabcf, 0xd0e7924e,
+       0xc56bf20f, 0x6e29a37d, 0xe74469fa, 0x9f68098c, 0xa0b5afdf, 0xf7713e7d,
+       0x7ed835d8, 0x2c7079a2, 0x14d5c7ae, 0x8e4bb04f, 0xd8a07d21, 0xb9089fb3,
+       0xe713ab58, 0x7f9c9987, 0x528657fe, 0x54513972, 0xe7859b5b, 0x413b5ded,
+       0xcbfac31e, 0x56e68ef5, 0x1b75ef1c, 0x60350ff9, 0xe8e3d86b, 0xadec9bdc,
+       0x4c667a25, 0xc6e7a3ca, 0x547e7824, 0xea1f71d7, 0x99f7a38d, 0x09c5ad47,
+       0x571dbf68, 0x7e64edc9, 0xc7cf189e, 0xc55fb1ef, 0x3a08ae3c, 0x794fed0d,
+       0x03fd1dbf, 0xfe629f94, 0x373fd6e7, 0xb9def517, 0xb87199bd, 0x8f5ecfee,
+       0xe93b43a8, 0x87971d33, 0xbf60ff4a, 0xb3b60e9d, 0xc1536ec0, 0x60a99f60,
+       0x6ad3b7a0, 0xcd1d6ebb, 0x6d53362f, 0x5ef4299f, 0x263322be, 0xd420cf38,
+       0x271f672e, 0xf5c13e50, 0xf79d25e6, 0x18b2a201, 0x0cfa23fb, 0xd4717ef0,
+       0x9e632f77, 0x837aa2e0, 0x3ceb00c5, 0xe78f748d, 0x0368af54, 0x36832e78,
+       0xe9c1f237, 0xd0074657, 0x31f45c4f, 0x4b351787, 0x3abd4c01, 0x16936db2,
+       0xfb042fdb, 0xd90526d1, 0x9b6e8fc5, 0xd170ec8b, 0x0498d9e9, 0xe5ee2fed,
+       0x6d5013f9, 0xdf87b10a, 0x6ff4724e, 0xedb3ff0f, 0x30be2560, 0x93b7c159,
+       0x0adf1139, 0xe8bf159e, 0xfc87a04d, 0x7dbc5ebc, 0x76425be9, 0x879f79f0,
+       0x93a4afca, 0x3a444f0f, 0x7738c736, 0x6bbf6bc1, 0x103b4479, 0xa8c0fbf7,
+       0x9dbfd16f, 0x20b18a60, 0x5be97eff, 0xe7a3e74d, 0x952a5e7d, 0x6be256fd,
+       0xa3681e37, 0x196cbef7, 0xbc22707d, 0x462986f7, 0xb0b8fdc8, 0x2f9a1afb,
+       0x1b8aef72, 0x595cf86c, 0xf3f7e7d7, 0xbbf1edfd, 0x8d15def6, 0x227b6aeb,
+       0xdc78e0fe, 0x0b18a8d7, 0x458b79da, 0x4699c8be, 0x359f2f6e, 0x05b9ecc6,
+       0x8eecf7f6, 0xf20656d9, 0x9cdb6173, 0xd17cf8b9, 0xed0592eb, 0xa5ebe77c,
+       0xfd8fe8d1, 0xb68cee4d, 0xb5ef0960, 0x80e47ce2, 0x84d2e516, 0xdb1b3612,
+       0x9995684f, 0x491f9523, 0x3f8c9d23, 0x015a072f, 0x539e02fe, 0x48dbe3fc,
+       0x2fc07f8a, 0x1641f31e, 0x4dc796fe, 0xe157fc7a, 0xeb144dbf, 0x4fd81a7e,
+       0xf3d04f9c, 0xfcfe7ca2, 0xcf2f1db3, 0x35cefec4, 0xef382ce9, 0xd4749b2f,
+       0xbbf052ff, 0xb3df3034, 0x833fb97b, 0xe7c1fa30, 0x65bf72f6, 0x5bf73369,
+       0x5ce857aa, 0xf4be98fa, 0x0ed41458, 0xe67843fd, 0x16ef71c0, 0xe9d0a6f4,
+       0xdf5f1752, 0xb88fd052, 0x8dba50de, 0x111bcd65, 0x3e68ff4f, 0xfedd2868,
+       0xf43e4432, 0x747f6bd0, 0xfc89f022, 0xd0aaf48e, 0x7e46d2c3, 0x3cd71f1e,
+       0x4ee900aa, 0x9e450fa1, 0x36590bf8, 0x3d5adfea, 0x1e3cc6cb, 0x89d226bf,
+       0xe4d4a072, 0x987ea1d0, 0x4c59d09d, 0x2e2c8ce1, 0x1a45b5cf, 0x50f50697,
+       0x45e481ad, 0x3179bca8, 0x6353db93, 0xfda1f690, 0xcf0b4cb1, 0xf25e64d7,
+       0x16129443, 0x76f50832, 0x7fdc5469, 0xeff36a62, 0x259e3f32, 0x274bfcc3,
+       0xee97ddc6, 0xe670ec64, 0xd03259a9, 0xb8e8e977, 0x7e00d257, 0x8727776b,
+       0xd58dc647, 0xfa56bc01, 0xc0315674, 0xbf5d32a7, 0xe71a0ccd, 0x20db6edc,
+       0x3f3c1f5c, 0x2407cf88, 0xb2c4de7a, 0x79226f46, 0x35d495fe, 0x6f6a7562,
+       0x9baf13fb, 0xa39df93f, 0xb1d4ee17, 0xc22e6714, 0x5fd1d68c, 0x6ae59119,
+       0x9faae3e7, 0x81b63257, 0xfffcf1f2, 0x794491f6, 0x846dccbe, 0xd055bffd,
+       0xd4d1a55b, 0x75bff94a, 0x763df3ba, 0xcc089808, 0x9d232319, 0x727414cc,
+       0x86dadcab, 0xf5b0e7ef, 0x32463396, 0x895c76b1, 0xb079dabf, 0xfd28cecc,
+       0xa57cbd01, 0xbd02f583, 0xab7e404b, 0x4024a581, 0x37c83972, 0xfdbfe0e9,
+       0xf5adfb1d, 0xda08ceb3, 0xe60b7287, 0xa3cc4b1b, 0x756502b9, 0x8c08f454,
+       0x355eb89b, 0x9f609ab7, 0x4510be57, 0x62b7717c, 0xc6b2a0ef, 0x5f0b367c,
+       0xbcf3b30f, 0x3d04fb82, 0x1963e67e, 0x51e63219, 0x8652fa1f, 0xf08eec79,
+       0x7da26574, 0x653779ae, 0xb8f903a5, 0x8ded1a36, 0x9d6a2f0b, 0x65fb40b7,
+       0x4d653ec2, 0x681e4289, 0x7d43275b, 0x2ece6a7b, 0x25ff3fd4, 0xd4f9f9f4,
+       0x510794d6, 0x7f72a49e, 0x81ddda08, 0xeeb258fc, 0x776c44a6, 0x194da5fe,
+       0x0cdf610b, 0xac347630, 0x33e866f3, 0x03aaa61f, 0xc9e74b58, 0xea07ea01,
+       0x7cf0d1fd, 0x2923ea63, 0x1b990e9c, 0x8feca3d7, 0xfb3ef782, 0x1da34301,
+       0x1d3231ab, 0x6c39a9fa, 0x53f90587, 0x182997d9, 0xacf98044, 0x53c7857c,
+       0x07ac4a56, 0x67d0b8c6, 0x186bc046, 0xf47d53f9, 0x8153b22d, 0xb92afd1d,
+       0xf0aee3b3, 0xa77f31fa, 0x67febb1e, 0x2cf4c9eb, 0x8a3e7791, 0x0dc2ba8d,
+       0xc5d7da48, 0x6d14cda2, 0xf5c643b9, 0x489d1a24, 0x4c9f2b0f, 0x1cc43d27,
+       0x941e89db, 0x3c476c76, 0x54c6c9d1, 0xeeffe12d, 0xf9826816, 0x28032d40,
+       0x9696f24f, 0xbba32a38, 0xdcfcf4ed, 0x70c6779e, 0x67f7c479, 0x42b6b3c6,
+       0x767a43ca, 0x3cca9508, 0x537a0a56, 0x2dd17cf0, 0xeb947cf0, 0x3d6695b3,
+       0x7f6415c5, 0x4de50c4e, 0x00596bb6, 0x674739e0, 0xdabf10eb, 0x06d74e48,
+       0xc23986bb, 0xf620cde0, 0xc911c223, 0x81fec11c, 0x7e81d5df, 0x1f513cc0,
+       0x52171d95, 0xae6df7cf, 0xd33cfe58, 0xde705b92, 0xd500e766, 0xa7a29b38,
+       0x695d13b6, 0x5f38cbcf, 0xc58964c3, 0x794e39e3, 0x1cfffe48, 0xf49bac35,
+       0xdd5fc935, 0x66fdd0a4, 0x0d6bf43a, 0xf2f3f52e, 0x7237a12c, 0x3ef04e58,
+       0xc99fc1f6, 0xda0d7c48, 0x8024fb7b, 0x58ebb6e7, 0x39edc1c0, 0xba2fd7b4,
+       0x9bb7440c, 0xa4de0422, 0x6856f631, 0xc6af931f, 0x8d4bac5f, 0x3512f8af,
+       0x6add127e, 0xd2cad83c, 0x9e49f554, 0x81faaaa1, 0xf054f24b, 0x5504ef20,
+       0x0babc1fb, 0x7faa7055, 0x7a7daa9a, 0x9c152cdd, 0xaabb7f59, 0x4ac690fd,
+       0x604e7d55, 0xd87eaaa9, 0x782a95de, 0xaa03f378, 0xd65b23f6, 0xb547eaa9,
+       0x8fd5516e, 0x0a85ff6e, 0xb8f1db1e, 0x1f0dfdaa, 0x8fd552ed, 0x555e7cef,
+       0x7eecf13f, 0xd7637c15, 0x93f6aa6b, 0xe0a90fbb, 0xaa8ef602, 0x0ff1917d,
+       0xe58a782a, 0x37f6aa2f, 0xd5553fd9, 0x42f8ecdf, 0xfb3d3f55, 0x547e0a92,
+       0x0b2e79ef, 0xbff9d2f9, 0x64cdef55, 0x024f9f8e, 0xa0979e3a, 0xfc02b671,
+       0x087e452b, 0xf427dbba, 0x2960cb29, 0xb453a748, 0xee895a93, 0xfa27245a,
+       0x49faa11d, 0xc2edc2fe, 0x557b1cb8, 0xc03ef7e2, 0xc68393ee, 0xc119758b,
+       0xe385ec41, 0x382a2c4b, 0xb5576dd1, 0x543995b7, 0x6c9e49f5, 0x25c0fd55,
+       0xc83c154e, 0x3f6aaf9b, 0x054bb578, 0x544bfaa7, 0xdcebd3ed, 0xbeb3382a,
+       0x487ed54c, 0x9f5547a3, 0xaaa25813, 0xabd7b61f, 0xaf378782, 0xd91fb556,
+       0x8fd557e2, 0xd553ad6a, 0x57af6e8f, 0x1a3b63c1, 0xf86fed55, 0x1faaa028,
+       0x5557b9df, 0xb36cf13f, 0xabb1be0a, 0x727ed545, 0x2e0aab77, 0xed554760,
+       0x54278c8b, 0x9fcb14f0, 0xb26fed55, 0xdfd5549f, 0xaaa738ec, 0xe991ec57,
+       0x9fab5fd9, 0x8664fb0b, 0xf7aaeff3, 0x862e85fd, 0x2fdfe1f4, 0x88a4bdd1,
+       0x02ae3c21, 0x4233bb72, 0x9b8cf68b, 0x987141e2, 0x2b720808, 0x5d112fc6,
+       0xa72dcaa1, 0xe90252b8, 0x0e295229, 0x3d01d7cc, 0x55de8d1f, 0xbfda2a6a,
+       0x5676bd51, 0xd7d195f2, 0x86d9676f, 0x8fc79a30, 0x434c7886, 0x788fd112,
+       0xd9da2a69, 0x46ff3377, 0x6d14c79c, 0xe8274c6e, 0xea11e3b7, 0xde528538,
+       0xe4cb3c6c, 0x68eebb20, 0xde727d44, 0x9bf9fc55, 0x3c99e78d, 0x115fa83a,
+       0x7d6090bf, 0x7ffa832b, 0x1900fc18, 0x1f7afe7c, 0x40d80df0, 0x0859f0bf,
+       0x2767d47e, 0xa0e7c1b8, 0x4d97d1b2, 0x273ee3e5, 0xe5f0efd5, 0xcf94fc13,
+       0x57c07045, 0x9f2ee542, 0xf9379e9b, 0x03de08ca, 0x7b96317e, 0xf2c64fc1,
+       0xb177f079, 0xbff81f7e, 0xf3e8bf08, 0xabecd953, 0x7dfbe7a3, 0xf01f04f5,
+       0x1bfc1235, 0x16ca805f, 0x5f2a5edf, 0xfd5335f3, 0xc10b5f41, 0x095af86f,
+       0x13b5f56e, 0x41d7c87c, 0x47df11f0, 0xebedbf04, 0x77ddb2a4, 0xbe63ca96,
+       0xd77faa2e, 0xef704dd7, 0x5beda97e, 0xc5bdec26, 0x02580e82, 0xf116f3b7,
+       0x8b9f652d, 0x4162ed78, 0x5042ba87, 0x0c4f6897, 0xf985dac8, 0x4e9163af,
+       0xde4e89b2, 0x78f621fd, 0x94a5bfa8, 0x9e440b1b, 0xc7890ac0, 0x2d7d145f,
+       0x7d140cf2, 0xf71f7e5d, 0xfd80174f, 0x1f06e78a, 0xf27b7047, 0x8d9757a2,
+       0x14b95976, 0xe7fb44e9, 0x646ff7a2, 0xf73c30ef, 0xf3bf9206, 0x96e761a0,
+       0x1cad3f20, 0x5c60d7de, 0xe695253a, 0x75dace53, 0x332a9e74, 0xe4f81697,
+       0x0b3c83f7, 0x69078e89, 0x9b2fe4fc, 0xeafefc02, 0x2192cf20, 0x85ffb163,
+       0x8be7636f, 0x4f3a4e2d, 0x4d68619c, 0x9171879c, 0xe78a5aa3, 0x1a8f87f5,
+       0x6fde4f91, 0x92e71bfd, 0xf92eaed1, 0xfc41eb5e, 0xcb99d71f, 0xe0f04e30,
+       0x7bc71e10, 0x55468870, 0x0f3c52fa, 0x31be7ce0, 0x00d0ef7b, 0xd1f9bf0a,
+       0xa6f73d8a, 0xb7c9faf6, 0xf609aba2, 0xe873296f, 0xb991bf28, 0x0cabc2de,
+       0xc10f31b7, 0xca9f98f3, 0xb53d93af, 0x2cf9deb8, 0x8267b040, 0xbadc2521,
+       0xb0f5e742, 0x62c3d798, 0x42f94a3e, 0xd867e78a, 0x176637df, 0xf8f8ebcd,
+       0x5d70b29b, 0xa42ebcca, 0x86fdc438, 0x7e70a7ae, 0xf5febcdf, 0x2fbd2919,
+       0xd00ffc7d, 0x2ac30985, 0xb9e18ed0, 0xf4262d48, 0xfded7d40, 0x2b75e512,
+       0x018e5174, 0x8d6f7c40, 0xbdfef944, 0x81f40274, 0x1742547e, 0x3a040bdd,
+       0x64e89e79, 0x07afd6bc, 0x26b8f0fb, 0x39d12590, 0xc63d42f3, 0x0027160d,
+       0x4ff5a47d, 0x3dc5cb07, 0xd039e504, 0xefec01d7, 0x90dedfcb, 0x79aaf88d,
+       0xf103bc63, 0xf7e1ab55, 0xb4c7fd93, 0xc2c79e4e, 0xe276b945, 0x324f8a70,
+       0xb8c4e9d9, 0x78430cd2, 0xd881faf9, 0x5d76e3a7, 0x53fa8049, 0x2bbcc79f,
+       0xd15dedf6, 0xcf8ae56e, 0xde616996, 0xa39d0fc7, 0xe67d2cfb, 0x4e58fabf,
+       0x6bbcd046, 0xbe524e5a, 0xafbb6845, 0x8978f086, 0xbd5a3742, 0x14d3b3d9,
+       0x3a1eaf3c, 0x71d103fe, 0x3a71d02c, 0x3c19f1d1, 0x70699c77, 0xfc43ccc4,
+       0xeed04a03, 0x216d3cf6, 0x3992ae7f, 0x6e62aca9, 0xb6c3172a, 0xfdbadd23,
+       0xef88f4db, 0x9e99aca5, 0xcbbfcf2f, 0x48bc748a, 0x773f21e3, 0xe2ec6619,
+       0x2aeb3039, 0x6ede03b6, 0x96fb5bab, 0xbb37d01d, 0x8c14db7e, 0x540acec7,
+       0x696585bc, 0xf3067493, 0xce2f8157, 0x4a747ee0, 0x60030dde, 0x15f7dbfc,
+       0xcf08186c, 0x7ef96a67, 0x7ef877b0, 0x74237228, 0x5f07c0dd, 0xbac41f12,
+       0xe8da5d68, 0x941f1512, 0x292e63af, 0xbe8f37a1, 0xeff22f87, 0x28818ff9,
+       0x3a2ee4bf, 0xc379af4f, 0xbcfb8710, 0x2efd7194, 0x867894b9, 0xd119d7a2,
+       0xd22c3df9, 0x173eed89, 0x20f9fd74, 0xb9fd7446, 0xbcbee8c4, 0x14b26f62,
+       0xbd2f3d8f, 0x68d73f57, 0x3c408df6, 0x65d6fe81, 0xda7f3d23, 0x2a5471bc,
+       0x0a40fdca, 0xe7ba1bda, 0x54dace0d, 0x57611e95, 0x58e37aa2, 0x5c78eb0f,
+       0x525e7429, 0x477fdbfe, 0x67a0c2fb, 0x00d73c7e, 0x90e366be, 0x89e8079f,
+       0xb5116aaf, 0x742b0f18, 0xacb9f83b, 0x62e3ffba, 0x71dfedbe, 0xeb0fd6ff,
+       0x7d947bc1, 0xca7ae1c7, 0x0e3bd910, 0xa32b0dc9, 0x49b23271, 0xc78cf569,
+       0x68c99d4c, 0xe91abf8f, 0x2af5c749, 0x3fc51bf1, 0x2cfd4f6c, 0x4da9ee83,
+       0x63c8acd8, 0x23f8679e, 0xeb8e872e, 0x8f847e1c, 0x7c52a417, 0xb7af915f,
+       0xd778f3e6, 0x6b7c4aad, 0x2b7c4852, 0x26c2ce24, 0x31778f85, 0x36bf24e6,
+       0xe0ac7d87, 0x8a2be283, 0x67a3ec5c, 0x141d6161, 0x3c507697, 0x32ee27a2,
+       0x79403228, 0x68735b58, 0x37217a7d, 0x95b7df43, 0x7e548e01, 0xd6701182,
+       0x625c0f0b, 0xbc83c151, 0xc1fb5576, 0xfaaa1dab, 0xaab67f54, 0xa9cebd3e,
+       0xf3eb3382, 0x3487ed55, 0x4e7054ba, 0x7ed544a0, 0x0ab75ed8, 0xa65cde1e,
+       0xc5b23f6a, 0xd51faaa3, 0x3f5544ba, 0x82abddba, 0x56ac76c7, 0x23e1bfb5,
+       0x7c7eaabf, 0x7eaa9d67, 0x157ad9e2, 0xa357637c, 0xeee4fdaa, 0x80beaa80,
+       0x2faaa73d, 0x82a4be32, 0xab7e58a7, 0x88b4ff6a, 0x6f64dc2f, 0xd9bf3d53,
+       0xdef55471, 0x2a13ecf4, 0xcfb169f8, 0xc491f9fe, 0x5c250d17, 0xfe70cd0f,
+       0x3b0fd559, 0x7fef9438, 0x54f67f04, 0xa146dffb, 0xd34a7c9c, 0xeb748a95,
+       0x20065ad0, 0x97e4671f, 0x8c33c21e, 0x428ad72c, 0x25d96f14, 0x39610edb,
+       0x2152fdd4, 0xd96e49b2, 0x8e584389, 0x085d7cf0, 0x92e731dd, 0xe658c3d8,
+       0xd9154779, 0x4bab2a70, 0xce39630f, 0xe508a2bf, 0xe90fd3ea, 0x611f2287,
+       0xa7d391ac, 0x5573e88b, 0x79f88692, 0xe5137cd5, 0x9a2759df, 0xac4a7464,
+       0x63d7588f, 0x48facfbc, 0x75961d5e, 0xf407b760, 0x1d800760, 0xb016e58f,
+       0x405903df, 0x23bf60ce, 0xc2c4eabc, 0x67e83492, 0xbe9902f0, 0xb2196057,
+       0x5ff30926, 0x67d42f6c, 0x5ec13937, 0x5ce6fbdf, 0x9f8c0e5d, 0x33bf9dee,
+       0xe66ce016, 0xb178039a, 0x9f308e02, 0xe6e7feee, 0xdefcc1cf, 0xd7363850,
+       0x7e8d94dd, 0x839cdcbb, 0xefd29f76, 0x9dcfc2e6, 0xf73c0b1a, 0x04739dcf,
+       0x313dbef0, 0x0257e792, 0x3d71905c, 0x445ebafd, 0xbdcf0379, 0x5e21f2e1,
+       0xe37ae6ce, 0x928d1cfe, 0x7dc1605f, 0x636df1b3, 0x624fb036, 0xc7db9700,
+       0xb6893eaf, 0x4bf16cbb, 0xdc590f74, 0xc194a163, 0x47278274, 0xf347138e,
+       0xcbdec60e, 0x7ae1b4f5, 0x4ec61e6c, 0x969dc705, 0x80ede1a8, 0xbd1953e7,
+       0xa9ddd1f3, 0x06b0cbf1, 0xa76e33dd, 0xb1d9c613, 0xf00bd600, 0xcedabd76,
+       0x28f98218, 0x23909f50, 0x9dbe47f2, 0x28fb44ed, 0xe7af8721, 0xbcd75f71,
+       0x67e819d3, 0x60395375, 0x80f25789, 0xbb95b37c, 0xa172989d, 0x847c05ab,
+       0x8cfe5bb1, 0xdcf03b97, 0x12fdf0e4, 0xe5d793de, 0x501e0838, 0x0f75a01e,
+       0x06fd025c, 0xfb2edfcd, 0xb013cc25, 0x384bf1af, 0xedc5bb3f, 0x663d73c4,
+       0xfdeeaab4, 0x3f7f57d9, 0x5fd834ef, 0x89db9f3a, 0x81d374ed, 0x2afe313e,
+       0xae782d7b, 0xcc792977, 0x0d93cf55, 0x5f9efc9d, 0x29d1f57f, 0x5f49780f,
+       0xe0726edc, 0xf3d3dfb9, 0xc33b654d, 0xf813a7f4, 0x1ea714d9, 0xf8e5aadf,
+       0x25f6e450, 0x8547df0b, 0x658def8f, 0xef7e392a, 0xabb631a0, 0x68d6d7cd,
+       0xf9a09e64, 0xf071876e, 0xddf0ce9c, 0xdfae0b0a, 0xc082f220, 0xb279235d,
+       0xf26cc9f3, 0xb1f74297, 0xe5023d0f, 0x7d21e4c7, 0x316a0674, 0x4f40bb9e,
+       0xfdb1cfdf, 0x750946eb, 0x4f5600f3, 0x41b63d09, 0xea32edc5, 0xe393d935,
+       0x5e4f630e, 0xfd952e8b, 0xe873f453, 0xa4aee97e, 0xf100a9ff, 0xf3cf0efd,
+       0x3134795e, 0xc07f382e, 0x9f32e829, 0x3f916bd5, 0x2a66b026, 0x2a0eb127,
+       0xa8bac47f, 0x8c8b3174, 0x52732165, 0x54dccc59, 0x2a5e654e, 0x953d584b,
+       0x953358d3, 0x2a0eb0b7, 0xd2a18fc1, 0x6fe42ccd, 0x8dfd02cd, 0xa6e61ce5,
+       0x52f32e72, 0xb7e82859, 0x7c13d58c, 0xb2a66b3b, 0x3f0ef805, 0xc81af1d5,
+       0x820f2c3b, 0x0df2c39c, 0xb6587390, 0x91cc1cfa, 0x367ffe85, 0x4e7c4795,
+       0xe5f6df2a, 0x73eed953, 0xbe63bb51, 0xf5df2a12, 0xee3ca9b9, 0xc3b2a32b,
+       0xef76a1e7, 0xf95096fb, 0xe54bcf81, 0x54d5be87, 0x53f3e47e, 0x3abeeff9,
+       0x79e8872a, 0xeecb187e, 0xd3f9851c, 0x5dea9f29, 0x0fcf900e, 0x761e3c0b,
+       0x33997e69, 0x434df706, 0xe2b60667, 0x3fa4257b, 0xee86b65b, 0x5ec96ddb,
+       0xe505dd29, 0x7edce3a6, 0x64ccd833, 0x571ada1f, 0xd58f9849, 0xa36a7522,
+       0x72ab2f60, 0x0463985e, 0x90705cf9, 0x22728fad, 0x2351ffbc, 0x9d4eddd0,
+       0xd4276bb7, 0xafdcf9df, 0x674118e7, 0xffbf304d, 0xa61cf3c5, 0x5847f1fa,
+       0xa5e005ad, 0x8a3caf39, 0x1e70a257, 0x3d56fc28, 0xcc1ceaf7, 0xe0587fff,
+       0x7054d9f9, 0xbebed128, 0xf5f644df, 0xa353c6a8, 0xfc76dcf0, 0xfa1e536a,
+       0x28ed4183, 0xbb5fdb2e, 0xbde57ad0, 0xb5ac2b1d, 0x674d8788, 0x47872cc0,
+       0xa39de929, 0xdc14fe30, 0xc6fae6af, 0x8cabda67, 0xba4edc1f, 0xe5ef7f4a,
+       0xf9c81eba, 0x43ce807f, 0xe5775be9, 0x223497d3, 0x69f503c1, 0x33972c53,
+       0x629f605d, 0x9c536a7e, 0xd0673780, 0xe21e50ba, 0x92da6dbe, 0x4d2fe746,
+       0x4795ee11, 0x1a67feb1, 0x8a693bca, 0x21c96cf4, 0x12e28338, 0xd9bce29b,
+       0x94f78071, 0x1a97ae28, 0x08881f92, 0x47b79fbe, 0x93edafc8, 0x44ec772e,
+       0xc34ea23f, 0x576c7f30, 0x6ce6e55d, 0xad99e7e8, 0xc4ade532, 0x39b558dc,
+       0x36d3ea13, 0x8569c66b, 0x3c79c38c, 0x0f6ab5b3, 0x2436cde6, 0x82cb8d0f,
+       0xbc85d37e, 0x1cef894c, 0x6a7bdf85, 0x6fcf87d0, 0xf1e8417c, 0x14e6e82a,
+       0xf08a65d0, 0x78ea77cf, 0xeed2a15e, 0xefdc39f7, 0xcf9722fe, 0xc7993753,
+       0x23830cad, 0x5d479803, 0x39c79830, 0x79f9ebac, 0xbff93595, 0xf504dc4e,
+       0x271a1dd6, 0x6db2749a, 0x67bc5ad9, 0x6b3e72b7, 0x29dc7e46, 0x83fdf7f1,
+       0x86085db8, 0xd0695a42, 0xbeedf17d, 0x0465e68f, 0x65ed07c5, 0xf7fd097e,
+       0x24cbc182, 0x935aa78c, 0xf7e84a97, 0x923ccb5b, 0x81fe8cc7, 0xc30dea97,
+       0xbe91473d, 0xbef0e5ec, 0x93ce1cea, 0x53bafb84, 0x1e82cde4, 0xef1e0bc9,
+       0x372e5c9b, 0x4c9f8036, 0x3d7aeaf6, 0x5f142bcd, 0xdf0bc31d, 0x7d95fec7,
+       0xe5ffad0c, 0xa69f8e50, 0xf2043075, 0x37ee78c1, 0x803ddf1f, 0x0d99c7ec,
+       0x9ff42e91, 0x5a1b6f8e, 0x262ff04c, 0x3c8ed0b8, 0x7d027bbe, 0x2fe66e8f,
+       0xe3bb51a6, 0x7f476b12, 0x6e2fe678, 0x4a79f197, 0x70efa33a, 0x13d49d74,
+       0xc5fcce3d, 0x03fef152, 0xaf9f58c5, 0xfd0afff1, 0xe7dafcc8, 0x9e4fd0a3,
+       0x103fde60, 0xce9ae3cb, 0x99bdf855, 0xf7ec2d5b, 0x9bdd9ea8, 0xe2567e13,
+       0x69ab5bc0, 0xbbafb43a, 0x7e7c7873, 0xf8e97336, 0xfc9bbb39, 0x3b7b49ba,
+       0xcfd5e30e, 0x1577351f, 0xaba531e1, 0xcb0472c5, 0x5e2756c2, 0xedc5657f,
+       0x4e5823ee, 0xa316f0ed, 0x51f252f9, 0xe72c11fd, 0x88dd3d3b, 0x75ff679f,
+       0x0167feee, 0x2ad0fc1e, 0x1941da0b, 0xde6f3aeb, 0x1d3a7145, 0x2c7a2fdd,
+       0x45af5bdf, 0x47d63602, 0x5a487ca0, 0x8befa1a8, 0x63eb5218, 0xcc2c3611,
+       0xa6eebca0, 0xb425fad8, 0x8648ccee, 0x7a063c78, 0x31e2e908, 0xf2047d4b,
+       0xed25f013, 0xdde05e83, 0xc4b5eb10, 0xc71173e2, 0xbe2769ef, 0x69ea67c3,
+       0xd12b1f57, 0x1ee20938, 0x97ce8590, 0x6f7f426d, 0xbb417a07, 0xecf66ac0,
+       0x63ceb8c4, 0x7effce2e, 0x6c0ba713, 0x57ec11be, 0x8f1021f4, 0x74ef7af6,
+       0x65ca0ff2, 0xa82ade75, 0x7d17ec41, 0x82f78a10, 0xbaff410e, 0xc830e241,
+       0x09979e19, 0xd8638c3f, 0xc89dd64d, 0xadfccac7, 0xb87f751e, 0xdea6598e,
+       0x1bba14f7, 0xe7f39435, 0xc7beb170, 0x653fbc3c, 0x1d4379be, 0xcc093be2,
+       0xfd92b1a1, 0xeb03e7c6, 0x27cd04d0, 0xafad1da8, 0x69ccde67, 0x3d1cf7e7,
+       0xc8ffbf12, 0xfaf0721c, 0x1bca64ab, 0x437e9bb7, 0x28d1c4f9, 0x3f9e6047,
+       0x246f1b6f, 0xc7590d3e, 0xde22a1d4, 0xb4257b21, 0x7b95a7db, 0xab63cc24,
+       0x3f467e05, 0x6b602ac6, 0xdafa4cb2, 0x7494aa6a, 0x26b5eb41, 0x9e9e9157,
+       0x8b59e656, 0xe5a76ff7, 0xbe913947, 0xf5e6b3a7, 0x47dfce16, 0x437e6032,
+       0xf28fcf58, 0xd03d6982, 0xf0aaa9b0, 0x73f802fd, 0x402d6b10, 0x43ecf6d1,
+       0xa38f288b, 0x746981e1, 0x7b303ffe, 0x788a1b67, 0xdf7cd7f7, 0xd71e02d9,
+       0x9f21d8c9, 0xf2475e0e, 0x3795592a, 0x1a99603a, 0xc1507a06, 0xa4d95d0a,
+       0x6f18b125, 0x4ee544d3, 0x19b942cb, 0xb3dfe1ad, 0x8e697e63, 0xe95cafb9,
+       0xff025743, 0x0f54feca, 0x5a7c20cd, 0x07da1a4d, 0xde34e5d6, 0x572b1666,
+       0xdfcf09f6, 0x8f31cd80, 0x1b58b6b9, 0x767c7bc0, 0x6f768f6c, 0x7dc44b17,
+       0x9da7dd0d, 0x2cb4c73a, 0x34dbd394, 0x09e7ca16, 0x99e82bc1, 0xbb5d923f,
+       0xe1ea812d, 0x78a46cb9, 0xaca3f41f, 0x560e1b5b, 0xdab5c7ef, 0x4a3ac93f,
+       0x3efb52b3, 0x673c981f, 0x6fcc0e5a, 0xfed197a0, 0x590fd687, 0xf257dea3,
+       0x7fa0c73f, 0xffad02c6, 0x4b4e7ec0, 0xff262a6e, 0x155f6427, 0x0f894bba,
+       0x86d217af, 0x894cfe71, 0x425fbe72, 0x764c8576, 0x9c907b82, 0xed17ec18,
+       0xd0f5ca1e, 0xa44d57e4, 0x46a7d887, 0x6ce52fba, 0xae29f8ed, 0x86b2f0b3,
+       0x7adf50f2, 0xd323d0f7, 0xfbf29ca0, 0x03be560f, 0x677ca6ed, 0xd7f27ca2,
+       0x18cde758, 0xebb7f110, 0x6b42bbe8, 0xc7a9ec2f, 0x396d4940, 0x55dea273,
+       0x943239c6, 0xe9dffdeb, 0xaf926e02, 0x7ba33239, 0x2b99e838, 0x74fdc2fb,
+       0xf2b4efca, 0xaf2ee63a, 0x96d1bf27, 0xaf30cb91, 0xff3596a7, 0x79e2e498,
+       0x72677d3d, 0x57439956, 0x559feb00, 0x2055d0ee, 0xff3ccb3f, 0x9399767c,
+       0x772ecf9e, 0xfe46e7f2, 0x8b994e7c, 0x7729cf9e, 0x7826e7f1, 0xadb8f80e,
+       0x83e1d02c, 0xc5336f7e, 0x07183439, 0xfaf3772f, 0xbfd5036e, 0x0640fe0b,
+       0x44647c90, 0xfd7de480, 0x273f0d59, 0x74491659, 0xb5e7306d, 0x587377e3,
+       0xf0f28685, 0xba64830d, 0xe658daef, 0xd477e00e, 0x49f5671e, 0x3cd7beb8,
+       0x7fc82d2b, 0x16cb25af, 0x2e6bdf5c, 0x7f119bf0, 0x1f25644b, 0xd7abec96,
+       0x1ce992aa, 0x5b88a763, 0x291a17fb, 0x0eb60ace, 0xc2d959c5, 0xe18ec201,
+       0xca89fa7a, 0x50befa04, 0x2c79c1b4, 0x9bbbf11b, 0xdbcff7ef, 0x6b503df8,
+       0xbfe51a53, 0xa2092d26, 0x57fc8657, 0xe4f74059, 0xc70599ca, 0x3ddca5bf,
+       0xdac8ed0d, 0x6289cc1d, 0xde9bf818, 0x75a4fd87, 0x2fde7a36, 0xdeb8478e,
+       0x0672d4e9, 0x5a85c950, 0x0ea3bacf, 0x0d32cf5c, 0x7a3717e5, 0x0acbfbc4,
+       0xbda9b49b, 0xf0543cfc, 0xfa3f22a1, 0x3b671bca, 0x5f9f63f6, 0x67fbc4e8,
+       0x63074143, 0xbd09fb1c, 0xbfecf093, 0xbf7ca65d, 0xd5b91ea1, 0xdfcbdd12,
+       0xa1dfa2c9, 0xefd887c8, 0x0dbf355e, 0xd1f35269, 0x4fa7c10e, 0x1e3956b0,
+       0xd4646dfb, 0x1ca3466f, 0x21df9f92, 0xe50a3ea1, 0x3db92bd7, 0x1e150071,
+       0x5979e0fa, 0xaef675f8, 0x1668f9ab, 0xd7c34bad, 0x87bdf8c5, 0xa3fed32c,
+       0xcab30f28, 0x19379264, 0x5c7dfeac, 0x0c93467f, 0x97ec2d06, 0xdf122f27,
+       0x86ab65bb, 0xd60cdac4, 0x5ae17241, 0x1be256eb, 0x5d0ceba1, 0x5aa1eedf,
+       0x7b14472e, 0xec918370, 0x81fb86c1, 0xdec86230, 0x82b8c48a, 0xf6617861,
+       0x8407b430, 0xd15dd1dc, 0x6b527972, 0xd9d53a22, 0xeeab64d6, 0x870b382f,
+       0xfebb430f, 0x12acfc4a, 0xd1d2373a, 0x1ca851b9, 0x1bfa2b9b, 0x2fcea9df,
+       0x3236789b, 0x9d4a1f24, 0x7bb9365f, 0x543e4840, 0xd43e487a, 0x14fd5530,
+       0x7c90e8cb, 0xf92189a8, 0x782a4550, 0x5574f67a, 0xd9ce19fb, 0xfcd6f82a,
+       0x97daab1f, 0xd552eeba, 0x47b92ecf, 0xfb9b7f55, 0xaf3c155e, 0xfb5541ec,
+       0x555a9ef9, 0xfc978ffd, 0xea1f5554, 0x67a5293f, 0xdbbb9718, 0xf413deed,
+       0x4f6126a1, 0x5df7d185, 0x1d1efbc1, 0xd0a9edc5, 0x71873b76, 0xdc5a7f7a,
+       0x665d6303, 0xe22e779e, 0xacd9ac6f, 0x4eb5cf8a, 0x34ec6098, 0xf9c72c61,
+       0x4c67e427, 0xdaf3a14c, 0x894f7f00, 0x83adb55f, 0xaf98b976, 0x7d436699,
+       0x8f577187, 0xa027c81e, 0xadbdf8a1, 0xcf84956e, 0xf1575b6d, 0x9eb74ab8,
+       0xccf42dee, 0x71f24583, 0x328e79c5, 0xe28ae64f, 0xfe08c1f1, 0x2b88877c,
+       0xa5718e3d, 0xb61ec62c, 0x0f78712a, 0xaf949bf5, 0x59fe53f7, 0xefc25795,
+       0x187ad500, 0x7b4187dd, 0x65a0e290, 0x061618ce, 0xe0d94acf, 0x1c97e3b3,
+       0x7f957d98, 0xb6d61ead, 0x2ffb5875, 0xedee831f, 0x40c6465e, 0xbf63b0e3,
+       0x8ecc78c4, 0x97da0e61, 0xf9e39924, 0x9dafe589, 0x35e303db, 0x7dd2b02c,
+       0x81fad0af, 0x7ebf0735, 0x4ff52afb, 0xcfe6ff54, 0xfef6ae8b, 0x1b9396f2,
+       0x8dfbea83, 0x500d968b, 0x61db7f7d, 0xdf971f08, 0x66aae827, 0x58e29e82,
+       0xcf3d69f7, 0x357fff21, 0xedc6bfe1, 0x74bef785, 0xe503be5c, 0x37df3c20,
+       0xbc23b78c, 0x9171997e, 0x865228f2, 0xfd0f7d81, 0xa78446d6, 0xfe88bfdb,
+       0x17795b65, 0x9a5681c6, 0xf3f40ef5, 0x52cf1a07, 0xe425ba9c, 0xbfe295fe,
+       0x6fe3d13f, 0xfdff9337, 0xb0e7e89e, 0xfe16b528, 0xe9fa333e, 0x67d9229e,
+       0x8da1f061, 0x5e50946e, 0xcf92a80d, 0x9b45f304, 0x04714f59, 0xb593c8ab,
+       0xe2a8969a, 0xa0dc4a02, 0x4248bccd, 0xdeb6b7ba, 0x8c7a714d, 0x7f7f6017,
+       0x1a12fb11, 0x3c68182f, 0xfc74ef3f, 0x3d67fad5, 0x30a4a3cf, 0x43cc84e3,
+       0x8e844f89, 0x027b4013, 0x647573f5, 0xb11a7bd8, 0x289d05b9, 0xaefa1d97,
+       0xfca13713, 0xfa475f7e, 0xc17a3fa8, 0x5040e8bc, 0xe30e5fff, 0x43e63dfe,
+       0xbcc73f07, 0xbf4a80e7, 0x3c9e5327, 0x0662a0c1, 0x0f373beb, 0xf18ef1c1,
+       0x9ceb8ef1, 0x4107b276, 0xbddea1ed, 0x4df9f82c, 0x35fc2327, 0x11bcbf08,
+       0xc7cb18f8, 0xcfb2167d, 0x21ff0076, 0x41cf94fc, 0x4d97c065, 0x939f2ee5,
+       0xf97c9bea, 0xb9f1ef04, 0x2bebde08, 0x9f79f2a1, 0xf3ef9e9b, 0xa2fc1195,
+       0xb36543cf, 0xdf3d096f, 0x7c12f3ef, 0xe09ab7c0, 0x283da0df, 0x8eba9c63,
+       0xf57cd7ca, 0xd7d07f54, 0xbe1bf048, 0xbead9500, 0x90fcf4bd, 0x23e099af,
+       0xdf8216be, 0xdc12b5f6, 0xf2a76bee, 0x9e83af98, 0x88fbebbf, 0x9d62e3e0,
+       0xf875d58c, 0x96bfd012, 0x8f833be9, 0x682caa79, 0x342bdb5f, 0xec12ef74,
+       0xce31bbab, 0x9f9ca3b1, 0x6857d9f7, 0x16c40e28, 0xb49ec86a, 0x747a3c57,
+       0xa1cfd50a, 0x06ecfc7a, 0x56d9821e, 0x5595fb70, 0x0d9da9eb, 0xbde08013,
+       0xc9cacb1d, 0x8acfad5e, 0x0adb7aa4, 0x27beec99, 0xf258de34, 0x4990eecb,
+       0xdc74db7e, 0x20e8507e, 0xe9eb9727, 0xe7995c9c, 0xf3e70caf, 0xaf0f4e8f,
+       0xec7a0a47, 0x5c76baa6, 0xac017d9f, 0x60bbe70f, 0x2fcf1195, 0x74350b6d,
+       0x2ab1f95f, 0x30438acd, 0xee0ae48f, 0x287cc2af, 0x642acc2e, 0x0b6c53f2,
+       0x92bcd3d6, 0xe729662b, 0xa7e8b19d, 0x95577a37, 0x65cb7cd2, 0x7a366b8a,
+       0x77e2c50e, 0x79109e73, 0x48c4b63e, 0x3a166fba, 0xff9c029f, 0xeff9ded8,
+       0x9359f710, 0xd0f7bdc5, 0x97df2875, 0xb7be21dc, 0x0c635fec, 0x132bc71b,
+       0x389649f8, 0x64fbb1ff, 0x58a7bfe2, 0xfdd2046b, 0xe532e5e3, 0x7c2c0c4d,
+       0xabc6057e, 0x733d731a, 0x27dfa172, 0xc90e631d, 0xf095c700, 0xc956d3fe,
+       0x39fbf07b, 0x36e7dfb0, 0x4bcdf3c2, 0x37d1bab7, 0x58eadf8e, 0x58d6ec8b,
+       0x8c249bf1, 0xea4b257f, 0x45ca51fd, 0xb94f9d62, 0xaf8f7f78, 0x6c9e2992,
+       0xf520715b, 0x12b71f08, 0xe4301dc7, 0xcf4c08e3, 0xd0e39f48, 0x5e48c8a0,
+       0xe38d7f20, 0xb5b3dc45, 0xdc4bc704, 0x1bc652ea, 0x2f5de385, 0x543f069e,
+       0x8f770b6c, 0x72793fb5, 0x93f2392d, 0x61af715c, 0x72881b20, 0x971d09e4,
+       0xdc13fe5b, 0x9864a49e, 0x51c77df1, 0xf395cfce, 0xf473d0f4, 0x06bf628d,
+       0xc39fc21a, 0x2bd45cfe, 0xb94f79f9, 0xbf29b8b6, 0xe4c65524, 0xc752b614,
+       0x27fba6ee, 0xb5969105, 0x2941e861, 0x0c72817f, 0x2e6d7ef8, 0x2d6cfd13,
+       0x7868fde1, 0x15b2373f, 0x2c981704, 0x5af230fe, 0xfd151f29, 0x007ec06c,
+       0xee9703cf, 0xee36fcdb, 0xe51d31ef, 0x09ae3d04, 0xe2ff266c, 0xebe496b8,
+       0xcef36d00, 0xdaf3413d, 0x71e2e823, 0xef07207d, 0x7f4235b9, 0x238f0ac8,
+       0xfe62e4bf, 0x4118f80b, 0x7bde5778, 0x9fb1c45a, 0x2c5376fc, 0x582f2f9d,
+       0x51f6811f, 0x3d123323, 0xd8de74d8, 0x60f44151, 0x4a77f893, 0x9edfe742,
+       0x28fc57ab, 0x3c38c153, 0xb97ae197, 0xcc12e508, 0x68aaf5fb, 0x154587d2,
+       0x091f4c1f, 0x32cba4f0, 0x7c7817dd, 0x1c4bcf19, 0xe50d37ff, 0x10f1bc4d,
+       0xf47efbf7, 0xd7e4c52f, 0x31f28925, 0xaa4de7e1, 0x67bc4e63, 0x44caa93e,
+       0xdd8dd4fe, 0x3f60a9f2, 0x63d24289, 0xf1e0bfd0, 0xb25d899a, 0xf8cd1eea,
+       0x80f6eab3, 0x19da2d51, 0xe7ea9d49, 0x4e0705f6, 0x1a71814e, 0x1b97f197,
+       0x51d3fdbf, 0x34abfd84, 0xee512714, 0x2493c135, 0xfeca738a, 0xdc57cc24,
+       0xcf24646c, 0x0b46156d, 0x6b3683ca, 0xc6bfc924, 0x43b226f9, 0x8cac6537,
+       0xb0d93b40, 0x962c5560, 0x9dfef583, 0x8ffd3b18, 0xdae7cb7d, 0xedbc93c7,
+       0x3e6b4efd, 0xe97703d8, 0x6a9477c5, 0xa064a61a, 0xeff0d4bc, 0xde5bee1b,
+       0x5a77bfc0, 0x6870f34f, 0xf8be00d8, 0x1e76f81e, 0x02fae437, 0x0801e66c,
+       0x9cf4e87f, 0x32bb45c9, 0x5586dfc1, 0xcaa74ddb, 0x9e5b5e29, 0xaba67c40,
+       0x5335e2f2, 0xcf3cbdb6, 0x0ae7cc18, 0xfe50fc9f, 0xf9ce2fdf, 0xae0725ae,
+       0xf8b5efd5, 0x9c39f7fd, 0xa7f3fa6f, 0x53c8fd0d, 0x1b4e3fc5, 0xb647dfc6,
+       0x4a7abd25, 0x5abed61f, 0x59f39c30, 0x87e79ebe, 0x4a9b2ccc, 0xe99ed5df,
+       0x8f3194ef, 0xce70ea6d, 0x33568d4f, 0xa637139d, 0x373c56b1, 0x786a57f0,
+       0xff8127bc, 0xa34f2c6b, 0xe48350f8, 0x63a7f58d, 0x8a93dd7c, 0x3808d7fb,
+       0x0df8c332, 0xb3ae5c29, 0xe782d780, 0x92cfd0d5, 0x8987f9e0, 0x4c3d92ef,
+       0xe25a0c79, 0x283e873d, 0x964b619e, 0x6e2fc6c3, 0x93c352ec, 0x0170d5bb,
+       0xa3577f53, 0xa786a8c8, 0x18f0d458, 0xec9bfeb1, 0x3b37e7ea, 0xa0f270d4,
+       0x9e1a1123, 0xd7121ecf, 0x7c601f65, 0xd3589069, 0x84b34d26, 0xb9d41978,
+       0x5365c78c, 0x87440e40, 0xfab2bb89, 0xdf5271b5, 0x773dabf8, 0x1bce2485,
+       0xc7671aae, 0xff48d06b, 0x699e9df3, 0x9e1e81c3, 0xadf3c11d, 0x8edeb533,
+       0xfc07dc1c, 0xd1124488, 0xfc9c2787, 0x74404d03, 0x7c83f4a4, 0x2f5a0fe0,
+       0xfc307fd2, 0x3653d395, 0x03e72c7c, 0xccbeb07f, 0xbdd1d4ed, 0x7f5e3149,
+       0x63f0a0fc, 0x513738be, 0x8b2e6af2, 0x9abc94be, 0xae3f2255, 0xe71f2425,
+       0xe5317272, 0xb8ee5d03, 0xdf1c3237, 0xb3f99f21, 0xb961df38, 0x20d7e459,
+       0x9cf5f9df, 0xe1b9f0ef, 0x70ee15bb, 0x3869a1f6, 0xd9eed7f7, 0x1d39611b,
+       0xe6eabeb4, 0xd35c1558, 0xce096492, 0xff07ba77, 0x3aaf24c0, 0xc77f0726,
+       0x7fc9c2f9, 0xe50b53df, 0xbfcf5ad3, 0x33aade22, 0xb45e514f, 0x13201df2,
+       0x1e7860ca, 0x5ede145d, 0x96f826dd, 0xe2ab46b5, 0x61fc4a16, 0x2d8736e5,
+       0x898bde0e, 0x34e4f054, 0x88a9de52, 0x0fb7f467, 0xba48ee86, 0xcb03daef,
+       0xa60efa5e, 0xee9a3ba1, 0xf9c75ec3, 0x5bd20370, 0x5f9ff17f, 0xb26e3c0b,
+       0xfe303b7b, 0x57e063a3, 0xe02839d1, 0x4d9a1c67, 0x83dca7fc, 0xe3ab25d5,
+       0x2dbc3a40, 0x84f3fc0b, 0x4ff10979, 0xf9d3f312, 0xe9799595, 0xbfbc06f9,
+       0x6f861d1a, 0x8c2fc1ae, 0x4dea1979, 0x7cf54f18, 0x9f5cfde5, 0x0f4e4ad4,
+       0x3d7433ce, 0x7df8bfff, 0x0e98f31a, 0x45071fb2, 0xb1570c3a, 0x9e7c1afb,
+       0x537f7c64, 0x9e0977a4, 0x7e1d9ef5, 0x8ec1bac1, 0xa8498af7, 0x6b866fb1,
+       0x659e61e6, 0x0dd3a083, 0x27a21a09, 0x9dd6edeb, 0xb27a20da, 0x68a93dea,
+       0x77c559f7, 0xf187e8b4, 0x5dd60da2, 0xaf8cc25b, 0x763d2fd8, 0x23cc195d,
+       0x841b0f88, 0xde33d8dd, 0xd4ec078f, 0x3563f506, 0x78d14678, 0x329f5e4a,
+       0x6c7fc6de, 0xee22edbc, 0xbb678ca3, 0x9b3ebd43, 0xb3eb4bde, 0x8cabf909,
+       0x17d71db7, 0x39aeaf86, 0x7b23f09e, 0xbd53bbc6, 0x4bc19b3e, 0xdf29b3eb,
+       0xdbc65031, 0xb78d8ff8, 0xd1dfdc41, 0x2fed3e09, 0x27b6bdef, 0x416dd8af,
+       0x8941b3f9, 0x7ef90987, 0xafbe4431, 0x795df214, 0x064262ff, 0xb62f37c5,
+       0x9384b6cf, 0x99cf28eb, 0xb098a3b0, 0xa3b098a3, 0x74599e10, 0xd0225572,
+       0x6d17c8e1, 0x1dbbf0f3, 0x3939ef33, 0x9be00526, 0x8799ac5e, 0xf998e9df,
+       0x0303c9ec, 0xbd5f95e1, 0x47e1cb98, 0x864e5e4e, 0xb6ff937a, 0xbf68c579,
+       0xabf973c6, 0x77195bcc, 0x6fee08d2, 0x9cfeacd5, 0x4e40efc7, 0x4daedca2,
+       0x17ffd2f1, 0x577255f5, 0x8abffe34, 0x54ba8335, 0x2d0d61df, 0x497f566b,
+       0x79143671, 0x3166ff28, 0x2967c72e, 0xd44a13f7, 0xa3a213f7, 0x13fd90b7,
+       0x941602c1, 0x17465177, 0x7d7ba3dd, 0x73e68384, 0x7196731b, 0xc991d9bb,
+       0x7df815f3, 0xa2f9d986, 0x57a4cb5f, 0x8d36feb0, 0x73fa036b, 0x20bf1c7f,
+       0x2543cd11, 0xef586c2f, 0x1fa6c1bd, 0xe674bf72, 0x05b712a7, 0xe1bc7863,
+       0xc666f44d, 0x6866e3aa, 0xcf87f5f7, 0xe9f07da5, 0x738cf8e2, 0xba5a7c71,
+       0xad27d1a2, 0xaeb2ed89, 0x0d6cfe23, 0x783eaf8b, 0x4adfc10d, 0x73f729c4,
+       0xd76f48b4, 0x5782b7c2, 0x56ae7f25, 0xbe926472, 0xa54c3f3a, 0x3a731977,
+       0x6c639dc2, 0x7ef8f1f2, 0xf64d3e8f, 0xe84f8c30, 0xcc6cceed, 0x5efdaeab,
+       0xed2f361b, 0xb58f8119, 0xd79491d1, 0x27ad1b58, 0x7a2db37f, 0xaaf8c31a,
+       0x784a9a6c, 0xa12e8e29, 0x3c6d437c, 0x2c7f466b, 0x1b5a8f34, 0x60f294b3,
+       0x8be903b4, 0x93db4c41, 0xd232eb97, 0xef2581f9, 0xf2d479aa, 0xe3a8f2b5,
+       0xea3cf1a6, 0xe303bd68, 0xfacc1b5f, 0x0fd479b0, 0x7476e08c, 0x0127ae1b,
+       0xefa7afe7, 0x90eb2862, 0x191cfc2d, 0xb9e1479f, 0x3fff85b2, 0x1f7aca3a,
+       0x49e9c118, 0x28de8f69, 0xdead03ca, 0x44fb40e9, 0x84f5c91b, 0xb2c35931,
+       0xc543cf83, 0xd08df7f8, 0x3b4f3e11, 0x199f5c2d, 0xf33a5db9, 0x3c6c293d,
+       0x2508c0e5, 0xce9e129e, 0x5993a3fa, 0xa6479e1a, 0x931ce1f0, 0xe6dbf29e,
+       0x9df4ec98, 0x78403990, 0xda82e367, 0xbf1e68ff, 0xed3b2b07, 0x987f3f48,
+       0x3f95f938, 0x73730c30, 0xcdfefcf9, 0xf61fba3a, 0xce5cc4be, 0x9bf9beb8,
+       0x14ec776e, 0xb7ade69c, 0xec8f5c9c, 0x6e75acf7, 0x3867f61e, 0x3ab3a45a,
+       0x363ffec8, 0x5b76f002, 0x4486ea55, 0x8f95e780, 0x28c2efa2, 0x513524e7,
+       0xa7df8e5c, 0x8237bcf5, 0x8f3e4bce, 0x923a442e, 0x7be852bb, 0x249ce285,
+       0xa207dda8, 0x5d7e4cdd, 0x9bbe8baa, 0xf4e13170, 0xfb461ec7, 0x27670f61,
+       0x82c0ffa1, 0x0f9145f6, 0x3f0447e8, 0xf821ff47, 0xac9383ff, 0x30ceb6f9,
+       0xad2942f2, 0x5707f7f6, 0x935b9f01, 0x9e54a83a, 0x25b4b837, 0xfafb3081,
+       0x7fd7d88d, 0x846f8ed8, 0xb5eb8ed9, 0xff7ec1e3, 0xa17bf106, 0x18eb7dec,
+       0xe2f2d258, 0xd78ec9af, 0x733e15e9, 0xc2f57f10, 0xedbaf3ea, 0x78c1d6be,
+       0xc7d61c1f, 0x9d5da3ce, 0xe9f3f328, 0xda0b6e6d, 0xfff136ef, 0x3efa3504,
+       0xf72c5c1a, 0x523197be, 0xb4e8ffd8, 0x2efdeb8c, 0xb3d93d8c, 0xe50c7339,
+       0xa07c8935, 0x7e5e556c, 0x94ec7169, 0xee6bb404, 0x03934e60, 0x16bf5497,
+       0xe501a7f9, 0x8765da10, 0xb2fe27ee, 0xbf257b25, 0x711c6829, 0xfff957af,
+       0x14272f01, 0x7a1a3ad3, 0x232f0bfc, 0xddd92bff, 0xf2e8f281, 0xa97a3aa3,
+       0x6f5d50a1, 0xd67b764f, 0x1d16fcc2, 0xb66af9e0, 0xf9097af2, 0x8929e1be,
+       0x0f30d162, 0xa7f7d73a, 0xdb42ff70, 0x907e6268, 0x3d6bdf3f, 0x678891a6,
+       0x345fe397, 0xb42fe24a, 0x27ac1eab, 0xe4836cfb, 0xb3df99b9, 0x7170b0d2,
+       0xb923618e, 0xc91dc9fc, 0xff6adff9, 0x68d57070, 0xba203f2c, 0xbf3e5eb9,
+       0x4d8fe849, 0x9de76731, 0x9eed7b96, 0xfa785d3a, 0xdb8c5c7c, 0xfe042fa3,
+       0x88c79822, 0xdc95abfc, 0xf7b7c83c, 0xb79fe7f9, 0xbd29fe32, 0x9863b434,
+       0x5168fbea, 0x1954cdd9, 0xcc3174e5, 0x2e2c940b, 0x7e2c07ae, 0xaff81fbb,
+       0x586d3bee, 0x48c96b7f, 0x375247a1, 0x717db1da, 0x718ed386, 0x1afbd0ba,
+       0xece3a9b5, 0x37b59fb8, 0xa545fdab, 0xacd4b69f, 0x879e613f, 0x82c75da9,
+       0x4b42a8f3, 0xc445e63d, 0xe45ea55f, 0xc43c6f57, 0x9a3722f3, 0x1cf03af2,
+       0x2129a37e, 0xc4d5b68f, 0xf6952cf3, 0x44dbd326, 0x3f27268f, 0x7ea1346f,
+       0x1c7a7090, 0x6fa96d0f, 0x76941e13, 0x5cb92345, 0x195b3935, 0x748a5fde,
+       0x845da806, 0xf7e3f6ec, 0x18122282, 0x30897fdd, 0x4672eff2, 0xc3187b01,
+       0x23498be8, 0x98d8beb9, 0x4051d79c, 0x281d93f3, 0xf3da37a6, 0x11b7a4ec,
+       0x6d6e30df, 0x72df62ac, 0xf0507ebe, 0xad4fd28b, 0x63bcffc8, 0xe2ecf675,
+       0xb8938c78, 0x6f1d2057, 0x911a5534, 0x31e6b4bf, 0x836fed57, 0xfdbebfd8,
+       0xfa26ddd5, 0xd3fb107b, 0xd82cf39a, 0x8bc84e9f, 0x223fbc50, 0x3ddff5e6,
+       0xd2cc066f, 0x6982577d, 0x70f6fcc3, 0x1a528f76, 0x74791cf1, 0x61fef7df,
+       0x1d5ebbf9, 0xbbf90147, 0xa7e02467, 0xdbd4f93a, 0xc784f405, 0xfe129e4f,
+       0x5867e289, 0x6620df45, 0x5fb61ee8, 0x540fdfe2, 0x846b0efc, 0xf7bd0f1a,
+       0x5c3ef921, 0x6379e32a, 0xc5181297, 0xf9f943f5, 0xc69fbbd2, 0xe827fb06,
+       0x2ef7e097, 0x12c12fd1, 0x889712fd, 0x718c2133, 0xa6eefa03, 0xb89efbe0,
+       0xe7e39966, 0x032b9df8, 0xf40d6fc8, 0x897b252b, 0x9dc90dbe, 0x29e7c8a9,
+       0x287e9ee2, 0xbe4e0d9e, 0x6703d2bf, 0x8bbf9153, 0xf092ba13, 0x7f3e50bd,
+       0x24eefefa, 0x37d3cf5c, 0xd099e4f7, 0xf9cac8f9, 0xf25efc69, 0xf58cffd1,
+       0x5affe984, 0x4fa29ff7, 0xec97b96d, 0x076e4ac0, 0x0fbedffe, 0xb70554f5,
+       0x75245b3b, 0x727249dc, 0xa0adfbf9, 0xccb75b7f, 0xe1d47fff, 0x37c80b9e,
+       0x12a5920d, 0xfdca6fe5, 0xe56c6f3c, 0x2eceab43, 0x570fc30e, 0x234b9e9c,
+       0xbf30f883, 0xb0f14f4e, 0xd85a535a, 0xd8f6e0ef, 0xb3eefd21, 0xb171cb97,
+       0x180f05bf, 0x87853e79, 0xcf56c5db, 0x50d3ca22, 0x0ffe27f2, 0xf775a704,
+       0x00008000, 0x00088b1f, 0x00000000, 0x5695ff00, 0x551c684f, 0x9dbdff18,
+       0xecd99dd9, 0xe9317766, 0xc6cfe6ee, 0x50255989, 0x5a634cd3, 0x8d3a4462,
+       0x6d0c5356, 0xc09d286a, 0x6a0d5322, 0x168ae944, 0x1b4ecbd4, 0xd22c6db4,
+       0x44454943, 0x3c115297, 0x18bc58e5, 0x214f0782, 0x283c5e87, 0x1681086b,
+       0x1e2f10c1, 0xbdf7eb0a, 0x6999ddd9, 0xdd8fa552, 0xefbdf7bc, 0xdefbefff,
+       0x65d9cd97, 0xa3812561, 0xe82be89f, 0xac4eb204, 0xfef3f5aa, 0x81da30a6,
+       0x38036195, 0x08edb444, 0x2ecd6887, 0x9217e583, 0x05185aaf, 0x11474876,
+       0xb5875440, 0xe75034fc, 0x7fdfc475, 0xd007de1c, 0x0a8ff727, 0xad4803bd,
+       0x6ed9c7ce, 0x677ba3f4, 0xbe019f36, 0xc997b011, 0x88f6a7de, 0xa3f4056e,
+       0x44fa23b3, 0x8017a7d2, 0x6ee4e5c9, 0x214dc7fb, 0x8148a3e3, 0x6f07a4c3,
+       0x8ae4f545, 0xa743a292, 0xf74d67fa, 0xf04feaee, 0xb208b6df, 0xbb8d07c0,
+       0x09587fa6, 0x674e3eef, 0x3a0bf94a, 0xeabdf3af, 0xfd7141c4, 0x41a48f6d,
+       0xcc58d2f4, 0x05c0c315, 0x6bc7f5fb, 0xb7ceab4c, 0xfb61c239, 0x29370d57,
+       0x042bdf94, 0xad4053c4, 0xdb158192, 0x77736f1d, 0x81e40ab1, 0x1819f88b,
+       0x1e3efa03, 0x6b8c3b4d, 0xdd593231, 0x1a97cf23, 0x8f1b9e79, 0xe7ff665d,
+       0x4803a912, 0xe715e703, 0xffee9339, 0x9a97bf1a, 0xedde3830, 0x2976e9be,
+       0x48748ae7, 0x9dc86ace, 0xe4803090, 0xd1b88086, 0x81b06b06, 0x83137d0f,
+       0x76e8858f, 0xee961bb3, 0x5e993fd3, 0xd309ac3f, 0x33fb00c6, 0x16b3b60d,
+       0x08d76e35, 0xd3e7b587, 0x7cc182e6, 0x7008e658, 0x8a3ffbf2, 0xc2138050,
+       0x033ef288, 0xa77aca2b, 0xcf4454b9, 0xc70cce9a, 0x1fe50a75, 0x9f14a2de,
+       0x5ed7ca54, 0x04ee97ee, 0xeaffe3d7, 0xc64267d9, 0x94ea8573, 0xdd2d3aa1,
+       0x7a7c7b3f, 0x673efc0f, 0x7a79f6fc, 0xa1cdd93a, 0x37dcf2b5, 0xcf757859,
+       0x16b75496, 0x8cee9fc8, 0x011f9358, 0xe1ea0e17, 0x5bb2be86, 0x3458e4fe,
+       0x4fb95f44, 0x688de97e, 0xa45ea8f3, 0xcc2b29e3, 0xd30c999f, 0xc914eeb4,
+       0xdc11a17e, 0x83e8e9e9, 0x6f1cb8f1, 0xc2de236f, 0x814cefd7, 0x50563970,
+       0xa1ef3f3d, 0xde9f91aa, 0x5acdd50f, 0xc1da6ea0, 0x7e214b75, 0x20d30d97,
+       0xc377eebd, 0xfc11c07c, 0xf036739e, 0xe767e915, 0x9bf01f88, 0x57753ebb,
+       0xdaea601c, 0x17c9fb24, 0x3aa45823, 0x9cb09ce5, 0x6ce24804, 0x389ad049,
+       0x28a8531f, 0x1b3b3f64, 0x3dc1f191, 0xad3df922, 0xa3c95832, 0xecef3f59,
+       0xbbc968fb, 0xbcef7e52, 0xfd4d2c6f, 0x8f7571c2, 0x10ae0f96, 0x81fb87ab,
+       0x4399ebe2, 0x3897e8d5, 0x2870846c, 0xee7992dc, 0x08740dbc, 0xdf884389,
+       0x2036f205, 0xe508dff3, 0x7e6984ef, 0xf1e80837, 0xfcd209bb, 0xf418306e,
+       0x7b3b4c5b, 0xfee6c7cc, 0x68848559, 0xf9a65c5e, 0xcd22fbc1, 0xb91cd00f,
+       0x5a4bc95a, 0x702cf662, 0xdcef6cdb, 0x21e74fda, 0xffb9d50c, 0x7acbaf66,
+       0x143d50ec, 0x5cbd377e, 0xaff6dde4, 0x5a957d92, 0x87c635e4, 0x3c20b3ea,
+       0xaa02dc9c, 0x52d9f1df, 0x1887ae0d, 0x1d1662f3, 0x69bfb2d3, 0xadf7c9f6,
+       0xe9d741b5, 0xcd718b3d, 0x8d35dc62, 0xc4594a68, 0xbdd177a0, 0x73c38112,
+       0xca8082f4, 0xcea63234, 0xc329407a, 0x51540af1, 0x8fdc3c4f, 0xce332346,
+       0xaf4f5cfe, 0x77d7c7e9, 0xfffdf522, 0xf0191fad, 0x2ffafafd, 0x7d06b666,
+       0x9fc30fff, 0xb356c1d0, 0xc7df8a5e, 0xe770bdbf, 0xdc739c90, 0xe4b7e479,
+       0xcfa4abf7, 0xf591fa36, 0xd1bc2e79, 0x87d7e764, 0xc6ef8422, 0x28b984f9,
+       0xafb87902, 0x478f3228, 0x238ad7b4, 0xdef9c86f, 0xef61abca, 0x2b92f351,
+       0xdd2ed730, 0x5f6f7c84, 0xe5755096, 0xbb89ffff, 0x1be78a6a, 0x139a10e5,
+       0x5dec0744, 0xbf979d5a, 0xb6546e13, 0xbeaa6ccf, 0xaefd1cdf, 0xf21fa970,
+       0xe80fba25, 0x1cdf183f, 0xb8fd53db, 0x6c1f05fe, 0x089024ac, 0x00000890
+};
+
+static const u32 csem_int_table_data_e1[] = {
+       0x00088b1f, 0x00000000, 0xe3e3ff00, 0x51f86066, 0xb8d3c10f, 0x72361818,
+       0x0143f821, 0x684333b7, 0x0606163e, 0xc77e2001, 0x9ef0c0c8, 0x38330491,
+       0x207eec10, 0x27880abb, 0x7dcf5071, 0xe62f1143, 0x9f5d9fa1, 0x163d76a0,
+       0x837f7818, 0x03109db0, 0x03308b83, 0x84089883, 0x55045abf, 0xc1085ede,
+       0x9941243e, 0xfa80e75d, 0xa5c3d401, 0x0003804b, 0x00000000
+};
+
+static const u32 csem_pram_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x7de5ff00, 0xd5547c0b, 0x733ef7b5, 0x9993331e,
+       0xf20f264c, 0x04278020, 0x21842a28, 0x38880840, 0x8d069009, 0x8808889a,
+       0x420100ca, 0xb9113248, 0x9db57a5e, 0x5688a189, 0x8db4b46d, 0x04076c5e,
+       0xc075168d, 0x740d0340, 0x6af10530, 0xad282a35, 0xf0c5068f, 0xd0f09210,
+       0x77adad8b, 0x49f7b5af, 0x90999ce6, 0xbf77eda8, 0x9fc5f7ef, 0xfb3ecdbf,
+       0x5ed7bd9c, 0x5ed6bfeb, 0x48c7ed7b, 0x5d311c4a, 0xf0d7c843, 0x2283d347,
+       0x4f406421, 0xd34f99da, 0xb3f884f1, 0x022d81cd, 0x7fbda121, 0x8449276b,
+       0xad9c699c, 0xd908339a, 0xba1cd637, 0x099f9686, 0xb4cc05e4, 0xc38eda7c,
+       0x2be6890e, 0x94128877, 0xf15af69b, 0x420d8efb, 0x735ef200, 0xd15723eb,
+       0x910ed77c, 0x9355a26c, 0x9244dd90, 0x10b76909, 0x62c6a7f6, 0x6595a97e,
+       0xbbee372b, 0x6b2bda03, 0xfd2b1332, 0x7451bdbe, 0x16e57e43, 0x7b684021,
+       0x57eebb95, 0x96fad206, 0x55a08405, 0x8f2df9a5, 0x212c6a2a, 0xdf7dedf7,
+       0xe42766d1, 0x5442cf94, 0x1651fb05, 0x7948451c, 0x40c15b60, 0x56f97dfa,
+       0xf5a265c1, 0xdb386f97, 0x3795f401, 0x5a45c3ca, 0x1b068adf, 0xb6b24751,
+       0x5ed026bf, 0xded807cb, 0xb418790e, 0x5dd5f657, 0x9fa1110a, 0xabbe1bb2,
+       0xbf4074a4, 0xf94f76b5, 0x8d3db1ea, 0xd2cf959f, 0x557be8f6, 0xe82e082f,
+       0x78899562, 0x5d8e8e80, 0xd94fb9d6, 0xca357fa1, 0x7ef0d888, 0xfd09dc2c,
+       0x546c0f28, 0xdf40ec0a, 0xa8e96546, 0x3456fa9e, 0xbe9ea7fc, 0x4f14ccfa,
+       0x3d31b958, 0x1d2ca3e5, 0x272f93d1, 0xf5a41dc4, 0x94a02912, 0xfe79ee8c,
+       0xc84f1081, 0x245fa804, 0x7ea7a5aa, 0x81c4792a, 0x27fd30ff, 0x4f7f83e5,
+       0x464b606c, 0x3a56dc8f, 0x723d6641, 0x72e4e73b, 0xc272ba94, 0x47d2d7eb,
+       0x9e941e40, 0xd3139f3a, 0x98a97cc7, 0xc8a9f7ae, 0x46f85fb7, 0x73ef5a62,
+       0x7c27f3e1, 0xf06e98b9, 0x95fd31b9, 0x80d310af, 0xdbdf18af, 0xe98b9be4,
+       0x9f079f66, 0xc32bed3f, 0x8d57c1b4, 0xadf39fcf, 0xcfab74c6, 0xf05fcf8f,
+       0xe834c3ad, 0x3b74c3ab, 0x8da68bc8, 0xb7be00be, 0x6980d7d3, 0xcf882f93,
+       0x309afb77, 0xd1f3887d, 0x49e48531, 0x370e0f94, 0x93b15271, 0x9e772284,
+       0xc509f34c, 0x9b7c9f2c, 0xf9a14f3f, 0x53cd0f64, 0x08ac0cbe, 0x7e6999e5,
+       0x1f2b3560, 0xb7c92f72, 0x3f10fcd0, 0x90fa1f2b, 0xf34adf3b, 0xf958eb43,
+       0xfcfe0d88, 0x111f9a18, 0x6c57e560, 0x68dbe50d, 0x2b208afe, 0xd3266acf,
+       0x159f34ec, 0xd7ecf962, 0x6962d3dd, 0xe595bb3e, 0x4ff03e73, 0x4e7cd073,
+       0xf27efb1b, 0xdaa880e9, 0x5db0e523, 0x2a131756, 0x99fe0dab, 0xcd12696e,
+       0xc45dea2b, 0xbfe3f945, 0x51a52dc9, 0x2c6ec87e, 0x63e7f90f, 0xc6e2a379,
+       0xa5fdb7f2, 0x7b29df98, 0xbf98fcb0, 0x0f15e592, 0xbfe17f96, 0xb24df31b,
+       0x352dcb1f, 0xfc57963e, 0x66b03e58, 0x5bbfd61d, 0xa8f9600e, 0x7cb1479a,
+       0xf2c012b7, 0xe13cd6c7, 0xb5f34e9e, 0x8017e782, 0x91969a47, 0x3053c04c,
+       0x69e298b5, 0x02e640ad, 0xa0047f7e, 0x9b5cb8a3, 0x6e1ea0a6, 0x53ce63ff,
+       0x97f8bfa0, 0x4fa5f904, 0xdf81983f, 0x91eb1aff, 0xdf623d69, 0x91bf64f5,
+       0xfb27abab, 0x9ead328d, 0xd6af7806, 0xb67abfda, 0x4f5931bf, 0x5ae51bcf,
+       0x9e90db3d, 0x2bf5fed8, 0x7a29cdfb, 0xd0acde7a, 0xf48dd9ea, 0x9e8ff7c4,
+       0xfe7ac3c6, 0xe6ee1e34, 0x33d20b4f, 0x8cf47fa0, 0x9fcf577f, 0xf376eff1,
+       0x27ac75e7, 0x34f57fad, 0x4fe7abbe, 0xfcddbbe3, 0x1afd8c39, 0x8d7ebfdc,
+       0x9fcf4f7f, 0xf375eff1, 0x27a423e7, 0xecf57fa3, 0x9fcf50fc, 0xf3761f9d,
+       0x33d638e7, 0xcafd7fbc, 0x9fcf48f9, 0xf9ba8f9c, 0x5cf585d3, 0x767abfde,
+       0xcfe7a47e, 0xf9ba8fce, 0x33d625f3, 0xcafd7fba, 0x3f9e8bf9, 0xe6e97f39,
+       0x7a80498f, 0x9e8ff6c6, 0xfcf54fa6, 0x9bb4fa69, 0x67ac363f, 0xc9e8ff42,
+       0x27f3d76d, 0x3f9bbdb7, 0x7dc80249, 0x69eaff52, 0xa7f3d76a, 0x3f9bbda9,
+       0xab9eb183, 0xdcafd7fb, 0xe4fe7ae3, 0xcfe6ef1e, 0x1e57ec08, 0x87a07bd5,
+       0x7b627ad0, 0x19f767af, 0x9f767f3d, 0x18cfe6e9, 0xad0667ac, 0x7aefb327,
+       0xf9e87726, 0x9ba3b933, 0xcf58b93f, 0xb3d5fecc, 0x9fcf43bb, 0xfcdd1ddd,
+       0x5cfe43c9, 0x4d7ebfdf, 0x67f3d4ee, 0xcfe32772, 0xd3d543b8, 0x8e9cb41c,
+       0x7e912e85, 0xb769d572, 0xd179a05b, 0xd3a2f2c9, 0x112fc045, 0xb4837f35,
+       0xbdfa45ba, 0xf67c6b7d, 0xefdc2483, 0x7e812fc8, 0x2c6f52c5, 0xcb88efdc,
+       0x39f9d18d, 0x5d04eef1, 0xa070b13e, 0xc501fdee, 0x29e57543, 0x95d0af73,
+       0x75b279a7, 0xc9b2f4f9, 0x5707f7ba, 0x97f2ebe7, 0xf756bead, 0x26ff867e,
+       0xdd733e5d, 0x87f7baad, 0x95d22dd7, 0x5cbeaf7f, 0x60797e57, 0x657f2ea5,
+       0xdee87fc3, 0x4fbc1d1f, 0xe9a63e57, 0xd8f95d41, 0xfcba63d0, 0xe84f83b8,
+       0xbad09fde, 0xf13e5749, 0xf2ba73c8, 0x75db6d49, 0xec4eabf9, 0x7679f836,
+       0x3c95fb67, 0x09ee022f, 0x14d3fbf3, 0xb142f7f4, 0x8195e60a, 0xf7e3f476,
+       0x8f552ec5, 0x2f2af951, 0xa893562f, 0x84a6417c, 0x0379eb8e, 0x46d7becb,
+       0xd93ddf9f, 0x7d273df3, 0x19e2b77e, 0x9fe28ce3, 0x24083c52, 0x04d55215,
+       0x7efcb1a9, 0x3f31e199, 0x4711abfd, 0x535ef7e9, 0x9a7888d7, 0xeaf3114f,
+       0x12bf2f01, 0x18d3884c, 0x7bc35491, 0xf3826631, 0x7233fb82, 0xe187f29e,
+       0xaa60dd75, 0xbd4f4287, 0x2a4f64eb, 0x6a9b19f8, 0x1f83f2de, 0xed3076b2,
+       0x9e4240d7, 0xf90ade12, 0x07efd187, 0xd0f54d2f, 0xf50accfa, 0x57dbc3d3,
+       0xb0a3fb68, 0xff6806fd, 0x37da5e85, 0xb5d5cd0f, 0xa652196f, 0xd0a2df6b,
+       0x1fd49df6, 0x6f13f9a8, 0x32610a9f, 0x7f092f21, 0x43cdf6c2, 0xfbfdb0ca,
+       0x095f3a15, 0xbba63f6f, 0xdfd026fd, 0x84fed0bd, 0x3a1ffd28, 0x21ffdf59,
+       0x2bfefae5, 0xd72fffac, 0xc7ede51c, 0x845bff60, 0x43ffaca3, 0xcdff59ca,
+       0xf6eedeac, 0x3ffcdd1d, 0xa37ffd08, 0x4e67feb7, 0xb2fff7d1, 0xcdff7d0a,
+       0x6bb7fdac, 0xedf6f24e, 0xc23bfed8, 0xcbffd649, 0xc57db02a, 0x7e0171ec,
+       0xea98f494, 0x0c9f6d00, 0x052986a2, 0x81db42e0, 0x05026474, 0x0b0f2135,
+       0xbb8e9143, 0xbede1863, 0x4378a188, 0xe7c7e37b, 0x5b2d4024, 0x71779d0e,
+       0x9ad8afac, 0xc25d80a7, 0x595f3a72, 0x6d2d49c2, 0x64df1112, 0x9c3039bd,
+       0x24d1dbd2, 0xba5f21fa, 0xd800eafe, 0x2c99af3f, 0x24ef8628, 0x9fe78212,
+       0xa6f47cfe, 0xd3197ef0, 0x7b727525, 0x75be985b, 0xc9f2a3cf, 0xdf4a6ac8,
+       0x84c1000c, 0x74c7fc9e, 0xfce8441e, 0xcf3a03e2, 0x9f921420, 0x8fbdacc8,
+       0xf2097ce8, 0x04be746d, 0xe0d484e5, 0x43bab477, 0x62fe94a9, 0x12c7ff4e,
+       0x6f8fd7d3, 0xaa7e0213, 0x60fc5f9f, 0x1753ce2c, 0xa651b6ac, 0xd0b1d0f7,
+       0xd3cba89f, 0x4e41f97e, 0x81ccbb5d, 0x57f2024d, 0xa0957e05, 0x78b2126a,
+       0x75e53a5d, 0x51effbcf, 0xd651a7b1, 0x72dc42df, 0xf6ff7d0a, 0x2760c255,
+       0xdbb6776d, 0x09c6cd9c, 0xf509ba77, 0x729ba49a, 0x71a9b909, 0x206b4cac,
+       0xe3f96e25, 0x6776b0b6, 0xb3f3ea15, 0x0ef9f58b, 0x289b2dd9, 0x02251d5d,
+       0x9deb48d9, 0xae5f5733, 0x253763b5, 0xf6f33930, 0x7d19938a, 0x86cd2073,
+       0xf3944ec7, 0x56fb275c, 0x58bbc7a3, 0x905853a6, 0x01007fa7, 0xf093fab9,
+       0xac9d5bbd, 0xe77a46df, 0x317716ca, 0x85dce7ed, 0x6df00062, 0x7bcfffa4,
+       0x16536e6d, 0x4cfdd74d, 0xfec8a626, 0xe79fe918, 0x2827f631, 0xbf3c38c3,
+       0xe19cf8cc, 0xffcb9da6, 0x4d07c063, 0x283e038f, 0x3e38c7fd, 0xc32aec7a,
+       0xb9ecd787, 0xf5d0f001, 0xae5048b8, 0x70b72f1c, 0xd3a92cbc, 0x8f1082e3,
+       0x365c720c, 0x307ec857, 0x3873070c, 0xebd5960e, 0xf13b7371, 0xe45169cb,
+       0xc6fd6f32, 0x91aaa71f, 0xe390fbfd, 0xfb43fe66, 0xfd913f90, 0x83ba7264,
+       0x6af6e9cb, 0x5c2df97d, 0xb973b7ae, 0x747fadce, 0xe41f353f, 0x83203556,
+       0xd1ef7bbe, 0x93a6d9e4, 0xd3cb87a7, 0x5c1de748, 0x80fc779e, 0x6f48d3c9,
+       0x5b67971b, 0x0c9979fd, 0x48d7a48d, 0x11d582df, 0x9e4051fd, 0xe5d1fd0b,
+       0x4bca6de9, 0xbcf6163c, 0xf1333832, 0xad9e9858, 0xe5d12868, 0xe9e60797,
+       0xbf565fde, 0xa4be5750, 0x7caeb96e, 0x753bbaf1, 0x1ffe85f9, 0xb05fdee8,
+       0x7e5746ba, 0xba03f57b, 0x8f65f9f2, 0x3cf3f2ea, 0x9fdeeb8f, 0xaea37733,
+       0xb3f1767c, 0x8559f2ba, 0x12f974db, 0xfbdd2ef7, 0xdf97bda6, 0xfd7cf808,
+       0x9fc048b0, 0x1c75dcf8, 0xbb9f82e3, 0x73bc1764, 0xae22a7cc, 0x31237ddb,
+       0x2173e13d, 0x72f94fee, 0x6a68ed31, 0x4138c3b1, 0x24a5c5c7, 0xd3799a9e,
+       0x06eb350d, 0x704d38c1, 0xba6cdd3c, 0x853fc6b9, 0x5498df90, 0xbd5177e4,
+       0x08e34242, 0xe1b06011, 0x61897474, 0x947d6de5, 0x9fc353d7, 0xd45e5918,
+       0xf7b9fd16, 0x399785b1, 0x7a5dc4a3, 0x83a494f4, 0xfdc9d3df, 0x8579636e,
+       0x9fc38a40, 0xea1f7213, 0xee3e59f5, 0xff4c2856, 0xe5a7b62b, 0x43e40713,
+       0xd52faa23, 0x3c82905e, 0xa9927005, 0xf565e3d3, 0x3becea57, 0x00eca881,
+       0xdd38dbc0, 0x570d15f3, 0xbd3bbee9, 0xabba444f, 0x824c56c0, 0x35f8b161,
+       0x50e1d813, 0xa35990cb, 0xebf74e81, 0x9aa71826, 0x785fa006, 0x789857da,
+       0x15f9024c, 0x37c27a63, 0x9f76d317, 0xbe63d307, 0xf63f4c32, 0xe6da6355,
+       0x47e98d5b, 0x1fa63f3e, 0xfa61d6f8, 0xa61d5f67, 0x98f57c47, 0x600bebbe,
+       0x80d7c87a, 0x20bedbe9, 0x26beada6, 0x6e7c3b4c, 0xebbd354c, 0xf827770b,
+       0xf00a7c38, 0x1d670517, 0x59aaadf7, 0x6707a537, 0xd4f74ce7, 0xf0f507f8,
+       0xccdea8b9, 0xc3ac90f1, 0x6c1097c3, 0x51f59c46, 0x1c732f5e, 0xf47df6f6,
+       0x7fa6ef72, 0x9826de0d, 0x6df99f98, 0xa783d6f1, 0x329e0374, 0x00d3c2fb,
+       0x9e0f4271, 0xcc9c9826, 0xfa78e1ef, 0xca23f409, 0x9c1f22bc, 0xfe610190,
+       0xe2c6db9a, 0x813d7cd4, 0x4e2caa7a, 0xa5aedbcd, 0x5fa2b6ef, 0xe3091817,
+       0x7f91b9c6, 0xf871011d, 0x74cc4773, 0xff7bd7d2, 0x9de9388c, 0xdf9c6eef,
+       0xc1d00d2c, 0xb9645c6b, 0xd5f18635, 0x8485226a, 0x0c0f6b8e, 0x68b5da7f,
+       0x9225e614, 0x5c07df00, 0xea51b125, 0xf032bea5, 0xd6be2fb7, 0x05917ec6,
+       0xf13fb5f5, 0x27481cb7, 0x1cbf9898, 0xdfa222d3, 0xb94f424e, 0xe3ddbf80,
+       0x0a95d992, 0xe1aeedf1, 0x86fd138a, 0x3fcf5d80, 0xf4e7cd3f, 0xca01eff0,
+       0x771c56a3, 0x7f9152eb, 0x9118bec3, 0xf5fe0fd6, 0xe2fbdf65, 0xc0c0a2e7,
+       0xfb3f097f, 0xd97d8fb2, 0x5f56e245, 0xeffda268, 0xfb3a3bdc, 0xe0ec1541,
+       0xeb4f3650, 0xbadadf85, 0x1f9e9194, 0x771c437e, 0x6e386b26, 0x3b68421d,
+       0x397d711f, 0x38bdf8d7, 0x07ad0b90, 0x3b5d07e7, 0x87df9fb8, 0xe864cf5c,
+       0xeb1af3eb, 0x3088538b, 0xab1bb686, 0x908e2428, 0xb0f3d16a, 0x571bf388,
+       0x06e21f9b, 0x5aae6d7b, 0xa78de615, 0x50a908de, 0x70be3ea3, 0x0e53e0ee,
+       0x4cad8798, 0x458f3935, 0x5696a391, 0xf69c3306, 0x934af9f0, 0x4eae7f3e,
+       0x7ce20c28, 0x79bb8d4e, 0x4e338c34, 0x6061b1e7, 0xd53153f7, 0xaa9959ea,
+       0xbb518f38, 0x3321aa7b, 0x02ffcd8e, 0x8d6c9ecc, 0xca737b47, 0xfff7c167,
+       0x56f4f4d9, 0x210f468f, 0x0b13e48d, 0x965a73d8, 0xbdfbfbd9, 0x417483ea,
+       0x6926f881, 0xf980bf96, 0xfffe95a6, 0x57a850f5, 0xaf56bcc2, 0xcdfa2837,
+       0x56f9e063, 0x3bf47b5d, 0x857b5b55, 0x3bd77aef, 0xb86bb489, 0x857bf2a7,
+       0x68af0faf, 0x7ef53ab0, 0xef2ebc6c, 0xea734a6d, 0x07f85afc, 0x82d5ee38,
+       0xe0abf804, 0xec94ebf0, 0x9b4f00eb, 0xf3087820, 0x57bd8117, 0x3c536969,
+       0x2b4baa2a, 0xae5173e0, 0xce757f86, 0x9d4ed4fb, 0xa0264d7c, 0x4a2be467,
+       0x7d4f4e55, 0x2627a474, 0x73cc5f9a, 0x14571a8b, 0xd275b8c1, 0xa50fe6c4,
+       0xf301d8a4, 0x975232e3, 0x33d4f103, 0xfa0854c4, 0xedbc8679, 0x8fa61718,
+       0xfb054567, 0xde9d78b9, 0x7bf3a78f, 0xbd597e5d, 0xdc94bf3e, 0xe0eb0c94,
+       0x24cbd74b, 0xd0dd8020, 0x9d151f97, 0x5232ef58, 0xedc616bd, 0xcf1b32f5,
+       0x94893916, 0xfcabe94e, 0x0b3993ed, 0xc8a2fe69, 0x1d6d5fc6, 0xa3027977,
+       0x51b83cbf, 0x4ff2d371, 0x42ddc71a, 0x3efd102d, 0x2dc616b0, 0xb5c10eff,
+       0xdf948d45, 0x48dfa537, 0x440fe6af, 0x3a7327ac, 0x77041b2a, 0xa03f8a20,
+       0x33d30248, 0x90aeef6e, 0x4838ba9c, 0xe2c3e40e, 0x4f1adf20, 0xa7874449,
+       0x8867a24d, 0x07e18134, 0xd4827fe6, 0x4bbe78a5, 0xf511a9fd, 0xf80d215f,
+       0x883fd627, 0xaba39fd6, 0x4a9fe73f, 0xfa08b0ff, 0x5fd5a3f3, 0x77e7dbf9,
+       0x293da9fa, 0x0ee7f17f, 0x93c9c742, 0x8bb25d52, 0xcb62b7ca, 0xe7201d8f,
+       0x01df9213, 0x10193d78, 0xc651030b, 0xf2ddd5ad, 0x8805db76, 0x693fc1bb,
+       0xfb9ea7fd, 0xbe23c609, 0x313b22d8, 0x0e60d69e, 0x563ea999, 0x222f2e35,
+       0xca3f9859, 0x159ff7f2, 0xc7a4df21, 0x3f33f95f, 0x15fd864f, 0xbe3c2914,
+       0xb67f4214, 0x05a7f36a, 0x2e913e38, 0x77e323d4, 0x04c5fed0, 0x950b7fb4,
+       0x4a72c8b8, 0xbc09c627, 0xc6de2f9c, 0x1d159c9f, 0x9c36aff0, 0x2fdf1bbf,
+       0x72e9fee3, 0xdda93629, 0x913dff46, 0xa87b044c, 0x980483f1, 0xecfb5a7f,
+       0x528eb32f, 0x7e6f4e7a, 0xf18421cd, 0x73a3d349, 0xdebfc5c1, 0x6f6ef6ad,
+       0x859ea83b, 0x78da41fb, 0xbf7136a5, 0x15a599ba, 0x1571c872, 0x1b1583b5,
+       0x3e9f9765, 0xa9fe78ae, 0x38809fa7, 0xaecc9fe6, 0x15feb4e1, 0x777fefcf,
+       0xd8afcd32, 0xb1152726, 0xe485d86e, 0xe978b91e, 0x7bb3abff, 0xd2fe50e4,
+       0xcd1d457e, 0xd09bdf9e, 0xdb158f23, 0x746429f6, 0x05a63f24, 0xf66d29f7,
+       0x1e097228, 0xa13f002d, 0x56ffd9f6, 0x7278be20, 0x325240af, 0xe373f0a2,
+       0x8003f47e, 0x2e47284f, 0x19b96ea7, 0xb952f7de, 0xe4d6bd80, 0x8ebf2c64,
+       0x4fa813db, 0x7e78851d, 0xbf6d3761, 0x1766cfec, 0x85ecbff4, 0x8fd01cbb,
+       0xc33552e3, 0x4e3f93f5, 0xcb76d376, 0x13b27f64, 0xecbcf653, 0x7886ff57,
+       0xbfd6f65b, 0x893c6325, 0x384cd3b8, 0xa0d3f8f6, 0xcc364b7f, 0x252dfec6,
+       0xd95dc41e, 0xd8316293, 0x5225cfbf, 0x5e8a2db8, 0x38bd7074, 0x623a89be,
+       0x61c77fb4, 0x69fb08fe, 0x5f7116de, 0x12772115, 0xe37fffd0, 0x021ea17d,
+       0x30b73fe6, 0x4c97ed39, 0xb7a8af5c, 0xcdd78e19, 0x7c82b7f7, 0xa7760d4e,
+       0x978b3ac0, 0x0fce7e48, 0xaf5a6be1, 0x148cd6f8, 0x4aa21f26, 0x3a3bfc39,
+       0xe7834fce, 0xecab7ef0, 0xbee966b6, 0xf4675f23, 0xb78abfb4, 0x818ee94f,
+       0x7278f9f1, 0xa0757f74, 0x1d3de9ac, 0x15f0c3a7, 0xdf4cdfa6, 0xf4c03f37,
+       0x40f7d35b, 0x5f942149, 0x07f4c438, 0x8ff183be, 0xc14a15d2, 0x0b377df2,
+       0xbce80f68, 0x6f5e9a39, 0xeb5eb996, 0x509c35cb, 0x2e2125ba, 0x7f502f0c,
+       0xd71ff202, 0xa7ae9657, 0x4bd985df, 0x88e7b42f, 0xdbd34fac, 0x4fff5c65,
+       0xd95ffe82, 0x0364ffa3, 0xfddefbd3, 0xdb8b3f27, 0x9fa781c8, 0xfaa57d00,
+       0x5f4157e9, 0xf7e862e5, 0xde5b5b67, 0xe9ea95bd, 0x4f4d4167, 0xa8d3f6f5,
+       0x27db65a7, 0xfa7a6890, 0xa245dd99, 0x1e7d29ea, 0x6ded4f55, 0x53ffe388,
+       0x5fe353f6, 0x9fe7acbc, 0xe37b0f66, 0xbe1ed1a3, 0x4fc8a920, 0x7fa43da3,
+       0x244e4887, 0x69dc34fe, 0x4dff2b78, 0x776065e5, 0xe1a971ba, 0x1a971bae,
+       0xb7e222ee, 0xcb19fe3a, 0x135887df, 0xa5be6ba5, 0x23cc2a7e, 0xe7045d2c,
+       0x8b37795d, 0xb96a6eb8, 0xf3ef5040, 0x06fb8c89, 0x4f5533df, 0xea743f00,
+       0x73396edf, 0x3e77a537, 0x5d6ccbf1, 0xbf464ebe, 0xbfafabfe, 0x73fb429e,
+       0x7cefe72b, 0xa9ebeeca, 0x424ae63c, 0x39d28628, 0xb8fe224f, 0x0acf8804,
+       0x3a30e3e4, 0xf3e997e6, 0xb93537f0, 0xdebe9ea7, 0x90f3a6ff, 0xe5be9b6f,
+       0xef576b63, 0x9b0c3a40, 0x54f1c297, 0xfca57202, 0x02178ef3, 0xb52ed143,
+       0xf361c549, 0xddb8c7aa, 0xacfa6b79, 0xe4bfe009, 0xc71d19cd, 0xe7043e70,
+       0xbf6e5eb7, 0x38d5f9ce, 0x9ae7ebb0, 0x7afe7133, 0xd8e2e0ee, 0x5b26fb68,
+       0xf3f6ce38, 0xbb4e9575, 0xdc522750, 0xf42e9277, 0x2b76fc5f, 0xdd6512d9,
+       0x89b287ef, 0xb97143af, 0xca913fd1, 0xe1c72e6d, 0x5c69fa3c, 0x6edc9876,
+       0xe4a4febe, 0xfc039488, 0xcf361c7d, 0x05fcaefa, 0x5b7f035c, 0xc5056dac,
+       0x9ff3fc51, 0x7d4dfe72, 0xbfdc4bf9, 0x4f39bd3a, 0xb74e3e02, 0xc738ba8b,
+       0x8ebe9afd, 0xae80a322, 0x7f2f2fa9, 0xb1c50278, 0x82e8a0f7, 0xe6deaafd,
+       0xca278ab3, 0x4fc8d77c, 0xc8fc1fa8, 0xf913b2fd, 0x5e2e5875, 0x3c3d7c02,
+       0xdd604adb, 0x55c51df2, 0x19ce8d19, 0x990f1666, 0x1f3f8a47, 0xc7dffc2f,
+       0xb139bcdf, 0x8fca7ca1, 0x1fb67673, 0x4c7f1238, 0x8539cfef, 0x38008d40,
+       0x493e5914, 0xac9c4008, 0x9e1e7880, 0x5fbea022, 0xf2bf6e13, 0x879e4a9a,
+       0xcd55357d, 0xcb44d382, 0x0536a4ab, 0xda6dec70, 0x7e7f8126, 0x18dc4a9d,
+       0x47aa906f, 0xd7161cdf, 0xc84b2fda, 0xdebf96af, 0xf7f03b7a, 0x0266cdfc,
+       0x9d47b974, 0x7fb8c075, 0xea1c79be, 0xfafd6f41, 0x9d4c8fa3, 0x043d412e,
+       0x43c461f1, 0x974d9241, 0x0c8d3d9f, 0x4db95172, 0xe5ddb735, 0x65bf228a,
+       0xbf59c30a, 0xffe59bed, 0x8536fb33, 0x6b8637da, 0x8dbedc39, 0x5bec2251,
+       0xb6fb344a, 0x014d46b2, 0x93dcac5c, 0x5d720299, 0x0192eaf9, 0x2bdbecd1,
+       0x7f7f363e, 0xeec3ef95, 0xdbed441c, 0x36fb3098, 0x28b7da88, 0x4534db71,
+       0xb0fb3ff3, 0x1dff966f, 0xec057bfd, 0x8efe945b, 0xadf6f452, 0xed06b9b0,
+       0x5120e15b, 0x532a1fb7, 0x5eb9f3e1, 0x9fc2dbed, 0xecbcc6cf, 0x0fc145b2,
+       0xdbec15f0, 0x41cedcab, 0x16e7603b, 0xbf6c4e29, 0xa4ae76bf, 0x7fee76bf,
+       0x9d9acf89, 0x9d98395b, 0x21c488e7, 0x332b73b3, 0xb95b9d98, 0x95b9d987,
+       0x339d99c3, 0x08fcb7da, 0xafbec6fb, 0xc7bf491a, 0x2fc662f9, 0x45e5a36f,
+       0x85976573, 0x6aa45fbe, 0x27aa17e7, 0x45bbdb84, 0x8e7c848a, 0xb3ae77b0,
+       0x2fa40e78, 0xd826f77b, 0xc76861bb, 0x191e8186, 0x30ed71f1, 0xdcbf6e9b,
+       0x7fdb2fe1, 0xcbe822f3, 0x679c451f, 0xf36267bf, 0xb65fbda2, 0xdbbd038f,
+       0x5879e9c5, 0xf0ecf261, 0x4e9ed1f9, 0xbdf4c51b, 0x8e0c60f2, 0x028d5513,
+       0x42bdefeb, 0xe0718540, 0xbe7117af, 0x361efb7c, 0x66639e5f, 0x2eff20fc,
+       0x941773b2, 0xf0c30b05, 0x3962f730, 0x4ae735c6, 0xebfe02c4, 0x9ed78382,
+       0xc175bf04, 0xefe875c5, 0xb0e7802e, 0xdb5b626f, 0xeeda74da, 0x9c05cbed,
+       0x3bfb6877, 0x4bdb75e6, 0xbf3b1fbd, 0x8d3efa39, 0xa99e9ca9, 0xd80108f7,
+       0x3ed7d397, 0xfeb81788, 0x90db11cd, 0xd14de45f, 0xfe8a25b5, 0xf375ef68,
+       0x52f8c5c9, 0xcdf98ab9, 0x7ca27cdd, 0x3e488553, 0x2d174951, 0xcbe1ee4c,
+       0x7f683bed, 0xafef7a93, 0x7dc8b7c6, 0xcf9c6e38, 0xf5efe02c, 0xcf8d07c6,
+       0x7ce7fd11, 0xee2a7ea7, 0x23f231e7, 0x2b99d9a8, 0xcbd068c9, 0x879e4cf7,
+       0xfe8e0027, 0xedb8c44b, 0xeb86f32d, 0xe4ecf3ce, 0x73deb97c, 0x0ab27a74,
+       0x80d5247c, 0xb6cb5bb3, 0xfda64fed, 0x919dd1bb, 0xd9f3210d, 0x103c557f,
+       0x76b1687f, 0x70d41da1, 0x38666a98, 0xf0e38cfc, 0x74e740f0, 0x049a6f1c,
+       0xc857ea27, 0x3ef8e760, 0x33e52f32, 0x89b7afe8, 0x9f144f8f, 0xda059fa0,
+       0xa1720578, 0x99bebcff, 0x2d5bc5c9, 0x206e5ca0, 0xef80075d, 0x2b824955,
+       0x682aab44, 0xd863f6da, 0x958af56f, 0x2f3d073e, 0x189b5c13, 0xc969ec3b,
+       0x452c7151, 0x126e31c3, 0x17371b0c, 0xb0097bc0, 0xed8cd16f, 0x6603fedf,
+       0xca7e8c8f, 0x61eb7354, 0xbfea67a0, 0x3c2364cb, 0xc2ffd00c, 0x63f46070,
+       0x1be0f422, 0xe649fbee, 0x9015fbf6, 0xddf81d83, 0xe43f80a5, 0x47f1b10d,
+       0xea4af72b, 0x269be474, 0xbe3a2687, 0x8072678c, 0x9f237ea5, 0x80f2d46f,
+       0x59bf787f, 0x99fbe190, 0xb4893e54, 0xcbe99a68, 0xcdde1a03, 0x20bf246a,
+       0x6616909e, 0x85bec037, 0x35565baf, 0xba7c85bd, 0xcf751576, 0x693e48d4,
+       0x783b01f2, 0xe8457e29, 0xa8bed34f, 0xadbea7fb, 0xf59aa4fe, 0xdad7b3fa,
+       0x8818daf5, 0xd011eda3, 0x78e690ae, 0xd720fc5d, 0x2d65e6cc, 0xbce20f56,
+       0xb5d955eb, 0x3fb48d49, 0xc0b97397, 0xfcfc257c, 0x10e834de, 0xad3b1bac,
+       0xdfad13e4, 0xc2ce1943, 0xac5783c7, 0x6f5f941e, 0xf5e44ff5, 0x698fe6f7,
+       0x7b43eff9, 0xd5516fb0, 0x8f1c67b7, 0x5f5278b4, 0x666e9afd, 0xf6dbe3f6,
+       0x9be76b4b, 0x49783bae, 0xb4dfc62b, 0xa24d87f5, 0xcc3217e7, 0x49050b8f,
+       0x85d74ebf, 0x84ff97eb, 0x9729c7fa, 0x47e21fa8, 0x57e7ca21, 0xf1853eb6,
+       0x1dcf33ea, 0x67f401bd, 0x6244efc5, 0xb1d4faa1, 0xd8849635, 0xfc05103e,
+       0xd146f284, 0x297cf18d, 0xcc2b3394, 0x96a420cf, 0x58c5e3f1, 0xdbe53bb4,
+       0xfa2281cd, 0x4fcef97d, 0xd6ee20b2, 0x7fb31f71, 0x1e38e7fe, 0xb0596dfd,
+       0xb12e5fde, 0x7ca37c75, 0x3cf8e6ee, 0x1736cbbd, 0xc0d0b7ec, 0x0796bbce,
+       0xb0e6c8e7, 0x59a54338, 0x5ded7166, 0xed67dc36, 0x7dc0567f, 0xf85f40ca,
+       0xff6d4b39, 0x9967e9e7, 0x926f2e5d, 0xb66e7003, 0x075b61bc, 0x8fcbc1c4,
+       0xf57fd198, 0x75c59c36, 0x3e2f69bb, 0xb791fe8f, 0x41c5d449, 0x0d8fe223,
+       0xf10cc862, 0xb44ac6b3, 0x147f3403, 0x71e8c1f3, 0x64e2bef8, 0xb3dc5e2b,
+       0xb8594fd3, 0x1c67a5e2, 0x75b66e78, 0x90e3038b, 0xff8e970d, 0x831bc447,
+       0xde325c0f, 0xe3e38a78, 0x7afd66d7, 0xc448690d, 0x2fa52438, 0xdc4a38a7,
+       0xcff71ba2, 0x582bfe7f, 0xfdbd3b0f, 0xbd015fb3, 0xff38ff15, 0x1fc07bab,
+       0xc2756bdb, 0xee7ded78, 0x6827ae30, 0x7ae2eddf, 0x33ecf1de, 0xf1d30eb8,
+       0x6a0bb327, 0x7c73d8eb, 0x7447ac08, 0x1932fb6c, 0xf6abb6e2, 0xda79c0cc,
+       0x52d31daa, 0x80799448, 0x036e0296, 0x320758fd, 0xb1a5abca, 0x79d00865,
+       0x5c1bca86, 0x71f8eeb6, 0xe3c592b0, 0xde371e55, 0x2dbd7d1a, 0x38dc4e22,
+       0x61abc6eb, 0x5d946efc, 0xbc47e92a, 0xe39510f8, 0x6fc87e98, 0xbd9a03eb,
+       0x33bf2a8f, 0xa72a0ff0, 0xfbf20cf7, 0xafc971bc, 0xc6b2809f, 0xc5e35ec4,
+       0x4df07ea1, 0x6cdbcf5b, 0x066c7f76, 0x1bfed9bd, 0xdc83cf8c, 0x74835ce8,
+       0x10f9ff3c, 0x909cb388, 0xfdc0eebb, 0xb8cc7b33, 0xcf7caa2f, 0x1d3fa87b,
+       0xf5c2de3b, 0xd5d7c232, 0x1ff7483a, 0x73e1075b, 0x58e6ef38, 0xfce66716,
+       0xeab43887, 0xde3ce7c0, 0xc5ac70cc, 0x3f8b7ba1, 0x7ed859a7, 0xb19d6d22,
+       0x0afbf372, 0x85f5c431, 0xd1d3905c, 0x6a8bae4b, 0x1f02707c, 0xa7af8626,
+       0x77f38f44, 0x7971bbaf, 0xffc0fc81, 0xa12f5eea, 0x3f1041f9, 0x91ef080f,
+       0x63a0f628, 0xe9875b23, 0x3fefa390, 0x9257d6d4, 0x0d3d062c, 0xa55d6ff4,
+       0x29bffa2f, 0x6c98647f, 0xd3e4884e, 0xdba2afe9, 0xe11689f1, 0xa987edbb,
+       0xffd62210, 0xdf3eb02d, 0xf9815478, 0x698e3687, 0xe7cd3dfd, 0x139fa7c9,
+       0xdac7bcf1, 0x71da0b60, 0x22a8bda3, 0xa4683e2c, 0xb7a72677, 0x138d89aa,
+       0x06c7b7a7, 0xd39eb4ec, 0x3c42ef2f, 0xaa3d6d57, 0x077d69f8, 0xda525e1a,
+       0xc14bf6c2, 0xa3081138, 0xfb0bf4ff, 0x11fad8b2, 0xdb1b979b, 0xf1dbc399,
+       0xc76f4736, 0xaeacf5bb, 0xa0fe159d, 0x5cefcec2, 0x9253bdba, 0x77d40e7b,
+       0xb02655aa, 0x5054ff7f, 0xffb68c2c, 0xd645b264, 0x6f4cf2e2, 0xe78978e8,
+       0xf9d9631d, 0x41413146, 0x6c557aff, 0x24b891ee, 0xe2151548, 0x6c35b514,
+       0x0fed4e3f, 0xef20a95d, 0x705bf8da, 0xc0ceadbd, 0x3392675f, 0xce17e20f,
+       0x01e3c5e9, 0x137b46ae, 0xe8e936ef, 0x985b155f, 0xd7f1e702, 0x488c7f70,
+       0x297f3c2e, 0xa10a0a3a, 0xe4d3a23f, 0x5f5946b4, 0xc4c5ed90, 0xd917c613,
+       0x492f3fa9, 0x42a71abe, 0x9a3eda3d, 0x01eb4b0a, 0x71ba742c, 0xcb94b0ab,
+       0xd9bbcdde, 0xdceefd89, 0x6e09e7ca, 0xd9933aa2, 0x3718307e, 0x65c7b73a,
+       0x21f83191, 0xda3c5371, 0xeb6173f8, 0x8f607dbe, 0x3b8838d6, 0xe519ea9e,
+       0xc2662aaa, 0x16b1d1b9, 0x7a701321, 0xd1df8df6, 0x22cdad7a, 0xed3a1fce,
+       0x7750beda, 0x8d99e83c, 0xfffb843c, 0x275fca00, 0xdc69d0f6, 0x95e04817,
+       0x257b9ee4, 0x9c768866, 0xc0db9cf7, 0xb92200e2, 0x585397e2, 0x80048e1c,
+       0xac9e3e7e, 0x839e74e0, 0x552fde14, 0xb2c75cf0, 0x09ca5f57, 0x70872611,
+       0xea16257e, 0x5bd697cf, 0x2eb0591d, 0x56eefc4f, 0xca532738, 0xac501beb,
+       0xd54a773f, 0xba7a0fcf, 0x67e9eb84, 0x820e0b4b, 0x2cf52bfd, 0x329ebb45,
+       0xd52e7f57, 0xe90acfb8, 0x54617d85, 0x22109eef, 0x35955df7, 0xe616ba3f,
+       0xaffb91cb, 0x4fd848c8, 0x5c624e56, 0x45673e70, 0x2f7cbe83, 0x81cbcdd8,
+       0xa97ec49d, 0xfc9f5f78, 0xcbf11b6d, 0xc92fe329, 0xde08575f, 0x718b1adf,
+       0x2eaf6595, 0x4e64fb46, 0xaad7f3d5, 0x1b6bf9ea, 0x9ea3e469, 0x3d2eb1cf,
+       0x67f9b4df, 0xcb8e7c6f, 0x35f79fd5, 0x3c2259f2, 0x716010de, 0x6dfd8888,
+       0x6e911b4d, 0x7c8d9f23, 0x75f0b76d, 0xfa57ce2f, 0x66496c57, 0x4ee81b26,
+       0x17a84293, 0xb74a3d46, 0xf7f80487, 0x0d40a4e0, 0x458ae57e, 0xfbca9efb,
+       0xefb29423, 0x2247a06c, 0x3d42ebd0, 0x607d1382, 0x03e46de7, 0x8415bb67,
+       0xfaf909f5, 0x79e5deca, 0x8e1fc957, 0x6d5fa22e, 0x418efc00, 0x76e762bd,
+       0x36a04813, 0xe5d4f403, 0xe83b7184, 0x12a5a8b3, 0xd4427fdc, 0xef7061d2,
+       0x47d31389, 0xce943ef8, 0x05f70451, 0x92174307, 0x923d3ec1, 0xd80375dd,
+       0x5212ef3d, 0x86f0760c, 0x594f3618, 0x59bfd3cc, 0xa7576e15, 0x7c0d7abf,
+       0x70ab2cdf, 0x79b3bc2e, 0xe438658b, 0x7fbc449b, 0x775f1bc4, 0xd1dfb439,
+       0x4aba332c, 0x10e1812d, 0x6323d8bf, 0x53a51dbb, 0xb7657cf0, 0xf6ccd6df,
+       0x7f367481, 0x661c58e2, 0x7e9a3bcf, 0xb3c43976, 0xdf45371e, 0x6ac2327f,
+       0x7cd7f7e2, 0x1837f1cb, 0x846effb1, 0x7b8fed95, 0x47ed2864, 0x3e39c955,
+       0xb87d330e, 0x0ff9cb8a, 0xfec5af4b, 0x541668ef, 0xc40a4718, 0x4d1baedb,
+       0xb0e939fb, 0x2c30e3c4, 0xbf9e392e, 0x52b88bbf, 0xae931f81, 0xf3e80226,
+       0xdc113fa4, 0x7abe35b7, 0x7eabce29, 0xcf38a0e7, 0x8a527582, 0xa773b05b,
+       0x4fbfe8ed, 0xb8749568, 0x69ee9f8c, 0xc4e67981, 0xeded0423, 0xf2fa23c4,
+       0xb110125c, 0xf3fd369d, 0xf3e84eab, 0x6f8e56f9, 0x7c064907, 0x444affaf,
+       0x88bb3aba, 0x6f5a3eeb, 0xbc40e967, 0x02f3a6ef, 0xe9a5da9c, 0xb4616257,
+       0xe0167e71, 0x71ebf281, 0xf2f8e085, 0xc63b52f8, 0x5a5e5fef, 0xeb8c197e,
+       0x73c0fc5f, 0xe073b459, 0x8e297661, 0xc772afed, 0xae29e251, 0xdf8c08d7,
+       0x51c56975, 0x386bebf6, 0xe1ad70d6, 0x8c696d39, 0xc4beda27, 0x0fccad0f,
+       0x523a5fc9, 0xb65e6050, 0xd7c02057, 0x973cfb8e, 0x27e3373c, 0x3d03a5f7,
+       0xe8f3a6de, 0xa39a5b67, 0x655d73ef, 0xdf79b075, 0xd81afe7d, 0x5537778f,
+       0xbd8fb04a, 0xe71ebbd7, 0xd042b755, 0xd4b3be15, 0xb873c42d, 0x13642c4b,
+       0xbaa5b3c4, 0x01629bb4, 0xae66d3f7, 0x513ef4a5, 0x3f39426c, 0x7e90bb2e,
+       0x1821257f, 0xdaf1e05f, 0x8d903741, 0x7f91e7e1, 0xd07bcd64, 0xd07deb4a,
+       0x24b944ea, 0xd0025c7a, 0x7ffbfaef, 0x3baf403b, 0x8e519a2f, 0x47fcf903,
+       0xe70b6efb, 0xf71898d3, 0x293fc01a, 0x70fd424b, 0x696a1c79, 0x404bdc22,
+       0x1d651ef9, 0x134bf355, 0x51b6d43c, 0x26ec127a, 0xb88b9fbc, 0xdb53aadd,
+       0x7bf84677, 0x4240fa61, 0x697d8102, 0x9a153d9a, 0xc52c5085, 0x3d8b78ff,
+       0x848cf304, 0x4a6fda32, 0x58589582, 0xe9d2ad7d, 0xb8d573ee, 0x32e29dcf,
+       0x11370e07, 0x1b06d7dc, 0xcd7ea169, 0x79f66ace, 0x7b413c4d, 0x2951e6b3,
+       0xd9eb4b50, 0x2159b520, 0x56e1927e, 0x512b61f3, 0x79e2a482, 0x4c65c1ef,
+       0x4f996d1f, 0x2bfb77c6, 0xfec7d954, 0x6d105c43, 0x6ee3eebd, 0x079e797e,
+       0xec1d657e, 0x1adc197a, 0xe7b59597, 0xff416fda, 0x706edbbc, 0x8f80ac3f,
+       0x353e93bb, 0xa102fdb1, 0x9dbf706b, 0xb4668eb6, 0xde0f541b, 0x3eaf4111,
+       0xcf9e0895, 0x72ffd375, 0x61772db4, 0x938f83f6, 0x2dd54d39, 0xa389bbe8,
+       0x578f005a, 0x717786bd, 0x8991d844, 0x816a7baf, 0x3f6b6fde, 0x1b18788c,
+       0xe5c8faa2, 0x7b854a33, 0x79dd9c2a, 0xf2b56f28, 0x37b71df9, 0x53e32549,
+       0x38e5afd0, 0xd357f233, 0x67bea36b, 0x98b576af, 0x3200d6b1, 0x110ed8c1,
+       0x3350e87a, 0x2ebd1ec1, 0x99df7f82, 0xe942f147, 0x0ef41bba, 0x810bf3fc,
+       0xf59b8099, 0x82b7dfcd, 0xf1eb7c7e, 0x1d7e99a3, 0xa7fabfb6, 0xcac3a7a2,
+       0x803b87f6, 0x2efb550f, 0x8423f1f0, 0x2b96ee72, 0x78f08fd5, 0x237b8688,
+       0xa8bd35ce, 0x32330b85, 0x011c7cf1, 0x104288f9, 0x1b266b05, 0xcd57c09c,
+       0xf6edaebf, 0x5cf1e367, 0x6b272acf, 0xfcd656af, 0xfa059772, 0x3f362abb,
+       0xa2eb52e5, 0xfe748bde, 0xc61e7612, 0xfce1752b, 0x21517bcc, 0xc0efc481,
+       0x7ada26af, 0x495f8e8e, 0xd5f85131, 0xe1347a01, 0x64fec9ff, 0xbf73fb19,
+       0xab9fd3da, 0x6d77e788, 0xdce42ed4, 0x70c69f55, 0x86a50e41, 0x57af82e3,
+       0xb9dfa6f6, 0x75c1bf54, 0x8367d08b, 0xa66a4f1e, 0xd48a6c7a, 0x8c5c9763,
+       0xf6b9d6f7, 0x19ded0d8, 0xef02faf5, 0xf8c6d797, 0x667a2d5e, 0xdc7cc0c6,
+       0x700435d4, 0xc492a597, 0x566c4a22, 0x57d6c893, 0xe375135b, 0xeef8e448,
+       0xf9a93b47, 0x695f9a97, 0xafdbaf7c, 0x1686e3e4, 0x289a14cf, 0xefbf69fe,
+       0x03ccf18d, 0xd93ad6be, 0x9a0e13fc, 0x23fcbf82, 0xa036e7ab, 0x10fb46cf,
+       0x231aeb03, 0x5e2c1943, 0x5be9d212, 0x3365fa6f, 0x24304fe8, 0xa7e638e1,
+       0xa170d8e3, 0xc4067a77, 0xa97a33c4, 0x653f0155, 0x8d610e50, 0xd7dc1155,
+       0xdd8b283d, 0x9b283323, 0x1ff8fbdd, 0xe63d6c31, 0x6e36189e, 0xac8fe968,
+       0xbf4177c5, 0xcdf88964, 0x6e9edfd9, 0x87e21520, 0xefb8c6f7, 0x0a587e04,
+       0x748fd8dd, 0x14097127, 0x5052e96f, 0x090dfd80, 0xe2c0aa15, 0x3b8d8486,
+       0xd2fad290, 0x183cd48b, 0xada9d2b7, 0x3a483885, 0xe4513bf8, 0xfe463eb4,
+       0xc6aef16e, 0xeb28f388, 0x7dbf9863, 0x4dfda140, 0x51e7622c, 0x9436e3ba,
+       0x476fe07c, 0xd9d82dec, 0x7ad9cf8e, 0xf19e3fa8, 0x02ff38d9, 0x24bf4181,
+       0x42b1ff9e, 0xce026b24, 0xf826fc8f, 0xf9c164ce, 0x82b88d91, 0x8c5f3f60,
+       0xb5d57161, 0xe41d6b82, 0x59752a7f, 0x0d1dbee0, 0xb94c8fff, 0x57d125c9,
+       0xcb9f571c, 0xd52b3982, 0x5e40e787, 0x8dce531d, 0xe83d8358, 0xe6f0c21a,
+       0xdffb7516, 0xc935b935, 0x2159b93a, 0xaf6e121e, 0xdf9c1563, 0x2e310877,
+       0x2c750f98, 0x829d1817, 0x900f9f85, 0x6e1a71f4, 0xe071b50f, 0xa40c98ed,
+       0x63fc46df, 0x8b307ef1, 0x68f402cb, 0x239f77f4, 0x34f39c35, 0xcd4d039e,
+       0xa4db8eec, 0x62d93ee1, 0x22f8ee05, 0xe86d9ae7, 0x4c1d797f, 0x48788dff,
+       0x8971e301, 0x5f949373, 0x14df20ad, 0xec1e3ab9, 0xc7edca6d, 0x235f201c,
+       0xff053a1f, 0xbeb003d8, 0xea3947f5, 0x4d2d113e, 0x02581d4d, 0x5a6a68fe,
+       0xf3daa62a, 0x3514bb7a, 0xeb8a780e, 0x6bc6b7dd, 0xe618b13d, 0x3fa0a787,
+       0xbf6f3c67, 0xef7546eb, 0x7d78f8c2, 0xbd77e30c, 0x8d51f1a2, 0xc9eb3d03,
+       0xfdd8e2bb, 0xfeecf124, 0xe7932721, 0x44a59f7a, 0x73dfc292, 0x80323fa3,
+       0x03ce67b8, 0x265eb023, 0x2cd7105b, 0xcb9da37e, 0xc98e86a0, 0xf5d19e2f,
+       0x12d8df0b, 0xdb233fd8, 0xb0ba5d98, 0x97b6067e, 0x8eb3ee4c, 0x5a5d7ca0,
+       0x5c41726c, 0x3fa2cce7, 0xf828e03b, 0x1cd6f4a2, 0x9c0a7bc0, 0x1defa443,
+       0x0db23d16, 0xd4f5f0e2, 0x1c322510, 0xb951de80, 0xc775c4cc, 0xfba8a685,
+       0x3636ed9f, 0x718e6eff, 0x3a9a9a62, 0x5c74a4a4, 0xca107e78, 0xd523c349,
+       0xf1d2b4c3, 0x2984e73d, 0x5da0923e, 0xca753ea3, 0x0dd609a4, 0xc4987b34,
+       0x63d9aff9, 0x40921f4d, 0xb01d60cf, 0x4d47da98, 0xabf9439e, 0xc4af18c9,
+       0x95f9a13f, 0xe03e612f, 0xed1f3ab8, 0x75ffd51d, 0x99232fa8, 0x3d82b6fd,
+       0x76538b0d, 0x306f79ee, 0xf87dffac, 0xb0b1f3c3, 0xa917f40e, 0xe7ec162b,
+       0x89df7b89, 0x1f437385, 0x15e2cbde, 0x51e61877, 0xaecc6d13, 0x9c56c4ff,
+       0xe05afd05, 0x278e7bfb, 0x3564970c, 0x1e58d75b, 0xc9e70d10, 0x54f2f7f5,
+       0xf70d1306, 0xdeb1f8f4, 0xbc7a294a, 0x61cb82bd, 0x4a8dd6f9, 0x7bed0aba,
+       0x7001b6dc, 0xbda08f6e, 0xeec8d13c, 0x59e8d287, 0x02ac75b4, 0x34bfa773,
+       0x77faf99b, 0x05c6ccab, 0x67ac1177, 0x8cdf3879, 0x6bd81e74, 0xfc96fac3,
+       0x594fed9c, 0x4d5adb48, 0x99a7abed, 0xf630b79d, 0x6a87c963, 0xde150a41,
+       0x9c040792, 0xf7fbc317, 0xb3ca71d2, 0xf75c7efa, 0x78d3f632, 0xfcf18e6f,
+       0x5a9f36aa, 0x4a5fe5c6, 0x117fa83c, 0xd99b5ae7, 0xfe31b4fa, 0xa660ee77,
+       0xe36ffb0d, 0x321c8ff1, 0x6f43ce11, 0xee34383f, 0x9f29f752, 0xc130f7e6,
+       0x9e90d2bd, 0xb34c11f0, 0x27bb2a6c, 0x02adf9a3, 0xd35555c0, 0xec67bc36,
+       0xca9bda9b, 0xd80e93e6, 0x1dd9acc3, 0x06ae47ea, 0x415290fc, 0x6d565fe7,
+       0xf9b0af3c, 0x6dc3e32e, 0xd06df9fc, 0x67d82cdf, 0x0a64fead, 0x156df395,
+       0x7bf085f2, 0xfd36fcc8, 0xf6fe9bb9, 0x2567eb57, 0xfad24f5f, 0x167bc46f,
+       0xe6e95fc7, 0x2903b592, 0x1cf76a4b, 0x9fcfc21f, 0x0d1cb9e1, 0x2cbc464f,
+       0x6905c523, 0x9a2e1842, 0x687ec61f, 0x5bad2bf2, 0x4febfbc8, 0xa978ebe5,
+       0x0bea2f10, 0x743c4627, 0x40436dc8, 0xe8788d7f, 0x913ee5e8, 0xb1436d87,
+       0xbbaaa55f, 0x7523ec00, 0xc33ad75b, 0x521392fc, 0x407b81dd, 0x5c3336af,
+       0xccb78d87, 0xc64d7b79, 0xac657bf1, 0xe7f7029a, 0xc1269ca1, 0x1fb3003e,
+       0x69dad3de, 0xc35db9f7, 0x2173e024, 0xc57ca7a6, 0x7ac361ae, 0x7e3e97ca,
+       0x737e01de, 0x718248e7, 0x3d588e9b, 0x226c7bbd, 0xc6c7b9d2, 0xa90ab9c6,
+       0x83ef1ff5, 0x8adcda4d, 0xbfda1bfb, 0xaf9f71e2, 0xfad185cc, 0x477f8479,
+       0x77613df8, 0xe6d2bd70, 0xdcb80b21, 0xeb6668ee, 0x94368bd7, 0xfb8c3ca0,
+       0x9c175eb3, 0x2ab4e905, 0x02ac704f, 0x67ca37f2, 0xb8fbeb89, 0x4e422bef,
+       0x0fbe21e4, 0x72fb83c0, 0x8c45eb4a, 0x77e51873, 0xcec9dd8d, 0x38d5abcd,
+       0x8bd15b6f, 0x376e1c1d, 0x18fea37d, 0x51b0b1fb, 0xa468bb40, 0x9ae6d97f,
+       0xf40903b5, 0xb22ff59f, 0x6841a11f, 0xb53f7887, 0x1712957e, 0xb11037de,
+       0x0d76d41e, 0xbd3fdf09, 0xee3179bc, 0xfda2afc3, 0x846e2c27, 0x7e8d2071,
+       0x3f635e8d, 0xb2d3c40a, 0xabb6e205, 0xe3d81705, 0xdcc8fbc8, 0x170efbba,
+       0x041bec36, 0xd8976bf2, 0xbf76d93e, 0xcec0f380, 0x0f5b080f, 0xfae02758,
+       0x6bf2af59, 0x7a7ffb66, 0x02b56397, 0x6e95f7f7, 0x71caa210, 0x6b9e7d59,
+       0x5a5d9858, 0x1ae9981e, 0x8837a3a6, 0x345641fb, 0xa79ee894, 0xbaf6f5da,
+       0xd5237d2f, 0x4ae351f1, 0xfa697e9a, 0x35dfe9a6, 0x6bcd9576, 0xf481c0a4,
+       0x8fe3b00c, 0xda843ce2, 0x367691e1, 0x1e647f9f, 0xf1eaa57d, 0x80f5baf3,
+       0x3e4cb925, 0x7c22c44b, 0xa53d9bde, 0xe3d9d07c, 0xbf7ebb6c, 0x8fed77c3,
+       0x2f4d0fd6, 0xf519feb4, 0x2d7fc8c2, 0x8394668e, 0x1740ff91, 0xdf5e07cc,
+       0x27dc0b63, 0x3a33be80, 0x48ac7bfd, 0xbe6a4767, 0xfe3dce0b, 0x74a03e11,
+       0x8adda556, 0xf8b16af9, 0xe3ce3b46, 0x7c693cf8, 0xd905e2ff, 0x61daafdc,
+       0xe7638f75, 0x01138a86, 0xda6b5317, 0x149c5966, 0x15650fe7, 0x53a23dc0,
+       0x059b6d1f, 0x0fc5eea1, 0x4b7e58b9, 0x17163bdb, 0xb26ae3f5, 0x9f83a60b,
+       0x1906edc5, 0xef836654, 0xcf13cd7b, 0x7b2af3a5, 0x78b9bc7f, 0x9987bb3e,
+       0x1e505795, 0x5678e85b, 0x1fc46871, 0x5a2b3f40, 0x4e210a8b, 0x6e110153,
+       0xba559e3a, 0x165b211d, 0xd327bf1b, 0x79b39ef7, 0x2e9e2256, 0xadf1c1ae,
+       0xfa8490e2, 0x38b20e44, 0x6afb44a8, 0x89addfa5, 0xe52e7ea1, 0x8b049aef,
+       0xf4abe60b, 0xb1e61fb9, 0xaadc126b, 0x935cf61a, 0x74077c1f, 0x75b131ac,
+       0x8eaf7dfa, 0xc4bb6b88, 0x47cfbef8, 0xa3bcc0a6, 0xd4c167c5, 0x38a79e58,
+       0x9e443cf1, 0x8c31c589, 0x766a4fe5, 0x80e9a896, 0x0a83aa8b, 0x3fd34f8b,
+       0x092b1ff0, 0xc22a8bd3, 0x1e5571ce, 0xa56e7822, 0x9e0160ea, 0xfd7d815b,
+       0xf870eb1f, 0xd2b739af, 0xa7c62b83, 0x2298497c, 0xba7ae185, 0x8bcbaadd,
+       0xd091a629, 0xb8c6221f, 0x9885dce0, 0x4edeaa6e, 0x465e2ffb, 0xc90fca53,
+       0x7ee112e9, 0x5369ba96, 0xaa5fb845, 0x52dfdf96, 0xcae7626b, 0xdbb6f6b5,
+       0x96a97ad9, 0x0717b09e, 0xde67ee41, 0xb1b1cd6c, 0xff9c0af5, 0x15adfd6a,
+       0x798044dc, 0xe7827ed6, 0x4893b201, 0x46cff00b, 0xb780b9dc, 0xce04f643,
+       0x4c4eb66f, 0x7521d2ff, 0xa92f4d99, 0x1ffbef14, 0xbf00585a, 0x338ae0a7,
+       0xf34195dd, 0x452fb47f, 0x9ba5707d, 0x085067ce, 0xc65f69bf, 0xce9a57f2,
+       0xb7f9a50f, 0x0f2c65ec, 0x0f709a0b, 0x81797daf, 0xc3b4147f, 0x7dd5bef1,
+       0x325be025, 0xf48b78b1, 0x27eb82b2, 0x35903eda, 0x78056274, 0xe6edc43c,
+       0xdffc9ada, 0x9d3e20d8, 0x7f6156ef, 0x4f7e26c7, 0x354db7d0, 0x13368abe,
+       0x29059fde, 0xce7dfff0, 0xa42e4d4f, 0xec257dd1, 0xf7412583, 0x766eb095,
+       0x08f9eec2, 0xd7b8cdec, 0xfd82a75b, 0xcffb7c6e, 0xf91f7839, 0x719eac65,
+       0x2039d3af, 0xdf99cfed, 0xbe18de0e, 0x9ec27cfe, 0x87c809f7, 0x53fd018a,
+       0xdb927541, 0xbad61ea8, 0xc264aa89, 0x3f3f593c, 0x3ecc246c, 0xfe2b673d,
+       0x24f68ecc, 0x8156e384, 0xe40cf8bd, 0x5a4e7b35, 0x8fb5fa13, 0x2d5ac94d,
+       0x909cb8c2, 0x116474de, 0xb3dfffd8, 0xb7043c7b, 0xbe6ff71b, 0x198f7dd8,
+       0x83620fdb, 0xffa020fd, 0x4fea922e, 0x162ef1e6, 0x3949264f, 0xde5ef361,
+       0x74fdfa0f, 0xd13e5fd8, 0xd00bf6c6, 0x5760897e, 0xd31512c7, 0xcabf1071,
+       0x30798804, 0x8f049bbf, 0x7feb43dc, 0x47e2cacc, 0x8ba20696, 0x658a8e07,
+       0x43897f7e, 0xc99cf766, 0x7fc09bc1, 0x9c4b3988, 0x3e743fe0, 0x9fb848a9,
+       0x875e7248, 0x4c0761eb, 0x467de804, 0x3d61380e, 0x4972eba6, 0xea7a44dd,
+       0xd6f2e4eb, 0x514c7dea, 0xdc38872f, 0x9fe60e2d, 0x7047933e, 0x49d773ff,
+       0xa4eb0025, 0xea96e909, 0x70cf78f0, 0xcefdddfe, 0x2162cbfc, 0x8627bcde,
+       0xf713fb40, 0x0e4098c6, 0x6d9ad9bf, 0x08bc3c05, 0x487ca23c, 0x84ef3b30,
+       0x53ce12fa, 0x39f0337a, 0xa92f17db, 0x7f28e363, 0x576b5f27, 0x67a97ee1,
+       0x716bc1ac, 0x26f3e7ff, 0x45f74fbc, 0xf90255c5, 0x4ea9cf17, 0x64cfbfb0,
+       0x3fb06304, 0x3fb09bcf, 0x5d74c62f, 0xfdd292b1, 0x8f1648e0, 0x02446c92,
+       0xf2992cbb, 0xf3e93bd5, 0xbf0cb1f1, 0x165e9d9a, 0x31e7f4cb, 0x7ffee081,
+       0xfa8794c9, 0xe9cfeda3, 0x3fb822ec, 0xadcdc067, 0xa638e022, 0x85138b44,
+       0x4cef8844, 0xb7e82629, 0x78cbb14d, 0x03f6070e, 0xa9b139c3, 0xfd4efedc,
+       0x0fd702a0, 0xc10e04a8, 0x762d977d, 0x5f166f7e, 0xe386bc47, 0x26d26ae4,
+       0xf5791f82, 0xd10ae245, 0x28b9aef6, 0x6723f545, 0x169f7af0, 0xdf471488,
+       0x4aa0bbcb, 0xa23cbb80, 0xd466f3f7, 0x71849c17, 0xf0c59a70, 0xa444fc1c,
+       0xf9e78dc7, 0xf70d3867, 0xbf72c741, 0x12190868, 0x5b4c2fbe, 0x8e2199f7,
+       0xd4fd1c7a, 0x7c05c542, 0xbf7766d9, 0xfe9ceb07, 0x2a5c9956, 0x8fb4f86e,
+       0x791bdfed, 0x7bd70631, 0x80ed3e28, 0xebea2b8b, 0xefda56fc, 0xfab1862b,
+       0x57608701, 0x5264f7be, 0x3979d822, 0x5a738d96, 0xf00ee1aa, 0xf8638ce5,
+       0xd1e98e72, 0x19b195cf, 0xdf4d4f28, 0xcf507700, 0x3f30396e, 0xc5323ada,
+       0x09d8caeb, 0xf3820fd0, 0x59a49fb3, 0x699e82e6, 0x32c534ed, 0xb5d31bfc,
+       0xc1f72b35, 0x73ff8e3a, 0x1f4c5e36, 0x1f095178, 0x3277dfef, 0xdd6abd7a,
+       0xff681bac, 0xd71976bc, 0x79f9926b, 0xa4bc70a2, 0xc345e185, 0xc59d875d,
+       0x4cfc3477, 0x088ef5db, 0x4e7da7cf, 0x74833388, 0xfc3443cf, 0x1c33f54c,
+       0xc6c83d4e, 0xe3f0be89, 0x074e72ee, 0x9b8118f3, 0xf9370c83, 0x7bf81f14,
+       0xc7e0bd5b, 0x7d0d9b88, 0x3c2be6e2, 0xcf6abeff, 0x13ae4bb4, 0xfbf4f936,
+       0x24e98d3c, 0xc07df45b, 0x5e993aef, 0xaeea52ef, 0x717b02cb, 0x779d89bd,
+       0x4dfa4893, 0x62bbe714, 0xabe47bb4, 0x4dbf2133, 0x5b67f662, 0xcfed19b3,
+       0x83c7bb36, 0x0b54d671, 0x9226c39e, 0xf1f60da7, 0xd45a06bb, 0xb8cddff0,
+       0xa08fdb8b, 0x1c749a1c, 0x9957effc, 0xcfaf73fc, 0x48eb1b86, 0xc393295a,
+       0x46ca13f8, 0xab73d691, 0x60f7ef23, 0x1dc28f0f, 0x1d2e305a, 0xa21ef053,
+       0xda0a63aa, 0x7deedfc5, 0x99e200ab, 0x89e17eda, 0xc82adfbb, 0x33ef051f,
+       0xedc2bd9c, 0xa3c796aa, 0x0d276013, 0xea4fd0f7, 0xbfa4bf3e, 0xf018be47,
+       0x6e53d593, 0x0e7d5fbc, 0xe3a2e89c, 0xae6d4dce, 0x8c166019, 0x09cfabf7,
+       0xb362f3b1, 0x8067b88f, 0x5fb88ca9, 0x16e1e39d, 0x4633bad2, 0x9befbc8c,
+       0x817fcf8e, 0x2d799ffe, 0x3bdc40a4, 0xc95f54a8, 0x99d513e6, 0xbd347f60,
+       0xb7ca3fc3, 0x752387e0, 0x3a67fbf7, 0x721fff58, 0xa6deec49, 0x05d70536,
+       0xbbec261f, 0xfeb71f20, 0x61d6cb1e, 0x30bd57b2, 0xb8e1ec1f, 0xd3ae3732,
+       0xf8b274ae, 0xc8494fcc, 0x72f20992, 0x11beb849, 0xc769d594, 0x88f79e85,
+       0x4ed23c54, 0x880f77cb, 0xdfed0719, 0x0710f0ea, 0xd7527bf8, 0xe26ef841,
+       0x6071ece4, 0xd763edb7, 0xa638c224, 0x2ae94dd1, 0xa1ef62dc, 0x0ceba343,
+       0x3ab757b7, 0x00c71216, 0xa1d81df6, 0x16eda3a6, 0x41c35ef8, 0x2659cf70,
+       0x803c30ff, 0x20f07bfc, 0xc6bc802c, 0x8f1f2b07, 0x1f3ffcb5, 0x2041a10f,
+       0x00f15e9f, 0x77c70871, 0xf00643c2, 0xf503c355, 0x7907bed7, 0x2a0b5fcd,
+       0x96a19f6c, 0x605070d7, 0x5cf7c3cf, 0x42fdc10a, 0x9d95af64, 0xe3c4f6cb,
+       0x4e4bc4fa, 0x87e746d6, 0x8ba843ed, 0x123b2649, 0xdff1be98, 0x121b190f,
+       0x4b1cafd0, 0xe86dc20d, 0x7b420dc7, 0x22fce2e8, 0xf70082ed, 0xf25ee26c,
+       0x432ff074, 0x6317a089, 0xc02145cd, 0xd4db76ff, 0xb30ff074, 0x0132536d,
+       0xae473b5f, 0xac860d7a, 0x5ecb039d, 0xf8f6acda, 0x6bdd9a4f, 0xed6ad5e1,
+       0xbb3074cf, 0x9d9b8d71, 0x1dbb0207, 0xff66874e, 0x87402c41, 0xfa639a10,
+       0xbaf686da, 0x39ec0db9, 0xbaf941d0, 0xe08d204f, 0xdc99e41f, 0xcfc0d349,
+       0x8092101b, 0x5f3dcece, 0x6538810e, 0x472bf351, 0x6d22de80, 0x5fa5d3fd,
+       0xd1fa34ff, 0xcda3bf9a, 0x487f342b, 0xdf82cf9b, 0xf8a3e504, 0xdefc2773,
+       0x215f8c08, 0x7e539e0b, 0xb97a9cec, 0x44afeb9b, 0xfbc451fb, 0x45692371,
+       0x467bb4ba, 0x28fce06e, 0xa1e7483a, 0xc84e5059, 0xd70f94f5, 0xae467bf3,
+       0x51efe977, 0xfa3731b8, 0x3d5a233d, 0x1c6fbd7d, 0xac32ae1f, 0xf4d77d13,
+       0x2bdd8fa0, 0x363e5ff2, 0x543c9dcf, 0xa0304bf4, 0x7bb1a6e6, 0x0f8c9c19,
+       0xe3e89507, 0xfeb9efd5, 0x65b5364e, 0x7de539c1, 0xe386ffbb, 0xffbbcbe3,
+       0x89f82ef6, 0x044a4e93, 0x3e4eb1f6, 0xd70e3e39, 0x715373e3, 0xd7ab58fd,
+       0x8da369fb, 0x1f88e7b0, 0x0e5677ed, 0x0adc7a50, 0xf4c167d0, 0xfb1fa777,
+       0xe177d419, 0xcfc24498, 0x9e281449, 0x2dc71061, 0x73b7bfe0, 0x92fe6040,
+       0xff807e56, 0xc70345ce, 0xd0806c2d, 0x87311fee, 0x7e7af9c9, 0xd726862f,
+       0x9e144feb, 0xe522b294, 0x8cff7f03, 0x571682f8, 0x47f9cdd8, 0xe784fe5a,
+       0x78dfbe59, 0xf9fe04a7, 0xe24553f7, 0xa6776b0e, 0x61f0674a, 0x0e6d8e71,
+       0xf2d29f83, 0xa06ecfec, 0x75f78ae3, 0x7a0eb711, 0x96bdb79b, 0x3156f905,
+       0x46237dea, 0xf9bf7efe, 0x446fbc4e, 0x2ed1538d, 0xe4fed5f7, 0xc64e282b,
+       0xf309dc80, 0x7dd872f3, 0xbef9461d, 0x133ffbbc, 0xcef546db, 0x6fe4deef,
+       0x4eefc394, 0x533ae3e7, 0xe230f25f, 0xa7ed2f76, 0x442ff69f, 0xfea7e9fb,
+       0x273ecbd8, 0x4be0ffe6, 0x5786bcc5, 0x12a79eef, 0x70d39fc1, 0xe191233a,
+       0x9faed266, 0x8f7b1225, 0xbb7c8cbc, 0x8737e5c0, 0x40df66b8, 0x7043b9ff,
+       0xf0bda2c5, 0x8fd85693, 0x9c69cc55, 0xfd00a873, 0x7fcfc20f, 0x39b1c718,
+       0xe73c28e2, 0xdcefe7de, 0xc193cb0c, 0x2bc71adc, 0xc015fdf8, 0x2a9c71b5,
+       0x024ebd7c, 0x5a40ad97, 0xf718ecc5, 0x8cba35d3, 0x8a4c3e72, 0xd1bd1fb1,
+       0x9181c469, 0xd73fcd5e, 0xf285f77e, 0xad024663, 0x0f3526ef, 0x0e3117fb,
+       0x36f4be73, 0xafd6f6fe, 0xc71e38f8, 0x7f3ff8e7, 0xc09bfa62, 0xcdf4dede,
+       0xb9633728, 0xa00a3f66, 0xfd4c6c81, 0x71a88fe0, 0x050fa8c9, 0x86e21517,
+       0xf4830cfd, 0xd149dde7, 0xbbb78865, 0x6f59ec9c, 0x68baab78, 0x1ec49e22,
+       0x8f4dc9dc, 0xbb7700da, 0xc41b3aa4, 0x97b6af47, 0x4dea82d4, 0x66ff34ff,
+       0xcda1d7bc, 0x36642044, 0x0b6cf9a3, 0x47bc11c4, 0xc8079e08, 0x0d37de6f,
+       0xa907fa70, 0x9d51e715, 0x34790817, 0x6a6ccfcc, 0x1f81b5ae, 0xcec494d6,
+       0x27881db3, 0xbfc77dba, 0xbff3e38f, 0x706ee763, 0x22ff2947, 0x1679e18e,
+       0xe1652771, 0xf18b1cb8, 0x2675828f, 0xc174ffec, 0xfc093fb5, 0x9eec7996,
+       0x133dcee8, 0x7a5127f7, 0x478f6e3b, 0xe9a3333b, 0x549d3bfe, 0x8fbfc110,
+       0x0b5de7c3, 0xa057bc05, 0xbe617540, 0xf70334a0, 0x47fc4c6b, 0x2822ace2,
+       0xfce3299f, 0x21588666, 0x4cea3c41, 0xf30d90aa, 0x5b42ddc5, 0xadeefc0d,
+       0x43b584bf, 0x9844fe9c, 0x945dbe7f, 0x2b7f1638, 0xc3f2d54e, 0x8900f7f1,
+       0x6ab69e61, 0x667df9c7, 0xb66abe5a, 0x6775fb80, 0x3f89d338, 0xeb053f0c,
+       0x51c73ca8, 0xe4a7365c, 0x1567ae03, 0xce09cfea, 0x4091b62e, 0xe085baf8,
+       0x0ec77bc4, 0x5dd97df0, 0x9f07bf02, 0x1cb5f9eb, 0x26e673ef, 0x212bbeea,
+       0xeef4cfcc, 0x1bfdd910, 0xa777ec79, 0x8ebafd35, 0x7cb5e1eb, 0x93cf3c7e,
+       0x08a3a3ae, 0x7f3034a2, 0x65fdb275, 0xc3685e37, 0xfc44b9e1, 0xda7cd0e0,
+       0x0d2375de, 0x62b15af3, 0x9522e20d, 0x86cde3ad, 0xd8226f5d, 0x377bfd4d,
+       0x51f3eae6, 0x7692f8f4, 0xb307b342, 0x6eb888f7, 0xf28f3b38, 0x7e112059,
+       0x17b537fa, 0xfdae4d13, 0xe9ba0f10, 0xcdef1ba2, 0x1f17b089, 0x7b2b7e14,
+       0x83aa5bf1, 0xebaf54b9, 0x39b8f8e3, 0xbb060c98, 0xfadc4331, 0x2751c033,
+       0x51cd371d, 0x3b8da470, 0x80bf7cda, 0x86e031ea, 0x2ceb669c, 0xe2a62e33,
+       0xbe6d273e, 0xa8476ddf, 0xe28ae25f, 0xc388ed2f, 0xdd8f68e0, 0x984aecd1,
+       0x7ce7225f, 0x0664bf77, 0x6c9547f5, 0xf1106fa0, 0x867b438f, 0xd802c971,
+       0xc1f10508, 0xe718b3d4, 0xfe744af1, 0x53f3e38a, 0x7fd1cecc, 0xfa3d0909,
+       0xb457f461, 0xa758f338, 0x71e94fe6, 0xbc6f1dd2, 0xaa4fdd99, 0xf800a4e1,
+       0xb37ffa09, 0xbe9d7188, 0xdfb5a370, 0xd4425e17, 0xeac9811e, 0xff5c2f15,
+       0x3e5e29be, 0x6197c6d4, 0x707f5864, 0xc343e1a2, 0xf9bc718b, 0xa83c432f,
+       0x03a6f1b7, 0xbd019bc6, 0x47fb378f, 0xfbd768ca, 0x713e6bf2, 0x313e3b32,
+       0xbd7289ce, 0xf8d9f2f6, 0xb963443b, 0xadc6d11d, 0x3d56b8ee, 0xb6fec9c3,
+       0x1fac1245, 0x647ec179, 0x8b41c8f4, 0xacb86b07, 0xfe30475a, 0x1d3f3ff9,
+       0x8000e9d6, 0x00008000, 0x00088b1f, 0x00000000, 0x7cbdff00, 0xd5547c0b,
+       0x67b7efb9, 0x332479ef, 0x49926649, 0x9d804032, 0x20424210, 0x7860210e,
+       0x200f3b88, 0x15019042, 0xf01d51f1, 0x28490201, 0xd6b4f5a7, 0xa4484cdb,
+       0xd179fd14, 0xfd5bd6b6, 0x3d503b9d, 0x4320d687, 0x813c180c, 0xf0c50133,
+       0x150106b0, 0x888da7ae, 0x31243688, 0xded80f54, 0xbefbf79f, 0x333277b5,
+       0xee7a5a19, 0x1651373d, 0xf8f5ef6b, 0xbffdf7d6, 0x536b5ad7, 0x6abad1fd,
+       0xdde80648, 0x0094012f, 0x41ca55d4, 0xa2b5fe1b, 0x899f99fd, 0x58ac19ba,
+       0xa77f1507, 0xf1022c03, 0x2874a653, 0x62c03736, 0xb395e4af, 0xd176b401,
+       0x962bd6ff, 0x45f58aa0, 0x6eb9f35e, 0x2dfb689b, 0x6401a9ff, 0xf7a6dc00,
+       0x607f4c5f, 0x149ac5fb, 0xc5d7630c, 0x6fedd1a5, 0x73ef32bb, 0x896008a9,
+       0x9e1cf316, 0xa22e52fa, 0x25f66a9a, 0xfa2abd61, 0xc933967d, 0xff10a17d,
+       0x7ec61632, 0xbe5c032b, 0x352ef958, 0x6e7e96ff, 0xae1e5e1e, 0x002cca47,
+       0x2e36f59d, 0xb3cfdf63, 0xc0e43f80, 0xe6282692, 0x00a90032, 0xcc5c4e85,
+       0xb15fac34, 0x13469680, 0xf927c027, 0x43391d3a, 0xf8e00ffd, 0x8c371c01,
+       0x00f207e3, 0xb93bd60e, 0x87bd66fe, 0xb052b3eb, 0x7ffe3a43, 0xc545aae8,
+       0xff6fccf5, 0xf9c7e2ae, 0x78515fe6, 0x1eb4e9dc, 0x031fbe3b, 0x7f3d6863,
+       0xeffe29ea, 0xfb50c2b7, 0x2d2ff6ba, 0x5ed7c9fe, 0xbf9adfcf, 0x75e54520,
+       0xa4dabcd0, 0x281779a1, 0x9d70a300, 0xf9a3f30b, 0x2b13cc6b, 0x2df958df,
+       0xcac7fbd1, 0x1eb317cf, 0x83d03e43, 0x87111a60, 0xa04c57ff, 0xfcb6bd4d,
+       0xf163e506, 0x0d277ae7, 0x6bf00f7f, 0x78d0df5e, 0x4ba0bcba, 0x74164df1,
+       0xd5d71199, 0x77c6290c, 0x5ce50520, 0x44e109dd, 0xc5d16c24, 0x2a15cfaa,
+       0x8b9c12bd, 0x39c033c2, 0xd0f2de43, 0x20af73f8, 0xe686d35f, 0xbb20ab9d,
+       0x1679e98b, 0xa3ace204, 0xa851c696, 0xb071807d, 0x79699b69, 0x9371d708,
+       0x51f7ee05, 0x1fca2899, 0x2f1e253b, 0xbb7134e0, 0x266cafbe, 0xd76001b8,
+       0x4072cc81, 0xe756bcfa, 0x10071831, 0xfff70332, 0xb72a49df, 0x0209227b,
+       0x283f3809, 0x17d2365d, 0x1f201ca5, 0x69194ef5, 0x90e23609, 0x47d84acd,
+       0x55e7d87a, 0xf6f501a0, 0x60efd18a, 0x91401ee0, 0xcf2e713c, 0xfd4d98d4,
+       0xb0b35dc3, 0x8ac58ddd, 0xb89b05ba, 0xe977eaac, 0xab7eef7d, 0xedf5fa93,
+       0x330ec7fb, 0x7815f38d, 0x73784291, 0xfde815bf, 0x4839876c, 0x7cae63f6,
+       0xbd61365c, 0x8ac01faf, 0x0f2f67ed, 0xedca0057, 0x746ae826, 0xe4933962,
+       0x077e4718, 0xaa22f5f5, 0x4e50231d, 0xcd397473, 0xc556edd1, 0x48ed997e,
+       0x841c9245, 0x753b21ec, 0x39a32eb3, 0x63a256c8, 0x17ae1b4e, 0x457cdfdf,
+       0xe6976b89, 0xfd96e3ea, 0xc9521409, 0xedc68832, 0x8f6136dc, 0x005341ca,
+       0xc5b0aca7, 0x84bb27bc, 0x4675ccf4, 0xb6499f3f, 0xcbbd7113, 0x976ebdc0,
+       0xf344c7f0, 0xe629cf7e, 0x25ff2b9d, 0xbfd71bb9, 0x307da2cb, 0x3fede90b,
+       0xf8ed8661, 0x65622e1c, 0xb4be70c6, 0xf3075ea1, 0xfb17adae, 0x2a6a240e,
+       0xf08bb3d2, 0x48faa0e3, 0x76ba2d4d, 0xfeeea2fb, 0xbb0e6c72, 0x902a979a,
+       0xe53c70c3, 0xf7e218c9, 0xfceabe30, 0x8b67e58f, 0xe4764d04, 0xb7bb5973,
+       0x30cb4c92, 0x1f22763e, 0xbf795fb1, 0x2f5cf3c6, 0xd8fd0d1f, 0x23512175,
+       0x30baefbc, 0xdbf9a352, 0x86d3af08, 0xfcefbff0, 0x4fd92240, 0x20aaa3e4,
+       0x365dfa2e, 0xafc676ef, 0x44687dc0, 0xd60b705e, 0x77ce3a43, 0x2d1ff625,
+       0x322f7e24, 0x34d3b779, 0x4b71faca, 0xdcdd9327, 0xfb1e7e5c, 0x3f481a48,
+       0x5491fd40, 0x658bdc27, 0xf087f500, 0xc6054816, 0x40421993, 0xf06a36f3,
+       0x66739502, 0xefc429ab, 0xcbb31c01, 0x29a9e341, 0xcbf87384, 0xc9bee9e5,
+       0x52def9c3, 0x79c2808f, 0x9a6deb5a, 0xb7b00b92, 0xb6f5c9de, 0x6f970f7a,
+       0x6e5cabd4, 0x83fc963c, 0xa7538e20, 0x6d253459, 0xaa4a7fa8, 0x68398fd0,
+       0x39ae8867, 0x88030520, 0xeb8f39b9, 0xe0a457b8, 0x84e48946, 0x27e089eb,
+       0x3ba065ca, 0x4dbf823f, 0xe9f8d34a, 0xef2c0dac, 0xf71342e2, 0x7c1fe747,
+       0x7b787b39, 0x7d547b94, 0x3a624b8c, 0xdd9a5cf2, 0x0ee3e585, 0x1a6b925f,
+       0x43cee1e1, 0x29eb8097, 0xba45bcf4, 0xe384be4b, 0xc1970d4f, 0x4c3fd00f,
+       0x5f10c145, 0xa21ee7f1, 0x05875a7f, 0x50e83e48, 0x758b2f59, 0x25afb47a,
+       0x47ce02e9, 0x28edf3aa, 0x0ead67ec, 0x42f68e13, 0xbdf11a77, 0xa3b3e6c4,
+       0x421d2146, 0x87749aae, 0x66f1c247, 0x32bc5ba4, 0xbe71ce99, 0x7f91eba9,
+       0x2138e91d, 0xc8e8efb6, 0xdf5152c8, 0x0fede534, 0x9b35af49, 0x0ae22c23,
+       0x84774f73, 0x1784cf1f, 0x904f149d, 0xf916fb4d, 0xe487f9de, 0x8c35db00,
+       0x758ec873, 0x86f64c9e, 0xae9b9e71, 0xc256bcd8, 0x7d44753f, 0x5c98903d,
+       0x3a19f644, 0x371d792b, 0x0a3ac4db, 0x1762fecd, 0xa1f0b3db, 0xbfdfb077,
+       0x3d90000d, 0x23eba9bd, 0x0a9e9019, 0x37664153, 0x9a4879d2, 0x73e54290,
+       0xc49e487f, 0x1ee4c9e5, 0x9301cfe2, 0x4f79a55d, 0xb925abd7, 0x5ded1788,
+       0x60d00987, 0xa1d779cd, 0x3d4ef950, 0x5e22e494, 0x71b7adde, 0xc9dea279,
+       0x0f7ac9e5, 0x3df08797, 0x7c2de9e1, 0x1b7b784f, 0x08fd53df, 0x18f2a7be,
+       0xf1654b8e, 0x5e3c493d, 0x1649ddcb, 0x6481c75a, 0x27e63668, 0xc313853c,
+       0xf805e0ad, 0x366f99ea, 0xbfa346db, 0x4b27fab4, 0xcf597053, 0x60a5537e,
+       0x31fcd8fd, 0xdf0afc3f, 0x3f4acfcb, 0xb7bd21b5, 0x1eb4749f, 0xaa427ac7,
+       0xe10753fc, 0x1a2258f3, 0xe56b5247, 0x98025a08, 0x2471b64a, 0x52835db3,
+       0xf5e9a7ac, 0x254b7280, 0x45596142, 0x00b82177, 0x6e5972ee, 0x977f21b1,
+       0xa7dffdd9, 0x5cd025ba, 0xd5137955, 0xbe9235d1, 0xeb20e64b, 0x5ee4967b,
+       0x76eefe8a, 0xaecfff87, 0x49afff08, 0x7d91a69f, 0xe049ae98, 0x83bcb372,
+       0xe7a1a5e3, 0x1ddbbb46, 0x724cff73, 0xb325c47a, 0x5b36997d, 0xe18e82d2,
+       0x9bb46bfa, 0x24ad5e76, 0x38bf4df9, 0xc5ca89af, 0xfbae2e55, 0x44d8df96,
+       0xb8e95ffa, 0xee0aff56, 0xcccba8ff, 0xb0572db8, 0x683f1c5d, 0x208a9bb4,
+       0xffbbb8a3, 0x3b706248, 0xbf94fae1, 0x73eb0931, 0xb2c5d93d, 0xeb819b6e,
+       0xe85b6dae, 0xad5bf57d, 0x24de57ac, 0xd3e5c52f, 0x0d32aba1, 0x243997df,
+       0xe74c986f, 0xd29b8fec, 0xf253bde8, 0xb4cadb12, 0xd094ef29, 0x5bd95cfb,
+       0x6a53f546, 0x93cb13a5, 0x4bacd94a, 0x7e7e6ed8, 0xfd86d78a, 0x787f864e,
+       0x965bf099, 0x204de49f, 0x5f04af3b, 0xd7baa5a8, 0x69506dea, 0x2454cf1d,
+       0xe4aa38d3, 0xe5bd6135, 0x46ff8ad6, 0x52fb9474, 0xbde89240, 0xf5f8a14b,
+       0xb8fc3fb9, 0x5aed89d2, 0xfa4048c6, 0xf05c3273, 0xacbfa247, 0x404d5133,
+       0xce2c5a82, 0x62d7ea4a, 0xb91b9c91, 0xf6a0abee, 0xfab33c81, 0xfc7b8e32,
+       0x83fb3b6e, 0x712777ea, 0xeefc741c, 0xaa17ec51, 0x4e5d9ddf, 0x889371e5,
+       0xaddfabd7, 0x26f7e2ae, 0xa9519308, 0xdc3be7be, 0x8fc56b6f, 0xfe38dd2b,
+       0xb62eb1b1, 0x12a7282d, 0x624ec225, 0xffa8907b, 0xbedc353d, 0xe1fcca43,
+       0x797f6c79, 0x15b14a52, 0x4ee79fe7, 0x955f6a88, 0x2faa8ae5, 0xa2511dc8,
+       0xeac9d844, 0xf551d949, 0x92a44b5b, 0x78f8c8dc, 0x7d544276, 0x24aba569,
+       0xedfda237, 0xeaa223d5, 0x8ecf6ecb, 0x669997aa, 0x0f51fb08, 0x9e852bb3,
+       0x05ccaecf, 0x4f644ca1, 0xdbeda29d, 0xd241fef8, 0x7e2223f3, 0xfc61762a,
+       0x3ca97284, 0xb97ec252, 0xafdbaec4, 0xa6797400, 0x3f17fd93, 0xea3c7047,
+       0x9dfc4107, 0xf890f14e, 0x78c2eb29, 0x0523e280, 0x3d0476fd, 0x3f688e95,
+       0x216a055e, 0xceaadfd9, 0xcd4f1c05, 0x44a92cf3, 0x463e4635, 0x1f92abf7,
+       0x0c487117, 0xcc47c5dd, 0xcaade971, 0xc46fee8a, 0x7d3a5575, 0x537f262d,
+       0x0162c52a, 0x1ae28bad, 0x1d063d63, 0x954f5ad7, 0x8a256f7c, 0x2bae6fff,
+       0xf5807e96, 0xd2c45f9c, 0xf3d2efd5, 0x38a78c53, 0xe54cec0e, 0xdc7f10f8,
+       0x2303e2f1, 0xfb46a9ee, 0x6fb48ae6, 0x64bdc90e, 0x9bedb5f2, 0xe2b5ee31,
+       0xa35c633d, 0x3ccb343f, 0xf07fd1bf, 0x7fc52ab9, 0x27db03be, 0x96ee79c5,
+       0x297f3fe2, 0x451cfdba, 0x1ea0746d, 0x1bc9051f, 0x571f7e20, 0x2ac90a15,
+       0x544d694e, 0xafc8fdce, 0xff3a3c50, 0xca89a07c, 0xe3c13d59, 0x2dff5c56,
+       0xfb4ab2f9, 0x143c460d, 0xa9a9aebb, 0x7a390e22, 0xf8abb545, 0xdaa025be,
+       0x7968bf29, 0x1e53b55c, 0x1541a2d5, 0x38da8be5, 0x37ca7ad3, 0xb12c42b4,
+       0xec2a9b9e, 0xbfbd04fc, 0xfd976e51, 0xacb15213, 0x4d3f75b1, 0xd5ed48b1,
+       0x03050b7e, 0x9bce2947, 0x3bce3c34, 0x341d04aa, 0x83c7d1df, 0x1d845f0e,
+       0x2f38debf, 0x8d36c093, 0x916929f0, 0x96c2a476, 0x8dda45a0, 0x54574eb9,
+       0x1553aafd, 0x4467bc79, 0xd45bbf54, 0x1876a8ec, 0x1c53e6bf, 0x7c8168d4,
+       0x29a8ec85, 0x5df14bd1, 0xd65f1f2c, 0x3875efd7, 0xb3027c29, 0x71fd955b,
+       0x42b792fc, 0xb9f62ff0, 0xcf4b8f4f, 0x7cb07ad0, 0xb2e5553a, 0x2089f649,
+       0xc266e30e, 0x731d6c43, 0x1e34e5d2, 0xdc21ec8e, 0xcba6ed79, 0x5d437a18,
+       0x0a2dd16a, 0x54ef7dfa, 0xc38c3fd3, 0x2b534ffa, 0xdf10516f, 0xd7a659de,
+       0x64feb072, 0xbf515cea, 0xecd534c1, 0x9867f805, 0xb6254b77, 0xf77dba77,
+       0xfa5f22a5, 0x12cd8ecc, 0x498a33c6, 0x50f76282, 0x05a4fbfe, 0x160a29fd,
+       0x90b9a641, 0xe455bb56, 0x6809b5cb, 0xb97da8ff, 0x6abf12a6, 0x77390c13,
+       0x875f9067, 0x644d3307, 0xcdfc8c2f, 0xd87ec16e, 0xafe6cf3f, 0x27097811,
+       0xbe9768ab, 0x266e6fb7, 0x54e9e2e1, 0xf0bfaf27, 0xb21e59b5, 0x77d74857,
+       0x47ffdda9, 0xe8f102ba, 0x798b326a, 0x2b0a5a7a, 0x8e16efc8, 0x43487145,
+       0x9f74c2f2, 0x1084279f, 0x6b971c2b, 0x8deb091e, 0xe2978b2e, 0xbc75a7f4,
+       0xa8d96f5e, 0x76c84fef, 0xc5391b81, 0x96377eb4, 0xf2f1d0bf, 0x5a2f3e9c,
+       0x104b31ba, 0x1fece00f, 0xa8b274b3, 0xb9641e13, 0xede29fb8, 0x7924effe,
+       0xeace3f39, 0xb08ffdff, 0x85bdc1fe, 0xcfa38a5e, 0x2cfe0a26, 0x7634e60f,
+       0x358a7d63, 0x748c3a38, 0x0fe69a3e, 0xb6ee0e12, 0xde33c706, 0x6893eb1c,
+       0xce03497c, 0x0efc8c43, 0x32d538f3, 0x3fdc786e, 0x11b05e7c, 0x219cef9f,
+       0x8bcc6cf8, 0xdf91b53c, 0x3c54a0f9, 0xf9c0e837, 0x837fc443, 0x203a419e,
+       0x02fbc9cb, 0xe691f620, 0x0fb10eca, 0xf789a9fb, 0xf948ea4d, 0x79dafeb0,
+       0xbd75e713, 0x9a015e46, 0x7e74c563, 0x78ccf3c5, 0xc4cca367, 0x3a77f006,
+       0x4a7f9ab3, 0x9e72d6da, 0x3a2bad3e, 0xd3b1bf4f, 0x7ec0e15f, 0x7f187e37,
+       0x3e96643f, 0x6504296e, 0xba33d7f2, 0xd2cddba3, 0x1759f4f3, 0x4f1f9fa3,
+       0x48dbfdd5, 0xcfb91918, 0x7fcf41b1, 0xa4e78e06, 0xd6c94e10, 0x8b77c8c9,
+       0xea69432a, 0xad68dd90, 0x647976c7, 0x4e5c6d1f, 0x807ce53e, 0x047afcf3,
+       0xa4ec85b4, 0x9f434b87, 0xfb829f26, 0x1e6228a1, 0x1f06f71d, 0x7c143e07,
+       0xff9dd29c, 0x3758d9cb, 0xa8219a77, 0xa673ad0e, 0x1001a7ce, 0x5a701e7c,
+       0x8fd3cf98, 0x186a7afc, 0x263d591f, 0x97d62350, 0x1a8226a0, 0xf9ed4f61,
+       0xd97551a9, 0x671e8f90, 0x4fc7d54c, 0x1a8c8ef2, 0x0c3788c7, 0x3a91bdf9,
+       0x90e293af, 0x1cd58ea9, 0xe694a477, 0x725b8d44, 0xc84e563c, 0x91db8a38,
+       0x5c515fc8, 0x8a894a7f, 0x07746e33, 0xfa500388, 0x97131291, 0x8f49956c,
+       0x7e8f9e66, 0xfbe9a72e, 0xbb72b153, 0xe8a13f16, 0x7fddb397, 0x5a5d3f3f,
+       0xaad33f34, 0xee99f9a2, 0xe667e68b, 0x8dbe68f2, 0x65f347f0, 0x5189ead4,
+       0x2faf47ef, 0xfd8faa8e, 0xf6a8ccc1, 0x2300e8d9, 0x2f36e3eb, 0x7e3f6a88,
+       0xfaa8d2eb, 0x8eefe784, 0x5c105f6a, 0x70bef519, 0x92eb9ac7, 0x86d0e4ff,
+       0x5ec476a8, 0xff915fd3, 0x458f6d0d, 0x2d5ff3cd, 0x68b48aff, 0xdba45dbd,
+       0xf686976b, 0x4fc878b1, 0xd90af6d1, 0xdbfb5749, 0x25ff6957, 0xbef2ae50,
+       0x78016053, 0xcfddf11b, 0x76449f65, 0xdab2146d, 0xc9a37684, 0xdec9ab04,
+       0xf1326d3f, 0xe7a1a43e, 0x7c44d2ab, 0x8f4d2ab1, 0x14dedc13, 0x1d865fb2,
+       0xfada6b3d, 0x6c9b8f0e, 0xbf665f53, 0x4cdf0a63, 0xe5479779, 0xe48abbfd,
+       0x4bf69552, 0xc5de91e5, 0x968711d3, 0x2ba032e3, 0x3fe3c684, 0x7df6877b,
+       0x2a6c3b2e, 0xf54e54e1, 0xe15fc807, 0x632f42ba, 0x0eda02f1, 0x1d06a3f2,
+       0xc787d41f, 0xd4647e53, 0x3fd67b97, 0xdf97ed41, 0xf29e365b, 0xf7e7c1d6,
+       0x8caf8c76, 0xbae47fe0, 0x8b89c696, 0xa6bad036, 0x6ee7ad0d, 0x8dd8daab,
+       0x85914f74, 0xb07f47dd, 0x7dd70d21, 0x2cdc7a56, 0x9980abe2, 0x8ff42be2,
+       0xc2efdfbc, 0x96037a40, 0x487e4329, 0x74c116fd, 0xf97c12d6, 0x51cbe239,
+       0xeff94bd9, 0xca2088ef, 0xeca96c1f, 0xec32eff7, 0xb8a6aaac, 0x701ae822,
+       0x03a9c744, 0x3b638e0f, 0xcc3ee67c, 0x67af11ba, 0x463d622c, 0x1dba8bfb,
+       0xc3b742fe, 0x237f643d, 0x6f579bf6, 0xc51259fb, 0x45f267d7, 0xff3c6d3c,
+       0xa7389a55, 0xcc9a55f8, 0x23bb5d72, 0xefb919c1, 0x45721358, 0x46daebd5,
+       0xe047cf38, 0x1eb1ad70, 0x7ad0a4bf, 0x53fae9d6, 0x7c9dd9d3, 0xfe3c7037,
+       0xfc70d23f, 0xef976dda, 0x4dfd4bdb, 0x8fc219fd, 0x3bbe7806, 0xeb8e003f,
+       0x4433fcef, 0x49bfa5c5, 0xbf2bfb13, 0x865ae9d1, 0xb0711385, 0x8bbb7d0c,
+       0xcf67b7ca, 0xe7c3bd23, 0x8beb0961, 0x714cc13b, 0xb67f12da, 0x127f9899,
+       0xe0f7a7bc, 0x54d35ad2, 0xe0eddf5e, 0x7c5f9333, 0x249abeff, 0x9e38376a,
+       0x002a0e31, 0xb81f6dc5, 0xda0ce602, 0xe249b9af, 0xb3e701b8, 0xbddf73d1,
+       0xff209ea3, 0x3ef7cc6b, 0x469d2ff8, 0x2f052c7c, 0x0f8c6b8f, 0x87651a90,
+       0x4c205acf, 0xb38137fb, 0x48cbe0d6, 0xdf8a06cf, 0xf61b0f10, 0xed9db267,
+       0x3b1ff35b, 0xf776c39f, 0x4d1eea8f, 0x35d9cc71, 0x5c23ce7f, 0xda3cf5dd,
+       0xae6b5c5d, 0xb841dfdd, 0xe672f833, 0xf449cbc1, 0xc611e31e, 0xf562bc15,
+       0x5d9c9e92, 0x645e4af3, 0xad2c7fbc, 0x83f530ec, 0xe7b8b4d2, 0xe579b111,
+       0x9ff04b1a, 0x3bbd231e, 0x0cf1e66a, 0xe3a23e7c, 0x9ab64373, 0x0dcf8919,
+       0xe4f88349, 0xcbc374b8, 0x0d95db32, 0x5cf813fb, 0x8b8eb4e7, 0xbeae57ba,
+       0x154a98fa, 0x827e0f11, 0x97115538, 0x554e229f, 0x10cfedd4, 0x2f5f54a7,
+       0x709dfefb, 0x9f53c9f2, 0x7c3e7324, 0xddd1f5fb, 0x7fbff527, 0x88f7f10f,
+       0x1801afd0, 0x58fd9f78, 0xf14a816b, 0xabdec56f, 0xa87d93ef, 0x3ef2b56d,
+       0xf75725ec, 0xfda817e1, 0x7da8093e, 0x8d81386d, 0x14ab6d7a, 0x35abfda4,
+       0x8d37bb6d, 0xe69afac2, 0xd3042525, 0x3b6064ba, 0x0522db56, 0x42eb3f69,
+       0x3ce8b87d, 0x378a9fda, 0x71a05eae, 0xe310df7b, 0xe70fac5e, 0xdbd48c51,
+       0x34f7e2b2, 0x2b56bade, 0xe7fc5024, 0xd1465b0a, 0x10a5bb7c, 0xf43ab7cd,
+       0x5fc6858c, 0x5c92d2fd, 0xeed6ff0a, 0xb91f18e8, 0xf7bbd41f, 0x3e454584,
+       0x667d6ead, 0x44aede9e, 0xd460f7b8, 0xc123e8b9, 0xbcc8bc8e, 0x0858a311,
+       0x420b7c50, 0xfce8ef5e, 0xae3ede5f, 0x7689d891, 0x120bcf6c, 0x9bbb31db,
+       0x9d81d8ec, 0x34affeff, 0x197fbedf, 0x9281b84f, 0xf837e3eb, 0xd4371c02,
+       0xc5c0f3ea, 0x03ca1693, 0x17cd5b6b, 0x3cff9de2, 0xdc79f6ec, 0xd8f286d3,
+       0x3379f8d8, 0x2be503ea, 0xd644ec81, 0x6fd1d90f, 0xfcf48159, 0x3d201a84,
+       0xb2dfb38a, 0x539beb12, 0xb63976f5, 0x77fcbc60, 0xfe615b85, 0xf9c472d8,
+       0xfbfbec72, 0x7287f7f4, 0x7ed0b0be, 0xd17aad5b, 0x0dadb842, 0xe5ce2e7f,
+       0xa79e3edb, 0xaf77e9c5, 0xb33df85b, 0x5b7ab7c9, 0x6c7e90c9, 0x93763690,
+       0x6fb0dadf, 0xbe71ca82, 0xf4cdd02b, 0x695049ed, 0x3f7b151d, 0x311dde9f,
+       0x1f111fde, 0xab7e11b9, 0x45c7d776, 0x6bdbe266, 0x4929171f, 0x337bcf43,
+       0xede3ab1c, 0x16ebdc93, 0x6489f77e, 0xb79a45df, 0xdd55af66, 0xf04ef8c8,
+       0xeddf0986, 0x40cf3e76, 0x96365b7c, 0x2efbe244, 0x5db6bba6, 0xadbf92f6,
+       0x6fe25b6d, 0x5e49f6e0, 0x56dc8312, 0xc99c2016, 0x11e31f4e, 0x4df382fe,
+       0xd071cfd7, 0xff6ec91e, 0xe28bc252, 0xc48f8f08, 0x7ba9ad5b, 0x6c2b9d0c,
+       0x96b7fb36, 0xec9fe845, 0xdd1ba808, 0xaf34cfc4, 0xcfc90eac, 0xe972126c,
+       0x5393bb55, 0x1fa26fc9, 0xde957da7, 0xc4c9e7f0, 0x0f6d4dff, 0x73ef48d8,
+       0xa75e4edd, 0x695012cd, 0xd52c665f, 0x2d9b6e51, 0x57a4d5be, 0x4512339b,
+       0x7d759b5e, 0xa4bd65fb, 0xfb9d0aaf, 0xa2df79f9, 0xef5bc757, 0xcbfb6068,
+       0xd0666577, 0x6bd78d2b, 0xda93bf03, 0x1475b5d5, 0xdebdfa45, 0x897a777d,
+       0xe8a2733e, 0xaf02190f, 0x493ef3b1, 0x99392338, 0x8b2d6e56, 0xedb1fbf0,
+       0xd1e3aa7e, 0x012803e0, 0xa9c13fde, 0x1df878b5, 0x206f2ee9, 0xea913c39,
+       0x4c3b27cb, 0x8c1cba5b, 0x74b896aa, 0x449ffb60, 0xcebeffb6, 0xefd98b47,
+       0xd7aebe24, 0x8f8b66eb, 0xad8a8cf9, 0xae0f1e92, 0x5712c72f, 0xe9d25ecf,
+       0x2d1d9cde, 0xdb76d8f7, 0x536676f5, 0xe892b3c0, 0xdeb3203c, 0x2cfda9f4,
+       0x5f5da37f, 0x7f90aaf8, 0xe95be5fb, 0xece6cb3e, 0x2fcf8c65, 0x2c50537e,
+       0x2c7b8c47, 0x76483cad, 0x0f0319e4, 0xe88780e6, 0x1d662a7e, 0x9fefb74e,
+       0x34fb11dd, 0x2ebee590, 0x3f9e809c, 0x877f7579, 0xb7ef13f9, 0x97a241f5,
+       0x3d6efbec, 0xc7c0504f, 0x5783b138, 0x834638e5, 0xa2cf7463, 0x5b04c3b1,
+       0x9b4c9ab0, 0x62e71141, 0x48c9b2c9, 0xa61b34b2, 0x4b4c74c2, 0xaf70dfef,
+       0xeb84d05e, 0x590107dd, 0xfbd143c4, 0x9a49a003, 0xf02fb914, 0xfbf89ae6,
+       0x1bfa2f02, 0xd6ffaf49, 0xb08cc0be, 0xe5258569, 0xe81fdfef, 0x99e74772,
+       0x2655bbef, 0xf02f942a, 0x06270a17, 0x4c133ec5, 0x4f3efc25, 0xfff7c4bc,
+       0x45a511e8, 0xb9b7cdea, 0xd7b8dfd0, 0x1b3cd96c, 0xac572bf5, 0x048dea9f,
+       0x67114ee2, 0xbc37ee0c, 0x5ce39139, 0xe73243b4, 0x969d4edb, 0x6095b918,
+       0x6f7c047c, 0xbf6a3527, 0x9bf87c22, 0x3bbbb264, 0x4977d553, 0x6447fd2e,
+       0xa09197be, 0x715c5b74, 0xc52f6af4, 0xa88718cd, 0xdabec2e9, 0x9e79c4da,
+       0xfc80d54d, 0x39d3827b, 0xafd08e45, 0xa83fba53, 0x8c767c39, 0x4bc8e305,
+       0x93c9e3a6, 0x7b75fc70, 0xdb69925a, 0xf799ed6b, 0x9815d3a6, 0x857fc572,
+       0xb485faf0, 0x7146cf2d, 0x1160e6e1, 0xce1427f1, 0x3b7f2149, 0x52808159,
+       0xba9e9c3c, 0x09398be7, 0x0f9e7dad, 0xfb7261db, 0x9f1455d4, 0x7ac585d6,
+       0xbe330e69, 0xae03682a, 0xa635b6f7, 0xff7578d2, 0xd9247fb6, 0xc5d257a7,
+       0xaf6fec7e, 0x15fd144c, 0x527da850, 0x53074bba, 0x73fb44d0, 0x7afbe8af,
+       0xdc4c57bd, 0x727f98ce, 0x44ec995b, 0x6f0a4c1c, 0x88fbc83d, 0xa38e56ed,
+       0xc1025e12, 0x3e04f68f, 0x303ba9c7, 0xf50fc81f, 0xe12bc0b9, 0xfd899dfb,
+       0xeff4f71c, 0xce74aab7, 0x0adce099, 0xf53be7a4, 0x0805517b, 0xd0c716c8,
+       0x84be6373, 0x1ed25ff6, 0xcf82e11c, 0xad94135b, 0x92239370, 0xefcc49df,
+       0x3a55c222, 0xd13613cd, 0x78ff4439, 0xd74c31b4, 0xf3c09d10, 0xb016741a,
+       0xe969df7d, 0x3723f0bf, 0x1c24e5d3, 0x13a08014, 0x9e7027da, 0x78d4e09a,
+       0xd54e091d, 0xd386901b, 0x81845755, 0xd3cdea17, 0x8f50611b, 0x12ebaf49,
+       0xd436ea87, 0xa0399d85, 0xb8bf7f9f, 0x447672a5, 0xe94c0c9d, 0xf48aff50,
+       0x29a5b9ff, 0x02d3f78b, 0x8eda8a32, 0xad2a5265, 0xa1f5e553, 0xc5e9684a,
+       0x3f740f82, 0xef136ece, 0xce23db07, 0x8877541d, 0xd3ab5e76, 0xf59b20be,
+       0x078b0e85, 0x49efb2e3, 0xa3370be1, 0xe33cf6be, 0xeb84994b, 0x7c1d31ea,
+       0xfddb19b4, 0x8f284571, 0x64be6fee, 0x8e9adff5, 0xd1febdf3, 0x932727ca,
+       0xf669ddbd, 0xe9dd9356, 0xf1cb3c0e, 0xeacd6fef, 0x83bd0896, 0xbe0cfeac,
+       0x4f33177f, 0xcf8d99dd, 0xb7db7c52, 0x9ce9524f, 0x3fdccfb9, 0x6daee886,
+       0xf642ccff, 0xc7df6ebc, 0x4a5ecf1c, 0x8e9ddff7, 0x6b6d2bf8, 0x33647be0,
+       0x23df2b60, 0x82e3d42b, 0x93d84790, 0xdb795381, 0x10e4221b, 0x06fa1748,
+       0xe4b1fefd, 0x7d75da9f, 0x2e79403d, 0xee3a7b96, 0xefe3471a, 0xa370f3d1,
+       0x1c1c035f, 0x08df7c45, 0xe839726f, 0x154a826f, 0x7df0ace1, 0x445afddb,
+       0xfd74c7fb, 0xcf9f4c7f, 0x4f5fe199, 0x38edaef4, 0x75a64967, 0xa18d0f9e,
+       0xf98432bc, 0x1d8e33b8, 0x18dfd419, 0xfa53aa7d, 0xeebed42d, 0x415db022,
+       0xa0a53779, 0xbf795efc, 0x7c0ae26d, 0x926507be, 0x19c27142, 0x31ee1f91,
+       0xfb5146fb, 0x175fd386, 0x495b1d91, 0xbeffc242, 0x2c76bfde, 0x5ff10df1,
+       0xb67a489e, 0x19aed81b, 0xf4893a7a, 0x224ffb14, 0xbd5097fc, 0x4ef2ed80,
+       0xd602d74b, 0x20263dcb, 0xb3fc44bd, 0x9dfe203e, 0x39278fe4, 0xffb81f51,
+       0x9df3d604, 0xe38d265d, 0xe3ebb458, 0x1b7e5eb9, 0x557677d5, 0xe9cf593a,
+       0xf498be7c, 0xc7907c35, 0x278c0109, 0x8be049d1, 0xe5388fdc, 0x0dba664e,
+       0x0dce797b, 0x5350dfba, 0xbb0eb8bc, 0x47e9472c, 0x75149f84, 0xfcf68fdd,
+       0x3f2ddde2, 0xa44722cf, 0xeea709fb, 0x76143f1f, 0x5f741fff, 0x99ade1b5,
+       0x1e299b8b, 0xf7e6477f, 0x90fdf407, 0x83938eb0, 0xf9087efa, 0xb8aa750d,
+       0xa7cf4b4f, 0xedef9d61, 0xc82beb6a, 0x6d56951d, 0x4ce5443d, 0x4282a85f,
+       0xbbcbd9c5, 0x9a85990e, 0x5afe1217, 0x4852de0f, 0xcefad4f7, 0xf5aefc88,
+       0xffdffe9b, 0xe8f6d716, 0x1c7fe401, 0x61cb853f, 0x357c61fc, 0xdfc33c0a,
+       0x1d8649f7, 0xf280b739, 0x7956de8f, 0xb2be8ea8, 0xf54d8116, 0x2deef48e,
+       0x3aac2401, 0x20937b43, 0xe7e99b51, 0x37c4efb2, 0x7b96a419, 0xbce39d4e,
+       0x15a2d5b9, 0x735a7e12, 0x838cd530, 0x99ba50d3, 0x856250e5, 0x9f80e7b8,
+       0xb07d8ba5, 0x293c00bc, 0x3b2c5e71, 0xb7379483, 0xe3059aca, 0x58108b9f,
+       0x8dec8b36, 0x10fa5fbe, 0xfe1a3fe8, 0xd61e7ca2, 0xbc510fab, 0xe1eb7e82,
+       0x673b0f9f, 0x569e1137, 0x2bf04bb5, 0x17eafb5c, 0x3003dfe3, 0x691e91f6,
+       0x147876db, 0x4bcd73ca, 0x0dd6edd1, 0x710f2bde, 0x39aeb9fe, 0xb3ff7cfa,
+       0x196e3d74, 0x6e28e307, 0x7db13c41, 0x69d02b30, 0xcd6efc45, 0x38a69ff4,
+       0xe09315f1, 0xd655da13, 0xdd6ed3cb, 0x7b0b94cf, 0xf8097fd4, 0x8ec14ede,
+       0x1fba21d0, 0xdb39b333, 0x54cc734b, 0x6d99fbc4, 0x4067ecd9, 0xbe74ca09,
+       0xe7f9aa5f, 0xd01d3c71, 0x8c3dd14e, 0x049dbad5, 0x7ed2fe27, 0xd5aebe8a,
+       0x48f73c7a, 0x19ee9a30, 0x79a46c10, 0xf710ed56, 0x88eed67d, 0x4ebf2f7f,
+       0xf3dd671f, 0xf6d30e27, 0xba284d5b, 0x9fce9d5d, 0xe7e8b6ba, 0x7b377dc6,
+       0xac7fbe86, 0xdebeebdf, 0x347f07fb, 0x3de2f88b, 0x7de31c7d, 0x4dc08661,
+       0xf247922d, 0x8394175d, 0x52d59b84, 0xb7c45920, 0x748158e0, 0x45e0603f,
+       0xa0fa9fbf, 0x74079fce, 0xb0baf0bc, 0x528bcd7f, 0x1eddce90, 0xfe9a2a7c,
+       0xe62b4287, 0x71621e11, 0xccd9bab5, 0x581aedf1, 0x36f8a16f, 0x066b5716,
+       0x42d5b2f1, 0x4f162c7e, 0x1ae97eb5, 0xfcb88b74, 0xb5ee96ff, 0xfbef30e6,
+       0xe485fdac, 0xadfd100d, 0x3ed0b5df, 0x10fd70e4, 0xe0635df2, 0xdfd75f44,
+       0x19f99ebb, 0xc227fe3a, 0x556f9644, 0x41e675da, 0x6ef4f1d1, 0x018fd08b,
+       0x1b4fec45, 0x3fed89f8, 0xe7c78f4f, 0x5e5c0f3f, 0x4c9cbb6a, 0x5d7dcdfb,
+       0xa5c0c903, 0x1ffc8aa9, 0xec2373d5, 0x22199dce, 0xf9e4de5f, 0xd78a69e4,
+       0x7b36efe7, 0xbad69ee9, 0xf91f66d1, 0xdfa375e9, 0xf08dc8ca, 0xdbd1df2b,
+       0xd0fddfcf, 0x67da04c6, 0x25e48df8, 0xff6bebf5, 0x07aa41fe, 0x78ef259a,
+       0x6bb87fec, 0x2f7477e0, 0x9f63c6bb, 0xedd5e34e, 0x13b85b9f, 0x4fb787eb,
+       0x95e646f5, 0xfac55387, 0xb3368fe6, 0x6919ecdf, 0xed3575ff, 0x58db6a03,
+       0x78de7b8f, 0xedf7c2cd, 0xc1e04a77, 0x0e7b0e89, 0x7e401abd, 0x613decf7,
+       0xa2bc60a1, 0xfba584f5, 0x9703c4af, 0xf30add30, 0x0b56e93e, 0xf3dc2fdf,
+       0x41ce85a9, 0x98fa5f6a, 0xb4d69ff7, 0xd6476c49, 0x550728bc, 0xfda1ebfc,
+       0x47085baf, 0x6412cdb5, 0x37be4766, 0x77b27bf3, 0x59acff54, 0x9f034fd8,
+       0x1a3c752b, 0xbaf034f8, 0x0f33b752, 0xe3c68e6c, 0x1a6da0c3, 0x6a1ffd89,
+       0x63f7c15e, 0xdf1ada1e, 0x6af618ce, 0x688fe515, 0x1f3d57ff, 0x4191eedd,
+       0x0ed8061c, 0xe7b3dac7, 0x00533b0d, 0x81c38405, 0x0ab1caf0, 0x13ebfee2,
+       0x9c42c66b, 0xbae39873, 0xe6fc36df, 0xdbdaf8b5, 0xfe42d976, 0xcccb2eae,
+       0xd65d4379, 0x9c489657, 0x3271d76c, 0x964bfdaf, 0x077b754f, 0x045cefdf,
+       0xdfc475fe, 0x2776ed45, 0xddd5c1c5, 0xb4176f42, 0x8941835b, 0x9fb133e8,
+       0x26a1045b, 0x01df7f92, 0xe0445df1, 0x21e3890d, 0x2ad8edd0, 0x74abdf9d,
+       0x3cc2aefe, 0xf7dd146b, 0x47e8f3d0, 0xa61db7f2, 0xfab511ab, 0x0e4775f3,
+       0x179f1325, 0x0b33b080, 0x18cec242, 0xc4fc32f2, 0x7fd87f70, 0x6d7bc91f,
+       0x59ef95bb, 0xccedd42f, 0x1df166c2, 0xf7deac56, 0xfb8bb08d, 0xbd047bee,
+       0xb6b17eb1, 0xabfdba35, 0x1cbe2219, 0xdfdae3d0, 0xbaabc8c5, 0x7093ec1f,
+       0xecaa05bc, 0x2eaf720d, 0x2cefe685, 0xb31cf892, 0x12971d53, 0x51919eef,
+       0xd78f4efe, 0xda62fa8d, 0x21f6c2df, 0x644756e7, 0x299a5e3e, 0x199ac7fc,
+       0x1ff88072, 0x2e2cbf91, 0xbf9b8ece, 0xed819a7c, 0xe07acedf, 0xf99129a9,
+       0x8f2db68b, 0xcf13f870, 0x7ee9aacf, 0xb0b35d4e, 0x38a5bd27, 0xe3c50a6e,
+       0x5d6df1c0, 0x794835b3, 0x88e21d46, 0x9c22a3bf, 0x4bb67e90, 0x18270973,
+       0xe3497fff, 0x3ea3a12f, 0x3692ff5c, 0xfc38c7f4, 0x192fca92, 0xc5724777,
+       0x996f91ba, 0x2301f2f1, 0x22bda80f, 0x79e34de2, 0xf9cdd2ad, 0xb8bb6d40,
+       0xf07adc5f, 0xa46c98ea, 0x7fff6fb7, 0xe581598c, 0xad0f9d38, 0x7473a1e5,
+       0x9debe64f, 0xe571b8b6, 0x9a96dda0, 0xcd6a4f58, 0x771c19dd, 0xeef8c3ec,
+       0xde1fcc46, 0x87f382fb, 0xf70983d6, 0xd2b95c73, 0x57f9d63f, 0x1b00d4e4,
+       0x08dd3e39, 0xfc525c4d, 0xadcf1912, 0x377b8a72, 0x8efeeb0f, 0xae238fea,
+       0x73b6c61f, 0x85d9e38a, 0xd259a6c0, 0xd8607b70, 0xef1d1a95, 0xdb6d276b,
+       0xb1fb5b44, 0xae8d4e71, 0xb3c11847, 0x6f8d8b7f, 0xff75334a, 0xe1b4e3a6,
+       0x578e44bd, 0x4ec88efb, 0xbe45d3da, 0x8a48d3fe, 0xcf4e30df, 0xf98fb389,
+       0x1ecb8e85, 0xa1b4bcfd, 0x99be6654, 0x88d28866, 0x8c7f9087, 0x8e13be97,
+       0x85fbc520, 0x21cf5e07, 0x81ddaff9, 0x0ef522ed, 0x7be7e7e5, 0x5f96414f,
+       0x67cec84d, 0x57fbc632, 0x913ebc0e, 0xdef0d670, 0x2e427937, 0xee2cf357,
+       0x9467d36b, 0x58f22492, 0xd8f22493, 0x32774a3d, 0xfb754fe5, 0xbde45f64,
+       0xb7ce4373, 0x4501f8e8, 0x328bebe4, 0x86efd655, 0xd30b8176, 0xfce2517e,
+       0x8d7ec4cb, 0xf61fe799, 0xf2f11cbe, 0x101afc57, 0x3afb285d, 0xaee33f73,
+       0xe98984ee, 0x90313ba9, 0x03dfe911, 0xd9266e34, 0xc07586bd, 0x640ec476,
+       0x77d21767, 0xf85f587b, 0x4bc70261, 0xac9e7387, 0x2395bb66, 0x47add903,
+       0x21335bdf, 0x97bc3fd2, 0x8181ce21, 0x68a1e0f8, 0x7e62e7e5, 0x611b0f9d,
+       0x0bef9ea9, 0xc461df1c, 0x47fe99a3, 0x49e4e332, 0x36ef1bd7, 0xed02b7ec,
+       0xb59dd703, 0xaf9a3df2, 0x3ce2aff7, 0x27f8ae1c, 0xbf019d90, 0x1f2a06ff,
+       0x026ab03d, 0xc0faff3d, 0xfef03723, 0xca31b4a5, 0x3e88057f, 0xa745c50f,
+       0x963be833, 0xf9a7fd9a, 0x7ecd5ffe, 0xf54fd333, 0x58f5ff48, 0xef3fd8a6,
+       0x7de048eb, 0x0472090a, 0x6a37200e, 0x6fad75dc, 0xaeb11c71, 0x0efa8e4d,
+       0x45b7e8c1, 0x0369e71f, 0x63492107, 0xe516ef39, 0x98d7b6ba, 0x10e6b59e,
+       0xd9a1b1cb, 0x14efde2c, 0xe297c625, 0x0d48463b, 0x69bbfd10, 0x6b9c5aff,
+       0xb6057ef0, 0xc818fd64, 0xf7d2082f, 0x11e8c70b, 0x682075f2, 0xcadcf102,
+       0x9d8dc1e7, 0x98fbf8e3, 0xdcd7ce81, 0x71c5fcf1, 0x5241073a, 0xfc8b668f,
+       0x22fdf622, 0x3847d88f, 0xb1d8467a, 0x09fe65a3, 0x0059ecf1, 0x2dbe45ca,
+       0x356efce9, 0x4f3bc557, 0xb78fa85b, 0x94702b23, 0x3bb3d3d6, 0x7ad3cf81,
+       0xb45f625c, 0x4288e5a2, 0x6dac59df, 0xff91a695, 0x01ff9b58, 0xf581877f,
+       0xe15bb612, 0x586e7c7d, 0x9e7bbcd3, 0x918e8716, 0x05bf811e, 0x91e7f896,
+       0xec532bff, 0x6f049d37, 0x3d1f9eba, 0x4ef9c269, 0xe29d9b56, 0xfdf12a7b,
+       0xfdbaade4, 0x99916dbd, 0xa09392e3, 0x83b9c59a, 0xac581f38, 0x755bd1db,
+       0xbbec3cbb, 0x09e117de, 0xfd881f3a, 0xc3b0d7ae, 0x2fe3e877, 0x8dc78d05,
+       0x0efb3efd, 0xc3bbbe3d, 0xa4fcfd17, 0x20f37f61, 0x086fec8f, 0x7bc901fd,
+       0xfb024143, 0xc79385d5, 0xe80b8dc7, 0xff55677b, 0x434a99de, 0x1f050dee,
+       0xda3abfb0, 0xbe55e671, 0x01267f37, 0x6b9ce272, 0x432bf90d, 0xf2176fdf,
+       0x6a0bcfd6, 0x4346829c, 0xf33097ee, 0x3297dc89, 0xceb5fee4, 0x7df4ffff,
+       0x22507c97, 0xcbb629f7, 0xcec9affe, 0x387ad8d4, 0xb015c69e, 0x8d75c2df,
+       0xc635d7d1, 0x2e8fe11a, 0x1711588d, 0x4beb43bf, 0xefbb080d, 0xc0a3b2e6,
+       0x13577aca, 0xb63bf892, 0x27c8b09a, 0x3e452a6b, 0xe22ad799, 0x4bb765ca,
+       0xf3624d41, 0x33e88a75, 0x26d8b3f0, 0x9381b7fc, 0xf8e97e41, 0xcfe4f7a1,
+       0x79fdd56f, 0x40268e2c, 0xe7da3cd7, 0xbc9353bd, 0x16307f74, 0x4f974b4f,
+       0xf3cc8b79, 0x7883f0b5, 0x63ffefe3, 0xe3d4b471, 0xe749ed1f, 0x64d970bc,
+       0xc168f71c, 0x37086367, 0x9bd0d7b5, 0x76af5d52, 0xc9470238, 0xd16bafdf,
+       0x0a5bc1cf, 0x1f89bada, 0x5ef1c09d, 0xd36bab8f, 0xf3071106, 0x384d7839,
+       0xabfbbf81, 0xf7f3b769, 0x0dad354f, 0x3f291389, 0x76bd976c, 0x9eb757ac,
+       0x567e24a8, 0x197b8897, 0x8e7e96b5, 0xbfb76537, 0xe45be898, 0xff3a88ed,
+       0x16bce836, 0xdaed63ce, 0xec3cfd42, 0x2cdecabf, 0x6f3c08f4, 0x63397238,
+       0x2e754e22, 0x7cc55fcd, 0x16b7eb7d, 0x9bab263a, 0xba3cfaf8, 0xa3d0b50a,
+       0xcd45bb72, 0xfdb44d1d, 0x62ffd06a, 0x57d853a6, 0xe38b3073, 0x77d749c8,
+       0xdf61a41f, 0x371445db, 0x291c76f7, 0xbbe044b2, 0xe7da0367, 0x006bf238,
+       0x0ab7ae93, 0x54b49297, 0x1e846f8f, 0x943fedd7, 0x3d06fb41, 0xa893bfa4,
+       0x7e4c9d3c, 0xc9f766b1, 0x6714f1e4, 0x31a511ec, 0x9976a5de, 0x9dd281db,
+       0x24524777, 0x7d304f7d, 0x1c624297, 0xdbbcee80, 0x6fbe4726, 0xffad7ffc,
+       0xf1a67a8f, 0xfa512777, 0xb309f06f, 0x350efe76, 0xe7cac070, 0x124e74ea,
+       0x59ea9f79, 0x6237d71d, 0x3a7a4372, 0xc785ce83, 0xc0a62851, 0x205754bd,
+       0x39d2a4ac, 0xf716586d, 0x7ed8b2cc, 0xbfe7d74f, 0xd0770951, 0xfa19d47d,
+       0xe84ce2b9, 0xa07376e2, 0x9c0d4b9f, 0x396d1dfc, 0xb52cb978, 0x9a521785,
+       0xe2142937, 0x19c244ef, 0x4d82eb8a, 0x8e375eff, 0xa6f887bc, 0x1f8305c0,
+       0x893f9d32, 0xebb17bfb, 0x8f58c579, 0x850eec26, 0xb50f7412, 0xde7c4214,
+       0xeb74137d, 0xd7f1dee7, 0x34f30b31, 0x09baef3a, 0xf9912775, 0xb3f6e411,
+       0xbc723d69, 0x642f74f5, 0x93a54331, 0x19c293e8, 0xd7ed6fa6, 0xba3e8ebf,
+       0xc4fb4895, 0xfef7f40f, 0xbce864a8, 0xf6fedbd0, 0x566f7487, 0x57be34d2,
+       0x8eefa5eb, 0x2b092f29, 0x2c76833d, 0xb3cda007, 0xdfc92f72, 0xfc012ef8,
+       0x6229f7c0, 0xe5a04bbf, 0xba18cc5e, 0x37dc65a7, 0xaa5c11dd, 0xb0b7bfd2,
+       0x7fe36ddc, 0x36d8a59f, 0x0fed2a66, 0xdfe69a3e, 0x567c7a4b, 0x83cf1e6a,
+       0x1c69c128, 0xb2b8ea77, 0xeb4a5683, 0xbbe33497, 0x0cbc6008, 0x019ef77e,
+       0xdd8a7dfc, 0x791bbe2a, 0x4b687112, 0x74abf465, 0xaf1e17df, 0xddbe2950,
+       0x2979b2e4, 0xbd12b37e, 0x1b7a21f6, 0x83dee26d, 0x962b7f71, 0x83c88d8f,
+       0xaf3fd62e, 0x98e2e38d, 0xb7ee59ef, 0x5f10cff9, 0x9e5497be, 0xe16ef149,
+       0x8a1ed9ae, 0xeff51bbf, 0x00a51a62, 0xcb80e1db, 0x821dee24, 0xa371c9d6,
+       0x116ea2c3, 0xbfdf25f1, 0x1cab701b, 0xda4a1e5f, 0xeb113894, 0xbe242b8d,
+       0xae98d4ef, 0xd09764a6, 0xc81976bd, 0x567637ae, 0xa05f9274, 0x37af14fe,
+       0xd51a7cba, 0xf7c0e903, 0xb3ff88ef, 0x869bfe0d, 0xefd21ff8, 0x5edb14e1,
+       0xeefb4d1d, 0x4150dc53, 0xb584a6fd, 0xe30bc4f1, 0xc7940ffb, 0x531e489f,
+       0xa1f7d1c2, 0xfdf27140, 0x081e4307, 0x53b50610, 0x1f21b397, 0xbaddf1a7,
+       0xb77d44a6, 0xc9edc86e, 0x331f2144, 0xc71944dd, 0x371a557d, 0xff062e56,
+       0x62670fff, 0x48106171, 0x00004810
+};
+
+static const u32 xsem_int_table_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x2bdbff00, 0xa3f0c0cd, 0xa4f5811e, 0x798a1818,
+       0x8968c550, 0x1819393b, 0x0331036e, 0x00430317, 0x2064ded0, 0x6bc4029d,
+       0x101d7881, 0x3033708b, 0x08710304, 0xf9033710, 0xf36e685e, 0xf0606265,
+       0x2040e207, 0xafe2060e, 0x31bea340, 0xae7f6f10, 0x43169010, 0x19c4cdf0,
+       0xe9245c18, 0x86c1ffe7, 0x6be855f3, 0x7da023df, 0x7c1175db, 0x877b2029,
+       0x9d9aaa2e, 0xd8cdf8ba, 0x1bbf2685, 0x8f07bf8d, 0xa816a9fe, 0xa886c7fc,
+       0x0cc6abfc, 0x0896a20c, 0xfc4313fe, 0x2ec7416e, 0x40aebd40, 0xdea6000c,
+       0x03683d03, 0x00000368
+};
+
+static const u32 xsem_pram_data_e1[] = {
+       0x00088b1f, 0x00000000, 0x7de5ff00, 0xd5547c09, 0x73b9f8b9, 0x2cc99997,
+       0x6cac8499, 0x1689b0de, 0x1a424270, 0x8b61db10, 0x5c18a3e8, 0x84c0b82a,
+       0x01327b25, 0xf69e0fa9, 0x69b08197, 0x6b1b6351, 0x304ed1b0, 0xa0d06828,
+       0x1c048201, 0x69f42d40, 0xb15a7d0d, 0xb22834b6, 0x0dc06486, 0xcefab3df,
+       0x93739df7, 0x82266f7b, 0xd7ff7f6d, 0xcfe3fef7, 0xb3dce1df, 0xbef9db7f,
+       0x44e77cef, 0xf4896252, 0x81be4243, 0x16ad4d1f, 0x9eb8c842, 0x9e6a9094,
+       0x2eb92856, 0xfa6e0242, 0xca424ccf, 0x65684a5c, 0xb653211a, 0x261fe1cb,
+       0x10bd7cd0, 0x65bcd2b2, 0x3bcb1daf, 0xec3e58eb, 0x96847c52, 0x79a06b9f,
+       0xb6b7b681, 0x2d2d7c3d, 0xc9176c8f, 0x6476e846, 0x1124858c, 0xd846c272,
+       0xb3e6932f, 0xb3b7c908, 0xbefd596c, 0xb0bed0b9, 0xb4ec4ac5, 0x055db2bf,
+       0xf9a5af33, 0x81328382, 0x569b652a, 0xbe69fd28, 0x41342428, 0x9b326bbe,
+       0x1887705f, 0x77eb44da, 0x6e92dbb9, 0xa6721273, 0x855446d2, 0x5b572a90,
+       0x08a3add2, 0xcb6d0e29, 0x8dc57681, 0x3a961782, 0x37a6fb65, 0x5b5d6152,
+       0x2555af04, 0x83b364a4, 0x1cd923a8, 0x9fffa1be, 0x3fc31668, 0xe84be5a4,
+       0xb7ed093a, 0x10e75480, 0x547fc611, 0xf03d5d51, 0xc1e9533b, 0xd97cb471,
+       0x6d0e3a16, 0xe082fe57, 0x5b962585, 0x8e89bf88, 0x3ecbb9df, 0xac2769fb,
+       0xc232856f, 0xab5aeb05, 0x5082bd40, 0x0abb0ede, 0x7257abf3, 0x5d717968,
+       0xaa3f92bd, 0xcd92bfa7, 0xaaf38cfd, 0xd7ec9a1d, 0x33d39b95, 0x23a88495,
+       0x84c5f27a, 0xbf689af8, 0xb3290a44, 0xff7cf746, 0x9211c488, 0x448bfd08,
+       0x4ff4f5b5, 0x83df8921, 0x527fd2ef, 0xb8f70578, 0xde1aae10, 0xbfe87896,
+       0x5dbc1ed5, 0x4a3c70f0, 0xff7d2c91, 0xe030fa5a, 0x1aa7ce81, 0xf5d344e0,
+       0x89ee7e7c, 0xfb449264, 0x4788fb77, 0x47af7d20, 0x9265ab4b, 0x0b58e847,
+       0xd27da383, 0xc8579a78, 0xe425e262, 0x7cb2abe7, 0x21fe6953, 0xf30b9fe2,
+       0x0bf8255e, 0x34844f01, 0xaefd00a5, 0x586cc811, 0xd2618fff, 0x2a4d7cb4,
+       0xf70a4fa5, 0x4f5969ea, 0x7b9f028b, 0x9ff3e402, 0xfb0d3079, 0x647ec029,
+       0x4bd0cfda, 0xc9c9e3f7, 0xc9e3f436, 0xa9fad429, 0x97ec7ec0, 0xce754fd7,
+       0x727ce304, 0x967eb58a, 0xcbae3f63, 0xfae7975b, 0x5cf9c689, 0xc4fd8a5f,
+       0x3f12f54d, 0xf46a2fad, 0x227cda40, 0xc636772d, 0xe8907d8d, 0x6af262e9,
+       0xe5177fe0, 0xc45d3d12, 0xe818c766, 0x6f17ce30, 0x3c9ed3c8, 0xf3c7be27,
+       0x9c709074, 0xfd2be382, 0x930b9415, 0x7f30dbfa, 0xca277f6f, 0xf8277b85,
+       0x79d0f4af, 0x9524d8c0, 0x35ff15e6, 0x4d74289e, 0x149029e7, 0xa40b5548,
+       0x32b5f2e6, 0x01e4c383, 0x46388d5f, 0x912c07db, 0x5f347111, 0x35fa4c27,
+       0xb11365c0, 0x44627c20, 0x62f50152, 0xd3e504ac, 0xa7acb4da, 0xad383a83,
+       0x2ff1441b, 0x4ebbf4f4, 0x7d00a7f6, 0x05b7216d, 0x0cd6de81, 0x4fe9eba2,
+       0x5bc173c8, 0xb68941c3, 0x029f941f, 0x942ab4f0, 0x2be3f5bf, 0x3851fc74,
+       0xee308bfe, 0x5c7f1876, 0x43adf1ef, 0xdbe30db2, 0xc61a1706, 0x7c7429b7,
+       0xc8bbef4a, 0x0a7c7cdd, 0xbc8409bf, 0xc70bbc12, 0xc42e0eb7, 0xa42ad7f1,
+       0x4c7e30d0, 0xc2aff8f7, 0xb5f7afb8, 0x8c1321fe, 0x6c5c1feb, 0xd6c2bf5c,
+       0xe22c887f, 0xfae0c7e3, 0xc85c1b7f, 0x98b83fd6, 0xfacadfad, 0xdddf1eed,
+       0x61b7ff0d, 0x5afb77dc, 0xc689d0ff, 0x6a515ff5, 0x8d95bf5c, 0xe3293eff,
+       0xfc713be3, 0xd94b063f, 0xc528affa, 0xdfab15f1, 0x0ca4740b, 0xd108a988,
+       0xca40c9f1, 0xa328c910, 0x8c8e987c, 0xafb68427, 0x0e104321, 0xba30c6f7,
+       0xd2863cfb, 0xde47b39b, 0x28e51091, 0x39cacf2a, 0x4e3497cd, 0x62ce4052,
+       0x8b7b9539, 0xb61754f8, 0x90dfb888, 0x38686b1a, 0x8b676f9d, 0xc2fc8418,
+       0x2242eb9a, 0x5e6477ee, 0x4893b42e, 0xfc7fbe18, 0xfa8de8d8, 0x45d39975,
+       0x7689f2d5, 0xf9b11f03, 0x91932704, 0xd37e7415, 0xf5c60880, 0x39504fe4,
+       0xfcfca84a, 0x4851ca90, 0x3c74ca4f, 0x9538fdfa, 0xf3d144b3, 0x8fb60acd,
+       0x233bc907, 0xb04e4093, 0xc18909df, 0x2152c4fb, 0xfcfff004, 0xc80ac5d1,
+       0x0ed545a7, 0x799ef40a, 0x229e3804, 0x8da1acbb, 0x0553c202, 0xac8edcf8,
+       0x299fc848, 0x6829535a, 0x19fb6a0b, 0x4245ddda, 0xfd6853ab, 0x06f3eb05,
+       0xeffae879, 0x2b1d6d9c, 0x7c41fec2, 0xc7c82c03, 0x9b258064, 0x8fcdd990,
+       0xe66803ca, 0x87f2d9f6, 0x73f6baed, 0x9dfcc6fc, 0xa77cc685, 0xa02d921c,
+       0xa409146f, 0x777bf69e, 0x1b5cb185, 0x67884e27, 0xfde3e578, 0xf7cd8938,
+       0xc2c7486e, 0x75e20f67, 0xd5b587ae, 0x4fb813e6, 0x2fdc6126, 0xe20913db,
+       0xf9eb113f, 0xe6dd6c3d, 0x6d95cef9, 0x9f3a5cbe, 0x8445cbb9, 0xedfe79a7,
+       0xcb3e1d7b, 0x7ed69a18, 0x9a090322, 0xff9e63d7, 0xf5e665bc, 0xcb0f5078,
+       0x33bf9a0b, 0x53d3313a, 0xbf5265a0, 0x657abae3, 0x3bf4374d, 0x92afa3ae,
+       0xf90cb3cd, 0x431cd0a2, 0x3cda82fd, 0xeaa2f943, 0x82f94322, 0xf90d8b75,
+       0x4372e0bc, 0x56cb79fd, 0xaeefca18, 0x7e50c078, 0x86a3e167, 0x06ff1cfc,
+       0x67dbfd43, 0x2dca1bd7, 0x09baaf7b, 0x5deaa8f8, 0xf1bec091, 0xc3c4f399,
+       0xe67e0fa0, 0x8f80bc94, 0xc8299553, 0x552a6707, 0x325b3b4c, 0x07267e6c,
+       0x59c541f3, 0xb829a2b4, 0x65c8226e, 0x68b3f282, 0x70608ec5, 0x056ed520,
+       0xd627e115, 0x494c242a, 0xddf12058, 0x75111c74, 0x2897ede5, 0x9e8ca5af,
+       0x6c5cbbd1, 0xb03dfe8f, 0x900aef31, 0x03c97d3b, 0xfb001bfa, 0xdfdf175c,
+       0x02a5e5cd, 0x277fd5c9, 0xf9f22564, 0x4b672e45, 0x4a0f2615, 0x4c9d4a5f,
+       0x8f0f90dc, 0xf1b6f8a8, 0x4150289a, 0x9e76824e, 0xb940f408, 0x432f40c0,
+       0xb1ddfc0d, 0x9579c44f, 0x0f184c83, 0xbd772722, 0x7c267200, 0xa32df060,
+       0x87be1e61, 0x96bbe004, 0x3bd7dc44, 0x3bf7a72a, 0x727e012e, 0x39553d31,
+       0x9513d31b, 0x578f4c7e, 0x61fa6216, 0xeda60565, 0x3d30cb95, 0xf4c4195a,
+       0x30eb954f, 0x356563fd, 0x6b2a47a6, 0x6543fd31, 0x4aced308, 0x3f1aa61f,
+       0x04dfcb74, 0xbb72afae, 0x983cee82, 0xb2d7c0bf, 0x436dd68a, 0x00a6f73e,
+       0x7e705f9f, 0xf1f4023e, 0x04ac470b, 0xe0befdf4, 0xbeb7a665, 0x7d43e8f1,
+       0xf1443f25, 0xdcbbd19f, 0x64f0c31e, 0x84e990b7, 0x8607a3ca, 0x3f9de33f,
+       0x9012f30a, 0xbc90dd0c, 0xfa515cb3, 0x5f10461d, 0xf113c297, 0x4cdcc645,
+       0x89e271f1, 0x7e82caff, 0x2ffdf22f, 0xfb8880e6, 0xed3f0930, 0xe0e97c05,
+       0x645afb86, 0x97f7973b, 0x6eb9df80, 0x260db5f8, 0x78209d34, 0x342efe90,
+       0x7004895b, 0x2884756c, 0x070b93f1, 0x3f03769f, 0x78b1492e, 0x8381478e,
+       0xa5359696, 0xfdfa9c79, 0xbf98c5a7, 0x6f4c2d50, 0xc6ac7942, 0xe81a3ade,
+       0x3e39e3ca, 0x829ff00c, 0x92cfd6a9, 0x9c73c514, 0xcd99ebf2, 0xfed96343,
+       0x60fb621d, 0x2bd21c63, 0xfeb10bb5, 0x7d3e7a3f, 0x87cda3f5, 0x91f26690,
+       0x2d01e40d, 0x7b697a1b, 0xa5de17a7, 0xc05c954f, 0x39fcab57, 0xf4310be8,
+       0x40866fff, 0xb5e612bf, 0x624d037e, 0x7c0d7ad0, 0x478c346f, 0xcd9aa9db,
+       0xa6faed0d, 0xd09c895b, 0x2bca8ae8, 0xb4658c05, 0xe31eed13, 0xc86712be,
+       0x3d525a07, 0xfe067d86, 0x0a9ff941, 0xa6e8094a, 0x97515394, 0xd0275ce4,
+       0xf9031df9, 0x1012f149, 0x5b32bd58, 0x9157e2bb, 0xcf40db1c, 0xd1ad9f98,
+       0x07fb7a9d, 0xfe9fde54, 0x083c9977, 0x59d15fe5, 0x47f4f565, 0xa1620877,
+       0x373c05f9, 0x0664b9bf, 0x16d3bdc8, 0x242fcfb6, 0x7a306eb9, 0x1675490a,
+       0x88e739e8, 0xffd03a65, 0x777bf239, 0xf0dece86, 0xe75c145a, 0x7dc67582,
+       0x8667ea96, 0x31ad417c, 0x4e6e4f9f, 0xafcf7a02, 0x00484991, 0xab9634be,
+       0x5bf60f16, 0x80d62a40, 0xedc55fdc, 0x221ef995, 0x2bf3a00d, 0x5664f9db,
+       0xf7c79d1e, 0xd74f4c2d, 0x78a2f7ec, 0xa6e2ff36, 0xcb47c57a, 0xf8ce6a3f,
+       0xda04b5f1, 0x1f80d687, 0xf05db823, 0xe37b526e, 0xdfcebbef, 0x3f6d5f3c,
+       0xe047e5e9, 0x2cdb28f3, 0xf65142f8, 0x81166993, 0x4c415beb, 0xeb75836f,
+       0x0e3cd6f4, 0x665f2d07, 0xe5372fca, 0x4b7a66ff, 0x3b7a0620, 0x2cf3f826,
+       0x40be8c89, 0x88a4105f, 0xfa7bffe2, 0x7fd5e94f, 0xffb43fd9, 0x2cffb481,
+       0xffcbff43, 0xeb0ffda1, 0xd1d5ff35, 0xb9db2ffa, 0xca904775, 0x1f17e29b,
+       0x0fba1373, 0x93aa969d, 0xa5ff14bc, 0x81bb569b, 0x41494e0e, 0xe9f3d037,
+       0x143d3890, 0x0ddf6ec5, 0x447e80f4, 0xbb00539f, 0xfb49fe0a, 0xcfdcf33f,
+       0xf33ec266, 0x83d926f9, 0x6b66d2f6, 0xb5f94ad8, 0x0668b9bc, 0x63f98319,
+       0xbcf6bf2c, 0x2316f908, 0xfb3f167d, 0xdff81258, 0x7b70a528, 0x52fa8c22,
+       0x39c7c379, 0x48050fb0, 0xdcccf904, 0x18bfc60e, 0x4f31f28f, 0x4e5ded89,
+       0x7e7a89e7, 0xd025c380, 0x22f3b3fc, 0x3b493ef8, 0xea9a83f3, 0xa7fd7217,
+       0x384ae2d1, 0xf2274d41, 0x907df27d, 0x483c1a97, 0x553fe988, 0x731f1e5b,
+       0xa3a7ce8c, 0x82dddfe1, 0x9f1a4e0e, 0xf05a685d, 0xbed457eb, 0xb72771e5,
+       0x85da7af3, 0xc2da9db0, 0x9656b6f5, 0x3761ca96, 0xf5a5c5e8, 0x3f4837b2,
+       0xfa7d6e97, 0x4ec02799, 0x1deadf7d, 0xd92ffb4e, 0x261ffafa, 0x36c97cd0,
+       0x5b066139, 0xea485386, 0xfe804bc1, 0x0f6c6cbf, 0x7e5f8a1e, 0xb347515d,
+       0xf7c7f7ef, 0xdb64a3e0, 0xee8c853e, 0x4d298f0d, 0x677694fb, 0x1d34bc14,
+       0xaafd01cb, 0x0a17cb6a, 0xf7a793d8, 0x2d39240a, 0x5feb3c0a, 0xe0013d47,
+       0x78e47884, 0xa99bc6ea, 0x05e2807e, 0x2786b9e4, 0x5cc3f973, 0xea7f40fe,
+       0x17e7a428, 0xf2bf015e, 0x585ead1f, 0xf70be17f, 0x271d61b8, 0xd7460aa5,
+       0xf24eae4f, 0xe50b71d1, 0x53079260, 0xa9f0bdf6, 0x15bd209f, 0x1249fe1c,
+       0xa97d07b3, 0x829bdc16, 0x45beb0a9, 0xfae1b775, 0xe91f89f2, 0x3149f0ae,
+       0x67e3e417, 0x2dbe9912, 0x8ba45f0a, 0x6e4e2f8c, 0x5d170aa4, 0x4bb049df,
+       0x5eff9e40, 0x7f426d0c, 0xfc0262c8, 0x3fcd13ff, 0xfe60964e, 0x93c31b33,
+       0xbe70b44d, 0x9e9edaa2, 0xb6d61b5e, 0x0cce7e01, 0x1f8325f2, 0x20a4402d,
+       0x0df08787, 0x3c3c57ed, 0x87e1992d, 0x6f1652a8, 0x2980f547, 0xb7ea1df0,
+       0x18fb3ec9, 0x4df23b43, 0x4bf8cf5a, 0xde74f8f9, 0x9f7fb031, 0x4d85224c,
+       0xb777d651, 0xdd3df1a8, 0xa5f475c7, 0xefc66fe3, 0xfe300f0d, 0x343df8d6,
+       0x7f943a6b, 0x1fe30efa, 0x23fb0768, 0x1938579d, 0x2addf7cb, 0x92b03ca0,
+       0x6ebe3470, 0x1b5f3990, 0xa13a35cb, 0x588496f3, 0xff40bd1d, 0xf47f08f1,
+       0xd0d7e59f, 0x19793a76, 0xbddcf180, 0xb6f8d3fb, 0x28fff380, 0xa4ffc8d1,
+       0xdf7df18e, 0xf71055fa, 0xf43952b9, 0xafc013cc, 0x2a833f94, 0x0b9cabf0,
+       0x78db3eeb, 0x50770fe0, 0xa4db3d3e, 0x7e51a9f1, 0xf0b4f99a, 0xd0024da5,
+       0xcf4f99a7, 0x246d5216, 0xefd29f1a, 0xb0b4f951, 0xfca9fffd, 0xab77e0d4,
+       0x3c9a7e09, 0x668e0bec, 0xa2de7879, 0xf2cd3c22, 0x21defe90, 0x4fe9bd59,
+       0xde8d3ba3, 0xbb2f9f8a, 0x1a05fd02, 0xd7746a5d, 0xdd1a974d, 0x18bff2f5,
+       0x1f2e67e0, 0xe940b40c, 0x8c977724, 0x2b695576, 0xeda30f3b, 0x899018de,
+       0x36e1f270, 0x18dfaa46, 0x87cfa090, 0x5326f94c, 0x9f299f7d, 0x37efaa6b,
+       0xf50c2be5, 0x280e5b4b, 0x361ff104, 0x7b2eb3d4, 0xc5147c82, 0x9bf6d21e,
+       0x2579f340, 0x30317408, 0x93bc80a2, 0x0ba09257, 0x447b83fc, 0x28bb17b4,
+       0x71d0d78c, 0x42d31aba, 0x56372a41, 0x1e1d99db, 0x80d65449, 0x44f2eb9c,
+       0xb790f1dc, 0x2bb7fd33, 0xd38ee237, 0x5ac791e9, 0xedd39445, 0x9a3d3221,
+       0x20ee83df, 0xd276e788, 0x77f33957, 0x839d134e, 0x59fd8197, 0xa4c17a2d,
+       0x76e2b85d, 0xba46b837, 0x34de875a, 0x745f7e9b, 0x9463c448, 0x18f718ae,
+       0xfa091798, 0xfd9d54a4, 0x7f048a70, 0x97fc1139, 0x588eccad, 0x7fa4deb8,
+       0x3f48f590, 0x0aa5cef9, 0xf7aa4fc8, 0xdff4687f, 0xe6283e32, 0x19d615fd,
+       0x70f6b5cb, 0x5cf60582, 0xdcb18371, 0x9da1edcf, 0x9e7017c0, 0x51d24e92,
+       0x03a180ae, 0xc39738f6, 0x3751c4d3, 0xeff0a6cd, 0x3812283a, 0x2ad0bcbf,
+       0x342ffc22, 0x124af3b2, 0x2afe444c, 0x7f941127, 0x803a9c1a, 0xe5be947f,
+       0x3ff6c753, 0x7407dd67, 0x3183e3b2, 0xc769a2bf, 0xec47f78e, 0xf7cefc86,
+       0x7a407f06, 0xd7b29fd7, 0xaee27e8e, 0xefa42ebd, 0x0d6f3dae, 0xbbf20fbe,
+       0xeb9fe8ac, 0x18c5fbda, 0x95aeb7a0, 0x6f9042d6, 0xfe28835d, 0xf3d81f41,
+       0xdc7698c5, 0xde21574f, 0xa615143e, 0xd7feb50f, 0x52012151, 0x13d02aba,
+       0x7f903af6, 0xd1d8af02, 0xe7b5d09f, 0xf3bf2c8b, 0x729eb71f, 0xe5d37e7e,
+       0x825fb322, 0xbf31c5f9, 0xf8f76077, 0xf9c057a7, 0x653ef373, 0xf29f2d01,
+       0x80c75fea, 0x897aecdc, 0x729d3fe9, 0x3e7053fb, 0xbe3c4e71, 0xee70a642,
+       0x4fea2604, 0xf0d203c8, 0xbd27c0c9, 0xf457f2e1, 0x3c2e5c93, 0x0b7fe924,
+       0x931f043c, 0x4d90ae6f, 0x797f7580, 0x039003f4, 0x9748ad7b, 0x36cf7ada,
+       0xe4fd40ad, 0xfa1eeb52, 0x42dd6e7f, 0x3dd672f8, 0x87fe6259, 0x1f75d67f,
+       0xa79c5514, 0xd37a0f99, 0x317b9ef9, 0xc5e5d5bf, 0xbd265ef9, 0x86bfffcf,
+       0xde2897f7, 0xf75e97dd, 0x78b5ff8a, 0xe397343f, 0xfbe703dd, 0x8aff5781,
+       0x72aefbf3, 0x1c9ffeae, 0x5fad7def, 0x637fe3d3, 0xa749df51, 0x6a93a7f5,
+       0x37162827, 0x943fed94, 0x337f4b4e, 0xcc1c40f0, 0xbce9b277, 0x2f7f4b46,
+       0xb2693b31, 0x8ffb4160, 0xfedc09c4, 0x00d37663, 0x580c3fae, 0xc87a8f9a,
+       0x310f8180, 0x6b5241bd, 0x37f1bce0, 0x31781783, 0x3d8c8276, 0xe7bc87e2,
+       0xda379e3a, 0x8812bf8f, 0x07428e0f, 0x8397fe0c, 0x1c0ec7a0, 0x4b9ea228,
+       0x5f6fd453, 0xdf674f73, 0x9d83154b, 0xb46a8373, 0x8c12727b, 0xde54d1f6,
+       0xe6c234df, 0x8429cd3f, 0x930e1442, 0x0122fd07, 0x8793a1fc, 0xf9a044cb,
+       0x055fe21c, 0xa754c4f6, 0xe017bfb1, 0x0f5c66cc, 0x173a071c, 0xd317404b,
+       0x07ed0f41, 0x7e59d3f5, 0xf3c25060, 0x5e87ae1c, 0x82962eaf, 0x60653f34,
+       0x2df004ba, 0x08dcb5b0, 0x579b75fe, 0xd95c79c0, 0x64394161, 0x7e9014cb,
+       0x984ad646, 0x8cf16c3f, 0xbcccfc03, 0xe5d9e776, 0x3eb1fc04, 0xe4d3c585,
+       0x57fabf32, 0x11337cdf, 0xdc38d0e2, 0x3fffe80b, 0x1d71ff02, 0x3850c709,
+       0x3048922d, 0xa9fc1e36, 0xe0d0f902, 0xe1e6354f, 0x9ea483f7, 0xbf552e7e,
+       0x47fdfa2f, 0xbf293ba7, 0xbe61487c, 0x3861d20b, 0xd7b7a4bc, 0xe0cadfbe,
+       0x84937815, 0x7af3b086, 0xfe775731, 0xfe664934, 0x7a7f9ddd, 0xa5ec0329,
+       0x62a35d49, 0x430f1f19, 0xf5c034bd, 0x8d440bd2, 0x8f813af5, 0xb9e2c687,
+       0x15d141da, 0x0b6d5e2d, 0x879ee3b7, 0x769a05b8, 0x116a9035, 0x411204ec,
+       0xc1b060ff, 0x89453646, 0x6b25189b, 0x378e0ffe, 0xc0b313fa, 0x5fc6cfcf,
+       0xeac69b44, 0xe331d6f1, 0x37a634b4, 0xa1f7e01e, 0xefe39cee, 0x8dd82f85,
+       0xf62ddf00, 0x28dc9cf6, 0x9903fefc, 0xfdccfbf1, 0xed5fa25f, 0x0b7ad6ea,
+       0x0dd5efd0, 0x5db9c316, 0xfef5cc96, 0xcc2c64b1, 0xbb7ee66b, 0x72f0132b,
+       0x9c42f450, 0xbcf5a060, 0xde728fe2, 0xf4278664, 0xa5da7e0f, 0xb6f107b2,
+       0x005a6e5b, 0xce7ddd70, 0xdb3ec046, 0x449754a5, 0x8509e79b, 0x691173cd,
+       0xda4c67ba, 0x277c1f3f, 0x93c33975, 0x2069cec1, 0xd3369edc, 0xbe3a411f,
+       0x408499b0, 0x045d838e, 0x2342e172, 0x82847dc1, 0xefb021e4, 0x50ffbf28,
+       0xb2b81fef, 0xb0f3db65, 0x0ab794ff, 0x975d701e, 0xf80aed4b, 0x712d02ff,
+       0x74fbc822, 0xf4a38b55, 0xc755be8c, 0x09654b17, 0xc2607be1, 0xdc613bee,
+       0x02143a4f, 0xb5efa1fb, 0x8bf61b88, 0x90335a4f, 0xd75afa0f, 0xc6e495cb,
+       0xc3f412a9, 0x1e99a1e4, 0x18c63546, 0xfe8ad7f2, 0x335fc0fe, 0xbd4bedad,
+       0xc497f051, 0xf2d977f1, 0x99fff42d, 0x93477b7c, 0x57317e6f, 0x7b4747c7,
+       0x68e4b7cb, 0xa0896df2, 0x97dc0326, 0x0c9a19ec, 0x48725d78, 0xdf268c4e,
+       0xf3b256b6, 0xfc7917b3, 0x9533576b, 0xe4e8d76f, 0x6f95335b, 0x0e0ce251,
+       0x0b7cae5e, 0xdff0cffd, 0x516f9056, 0x8701fbd6, 0xc6df269f, 0xf9431eb4,
+       0x62d9a636, 0xfdfd1388, 0x909be525, 0x61e82b78, 0x23af6507, 0xe56cfd0a,
+       0x3c8bdf7a, 0x01c60dde, 0x7ca71739, 0xe1773937, 0xffdce572, 0x39359c10,
+       0xc13b64b7, 0x74ded9f8, 0x92dce4c8, 0x09ce545d, 0xce4c8f40, 0x9843d92d,
+       0xdf24c7ff, 0x6f92f646, 0x8797eb04, 0x4b40fb59, 0xd177e3da, 0x64fac6fe,
+       0x1fd68daf, 0xc6ef23db, 0x9c5de5e9, 0x3bbc87d2, 0x6ef27978, 0x5477973b,
+       0xf9010d8e, 0x6f0fa66a, 0x78ce31ab, 0x8d93f8f7, 0xbcbf032f, 0xd639e225,
+       0x773b0b61, 0x93f8ddf8, 0x855f4099, 0xc78a1f30, 0xbfa30a89, 0xf620cace,
+       0xb635e53f, 0x8b2732be, 0x666f2e3f, 0xa37961fa, 0x3fe95210, 0xa97c2673,
+       0xf68bfcc0, 0xe6992408, 0x7d595967, 0x0e76acf2, 0xeba46643, 0x766161e8,
+       0x178ffa09, 0xfe06c44a, 0xce6712e1, 0x4b7fd069, 0xb93f99b2, 0x3a2f7f84,
+       0xfc06bed4, 0x041b45aa, 0xe2d3873c, 0xd1f8b526, 0xadf1e75e, 0x688fd02b,
+       0xc99f973e, 0x3e6671e3, 0xa3ea842f, 0x6c9415c4, 0x7211c536, 0xb6259e7a,
+       0xdbc8bc23, 0x145377a2, 0x75ead1fe, 0x8720e9c3, 0xfb888353, 0x289c3769,
+       0xdeb4d4dc, 0x9e98a270, 0x03d49e91, 0xe8b7a297, 0x5efb337a, 0xf33706af,
+       0x693f35ba, 0x2fa7ef09, 0xee706838, 0x770e7eb5, 0x9ca0176a, 0x9e63c334,
+       0xcd3fedd2, 0x4a17f880, 0x82672837, 0x6e3115bf, 0x70d27722, 0x458a3dc3,
+       0xaa327e9c, 0x63814d27, 0xaf1059f2, 0x6bf3cb4c, 0x4a91bf17, 0x88ee31e1,
+       0xd3b6163a, 0xfd58276b, 0xc5b7be70, 0xa839411e, 0x4e2ee1d1, 0xfde0bf87,
+       0x315feeec, 0x16c9ed19, 0x487a03c1, 0xb8476c20, 0xe15c2806, 0x62404b5e,
+       0x7a500df8, 0xb03bfe04, 0xc70673e1, 0x7e0a823d, 0xbf6d1c84, 0xfad0bc02,
+       0x2f0cad19, 0x78809081, 0xf41124c9, 0x0ad797eb, 0xafc030de, 0xa7e11ea5,
+       0x73fa67c9, 0xa3a4f1ea, 0xfd1a295f, 0x7edd2562, 0xcdebc259, 0x01ff56b4,
+       0xb3e679e8, 0x7047a932, 0x8dbeffd3, 0x5f112f9e, 0x4ed3c662, 0x00adaf0e,
+       0x2dc0274f, 0xf0aef4c2, 0x46cf7897, 0x41480f2b, 0x3ca73c03, 0xe15bf171,
+       0x17834e35, 0xb7c831d0, 0xf2113cd6, 0xe9022df9, 0xbd7bd697, 0xe7a6ce70,
+       0xc73da2f7, 0x0a4fff58, 0xdd65125e, 0x7dd74d97, 0xa52173d0, 0xf7cbf05b,
+       0x3866d745, 0x39f852ed, 0xdfe7a719, 0x666f23d9, 0x11ef3d00, 0x6b49cf90,
+       0xecbce19c, 0x11e9857d, 0xee94ec5b, 0x8723bae9, 0xb546ef64, 0x2df83cb7,
+       0x0fd82f87, 0x574c7bfa, 0x0e2042c1, 0xe30db371, 0x431e70c8, 0x97aa7e98,
+       0x24ed5bcf, 0xbeccd6f1, 0xfbc23ffb, 0xd23f4bef, 0x3c61a3f2, 0xa16ecb88,
+       0x19ec8de3, 0x683fbccf, 0xad4b82fe, 0xe72e63eb, 0x6975d6fe, 0x38d77ce3,
+       0x4369009b, 0x36f16abc, 0x34ff04c7, 0xe9b9f419, 0x5b8c6482, 0xf5b9708b,
+       0xa1fff777, 0xff77d89c, 0xf783c524, 0x68f1eeb4, 0x9f483ddf, 0xcfc21eb9,
+       0x07be2691, 0x3e27fefb, 0x69965e76, 0x844eef21, 0x4cb263fd, 0x793eae80,
+       0xe77f4653, 0x3c595327, 0x1d6f4de7, 0x73e5c090, 0x22b58b13, 0xd0138d37,
+       0x5d0c3ace, 0xdc3d078f, 0x10237c46, 0x1f70197e, 0x7aa1bd2c, 0x7af94a8a,
+       0x1550e6ec, 0x9129dea4, 0xde01df84, 0xf0048926, 0x37ebe6d6, 0xf7f349c5,
+       0xc1d24c7c, 0x03f546d5, 0x20f63f6c, 0x137a8449, 0xc668897c, 0xf4fe6f8c,
+       0x3ce85b9d, 0x7a29bfc6, 0xd66f5a55, 0x5093a701, 0x9d647a7d, 0xf075f885,
+       0x5542409a, 0x7f1a6fe0, 0xcc0b77dc, 0x3bea90bb, 0xb0a0ff70, 0x0dcabeb5,
+       0xdb013af9, 0x1cfe8207, 0xd6cf5d37, 0xdf39f3da, 0xeb40b903, 0x3a813741,
+       0x20d02f56, 0x35f42178, 0x8c51f5bf, 0x106fc95b, 0xd6daa2f0, 0xac6c4090,
+       0xf68d90df, 0xb68eb5bb, 0x8bfd84cf, 0x1b7e87b6, 0x0b73bfce, 0x4f3a1dc8,
+       0xcec8df6c, 0x3b69f37b, 0x61a5f815, 0x5457f631, 0x27b81027, 0xf6c8d851,
+       0x6537c2a5, 0xef37942f, 0xedfb80db, 0x6a5e3a0c, 0xe143ec1a, 0x24df78a9,
+       0x3de0f043, 0xe841c6bc, 0x0c22ebdf, 0x40e9647f, 0x9e04c726, 0xa68f76e7,
+       0x1d6b3df7, 0xef907c82, 0xa3f4a15d, 0x3b2efcfd, 0x7482cd31, 0x71cf1e75,
+       0xfb78538f, 0xf30fbc29, 0xd9038838, 0xbaed291f, 0xeb35f17d, 0x8583e450,
+       0x3e30932d, 0xc5c91160, 0xe39980f8, 0xf6f9be99, 0xf810f675, 0x2396def9,
+       0x81fbe103, 0xbdf8aceb, 0xc3932b73, 0xd1da839d, 0x4eb27baf, 0xa23f7026,
+       0x79444eaa, 0xc651b271, 0x93e2977b, 0x60bc7cec, 0x0e3fd32b, 0x4f7eb1d4,
+       0xfe06de82, 0xf9a72875, 0xf9da2d82, 0x9ad39339, 0x61ef99fd, 0xdc9afae7,
+       0xeeebe32d, 0xacd50fb5, 0xcd648050, 0xcb8cb6f2, 0x461262e3, 0x772cd97b,
+       0xd6bce0cb, 0x8e697c0d, 0x7932723f, 0xd00c760c, 0xa44bf841, 0x6537f2eb,
+       0xf08c7602, 0xc60e4751, 0xd011ed3b, 0x55be3e3f, 0x7979c1f0, 0x086b11e1,
+       0xde50eff5, 0xfd837fbc, 0x812b7de5, 0x8013d850, 0xb2a72a07, 0xfd3f91ad,
+       0x7d3f7e82, 0x269106d8, 0x10f26e94, 0x68fc5aee, 0x271626e6, 0x26b87992,
+       0x9289ee09, 0x0e50fda9, 0xc48ad414, 0xa71393af, 0x772ddf05, 0xa3c1fdb0,
+       0x54cd138f, 0x7f61f3aa, 0xe4cadcfd, 0x8649baa3, 0xa4f20bd8, 0x6a69c995,
+       0x677c601f, 0x9347aed1, 0x141d1d14, 0x493479ed, 0xf0d7dfa4, 0xd82a8b38,
+       0x22bb695f, 0xb4538d85, 0xebd4f057, 0xd1fad1c6, 0xb17655fa, 0xb0f74376,
+       0x8bfeafb4, 0xceb87e60, 0x179014cf, 0x8d7a7ee6, 0xd93f47df, 0x46b171ff,
+       0x7ecaf3a0, 0xe820c45b, 0x0c668fec, 0x681f9fd5, 0xce57e6a9, 0x7c42c77a,
+       0xff65f83a, 0x74f88629, 0x471e6ef8, 0xefe29ef9, 0xc8422d47, 0x98fe402e,
+       0x79899652, 0x3979f00f, 0x4f973ff7, 0xcd42e765, 0x015787e9, 0x14c8cfdf,
+       0xd0481e90, 0x404bf4af, 0x38854d7d, 0xd64c82e6, 0x07b680be, 0xc0de6c7e,
+       0x09ca93f8, 0x7948e415, 0x5839a3dd, 0xa15041bf, 0x3cfae6ff, 0xb30a47d4,
+       0x0de58245, 0x2a3f50c7, 0x0096396c, 0xb6f94c7c, 0xf281f406, 0xc80f5689,
+       0x351f8d71, 0xc79b7efe, 0x679b131d, 0xdffdc434, 0x8517cc00, 0x9937c5af,
+       0x32340f5c, 0x33640c7e, 0xab7b7d7e, 0x1cbc2b0c, 0x3e7e46fe, 0xabf199b9,
+       0x396de4f8, 0x60bacf70, 0x7d67bb13, 0x028a6ea0, 0x90c9f4fa, 0x6f4dfb80,
+       0xab7a66fe, 0x04abbf99, 0x577defb6, 0x6fe352fd, 0xefe98f8d, 0x295e3047,
+       0x97b853e5, 0x99ebe667, 0xee1fd372, 0xe9bdf3a1, 0x3a1eba05, 0x583f29df,
+       0xc9d76eee, 0x824f9a49, 0xe2c4be7c, 0x52b93484, 0xb278b126, 0xd33f3cef,
+       0xa35625f8, 0x6b49e47f, 0x6ea38b1c, 0x2fee9190, 0xf8bd9fc5, 0xf3f932ec,
+       0x52eaf972, 0x2f8da9fc, 0xf3f631ee, 0x7337a724, 0xae149d7f, 0xdfd70a61,
+       0xf18d3e34, 0x3b9ee7a3, 0x53f01336, 0x39d29bb2, 0x8ba357d0, 0x49ce4184,
+       0x8aafdc21, 0xc61f459b, 0xace14ad7, 0x3e7a5c5b, 0x2541f166, 0x9e90ba2f,
+       0x86b25f8a, 0xc5f6d066, 0x831a3e3b, 0x232b1af1, 0x7c14ef18, 0xc1cbeb8e,
+       0x07c031f6, 0x538b12c5, 0xef85cb32, 0xdcfe98d9, 0x1b31cbb1, 0x666c27d6,
+       0x371412ef, 0x755b2edd, 0x6c4312e7, 0xeb4b8e32, 0x9061f9e1, 0x0bdc31d2,
+       0xefe9f985, 0x49f16bc3, 0x9c985b1d, 0xd1916e28, 0xbcde2c0e, 0x52e213ad,
+       0xd1588f8b, 0x7cd815df, 0xa7ece31e, 0xfd15b8bc, 0xd1168129, 0x2bd6ee70,
+       0x18b3701e, 0x5b3c42b6, 0x139e1973, 0xcc31fcd2, 0x8b8f4537, 0x5adc54bd,
+       0x767b8bc9, 0x4b082904, 0x0dd67e5e, 0xdb4ce5f2, 0x9dc03726, 0xf1adfbf6,
+       0xffe2bdb8, 0xd6f81e9a, 0xf033bff8, 0xb738ca0f, 0x6bbd38da, 0xfb9b93f1,
+       0xe7491ea1, 0xe51b9597, 0x2f5ba39c, 0x53d9fadf, 0xf1de9f10, 0x60a7d9d2,
+       0x7f5fa5be, 0x1dc414f2, 0xdc76bd91, 0xbdcf02ef, 0xddbdf18b, 0xfee36ef4,
+       0x62cf2da1, 0xfbe7745c, 0xd6f42f56, 0x60e4e7b9, 0xdceb3b88, 0xf81265f6,
+       0x99ee972d, 0xa5dd7e86, 0x9324a7db, 0x9685fb28, 0x2e86dd02, 0x8cdb2e23,
+       0x07cd03af, 0x1cea3e30, 0xbfc837c5, 0xa6ce78ee, 0xab1f1632, 0xc6ce38f2,
+       0xbdeff1e8, 0x6f9b36e2, 0x903ae9b9, 0x7f4ccdfb, 0xe6fc64bc, 0xd78f143b,
+       0x1afe065c, 0x7440bf35, 0x7f839dfc, 0x37ad3c50, 0xe6b3efe1, 0x027ebf45,
+       0xf5fb9aca, 0xbe19bf19, 0xf169b80c, 0xbe6c73f5, 0x37c06dc7, 0xf18f3d2f,
+       0x19b780b2, 0x9f3fec2a, 0x097b860d, 0x5cc8e4a7, 0xc7b6b7bc, 0xc43881ea,
+       0x21ef3de2, 0x3f6e74ff, 0xc2687e8c, 0x493bdce3, 0x25c58ff7, 0x0d9d7c0b,
+       0xc9f7162e, 0xa1710fe1, 0xf3bf1baa, 0xc7464ff8, 0x5f685c5a, 0xb3bfa0f1,
+       0x8b5b3d31, 0xf86b2ffb, 0xf659c780, 0x06c84be0, 0xd6fb1d3c, 0x0e0d5b38,
+       0x7b872e1e, 0xc7a39be2, 0xc1c776dd, 0xfe017c73, 0x8eea1f60, 0x81f9a65f,
+       0xf46fd163, 0x0f22891e, 0x5c59eb3a, 0xfd1ca774, 0xef16a9be, 0x8a66c87c,
+       0x5e5d0e73, 0xe6a5f39c, 0xf3e15dff, 0x893f280a, 0xf1d4e1bd, 0xde397455,
+       0x6ffef9c1, 0x2a532fbe, 0x9ce3ef98, 0x6b2c7a05, 0x1d80a63e, 0xf3676ddc,
+       0xbf7076f5, 0x2273c77a, 0x69aec1c6, 0xdc72803a, 0xe1ca2f2c, 0xf3288e1d,
+       0xb7cf9afd, 0x13ed85bc, 0x42b92f1d, 0xc74fda4e, 0xcf485dfe, 0x30c78de5,
+       0xcd8df70e, 0xbaed2b2f, 0x27d808b8, 0x77f9ba42, 0x0c6fb0bc, 0xdefe6dca,
+       0xa71c7987, 0x5ad5fb9d, 0x68138fa3, 0xa7186f3c, 0x78a4d824, 0xef1e979c,
+       0x1dbbe48c, 0xc6d33bfa, 0x4d33c1f4, 0xf768f4e2, 0xdf60bac5, 0x6aae73c4,
+       0x12fdd296, 0xb17135df, 0x77444c77, 0x4b97ea0c, 0x6247d95d, 0x30552013,
+       0x056aa82e, 0xa9fa238f, 0x5df00537, 0xc091bae5, 0x7c03577c, 0xd91e7e75,
+       0x97a027e3, 0x99b929ca, 0xcb3057e0, 0x42c1251b, 0x2ffc3a42, 0x564f4d75,
+       0x3c23bcf1, 0x3479f010, 0xfd0ca4fd, 0xa7e4c5fe, 0xd6448bfa, 0xfdf9d324,
+       0x57782825, 0x57c97ed0, 0x75ca0d1f, 0xcb5feef5, 0x0d17effb, 0x6b72a57e,
+       0x25d828e4, 0xc63b55e4, 0xed7b8837, 0xe0447ef8, 0xf7ae3b29, 0x9e2ff6c0,
+       0xd7fafd41, 0x7dcec256, 0xe542f5a8, 0xf5878155, 0x17fb7271, 0xe817fd4f,
+       0x8e98d0cf, 0xad14f05f, 0xa343760f, 0xae9ced03, 0x80c76297, 0xd5e0a45f,
+       0x3c8266fb, 0x7a30702b, 0x3931782c, 0x3bfb4554, 0x27f2c891, 0xf7c20eb6,
+       0x725e4a0a, 0x81e27c61, 0x61cb3bed, 0xd17cea5f, 0xea5f6041, 0xf9eb957c,
+       0x8ff7f3cf, 0x1f55656a, 0x24445ca7, 0xa44f7f55, 0x1cacf204, 0x2fe09bef,
+       0xf811f38b, 0xf1625aab, 0x7fd5097e, 0x939cfd0d, 0x917af723, 0xd9fd838e,
+       0x7f709abd, 0x7ae60790, 0x766df95a, 0x56036726, 0x53d9ceda, 0xf244a03f,
+       0x3fbabe59, 0x586d2793, 0xd99dbe7f, 0xef795ab9, 0xbf7d597e, 0x3f776fd6,
+       0x7f397dac, 0xbf4cc4df, 0x92dfbc65, 0x32bd7fcd, 0x511dfbda, 0x7fdf8fe6,
+       0x05a09022, 0x766d94f4, 0xee09577c, 0xfc5c43e7, 0x6b9d850e, 0xf8c3ba95,
+       0x2e6eca7e, 0xc2634b8f, 0x7f4b9ef8, 0x0fa80f3e, 0x7f6b6279, 0xdae5df01,
+       0xbef02769, 0x2eabd94f, 0x6cbbe01f, 0x7e2717c7, 0x6ff10995, 0x2ebf8c0e,
+       0x915ff57b, 0xe1acca0e, 0x910fc0b9, 0x11b2566d, 0xa1db7cf8, 0x1dafc0c1,
+       0xfc707872, 0x95d79cb7, 0xf78d5935, 0xce3af9ca, 0x0b5ed654, 0xfbb5a8f7,
+       0xc87dc59a, 0xecec3799, 0xedcfeb5e, 0xf23b6abe, 0xa09df1bb, 0x33b39533,
+       0x56befee0, 0x5d16d8bf, 0xe5d8362e, 0x3b8e4fbf, 0x6c7bdd7b, 0x239cf980,
+       0xf7e0496d, 0x377aa729, 0xcde2f3c8, 0x4fc10369, 0xddaedfb0, 0x6163576f,
+       0xab2fda3f, 0xaa434f68, 0x554e67df, 0x61a4337a, 0x9919bfe0, 0x7475d121,
+       0xefcf9fd5, 0xd15e204f, 0xdc9a3b3e, 0x207761db, 0xacdb14dd, 0x26f768be,
+       0xbcb9700f, 0x71fe8c09, 0x0fe03c6c, 0x72fddc6d, 0xa4f0e508, 0x15eb1518,
+       0xbe08bb53, 0x939e6c97, 0x43d77861, 0x947ac6aa, 0x459e114f, 0xd4c946a4,
+       0xbc6d6fc9, 0x199965a2, 0x977c0652, 0x5e9bb3fe, 0x933c1ec5, 0x85ea0260,
+       0xa9318712, 0x43dc3549, 0x1b5ce490, 0xb9214fc0, 0x5204491e, 0x8f7e46a9,
+       0x3a984d21, 0xdec5baa9, 0x2020aabf, 0x73f14f27, 0x4177f07b, 0xe5af03da,
+       0x8383f728, 0x069e1908, 0xb1a80cef, 0xdafc1d1e, 0x4ef66eec, 0x9841549d,
+       0x01e198bc, 0xfa08447d, 0x9e9437c9, 0x67a72aaa, 0x9fd23d00, 0xa1b7ee0f,
+       0xe7e741e9, 0x25f1bcf6, 0x4e9441e8, 0x3f713bd9, 0x0a2aa120, 0x453b0862,
+       0xc264eabf, 0x775b37de, 0x8dede884, 0x481e38cf, 0x31ca1f70, 0x45f9e927,
+       0x2ac41e68, 0xd8aadbc8, 0x1ce1b3af, 0x6121e9d1, 0x4e1d0bd0, 0xd4d07612,
+       0xa33a4a39, 0x26777fe7, 0xd4e8ebcd, 0x6e58d133, 0xd72a0be6, 0x2136e34c,
+       0x9fbf68fc, 0xd4fdfa9a, 0xdfa7efd4, 0xa706afd6, 0x17a36d80, 0x5d583fde,
+       0xc6e1cb99, 0xb871b3c6, 0x848cf851, 0x2588d9f7, 0xc3cfcbc6, 0x7c31ae11,
+       0x4fa85636, 0x931d9af1, 0x59fa7086, 0xc408deec, 0x5a8492db, 0x2aef7602,
+       0xf4d3ed81, 0xb5d4eb97, 0xf21b1e23, 0x9c7c03e1, 0x472618ec, 0xbdf17bb5,
+       0xff51dbeb, 0xdedf55ea, 0xe898fd57, 0xcd7d5df5, 0x3e7d11c7, 0x5ff47d71,
+       0xffda88ed, 0xe54b9577, 0x3bf7beaf, 0x96edb738, 0x7a0a1e4f, 0x1d999ea3,
+       0xdc667a03, 0xf1dbaf89, 0x6d33d30b, 0x8ef88d03, 0xf4a6fa01, 0xf8cc3316,
+       0x7d274cdd, 0x5f1e57d1, 0x533bcd07, 0xe0ee1c29, 0x606d4fe3, 0x2d77dee7,
+       0x6a3a7e65, 0xfea0fa1e, 0x1dfebc9d, 0x37f402b6, 0x40efe31c, 0xf4cb55dd,
+       0x17eebbc8, 0xd7ba7cf1, 0x0ff0473b, 0x2f776fca, 0xb4e14213, 0x9136ef68,
+       0x3587b806, 0x7e6f8f8f, 0xd44fc907, 0xb462759c, 0x5d189077, 0xccb7f76a,
+       0x242c1fef, 0x2b7dfcb9, 0x763df7e3, 0xacfcb74f, 0x8fb3d51e, 0x74a51f05,
+       0xa527fa0f, 0x8797387b, 0x1718496b, 0x5c5856e2, 0x3c20db48, 0xdfe4d34f,
+       0x2c6a9185, 0x37c4d7ec, 0xb0f77d98, 0xabc64bef, 0xf93a71c9, 0x318c5d2e,
+       0x255303bc, 0xbe40537b, 0x26af17c9, 0x1595352a, 0xbaa9246a, 0x22b7aa72,
+       0x26f843f3, 0x2914a9ca, 0xf2517204, 0xd00292e4, 0xcf46657b, 0xe1257d5a,
+       0xf33d6eea, 0x457ffa6d, 0xe5d2224c, 0x326ac592, 0x2390f38c, 0x127c0577,
+       0xbf5ed9dd, 0x043d37b3, 0x5775b2b7, 0x7ad3bac1, 0xf14aa7af, 0x9edf517a,
+       0x8e6efdd0, 0x5a27e60d, 0x9854f7d5, 0x04cbbfdf, 0xe1bd2efc, 0xa2153de3,
+       0x034217e5, 0x8c443e30, 0xc602319d, 0x5c81ded7, 0xe7829957, 0xfbf8abb3,
+       0x472aab90, 0xfe41fe62, 0x4a9ae77e, 0x7e0d5315, 0xbe356f36, 0xc61b685b,
+       0x3879b7fa, 0x1c2c127e, 0xafd47e3e, 0x7815296c, 0x54f7686e, 0x30bde184,
+       0x2bee9032, 0x354f6d30, 0x10f14fc2, 0xfad25bf4, 0x9e42b798, 0x28ed72a6,
+       0xa9e487c4, 0x6fa00520, 0x03cffc39, 0xfed5da1f, 0xad10f786, 0xf5be4329,
+       0x7a6ec3fd, 0x68e4c0da, 0x3327a702, 0xf614127c, 0x4746a83e, 0x5561e97d,
+       0x8ab7ae3c, 0x0556ffbf, 0xb85110ef, 0xc3e9563c, 0x47bf8ab4, 0xc7e14554,
+       0x134c5ef2, 0x55599db9, 0x8fe58d99, 0xee977df3, 0x3bc69803, 0xb04afc98,
+       0x0193ec54, 0xf984f14e, 0x64821347, 0x21611660, 0x094bf0a4, 0xdaf21512,
+       0xa46aa339, 0x9923d10f, 0x1f53b1de, 0x1cd53c07, 0x67e02d92, 0x68dd9717,
+       0xce2a5fb8, 0xdf81c5f6, 0x05fa744d, 0x067f3fd8, 0x7bf3a678, 0xdf13ce94,
+       0xb1f4e56d, 0x5ac1d39a, 0x000f1f4e, 0x21f4d0bd, 0xd08f274e, 0xcabe4275,
+       0xac21eecb, 0xe5e2ce9f, 0xfc2dd212, 0xd130b71d, 0x79c5a3c7, 0xd742889b,
+       0x8ab43a89, 0x47d3be29, 0x7e91588e, 0x4f88a31c, 0xcb23f284, 0xcd1dec43,
+       0x77d854dc, 0x3377b4e3, 0x7371aa27, 0x586d62f0, 0x89d9efe2, 0x8b696ecc,
+       0x95653efa, 0xec0dbf77, 0xe3e6beff, 0x56d2faf0, 0xb51cf1d3, 0xfbd7d42e,
+       0x2ce773f9, 0x2d6779a2, 0x9409dfd5, 0xd2753a33, 0xe8e81779, 0xff87d1c3,
+       0xc371cea0, 0xdfe7c0d7, 0xf14586c0, 0xa1daf3fa, 0x852f8076, 0x927e0ab5,
+       0x54dce4c7, 0xc58f0790, 0x9cf7f745, 0xb67a618e, 0x036af33b, 0x3ec8d77d,
+       0x3899e76c, 0x3507c0d6, 0x4fc50e5c, 0xaef8609d, 0xe0ff9dc9, 0xf0e43dfd,
+       0x7ce83bc7, 0x454e2e92, 0x39b84e3e, 0x92aa1cba, 0x2fbc2095, 0xc99a3550,
+       0xc29e60bd, 0x725eb3f4, 0xfdbfa085, 0x46c47f82, 0xf468b3f0, 0x393092b5,
+       0x6f4c2416, 0x4bf5d6d1, 0x379477a0, 0x55fba41e, 0x2f3407c0, 0x6e90530e,
+       0xa0b2ee92, 0xf386bb9d, 0xbf9c83d9, 0x7abe73d6, 0x046af818, 0xc5eb63bc,
+       0x9f9ce7f4, 0x68ff806a, 0x31a473ea, 0x9f7f063f, 0x5797d348, 0x7be2c6da,
+       0x0b4e5574, 0x7de925ca, 0xfa09c86b, 0x1ef1bee7, 0xae882ff0, 0x05df8f4c,
+       0x1f3699e5, 0x65c4339c, 0x3e5e807a, 0xe2bc2d77, 0xe928e2db, 0xaa2ef888,
+       0x97bf3324, 0x7c972127, 0x414f0a38, 0xecb47ef0, 0x1f8099b9, 0x0a84f1f4,
+       0x1af9c03b, 0x6ac3b307, 0xee10b2f3, 0x1cd31f14, 0xe498f3ba, 0xbf7637d9,
+       0x3fdd0627, 0xeb3dc7de, 0x17ae0e59, 0x61920c0f, 0xcb50f93a, 0x6a23abdf,
+       0xc9d48c90, 0x73c39589, 0x7a8ff808, 0xe43e87cb, 0x2f2626e5, 0x0fbe04ab,
+       0xedaef099, 0x94bc9a7b, 0x7afdef00, 0x15f573cf, 0xc3f70dd3, 0xcdef2e64,
+       0xcc1d8af5, 0xbc435b1e, 0xbbd0bf11, 0xd8a9c29c, 0x9497b3a1, 0xedbb1b84,
+       0x59461fe1, 0x9e2e5987, 0x6412fd82, 0x77c7e48d, 0xea2a164d, 0xde41e3e3,
+       0xd7c596fc, 0x684fa5f4, 0x2c5c15e3, 0xff20bd44, 0x4bee3662, 0x91d3b585,
+       0xfb78087f, 0xc9d87675, 0x01b89fba, 0xf96b27af, 0x1c9d6bf9, 0x7d97b882,
+       0x787bef1b, 0xc2e7850e, 0x7f3c44a7, 0xa2007b85, 0x64827e2e, 0x6a07a8aa,
+       0x0c9dbaef, 0x9fd6e3dd, 0xc2ffe793, 0xb2fd03ee, 0xafcc3a2f, 0xa81fee8b,
+       0x5e827f82, 0x4123bc4b, 0x43faa56f, 0xc5fa0c24, 0xdef8edcf, 0x6e0f9685,
+       0xc77d4474, 0xed31d4aa, 0xa97b8011, 0xa438f7c3, 0xe78f19c4, 0x03f37d01,
+       0xf804f71b, 0xee1ce164, 0x4bc71e09, 0xe0cb3ee1, 0x70e7639f, 0x85bfb827,
+       0x8f28fad8, 0x1f6ae5e1, 0x2f166ee5, 0xcbd13c43, 0xc53f66ff, 0xc0765ea8,
+       0xb2d3e02e, 0xde6bb3da, 0x7f462fc7, 0xc76e69f3, 0x08e8dc2e, 0x5fa28cad,
+       0x1cf7e42c, 0x14f3f217, 0x774ebe8d, 0x2e8c71eb, 0xe94ee1bb, 0x44cbe90c,
+       0xa3b3c2c7, 0x393f6e91, 0x507fa328, 0x7c3af678, 0x22fca64f, 0x65d2881d,
+       0x047de8a9, 0xdbc8c8e2, 0x3df5d222, 0x39e1c687, 0x1de9875a, 0xdf5cb3cb,
+       0x8bfcd2d0, 0x37bd06c5, 0x0140b43f, 0x62ff20bd, 0xc43bd239, 0x7abdc26b,
+       0x3ebfce42, 0x3b74e249, 0x9b9fda01, 0x5bf692b6, 0x83f8ced0, 0xa3960c4c,
+       0xe1deb39f, 0x99987f05, 0x543ace3e, 0xa0a3df83, 0x27fb14bd, 0xd04920ce,
+       0xe42c1bc5, 0x5c17b5ef, 0x1236ef64, 0x00a4904f, 0xd67970bf, 0x77c6f743,
+       0x8c2c3b7b, 0xfdebcc1e, 0xabf3af8a, 0xe84ef5ee, 0x603fbd63, 0x467ae5eb,
+       0x69b67b41, 0x1f1abf5d, 0xeb3d5d6d, 0x4bed8899, 0xa5cb3bf9, 0xad778616,
+       0x8d93b87c, 0x2a27a5af, 0x210dc367, 0xcbdfc452, 0xa3dd0fcc, 0xf950fbc0,
+       0x82f17175, 0xb5059d6e, 0x62e21a77, 0xf0f36bf2, 0xba82b07d, 0x6ebe653c,
+       0x53c6ea7f, 0x1e86f9d0, 0x5bd7c34f, 0x754f0073, 0x2738dc8e, 0x6533e7f0,
+       0xa042bef7, 0x53b7865f, 0x054c704a, 0xdc7badca, 0x0cd1eed1, 0x56f09a77,
+       0x2c36f1cb, 0xe4e94648, 0x732f8698, 0x4a9b13fb, 0xf5f385ee, 0x6bd81b13,
+       0xb1cb7d28, 0xc334f8e8, 0xe7e1c7d1, 0x48e386eb, 0x34badb8c, 0x8867bf1c,
+       0x8e13eacf, 0x9c1aff1c, 0xaf54efb4, 0x71c4ef1b, 0xb04f7b09, 0xe0b2fb36,
+       0xa33e33d7, 0x6f8a538f, 0x8f9006c4, 0x9f030e54, 0x67e67e9e, 0x4aedf463,
+       0xc1a6931d, 0xf2faa438, 0x715ef7ce, 0xfd4267f8, 0x41ef64e0, 0xe8b9e515,
+       0x2eeba2ad, 0x33a27d8a, 0xee35ab8c, 0xd52bab8f, 0x44dfc0eb, 0xc0eb94ed,
+       0x7d732bef, 0x96be808d, 0x8fa7dec6, 0x62d66ef6, 0x563bd327, 0xbfa05657,
+       0xc482d898, 0xc2497e03, 0xca9c92f8, 0xe49dff40, 0x8a19ea34, 0xbf80f7ec,
+       0xb0f7e150, 0x2ebfc965, 0xebec132d, 0x0ea0f484, 0xd32701be, 0xeca7d68f,
+       0xd81f80f7, 0xbf07fb4a, 0x74a06d81, 0x786fe0c1, 0x8fd85a4d, 0x2cf69dd2,
+       0xf2690c6a, 0x5ffa0209, 0x2ffc982e, 0x48f30c17, 0xec36f3a0, 0x48b84693,
+       0xdb9e3736, 0xddfb8448, 0x17e83c38, 0xb96bc394, 0x70e95e1c, 0xe6b6fee3,
+       0x27da0b0a, 0xf79fdc35, 0x21e3f04b, 0xcff4245c, 0xd410d842, 0x3ad96257,
+       0x15f7e0ec, 0x63086ec1, 0xe92f05de, 0x9904f888, 0xa238f900, 0x47ef900a,
+       0x0f406bc2, 0x7ed49aee, 0xdaf77c2f, 0xdf000ffd, 0x76da9e7e, 0x6e3f0054,
+       0x804affae, 0x4c18ad73, 0x5ffd6957, 0xa874918b, 0x1d169837, 0x15e96789,
+       0xd7edc710, 0x77b10f9d, 0x62f27b4a, 0xcb15fcef, 0xc979d324, 0xcbea5757,
+       0xd5f76e7f, 0xecaa3cc2, 0x849eddec, 0x7394048f, 0xfa7edd55, 0xf477bc5c,
+       0xedc593b2, 0x5d005d20, 0xc07a641d, 0x8d8d4905, 0xc8dfff47, 0xf30cd78c,
+       0x12f21af0, 0x281aabb7, 0x73ba4a9d, 0xcf926189, 0xbc347402, 0xcfd77e9a,
+       0x16fe8a33, 0x7a67c4ef, 0x68879ea3, 0x22e3a3f3, 0x73178abd, 0xa2633ed8,
+       0x9b02dd87, 0xcac8b07f, 0x14121fec, 0x3473af01, 0xb15693c2, 0x7ed11c7c,
+       0xafbc7768, 0x2ac9e9f9, 0x5cb0f796, 0x173b3e60, 0x4e67cf34, 0xf036daeb,
+       0x4d69cf8f, 0x44e7005d, 0xfcaf0a73, 0x72ddd218, 0xe403bf64, 0x3bd84fc4,
+       0xfbbc77a3, 0xe85b0c9a, 0xe23677f6, 0x39b7ee7d, 0x1125ce3f, 0x27eff019,
+       0xf9f9851e, 0x0f3dec43, 0x26f9e5e2, 0xbbe7ec19, 0x7edba1c2, 0xbf777344,
+       0xa811fa16, 0x460f732f, 0xf9b4075e, 0xe8393c9b, 0xb5dad74b, 0x7960df78,
+       0x0e1baed6, 0x4877fe76, 0xabae1b24, 0x8436dd67, 0x5a4eb683, 0x0dd1f113,
+       0x926efe27, 0x75ee9706, 0x11bcee3b, 0xc97d97fc, 0xd1b639b7, 0x62b8b31f,
+       0x9c332f36, 0x2a22853e, 0xf4e0ff1f, 0xf7f9059d, 0x01d7d3ba, 0x322da969,
+       0x7c821a58, 0xb97c8113, 0x8922bfe8, 0x20dce1c2, 0x008995ff, 0x977eb68f,
+       0xb51ec7a5, 0x34707933, 0xf81fb34d, 0x4cb5f47b, 0xe9c79b2f, 0x93f6cd6d,
+       0xe21f7eef, 0x77b10e89, 0xf544caa0, 0x1fd0fba6, 0x7a689227, 0xe51e96b5,
+       0x65cdaff6, 0xb2b6efe1, 0x1893ce75, 0x3b35e7bc, 0xbcd25ef0, 0x9de1a265,
+       0x58cb79e9, 0xda911fbc, 0xd06adcc6, 0xba71577b, 0xd80fddee, 0x167ee6e7,
+       0x768c9b2c, 0x33c50edb, 0xa7f5ed09, 0x982d9d18, 0x4e2113ea, 0x013ac27a,
+       0x8fe321fd, 0x34ed2dab, 0xe71420bf, 0xb05d7605, 0xbc06497c, 0xc6de50f7,
+       0xe2c975fc, 0xd29ff4e2, 0x6cfdb1f4, 0x62fc85ff, 0xa7d39380, 0xedfe753a,
+       0xdd22b90e, 0xb77cf403, 0x20f207d3, 0xfbdf56ef, 0x5ecd4f80, 0x9d88f4d7,
+       0xb8865f74, 0xd4bbbcb7, 0xbc8fa06c, 0x530fbb26, 0xa862911b, 0x8893cb5c,
+       0x8564d20d, 0x63487648, 0xacd20d88, 0xef3dec95, 0xb859dafc, 0x73b3bb9f,
+       0x37d77815, 0xcfd9f5af, 0x14817da0, 0xe8e827de, 0xd0f5af29, 0xc87f7897,
+       0x8d718b97, 0x18acdbdf, 0x4dd1a8ec, 0x2d35fcc6, 0xd87a7cc6, 0x6838cf98,
+       0x7507afcc, 0xed37a747, 0xf3cec3df, 0xfbb2ce4b, 0x1850af90, 0xad8f00c8,
+       0x538f9456, 0xe0b35a4a, 0x0becf87c, 0xef940b2e, 0x23b32bfe, 0xf8ec5b23,
+       0x3fbedbbe, 0x881890c6, 0xbed17c53, 0xc6cfca11, 0x9f816534, 0x38c7d68c,
+       0x8ebbba0f, 0xc7683b00, 0x86bd1ad5, 0xc7641e30, 0x3f9e2cd7, 0x821ac5b2,
+       0xbbb3e773, 0xe8017d9e, 0x0196ecf3, 0x22bd1fa8, 0x6fd02d04, 0xff8601f0,
+       0x836e3109, 0x6cd92a9c, 0xb8e72fb4, 0x75d5de98, 0xfe07995a, 0x8d6b2b8d,
+       0x642abeeb, 0x98b9e7cc, 0x744f9a9c, 0x3ce0d3df, 0x02935d5d, 0x24d3ecfb,
+       0x42c93dea, 0x3dcf17ce, 0x2b7468a7, 0x88d877f2, 0xbf73d49a, 0x39cf776b,
+       0x9401d2d7, 0x16004a8e, 0x97be7a43, 0xfad5c698, 0x7db170cf, 0x2f9f8120,
+       0x1112de44, 0x0b2a673e, 0xdde1e70d, 0x37a56c7a, 0x9d30ea65, 0x2fbb589e,
+       0xc7f50f29, 0xf5f3497d, 0x0396dbf6, 0x3c427749, 0xff0966cf, 0x9ce955ce,
+       0x909e1e67, 0x26c5df00, 0x83942f98, 0xf4d1d90e, 0x51ea1bba, 0x3eac753d,
+       0x76a0a63e, 0x1d54ca5c, 0xba577e9f, 0xdb9f7eec, 0x33b3e0c3, 0x1f96f73b,
+       0xd4977c51, 0x56a85e89, 0xbfdb74d2, 0xd7b8068c, 0xb79f78c9, 0xef8c9b74,
+       0xafea07c5, 0x49457f45, 0x7c1ce1e3, 0x9e437097, 0x2595e617, 0x2c715c91,
+       0x856e28ba, 0x76eb54f4, 0xe4afcf7c, 0xa48a35cf, 0xf48d7cc2, 0xf90de941,
+       0x594a6a90, 0xf80f0337, 0xae1c6056, 0xd70cddf6, 0xbdb190a2, 0x732f5f19,
+       0x91bfa1fa, 0xeb9bbc7a, 0xc4119bf5, 0xba5317bf, 0x9d27ca8c, 0xbc7a521d,
+       0xcd00e31a, 0x4a73a0e3, 0xfb0ede77, 0x68fc8a9c, 0x113dfbe7, 0x4e3c596c,
+       0xe3cb2876, 0x5f4082bb, 0xc9abfeb0, 0x71ee1554, 0x43a64cde, 0x7e108afa,
+       0x5f191458, 0xab63ffa3, 0xc3baf903, 0xafccfed3, 0x471a1e80, 0x7f4bf9e3,
+       0x43b5af7e, 0x8c7be30d, 0xe899dfda, 0x717cb0f0, 0x48e31dab, 0x50539ece,
+       0xf880adee, 0x82ffa835, 0x7aa162dd, 0xfd6dd9d7, 0x643c4326, 0xa77b1347,
+       0xbf534cf7, 0xecb7cac9, 0xd5fe66a3, 0xf063b7f6, 0x1e0fba4f, 0xc3fef971,
+       0x2ac6fb05, 0xdc9a2f16, 0x22bd22af, 0x76b49e0a, 0x3a454a09, 0xbb9119d8,
+       0x4c8dde9d, 0xd0934a2f, 0x76829c0f, 0x73f71e7f, 0xdb9b167c, 0x68bafd0e,
+       0x3ffd1f5d, 0x11b8a0fe, 0xd123ebe8, 0x6867af7b, 0xc2e0b9cf, 0x9bde3f4c,
+       0x41083fc5, 0x91205fc7, 0xd8f544b0, 0x8c3fb005, 0xc1ca3cc1, 0xc6027505,
+       0x6f5c2d4f, 0x1bbc0f5c, 0x0ad7dfab, 0x0d932fe1, 0x26987885, 0x8ceb0b4c,
+       0x0fb045e5, 0x05ce31b8, 0x1b8a04e3, 0x8484e58c, 0xda53bfd1, 0x1a358df8,
+       0xda233edc, 0xe9ff7cfa, 0x190fc832, 0x62c7c7e5, 0x04afae2e, 0xde9a52ac,
+       0xc0d9f7c1, 0x8594ecf2, 0x365aed34, 0x06616521, 0xfb65efdc, 0xf20ab211,
+       0xaa7f7b23, 0x0f092a64, 0x1081ef62, 0x5a4ae7d8, 0xc868f085, 0x3dd048db,
+       0x77877d96, 0xfadd6011, 0xbada31fb, 0xeffabd61, 0x57861de4, 0xac157eed,
+       0xca5e5f57, 0x68da50e1, 0x2619f835, 0xd7410a34, 0xa36f7035, 0x3795db1d,
+       0xf435637f, 0xba51f7cb, 0xc53b12ff, 0x7ac284d7, 0x58f31611, 0x5d0e3cb7,
+       0xfefe2d15, 0x63df8728, 0x02a7e5b7, 0x7a023ebf, 0xe00e7f64, 0x041e426c,
+       0x218139a1, 0x8bc746c2, 0x63cee8c9, 0x964ad679, 0xf13b9eff, 0xd481dafa,
+       0x78fd92ee, 0xcc40b22e, 0x75ee037d, 0xaff8f7ad, 0x1671d371, 0x25837c58,
+       0x08df5be4, 0x632dd7f4, 0x6c7c7870, 0x511555c5, 0xbf0d5bec, 0xf09a14bf,
+       0x8bb832bc, 0xccae87ed, 0xc7f7ac88, 0xf266e0de, 0x3b7f7628, 0x6c8867de,
+       0xe51ef017, 0xde18e106, 0x8370dc33, 0x4efec04a, 0x790278a1, 0xab2041b9,
+       0xccaffde0, 0x5f8b59e6, 0xc6673c07, 0xb41ce178, 0x589279ac, 0x33f5c4e6,
+       0x5151c9bd, 0xc913e70f, 0x058e46f3, 0x9eeba73a, 0x7efd3377, 0xf1c55b93,
+       0xef0c9d52, 0x69832b29, 0xf8c1464b, 0x075f8bb9, 0x831d1c3e, 0x29936ff7,
+       0x98f15cac, 0x287d03ae, 0x03efa485, 0x43329eb9, 0xe0be0b1d, 0x9c6cdcc7,
+       0x6f388b44, 0x636be816, 0x7efe3e59, 0x8911b7c1, 0x271c51f0, 0xc3a64ad9,
+       0xe83be17c, 0x07f03677, 0x9ef87538, 0xe30e9152, 0x69650f27, 0xb8c61282,
+       0xbc3537a8, 0xa4f8b2b7, 0x72821ea5, 0x9397e97a, 0x7b1ec192, 0xc61a83b3,
+       0x39bd7e54, 0xc317b350, 0x87a7d44e, 0xb9f5648d, 0x9d34bd3e, 0x0c27fdc5,
+       0x5618f4d6, 0xc5f64baf, 0x3d5c8066, 0x4feaf4cc, 0xa3f43e9d, 0x8f44ab5e,
+       0xf1ce5e3b, 0x4318b814, 0x89f3ba42, 0x51cfecc0, 0x745c0bdf, 0x9f6e9093,
+       0xf4ecf780, 0x85a5abf1, 0xf15df1fb, 0x7186d232, 0xc64d65d0, 0x636bdb78,
+       0xd1ab8fa2, 0x85a2e079, 0x1921fb04, 0xea3b040f, 0x66b2214d, 0x07de0251,
+       0xe06cff44, 0xba8242a2, 0xe31703f1, 0x79eef98d, 0x3d3f6126, 0x5eb188f5,
+       0x8f5817cb, 0x61bbb764, 0x3b4f4e9c, 0x8b8123ee, 0xf6d3b612, 0x2590ae9b,
+       0xee7e5328, 0x17795954, 0xead25f3f, 0xce75fd6b, 0x1f7df856, 0x4770cef6,
+       0x143c1525, 0x9eb44f2e, 0x69693f47, 0x8b843eeb, 0xf03d0f46, 0x0ea09071,
+       0x6d55493e, 0xede50b61, 0xf1fe1f17, 0x515751da, 0x7ce7ec54, 0xd6bd9c1c,
+       0x09206947, 0xf1d751de, 0x9bb323b5, 0x3ccc51cf, 0x3fb91166, 0xa9dace73,
+       0x5e797503, 0xf07dbbbf, 0x3ca1eb8e, 0xbf6b1473, 0x7f3be1eb, 0x0f9d12b3,
+       0x39ae3cd5, 0xa5d73832, 0x794cdbcb, 0xd68fcd27, 0xf2a63de5, 0x8a795304,
+       0xd5903f29, 0x078570ef, 0x5e425e8b, 0xf5de787b, 0x3af2f7f0, 0xe173c352,
+       0xe2f582e5, 0xefe1ebfc, 0xb2659663, 0xde58f7bf, 0x9d05782a, 0x3eef2cfc,
+       0x16576e5f, 0xb438028c, 0xa07201bd, 0x80f045b4, 0xda6cee7e, 0xb43cc616,
+       0x9aed7553, 0xda581d98, 0xf5db0c74, 0x0b48ffd9, 0x2383f1f2, 0x977ac43f,
+       0x3321173a, 0xa62f7f8c, 0x639273af, 0xee4fff82, 0x8df79ec4, 0xd7bdb63b,
+       0xe8faf7f3, 0xdf54cef7, 0xa6a39401, 0x9801affb, 0x4f87b38f, 0x383e3834,
+       0xf7be02f2, 0xd6e8c1f8, 0x701d4177, 0x02bf3d2c, 0x973fcbf4, 0xfa071c9d,
+       0x0919bc16, 0x852fc6fb, 0x1fb055d0, 0x57fc413d, 0x9777b8c1, 0x4f07df0d,
+       0xdb951f90, 0x80f7849f, 0x77dc8f1d, 0x77e744bd, 0x083ed5d4, 0x2b9224fe,
+       0x27cb0d76, 0x124be3b6, 0x596bb1c5, 0x20fb507e, 0xc5c7cd0b, 0x1d7c476e,
+       0x24fede1d, 0x3ec7c7e4, 0xdba3f2c9, 0x301e8907, 0x7eba9e25, 0xc9bfad2a,
+       0x2ddf9d13, 0xd21eccb1, 0xcc3317e6, 0x0b8057f7, 0x0dfb6529, 0x51b4af5c,
+       0xf8b73a79, 0x144dd6cc, 0xcdff731e, 0x536e7281, 0x32372dc7, 0x0b98393d,
+       0x1cc953f1, 0xa21fb8de, 0x9f50975c, 0x303d8548, 0xae9f07be, 0xee2a6dc1,
+       0x6c575717, 0x7921bd03, 0x2fdc28ee, 0x257cbb0e, 0xa93d89b1, 0x38534894,
+       0x30f58b07, 0xf05a2db9, 0x3ef93ebc, 0x8f51ea17, 0x29c1f7f0, 0x387d21df,
+       0x63925e39, 0x8e4cdc99, 0x45d7f665, 0xe7ec34d7, 0x836f828f, 0x0494844d,
+       0x8b17e8ed, 0xcee57d41, 0xa8572a7a, 0xf3e1af5c, 0x2af479ae, 0x09dc37f4,
+       0xf051defe, 0x3f1a97dd, 0xafff47aa, 0x6779a749, 0x33567d8f, 0x3faa97cb,
+       0x67a9ad6f, 0xaadc9ae5, 0xb5ed6349, 0x8ab92afd, 0xc8fc938d, 0x1d611b55,
+       0xdc60890e, 0x23d9a2ea, 0xfdc0ae36, 0x2f9c66ff, 0xc152f9f1, 0x345e3e9e,
+       0xa97a02c4, 0xc3d19f86, 0x7e50e97c, 0xd1a73f07, 0x2fadd4f0, 0x70bb32c7,
+       0x07f54881, 0x7e3c97d0, 0x13ea8fec, 0x3b61d863, 0xe84a27d3, 0x9a1e319a,
+       0xed4897c3, 0xfffbe0e3, 0x18fd3821, 0x86efe8e8, 0x0e7adfd3, 0x5443926b,
+       0x7cc314de, 0x349d96ca, 0x70e1fbde, 0x9610a5ff, 0xef753393, 0x60efd0b1,
+       0xfdba667f, 0x7e75638b, 0x95f7b998, 0xada9dea1, 0x3baff1c7, 0xd4dfc3a7,
+       0x59a7f334, 0x47fa3c2f, 0x07f47adb, 0x8f284d2a, 0xf048de8f, 0xfe51c9fe,
+       0xd7a6961e, 0xc95bfd66, 0xfdbf609b, 0xf8445639, 0x52f8203c, 0x500f1e01,
+       0xebfb807a, 0x9e2c59c1, 0x6b8fdb46, 0xf21b42e2, 0x1b6e1e81, 0x5df2e785,
+       0x04d5c584, 0x5eb03997, 0xda3b5c4d, 0x55e335e7, 0xd0099d0f, 0x3231e207,
+       0x50bf4147, 0xb3a33a4d, 0xf1aba29a, 0x97a5093e, 0xc39fb620, 0x1666aee8,
+       0x66a2fb41, 0x9bd20a4e, 0x30ec849d, 0x27e8be9f, 0xd1f98aa9, 0xa31be488,
+       0xe16f573f, 0xd991c0f2, 0xd03dfdbe, 0x51dbd763, 0xe254058f, 0x32754979,
+       0x41d297ce, 0x3444f008, 0xa917edbb, 0x4ed107a1, 0x603fa2f4, 0x8797cbad,
+       0x43a9fff3, 0xd9d7f985, 0x58db3ac9, 0x2ac87f30, 0x3e7c9394, 0x8c71faa4,
+       0xacfcd0af, 0xe0bc297f, 0xc5e3fd02, 0x807f6ed8, 0xf9f3ec0f, 0xbfcf9584,
+       0xec0c71df, 0xb3f7f9a9, 0xbac975f7, 0xf9e33e69, 0x126b9d07, 0xaff9c9f8,
+       0xba02e236, 0x373b43f1, 0x2e9ffff4, 0xbfe47fb8, 0x25e7dd9f, 0x647eda41,
+       0x9cfdfb4f, 0x6c8ae7df, 0xa1d2a4fe, 0x751f7b46, 0xe80fdf3f, 0xf1fa7dfc,
+       0xfdcc71b4, 0x00f23b52, 0x3dc28bc0, 0x22acf70c, 0xcf7f653f, 0x04df3cc1,
+       0x9d90f225, 0x14adcf96, 0xc0efe0e3, 0x70b997fb, 0xe77cdabd, 0x43ae4725,
+       0xffa9853f, 0x2cf28e13, 0xf66b87f0, 0x675fb90f, 0x945c21ff, 0xef08bc9e,
+       0x8ed04410, 0xdb9df5ea, 0x93bb66cd, 0xfaadaf90, 0x16f7dd7a, 0x7f34c154,
+       0x20aa574e, 0xfcfcde01, 0x22515f3c, 0x995e4173, 0xf3c1ade7, 0x1a33973c,
+       0x7de1985d, 0x27780fbe, 0xa083ed28, 0x2b32ff5f, 0xbfdcc9c2, 0x6e3e9fb6,
+       0x0f13fca7, 0xd20253f1, 0x0772ed6b, 0xf65d8fee, 0xaf7833c8, 0x88f5ef73,
+       0x18a2ceef, 0x3c1bee15, 0x3c76d541, 0xcecbd90f, 0xb446ba43, 0xea7e008f,
+       0x51f66ba4, 0x25be74fc, 0x6d0507d6, 0x7a3f5412, 0xf408dc4b, 0x06ebb9df,
+       0x01bfe7ec, 0x85d8a80c, 0x00008000, 0x00088b1f, 0x00000000, 0x7dc5ff00,
+       0xd554780b, 0x733ef0b5, 0xcc923cce, 0x64c93324, 0x249f7932, 0x9c440210,
+       0x3df010c4, 0x53518784, 0x7c5a203b, 0x1e121c5c, 0xa8992609, 0xbd6f17ad,
+       0x4844033f, 0x44683010, 0x450388a0, 0x836d5bc5, 0xc1301a45, 0x6b6a2941,
+       0xdb5e85fb, 0xbf3f7a2b, 0x571f1108, 0xd2941192, 0xd6bfcb56, 0x7324fbda,
+       0xd2d28926, 0xd3ef9bdb, 0x9f7b3ec3, 0xed6b58fd, 0xfa7bdef5, 0x2ca82457,
+       0x6300b18f, 0xcf0c94cc, 0xb3965fe0, 0x184ec644, 0x00ac4c7a, 0xe6669dca,
+       0x77f4622d, 0x87ebfe1e, 0x194b6aff, 0x8219081b, 0x89e14bc6, 0x058c6515,
+       0x4f42133b, 0x5fc161e7, 0x358c9cc7, 0xd6cf11de, 0x4834f04a, 0x37d4035e,
+       0x5a109d2e, 0x16375125, 0x9eac62e6, 0xacf50977, 0x32fe8259, 0x51d4d664,
+       0x85e3e58c, 0x3af316f7, 0x8dddda05, 0xdda950ff, 0x57e60961, 0x23d7596f,
+       0x1d98fcc3, 0xa5fa83fe, 0x9ee30f58, 0xa16bbfc7, 0xf9ffbadd, 0xb8dfe71a,
+       0x196de617, 0xf3fd779a, 0x652c75fa, 0x9a7aa1a6, 0x54b19077, 0xae6012c6,
+       0x83367f38, 0x7cc2c685, 0x509ca26d, 0x119213d9, 0xd82acb4e, 0xfa681489,
+       0x9f2cef6a, 0x583beb15, 0x1f033c35, 0xe6086f33, 0x8ed7457d, 0xbda132d7,
+       0x1b27b2a3, 0x76581b97, 0x977d65ef, 0xc621ff61, 0xf3cd0f26, 0x328daef2,
+       0xf478d2b3, 0xbbc54c1d, 0xc6ed4ac7, 0xfa24b9cf, 0x4bbe92b9, 0xe177c835,
+       0x2af8bd78, 0x4de3811d, 0x4d9c6097, 0xb586f975, 0x0504af30, 0x175cc15e,
+       0xb9db8db5, 0x2dece082, 0xec63639c, 0x977644f1, 0x29e9e08f, 0xeb7f41f7,
+       0xecb315ec, 0xa39a5fd0, 0x953d9a62, 0xe1b3e38f, 0x975161f2, 0xf62fcd0f,
+       0x6b47c1a9, 0x54d05697, 0xbd1d64d2, 0xe1c4d39d, 0x1492d916, 0x51f389da,
+       0xfe2f2a24, 0x5ac771b5, 0x74429f9a, 0x7993ef73, 0x2d7f9c21, 0xab7a236b,
+       0x93132167, 0x05859da1, 0x162e8113, 0x7824b343, 0x666cd92e, 0xeafe146a,
+       0xbd72fa42, 0x25243e12, 0xd0f4bd22, 0x8eef77f7, 0xc2c19fa9, 0xb06fa836,
+       0x3e0270b0, 0x8df5f43b, 0xfde8222c, 0x3dfa39bc, 0xbdebe76b, 0x31dde04b,
+       0x61fb2423, 0x18e25bdd, 0x06c64b8b, 0x2b9f846d, 0xf841dc1e, 0xe6f52a4c,
+       0x8aeb043d, 0xecf469bc, 0x50fdba04, 0xcf834be0, 0x37154997, 0x65e3dc22,
+       0xb23fad03, 0x13b42122, 0x6067dfd6, 0x47ff88b5, 0x39aeec1c, 0xae5fecf0,
+       0x218cc7ba, 0x3a424d30, 0xdaf38588, 0x48b57103, 0x1bb43f37, 0xb1e57474,
+       0xbdfe091b, 0xfb8b5626, 0xf4257ca9, 0x3fb51c57, 0xf1fab56e, 0x897695bb,
+       0xdffc43be, 0xab67f88c, 0x8f6c3be8, 0x197f1674, 0xb5df6a7f, 0x97a27b62,
+       0xf0a9fc8d, 0x2ea9bf7d, 0x6fe2077e, 0x8c0d1e88, 0x67d8b1e8, 0x101d3842,
+       0xc680e27c, 0x9ccd9a27, 0xf9f6284f, 0xe07ca0cb, 0x5acf62e3, 0xf22b1380,
+       0xa8fa402e, 0x455e34ff, 0xd3e378fa, 0xb7f878ff, 0x63fa7f50, 0xfa866a93,
+       0x80334885, 0xe7120387, 0xe2dbc12f, 0xaef0d3d9, 0x8e31b61e, 0x5c6fbf5b,
+       0xeefd0828, 0x1fd53283, 0xf538d1b4, 0x8b2dfe89, 0x17fa9fa0, 0x99403d53,
+       0xe86365ec, 0xbeb067b9, 0x34f3ce3b, 0xcf1f5bf4, 0x40feb4e9, 0x40ff7d26,
+       0xc459ff9c, 0xf439864f, 0x1f229f93, 0x79ecc578, 0x59a71e1a, 0xffce3178,
+       0x849c4774, 0xbae38eed, 0x7509e092, 0x0babae12, 0x2efbe3c6, 0x777c117d,
+       0xaf8d35a2, 0xc4e9c04b, 0xe74489fa, 0xbc7c8c9b, 0xda897ee0, 0x66fa371f,
+       0xf8f943a5, 0x159e254b, 0x33e03550, 0x9f404d85, 0x7eee4781, 0xac624d8b,
+       0x476ea0c6, 0x0983b138, 0x1f0d5f34, 0xaa4b0d81, 0xf4b03eb0, 0xdf909bc1,
+       0x916fb68d, 0x3e28b37f, 0x3922cfd8, 0xd6b63fb8, 0x618477e6, 0xf1aefedc,
+       0xdd6a991e, 0x0fa07c80, 0x67db6f3b, 0x748d70e4, 0x5eff691b, 0x5eb8ff68,
+       0x13cb9ca5, 0x7c00271c, 0x89fb6996, 0x59546cf8, 0xf80ca91e, 0x0e06f583,
+       0x62bc11a4, 0xf9b1afeb, 0x6aff218f, 0xef8ff47c, 0x46f8232f, 0xb6b1cf88,
+       0x7d67da54, 0xa47cef46, 0xb08cc75b, 0xee8a3aa9, 0x027dc73f, 0x5ccc6a4d,
+       0x361630ce, 0xf5b177e1, 0xba7a15e5, 0xb1119ed7, 0x9c3d6c5f, 0x37af0f5f,
+       0xb374fd88, 0x15d2e519, 0x172cca7c, 0xfb1582e5, 0x2bffa957, 0x6a9b0e3e,
+       0x60fb9ca0, 0x3c58b4d8, 0xbc009f71, 0x775816c3, 0xf11b16df, 0xf6030403,
+       0x232a78b3, 0x6658b7f9, 0x7c5296cd, 0x02f676af, 0xe4be4e5e, 0x15f5f4e0,
+       0xbde00540, 0x66768980, 0xbe0162d6, 0x29668bf4, 0x0b76816c, 0xc6779b36,
+       0xf6bee1e5, 0xe7c436ca, 0xa5f11293, 0x0ad3cd05, 0xe97940b7, 0xff084bde,
+       0x5d395389, 0x48390d2e, 0xf8215dce, 0x64398d5d, 0xfc1f7052, 0x0fb86244,
+       0xec66ffa0, 0x4a3e1ebf, 0x070e1d2f, 0x7a3ad3e4, 0xf3954508, 0xce0edfa1,
+       0xe7f01927, 0x0fe6bc41, 0xcbe46ff1, 0x5fd9efba, 0x08fa7acd, 0xf085f26a,
+       0x9b4e8b04, 0x9f10c97d, 0x97c932fd, 0x353e20e5, 0x0bf10d26, 0x6872e4f8,
+       0x6d70448f, 0x1f244d60, 0x383ebe34, 0x270b90ae, 0x3f9720e5, 0x2cf48de6,
+       0x78d1e471, 0xc907594b, 0x8c4e4d07, 0x8e250746, 0x5283a66f, 0xf5f54a87,
+       0xd5f0b31f, 0x83fd5e30, 0x8930dc2c, 0x48936d3f, 0x67b971de, 0x9f0f72e1,
+       0xff2017f1, 0xac5de562, 0x6b958b7c, 0xbf2e2669, 0xfa6b3c34, 0x2e74da49,
+       0x3078afd7, 0xdf583324, 0x97d79b39, 0x4f48793a, 0xb163bc09, 0xd96297a8,
+       0xdda1f2c7, 0x57b4db51, 0x809f005c, 0xafb8bcc2, 0x3b2e0012, 0x7193fde0,
+       0xfffd882c, 0xdee9c5c4, 0x6bf4e26d, 0xc4ac7c54, 0x09e9788a, 0xa92f101b,
+       0xa8f48ecc, 0x1b49f3c1, 0xdf8a577c, 0xf8337971, 0xc73585bd, 0x715f7d47,
+       0xeaf88e20, 0x90b6fdd9, 0x7f0bf499, 0x73fa03ae, 0xbd2667bd, 0x8d80ffb3,
+       0x91bf63e4, 0xf680ebcd, 0x892fd44e, 0x3e73565e, 0x8c9d7880, 0xc99154d4,
+       0x1ba5f690, 0x6a059132, 0x838356fa, 0xf5c34deb, 0xd79f511b, 0x2ba72b73,
+       0xf1fc8ab3, 0x7ef7a3ac, 0x587cc32c, 0x0877ca10, 0x4ef6073c, 0xbc21f92f,
+       0x1eacf80f, 0x097f7d0e, 0xfe59abd2, 0xa016adfe, 0x83f259af, 0x1d600791,
+       0x3b56d90d, 0xb919b9ca, 0xdb87fdff, 0x5ec9fca0, 0x9e233323, 0x8f3e9e9f,
+       0x7fce8fe5, 0xe3c642eb, 0xe5fb51bd, 0x72faddee, 0x1cbe8743, 0x5797d4e8,
+       0x93ce6c3a, 0x78778913, 0x9b5d03ce, 0xef1f4dcd, 0x5f9af980, 0xfa3c9336,
+       0x06bfc39e, 0x21a353f7, 0x6ce10472, 0x926cfdce, 0xeba0e91f, 0x669f0973,
+       0x629e9da0, 0xd7dc7f0e, 0xe416e367, 0xdb8047da, 0xc598fc10, 0xed067040,
+       0xcf893f9b, 0x713ec405, 0x1c9fbc9a, 0x9e2ff582, 0x495f6f13, 0x9355bc6f,
+       0xa43f51cb, 0xe6c0b239, 0x26913feb, 0xc43abb51, 0xd0d9c9ff, 0xbb55e60e,
+       0x7ac3cb99, 0xfb8893d6, 0x48f411b6, 0x98f8a00b, 0xcdddc3c0, 0xfc30f291,
+       0x72b93db3, 0xf953ce3c, 0x7d21f15a, 0xa37ec1ac, 0x399fdef4, 0x7bb81cb8,
+       0x4fbd9c77, 0xae874707, 0xb74ce81c, 0x3fef45f7, 0x96587fc1, 0x37db44a4,
+       0x9ffe481f, 0x2c1afc21, 0x3069a6bd, 0x7f5fb5fe, 0xc97efc41, 0x0bb26ab2,
+       0x3364f486, 0x0f25a7f1, 0x6bfde9f8, 0x405bae5b, 0xa712dbeb, 0x3e4fdc22,
+       0x2fbd1129, 0x2c86b2c9, 0x1d6bcff0, 0x025e7f5c, 0x70d249df, 0xedc2c638,
+       0xb9d76da3, 0x623e8e91, 0x0760bc7c, 0xb23e3fd7, 0x780abc03, 0xa3efec1b,
+       0x25c7d04e, 0x9f75f384, 0xf25c5f20, 0x3d41eca4, 0x3cdb7581, 0x67961963,
+       0xc5645f8e, 0x4ca4cefe, 0xdbedf683, 0x7a65da67, 0xbf90fb2f, 0x73d81e81,
+       0xb657bc2d, 0xee3d214f, 0x3e6693f0, 0x19e5874f, 0x5fb5c75c, 0x14afb4cb,
+       0xbea3f303, 0x8ef26edb, 0x6eacfdc7, 0xe2167a7b, 0x19d9a3e5, 0x82ff6a06,
+       0x0f08ecc4, 0xbe1732c7, 0x3e29225f, 0x9bb5bfdc, 0xf5a2aaeb, 0x2643809d,
+       0x7dcb4efc, 0xa56bd5d0, 0xca2b74fd, 0x612786d1, 0x73f8e0ff, 0x6dc3fdde,
+       0x74fde8ce, 0x4433395f, 0x3bedbf7d, 0x17f84f44, 0x112d7806, 0x7dd8baf0,
+       0xf6d04e65, 0xf2215345, 0x9b2b25d1, 0xe823ed0a, 0x62fb8315, 0x6787df1b,
+       0x6f3b121c, 0xd64a3a40, 0xd9a30dd9, 0x0322d659, 0x878b15c9, 0x67869f79,
+       0x68b9981a, 0x1593bb4f, 0x4d9337ce, 0x4fe51f04, 0x0dfeeef7, 0x8729ebac,
+       0xf7864a5f, 0x825bccb9, 0xf6235778, 0x1163500a, 0xb177a4c4, 0xc7ae666d,
+       0xde8f5c2a, 0x599eca94, 0x3b5f651b, 0x17c07f45, 0xfe9fb1e2, 0x411d5f63,
+       0x7ce636b8, 0x83f50936, 0x4c2fb9c0, 0xdad7ac2a, 0xb73f1125, 0xe90c7c7a,
+       0x9b35d025, 0xe21e2c2d, 0x970f01c3, 0x5aebb113, 0x97edcc90, 0xfd423380,
+       0xf7c298dc, 0xd383bb6f, 0xf165d6e7, 0x5bafe421, 0x9c38a19d, 0x4fbadff4,
+       0xcea97d35, 0xd96cf1c2, 0x8caf73f5, 0xec921df4, 0xf2acb163, 0x3b5031fd,
+       0x38c3243f, 0x082aec9f, 0x34ef7952, 0xd6750c8f, 0xc96e3f5d, 0x1a753847,
+       0xeaded83d, 0xf5c44de9, 0x44ebb27d, 0x76afae22, 0xaeeb4c97, 0x5aee7d0d,
+       0x17c43c54, 0x4bf92b7e, 0x2ecc5e10, 0x8d7c7159, 0xebb27c3f, 0x95a16b8c,
+       0x3f24ffdb, 0x4b8646cb, 0x795a639a, 0xdae1c032, 0x3e5e386b, 0x421cc17d,
+       0x1c69f7be, 0x7e28b7c8, 0xcb8da9fb, 0xcd64cabb, 0x41c8eb5e, 0xbe583379,
+       0x7c80c8b3, 0xbe76fbe2, 0x23a9a77e, 0xffe3f707, 0x967efa48, 0x085818b6,
+       0x0b5d7b78, 0xd1f80680, 0x22fdcfa7, 0x27fdf907, 0xa722ff4f, 0xb17e6a3a,
+       0x39cf69df, 0x6cbec2c9, 0x816bc27b, 0x3699aaf1, 0xc70b385e, 0x3f98f6ab,
+       0x5ac2fe40, 0xf7077a66, 0x467f3e4d, 0xbd9b67b7, 0x3c0707c4, 0x50e91566,
+       0x36a06efb, 0xedfa8bde, 0xff10b300, 0xc392eeab, 0xebcfec66, 0x3b44e31d,
+       0xa63efb46, 0x9e824dff, 0xfc894ea4, 0x11c50901, 0x377fc7e2, 0x3e0277bf,
+       0xe03df8a3, 0xf8992539, 0x2648e47d, 0x2130fa23, 0x568d4cdc, 0x6b93e505,
+       0xc8afa715, 0x57640c0f, 0x56dc3299, 0x16d767e4, 0x601b37c6, 0x13e33a23,
+       0xafd03127, 0xa88a33b2, 0xd382b07d, 0xc8c5d07d, 0x9ace967f, 0xf6d7e224,
+       0x64f7f25e, 0xb5f6654d, 0x99297c50, 0xe66ea9eb, 0x10172cd9, 0xf7f425de,
+       0xe4d0f068, 0xf20fd202, 0x0b254fc7, 0x25d48fd1, 0x1b29de91, 0xbf63e63a,
+       0xa3d3d1a3, 0x3d053e1a, 0x49ff960d, 0xa34db4f4, 0xe4f461df, 0xdc9e8957,
+       0x49e99196, 0xd4dfd895, 0x687d059e, 0x7809a6bf, 0x4ef8223d, 0xee1607e4,
+       0xe19002c7, 0x7f44ab7a, 0x586b1655, 0x31e1f946, 0x651bd67e, 0xfd036ccf,
+       0x74a4ed17, 0x99e1dfd4, 0x4a816ab9, 0xbd3d6378, 0x98482fe8, 0xf8f92162,
+       0x0f27a1b0, 0x09b495f5, 0x2e907b4d, 0x9717e6d2, 0x2ffb22ae, 0x00f281cb,
+       0x6df92b65, 0xfaf85596, 0x85f4a252, 0x34cf6e6e, 0xf7a5e03e, 0x7eb8bbd3,
+       0x22631810, 0x29d0387d, 0x8dcf1105, 0xf508533e, 0xfb8956a0, 0xe3eb8257,
+       0xb48bf454, 0x4815d43b, 0xaeffed3f, 0xb46a827a, 0xfb77b73f, 0x6ade910f,
+       0x68f7e4ad, 0x2cb68477, 0x14b776c6, 0x7f7dbb53, 0x63f8f995, 0x5edf8d19,
+       0x7c7a41d2, 0xf72af5fb, 0xb5fc08af, 0x3ba6f6cf, 0xd1681f50, 0x1df6e7ef,
+       0x7864f4de, 0xc003603f, 0xebd578c0, 0x190f08e2, 0x4b338732, 0x33f970b2,
+       0xdf902f9c, 0x205535d8, 0xd209eda6, 0x39f70677, 0x672c0a70, 0x3cf6fa88,
+       0x61e60718, 0xa1e5f62b, 0xe3733de6, 0x03c46fb3, 0xefd0babd, 0x20b28dc6,
+       0xefe4fdea, 0x077265e5, 0x89806e3f, 0x8aed6064, 0x8aae33b5, 0x43f68b2a,
+       0x9c6fdbdf, 0x77724591, 0x0da71eb0, 0x7b2b58f2, 0x6b5e60e3, 0x0af5436c,
+       0x4e96bbe8, 0x3c1f7f89, 0x104cc378, 0x369203d1, 0x2f568afe, 0x98e2fffa,
+       0xf9e8bc6e, 0x1bfd3129, 0xaaab7fa1, 0x3959dfb5, 0xb7cc0c73, 0xd57f2b54,
+       0x3df985e2, 0x47f7d462, 0x63df1520, 0xf7ef1b41, 0xd76b55a9, 0x05e90d65,
+       0x529827a0, 0x83f48752, 0xb556ef35, 0x25630a5d, 0x5098cfd8, 0x3e726aee,
+       0xff4894e0, 0xeeafdd88, 0xfe1fce14, 0x0eaabe6e, 0x29dda3d3, 0x9e8f4993,
+       0xec125b85, 0x81dbe20f, 0xf50c7d07, 0xb247d039, 0xf91f4852, 0xa821e4ec,
+       0xe7f39fef, 0xb62a9923, 0xea3e67bb, 0x0a7381bd, 0xb7606dd1, 0x6e80921c,
+       0x80bf622d, 0xbf3f271c, 0xed4b4f46, 0x411d4e82, 0xf68b7186, 0x9072696e,
+       0xe729abe8, 0x8ae5c016, 0x1a38ef14, 0xb195d847, 0x70a6f6eb, 0x545021fb,
+       0xfb10a5b1, 0xd43125df, 0x1d16d613, 0xbb242d77, 0xa2d703e9, 0x3aeaefa8,
+       0xd678271f, 0x088e36ed, 0xd70a6f47, 0xbff71b6f, 0xf1be45e4, 0x9e224869,
+       0x5a84ab50, 0x6d7280af, 0x413501ad, 0x705a1656, 0xe62dc51b, 0x5858d899,
+       0x39ca215f, 0x9beec79c, 0xbae05783, 0x5e093fe1, 0x262df56d, 0x9e75ba79,
+       0x9f714ac5, 0x087beaa2, 0x2f78f60e, 0x516d61c2, 0xd38e3a45, 0x9d967b38,
+       0xc7a01de2, 0x03e37d61, 0x485f93b7, 0x4edad79b, 0x39ea2563, 0xfdcfa0e5,
+       0x9d9de61c, 0x07a5437c, 0xbca671f6, 0x283ee4a7, 0x8f851a6f, 0x7ce4e7bf,
+       0x05f259bc, 0x7e465bbf, 0xd7ed1650, 0x7ae4edcc, 0x9314bce3, 0x2f3dafce,
+       0x57b3eb85, 0x23a67b05, 0x7a541cf9, 0x0e9f5013, 0x68e7ef30, 0x559f333f,
+       0xc4f09a7d, 0xb97391f9, 0x8b31fe4a, 0x4be1f7b3, 0x852afeb1, 0xf4a617ec,
+       0xf6e3863e, 0x6b3d3ab7, 0x5807d899, 0xec98a07e, 0xfc53d79e, 0xe5bf108b,
+       0xdfed4f42, 0xfa095d7f, 0xabbd3511, 0x685b69f5, 0x9b53f225, 0xf22568fa,
+       0xc4293fd3, 0xd2259927, 0xa9fa1d33, 0xf5324bfb, 0xdfc1207b, 0x1adaf484,
+       0x3a456a17, 0xa990ee08, 0x258e739d, 0xf27cfd8c, 0xea076d8c, 0x1b674697,
+       0x73063a43, 0x1625fc85, 0x50a98fa7, 0xa05c1e9e, 0x622f2848, 0xe8e999f4,
+       0xc57b22af, 0x0adafe49, 0x02c63fb1, 0xd0b49c15, 0x9f3e6856, 0xbcdfa432,
+       0x055cd5f1, 0x8f7a6a5f, 0xe7fdc2c1, 0x33c5e633, 0x8ead9f1c, 0xbfa0311c,
+       0x50c3d9de, 0x90e86e0f, 0xa2869c68, 0xb7684d17, 0xf7c1dddc, 0x19d84077,
+       0xd41cbf00, 0x12535a2b, 0xccd97e84, 0xe7ac1cfd, 0xf9c22648, 0xc64f8e79,
+       0x7f945da0, 0xe70e7615, 0x933fa207, 0x08343388, 0x424812bf, 0x68a7e7ae,
+       0xa14aeb7a, 0xa7f1b46f, 0xd4937718, 0x9e1195e3, 0x1fce9225, 0x227f3dae,
+       0x357a4fbe, 0x6ff70b32, 0xfd0be804, 0xd9a45b4b, 0xd612fcf7, 0x04f265b7,
+       0x6e60aa0f, 0x14b92720, 0x022903df, 0x3f3acbdc, 0xc374859f, 0xd7ed192a,
+       0x7269cec6, 0x63c79583, 0x4b485f50, 0xf581da68, 0x91157769, 0x08f8c67c,
+       0x08f655c6, 0xb95ba6b8, 0x32bdcebf, 0xcbf18798, 0xf77d57a4, 0xbfc712fc,
+       0xadfc9e24, 0x5b1b8069, 0xd05b3d32, 0x2566e5bf, 0xbafe5087, 0x9c52d4ab,
+       0xc3a7168f, 0x62ecdf38, 0x4e54e3e2, 0x9dde48f6, 0xc5397cf0, 0xfb02eb41,
+       0x8be712ae, 0xa1d643ef, 0xedfa21b8, 0xcb8c5c70, 0x3d3fb3e1, 0x1f9f90ac,
+       0x48d3f9e4, 0x3b669da7, 0xf3aaabc2, 0xde5077f5, 0x07585956, 0xf46351c5,
+       0x6f13db96, 0x3ff48c3e, 0xf6e4ea70, 0xb75e7087, 0x09f8f3ec, 0xe47d7a3f,
+       0x5eb86bda, 0x09d3e9fe, 0x3b91ea2a, 0xfd06df05, 0x5e5fc791, 0xac6476e0,
+       0x8a5ef91e, 0x2c1c8f5e, 0x48f5c3ff, 0xcc20bf3e, 0xfe28e9ef, 0xdf76101e,
+       0x44e9ed40, 0x0d1f5f94, 0x7fe407ce, 0x529e90f9, 0x03e12bbd, 0x768367dc,
+       0xa23e8c45, 0x1ff1e0ec, 0xdf126b0c, 0x5c449875, 0x805eebcb, 0x21470ffe,
+       0x9e379ff1, 0xdd220849, 0x2388ee9c, 0x98714cbd, 0xe6af38c2, 0x8321cc97,
+       0xc0507c84, 0xabc45bab, 0x960e224c, 0x42a2a85c, 0x23e4cfb1, 0xd17c1fbe,
+       0x8955e3c8, 0x819ee7a1, 0x74c1fd72, 0xd462cf11, 0x027f707f, 0x5e3ebbc1,
+       0xebfec24d, 0x30c2957f, 0xe300354e, 0x881f9e21, 0xc9ce4bf3, 0xfde2d718,
+       0x2acc57b3, 0x0b859f8f, 0x1d87001d, 0x9dffae21, 0x4d843228, 0xa81deeb0,
+       0xebbf602f, 0x5f16b8b4, 0x4cfac0e7, 0x6541971e, 0x56b2ed04, 0xd1aa2fee,
+       0xb90755e2, 0xc446ae1f, 0x59cc4ea5, 0x468614fc, 0x4aa6a59a, 0xaeced3b4,
+       0xf3fe469d, 0x4d9d1ffb, 0xbd169acf, 0xfa317fbf, 0xe2860be7, 0xbddf9ac1,
+       0x5c4c799a, 0x1ff21e7f, 0x519f401a, 0x940a945b, 0xbecc799f, 0x1a81e512,
+       0x814dec04, 0x513c3367, 0xca009789, 0x75694ed0, 0xd7be23c6, 0x6e481b34,
+       0x5e0d9b05, 0xcbd1a76c, 0x672e4e25, 0x9d82a267, 0xc210244a, 0xb367b471,
+       0x441bc451, 0x21982b7f, 0xc4834f8c, 0x4aec6b9f, 0x5bf248e5, 0xd8d9afeb,
+       0x7a869964, 0xfc81b673, 0xde4d67dd, 0x4e2fe479, 0x353c242e, 0x2a5a9adb,
+       0xa5ed3d79, 0x1f1171b3, 0x70ad5fd5, 0xc9a992c5, 0x9c0b4fc8, 0x0b10be3c,
+       0xfa6d45b7, 0xa61c6c72, 0xd72fa42e, 0xf4b8ff30, 0x88371e02, 0xe4e05f7e,
+       0xdaececfc, 0x8f6f013c, 0xb6aef909, 0x1c5915fe, 0xfe6c866e, 0x98aecfcc,
+       0xef907487, 0x461e5130, 0x55fb83be, 0xff342561, 0x129dabfc, 0x7ccc47d1,
+       0x9e9c1d9b, 0x0fdcad82, 0x3fceb7f9, 0x71dfde76, 0xf0dc84ba, 0x596e31ba,
+       0x1c513763, 0x25fd42fa, 0x5f3d4e8d, 0xe3ff2c1a, 0xcf6e5bed, 0x5f22cab7,
+       0xa97c4ec6, 0x72d7ceda, 0x133cf242, 0xd056f7c6, 0xad1d701b, 0x91f22972,
+       0x695b37e9, 0x81078d1d, 0xeb1c608f, 0x941cdec1, 0xbd158deb, 0x89af1885,
+       0x56ce2f85, 0xb419f8d1, 0x3d8276ab, 0x8b437a82, 0x3c371e3e, 0x855deabe,
+       0xc371e27c, 0xa3af3d89, 0x4713dafc, 0x75fe0bf2, 0x7ffb8cc8, 0x35f11e7f,
+       0xb0ffcd87, 0xf8cbf513, 0xf367f6f0, 0x7ae18f50, 0x79974354, 0xd589ea07,
+       0x3df151cd, 0x7d3adffc, 0x24b58fbc, 0xb59ddf93, 0x6ed7dfeb, 0x586ef98b,
+       0xf08daffc, 0x1fe4c9b2, 0xe41dfb8f, 0x9c1de510, 0xc43033aa, 0x59ec8d6f,
+       0x54ea428c, 0x3f3f5e9c, 0xfaf8e365, 0x5fa6a70f, 0xcf110a78, 0x7861e583,
+       0x9e2214f6, 0x1fcc0c6b, 0xe2034fdd, 0x2f5bf019, 0xa5ea7cf0, 0xe7888529,
+       0x294cf6cf, 0x326f3c44, 0xdf7179b6, 0x7ffbb3ac, 0x9be9f08a, 0x0afd23e9,
+       0x1f7071f3, 0x863d285d, 0xe9c9e707, 0x3cea3c31, 0x96fe31ff, 0x5be3e4d1,
+       0xcbd0f383, 0xcd49a747, 0x6d507e42, 0x9ca37f31, 0xfd11bfc4, 0xf9331679,
+       0x757e0e3f, 0x63e50366, 0x9fa4c974, 0x541dfd68, 0x1fa805fc, 0xedc77c1d,
+       0xf7a34a09, 0x73b09f7f, 0x441616dc, 0x17668b3f, 0x2c65fa68, 0xfb15ee3f,
+       0xef4e8ffa, 0x0efe5377, 0x1ff354fb, 0x96368ad7, 0xf7ae19d0, 0xdc3c92ee,
+       0xfe41dc7f, 0x05eec6e4, 0x7f17f476, 0xe3fee21c, 0xc84a97c6, 0x7a175c7f,
+       0x61f98c2d, 0xa3b24bac, 0xebb7523d, 0x03cc4483, 0xb05eecd0, 0x293acf73,
+       0xff6f46bf, 0x913a1c7e, 0x30037988, 0x3f511bef, 0x4c46704b, 0x608df748,
+       0x525831ff, 0x823912a3, 0x193a36fd, 0x9d6505e9, 0x8b507b7a, 0x99f56eef,
+       0xed6eef88, 0xafc84292, 0x5e7f265d, 0x9635ca16, 0x30993f65, 0x5494cfb4,
+       0x6a6a416f, 0x6bdd5c74, 0xe6b038c2, 0x92ddea7f, 0x6bdbf444, 0xf23b5e64,
+       0xc1362db3, 0x6fe214cf, 0x84736e5f, 0x0de946d6, 0x9eb8865f, 0x77e5a750,
+       0x00ac2c29, 0xf5cf16be, 0x237c431e, 0xf0c70fbf, 0x16b2e8fb, 0x859bbfaf,
+       0x60352e49, 0xf3c89386, 0x1b176e8a, 0xb838c7cf, 0x54d61fae, 0xec9fa2a2,
+       0xe287ab4e, 0xcde79d5c, 0xb720fafa, 0x2c3f619b, 0x5fa21d2b, 0xfd1a0f0d,
+       0x747f0a36, 0x6af8f6a0, 0xa740dfa4, 0xbafb4764, 0xb7e9c3de, 0xf32fec1e,
+       0x9dfbe1a4, 0x46fd0075, 0xf6d1bbf1, 0xbf5537bf, 0xffcb07ff, 0x8deb7f24,
+       0x58bd7aa9, 0xbfe6bf5b, 0x97675c1f, 0xcc65f7c4, 0xd6ed62ba, 0x66bbbf58,
+       0x3f285e77, 0x47818eac, 0x3c32fff5, 0x8d87e346, 0x43f1a3a9, 0x6fe35c7d,
+       0xcbff87e6, 0xbaa78df1, 0x0034489f, 0x0bcba8ab, 0xe75eb9ba, 0x678bc5d5,
+       0x8f2f56c9, 0x9f3cca9b, 0xaeee3622, 0x777112ce, 0x7b5f9fbe, 0x357c2649,
+       0x4370f888, 0x4d83cdb7, 0x284bad6b, 0x3f1b1b3e, 0xccf6ca5d, 0xc6c51442,
+       0x1f71eb51, 0x3c7b7c17, 0xc1d489f5, 0xcc3c853c, 0xd3cd8853, 0x267acd7a,
+       0xef851fc5, 0x0430628a, 0x8b6ba046, 0x51c96412, 0xe54e9fef, 0x226bf4fa,
+       0x626dc89f, 0xf2a7982d, 0x8bc12d88, 0xc0db8c76, 0xa4569df3, 0x7e459ef8,
+       0x3c055168, 0x198f7ff7, 0x194f2e00, 0x049f883b, 0xe41eac1b, 0x471f9a7f,
+       0xfc20dfeb, 0xe74a1711, 0xf9d0c4af, 0x7de4ff2b, 0xefb6a6ff, 0xddb8d6ff,
+       0x6e8d8066, 0xdfa2303f, 0x94ce30b7, 0x476e9c37, 0xfa3467eb, 0xdf54effd,
+       0xfd72a57f, 0x2be5127e, 0x497f205f, 0x409c8b28, 0x6bdb117f, 0x89bfd156,
+       0x8b9212fe, 0xbd85d2eb, 0x4d9f29ee, 0x729ed679, 0x1f7b17cc, 0xe8f979ff,
+       0x41e9e3fa, 0xf1fd70fc, 0xf9f8a8f4, 0xa5c7f4fb, 0xb817df76, 0xde69bece,
+       0x6b6f9442, 0xb47f306c, 0x79e39f0b, 0x38e2db46, 0x38936e7d, 0x2965b25d,
+       0x8977e417, 0x9bede977, 0x993ff2c1, 0xff5cba7f, 0xe7f9fe2c, 0x8ea3f444,
+       0xe4504fde, 0x4578f67b, 0x8ced8d3c, 0x7a076ff2, 0x38debe78, 0xbded2701,
+       0xbdc7f62c, 0xe6116f2e, 0xcc767dbd, 0xa0496162, 0xbe7194f2, 0x52b3e8d8,
+       0x83b1a17c, 0x3e34bde7, 0x377f88c8, 0xe514ffa2, 0x866ce747, 0x0e53defa,
+       0x326ba97f, 0x41ac55c6, 0xeefd0939, 0x77ea1873, 0xf978c7fd, 0x397f0e7b,
+       0xec1e07d6, 0xfb4678a5, 0xef294f9c, 0x99fcfcaa, 0x346595d5, 0x3823f25f,
+       0x36ab3e45, 0x1e2e05bf, 0xf39ed07f, 0x25ede107, 0xb567febf, 0xe03b3f3c,
+       0x1fd1daf4, 0x13c5f9a1, 0x33f21ed4, 0x4ae5ee35, 0xd7ccb95b, 0x45987ec3,
+       0x77b8d4f4, 0x4ffa095a, 0x095c4759, 0xefe5b9ea, 0xfbdec959, 0xca0c81ec,
+       0xc53d7893, 0x87841dff, 0x3d742cad, 0x30b9a5ea, 0x9fbbea0e, 0x04beb9ed,
+       0xbff1ade7, 0x873fe84d, 0x7a6c9bf6, 0xf0b338bf, 0x67baf9bc, 0xf9ff3533,
+       0x26dfd8ad, 0xb5990fb1, 0x08f67cad, 0xefdb5efb, 0xfa81b269, 0x42c3bb4f,
+       0x1f8d7271, 0xbf32326c, 0x8f8860a5, 0x09f22d5c, 0xcf914e03, 0xe79b35d8,
+       0xd5b288a7, 0xfcebcfa9, 0xd5e673a3, 0x5dab8788, 0x85e5c5ca, 0x09e58759,
+       0x1798bf50, 0x6039f686, 0x092cfc94, 0x9cfeb8e7, 0x1d11376f, 0x51bf60d9,
+       0x08e8067c, 0x22abf8f5, 0x6093d33d, 0xc3da639d, 0x0f7c2157, 0x9e10339e,
+       0x516fd994, 0xe249267c, 0xebac15e3, 0xfe871d6d, 0x57dbfb17, 0x36d52a23,
+       0xfa86057b, 0x82f8729e, 0x37a7f22e, 0x1578e115, 0x3cf237bf, 0xf204eeca,
+       0xd4e7b42b, 0xff651e53, 0xb9dd66bb, 0x9067d89a, 0xc9bca4ad, 0xa4ffcefc,
+       0xaf6d8138, 0xec3e6234, 0x1e565c8f, 0xccf60abf, 0xab9adca2, 0x955fc49c,
+       0x3e28f7ee, 0xc82ab4ad, 0xd1b35879, 0xfe43886b, 0x9f9182b5, 0xddbb6c73,
+       0x15caf880, 0x07033179, 0x4fc932ff, 0x17168a76, 0x26bcf108, 0xb46aef63,
+       0xbd1594bf, 0x1f1104d7, 0xc6861d7b, 0xd22fec62, 0xee967e48, 0x3e7c8604,
+       0xe560b3b7, 0x6dce5095, 0x6c1c53b1, 0xb9ddc0e0, 0x758557e4, 0x9d611d8e,
+       0x879e2ecd, 0x182774a4, 0x1b298e50, 0x55470799, 0x9a0aae1c, 0x8650e3f7,
+       0x8b9ffe7e, 0x371699d3, 0xca13ff45, 0xfe5d7ba7, 0xc1dfa40e, 0xe2cb44f3,
+       0x852279f9, 0xcb6c49fb, 0xcf017dde, 0xe7176ce9, 0x383d5e34, 0xfbf90e71,
+       0xf109155a, 0xf3c1d670, 0x3ec4bb28, 0x57ff0e1e, 0xbf355f29, 0x3cb93ffb,
+       0xff603983, 0x8bd3918a, 0x81dcead2, 0x36a3c57e, 0x5ee7e53f, 0x29961cdd,
+       0x7bef666e, 0xb28d52ac, 0xf973366f, 0xdb9bb8d2, 0xccf6b1e3, 0xdf95c9b7,
+       0x2e17f20f, 0xffcb0657, 0x37a57d24, 0xcdfc9e46, 0xdbd30a76, 0x4b7ab177,
+       0x4c373dac, 0x6fe98eff, 0xcb45fd34, 0x1a18a943, 0x36d1eb87, 0xea0a3f4d,
+       0xac2a74f2, 0xd1665c7c, 0xd933bff7, 0x7917fbce, 0xea55ae3b, 0x8fcfcc0a,
+       0x3f233bfc, 0x143f969d, 0x3e79e0ac, 0xc3f00341, 0xb5378c3c, 0x2650de51,
+       0xf9124b0b, 0x7e197ad1, 0x43f98697, 0x5729ddf0, 0x49f1c13e, 0x899169e6,
+       0xce12aa5f, 0x4ef30e3b, 0xb4354f28, 0x738e3165, 0x89c6958b, 0xcb93bcc3,
+       0xbbc07530, 0xf4ebf905, 0xc8571e5a, 0xf48c3900, 0xd386319b, 0x9e3cdc61,
+       0x97e5a27f, 0x1a20f968, 0x7c042a1c, 0xce2dc633, 0x2ad83e43, 0xbd439ff9,
+       0xf0e255a7, 0x7ee7ae09, 0xe8077685, 0xaf6e50d5, 0x7ff9409b, 0x1ff78c03,
+       0x5d1035ac, 0xed81f96a, 0x0e7e5563, 0xbcfcafe8, 0xcf097b5c, 0x97961937,
+       0x2d570312, 0xd12b252f, 0x752d363f, 0x96a23ce8, 0x49d1a247, 0x7182fe14,
+       0x6ed6de30, 0xd457cfae, 0x031d689a, 0x3f903775, 0xc0cea072, 0x7457ee50,
+       0xc5dd3999, 0x9e75b78c, 0x5fb18589, 0xfc871425, 0xb7ffc353, 0xd780b3e9,
+       0xbef7f422, 0xb2f2bcba, 0xe1f1803e, 0x0e7a3ee5, 0x321d49c4, 0x45c4efe6,
+       0x72a713e6, 0xb951beef, 0x226cf31c, 0x8c901239, 0x5563cb6d, 0x8185c80a,
+       0x58fbc8d4, 0xcddcdcce, 0xdb2363cb, 0xe25f6825, 0xf6a2aaae, 0x8c198b48,
+       0x5bc278cd, 0x845eb415, 0xc58afbbc, 0x10f86fe6, 0x77ac0dae, 0x89f90f75,
+       0xe32bbc84, 0x30cd90fc, 0x4a9fb887, 0xd1d97f25, 0x03d23cf4, 0x7bf945ac,
+       0xcb3eb07b, 0xa835fe4c, 0x3a3f7a27, 0x57af1a76, 0x9659de39, 0xb071e78d,
+       0xb3f220de, 0xc8d379a3, 0xfb80dd4f, 0x2fa9f401, 0x1a7f7ead, 0xd494f3c0,
+       0x83ee3f73, 0xb5ff33a3, 0xd4fbe918, 0x418e1fbe, 0x099d737e, 0xf811f4f4,
+       0xe73759cb, 0x6b46032f, 0xbcfd048b, 0xe1d7f564, 0x9849de3a, 0xcb530b3f,
+       0x334ca5e7, 0x160251e1, 0x5a664e7c, 0x3bde0208, 0xd1fd72e6, 0x6127c331,
+       0x38aae81e, 0xbf548f3e, 0xc67d25e2, 0x05ba573f, 0x124abfd6, 0x93530dfa,
+       0x52290ec8, 0x5fbcf093, 0x2a3738bd, 0x797cfd8b, 0xf51946c7, 0x7f2ddfe7,
+       0x19454ae7, 0x1cdf2e5d, 0xcf686f63, 0x8ebe3496, 0x097ab239, 0x296ac7d2,
+       0xcbaaebfc, 0xef4abdf1, 0x2b2e2667, 0xebe9fcc3, 0xd0ca9a12, 0x7dec3a7f,
+       0x8e2fbc12, 0xbb799b2a, 0x47244b7a, 0xc4f67a01, 0x5c21d7f9, 0xe0f82ece,
+       0xf7bfdc7e, 0x1f7d1c67, 0x1a8e17f3, 0x96ce3ec5, 0x7db07f84, 0xebe0227a,
+       0xe4438148, 0x7f08585f, 0xff71c647, 0xd97e60e0, 0xedf28978, 0x73f2e6aa,
+       0x9eb2379b, 0x9ef85ee6, 0x3f50089c, 0xe91e6a6b, 0x1f225579, 0xbe3bd662,
+       0x67d7b444, 0x20a22f7d, 0xcf83477e, 0xdaa36e75, 0xd7af451b, 0x8df2faab,
+       0x77f2fa45, 0x77f2fa3c, 0x2e3d7ea7, 0x9c68fcba, 0xaba439f7, 0x8f9e2597,
+       0xd99cbc19, 0x4a759f49, 0x262fd441, 0x9c4322fe, 0x8379e577, 0xa1ec21ff,
+       0x54654c5f, 0xd96ddaef, 0x9afcf989, 0xf516595f, 0x92ccdd13, 0x20f04c9b,
+       0x44911479, 0x6293a1fe, 0x3ddf6c2d, 0x855fee76, 0x67e826b6, 0xe29502df,
+       0x81ab2eb2, 0xa1fb835d, 0xa1fb42cc, 0x8f12d33c, 0xa0aaf3f4, 0xb2fced3f,
+       0x0ae58f46, 0x041e61f3, 0x9f173d0c, 0x43f68d47, 0x7e0e47e8, 0x17bce8c2,
+       0xca14d363, 0x31631487, 0x4fca82b6, 0x557f3a08, 0xaeffd3e3, 0x697f7e10,
+       0xe53e1133, 0x503bc95f, 0x06ec600e, 0xd7a7c3fd, 0x69f9a04d, 0xfd7608fb,
+       0x49d90c18, 0x3157eb4c, 0xec8a24e0, 0x39d1acbc, 0x285da185, 0xa3e918b7,
+       0xdb2cbc5a, 0x179df832, 0xfd174bbf, 0x71e06cdc, 0xe22e566b, 0x961ce2f1,
+       0x5d4bd44b, 0xe909ffaf, 0x3cb48be5, 0xcc5defa2, 0x2af48bdf, 0xd22a3c9b,
+       0xec3fb6b3, 0x575fe9ca, 0x0a7ae3a5, 0xb9eb407f, 0xf5c766c1, 0xe69cc114,
+       0x9bd3d325, 0xa8fd8a52, 0x78e5a7c4, 0x95cdfdfe, 0xa254aec7, 0xdf7c23f8,
+       0xd04fbfc0, 0xef86ef7f, 0x4fbea393, 0x878bef84, 0x9858cf7f, 0x98837390,
+       0xdf220dff, 0x12cd9774, 0xfec24c36, 0xf85ed5cb, 0xeff1764e, 0x7bc224c7,
+       0xfa451794, 0xd5360ebc, 0xe07ca163, 0xeb8e3c98, 0x71d307a4, 0x696f5cbf,
+       0xfe85eae8, 0xb9f8175f, 0xc2ffe0ce, 0x9f5fef0e, 0xf718785f, 0xa425a555,
+       0x8ddd1e60, 0x911abc2c, 0xffcd3036, 0xf680a394, 0xe01b827d, 0xc7fb28d8,
+       0x94f94325, 0x3dcc6db1, 0xac2fb479, 0xe7c3c9ee, 0x5b5fe1af, 0xd201d207,
+       0xc41d20d3, 0x17c35bcc, 0x1283a9bb, 0xfd049edf, 0x3e9a9f05, 0xcf1358c3,
+       0x87b35673, 0x32c405d6, 0x0634d2cb, 0xebd789f5, 0xae0fc482, 0x79463c73,
+       0x7f0cee50, 0xde77ce1e, 0x28e79fa5, 0x60bdd8d8, 0x30ebea1c, 0xcbfffcdf,
+       0xdb7a6af9, 0x4fdf3cb0, 0xdf3cba4c, 0x368ff6d1, 0x31f5006e, 0x7781f319,
+       0x606ede50, 0xe783d5ae, 0x77980233, 0x22f1465a, 0x480ec7d2, 0x4a0dcf5c,
+       0x5d3fa116, 0xe3303e68, 0xa0c3567a, 0x67cba59e, 0xf3e12f6f, 0x2547bf6e,
+       0x8965ed3d, 0x602e0fb7, 0x2d9b8f5c, 0xa9d917ea, 0x6f7bcb5e, 0x74fdc1df,
+       0x538d2fed, 0xbfd05fb1, 0x24b38e48, 0x71e5dfa1, 0xb97edafe, 0x70720f6a,
+       0x9435c933, 0xc8c9bda7, 0x06adc6f5, 0x95e5394f, 0xe2af4098, 0x9fce6071,
+       0x63f1f2c6, 0x6ef579fd, 0xb06f3fbd, 0xe7f20ffc, 0x03fbb3ad, 0x8a8b5748,
+       0x019239bd, 0x7afdc5e7, 0x7adb9f40, 0x359ba618, 0xfb7d418d, 0xb6f4d67a,
+       0xf3e880a1, 0xde7ed807, 0x02cfa044, 0xefde7d1d, 0x10fce54e, 0x0fcb15e7,
+       0xf6f0e962, 0xec72ff44, 0xf1d1dda7, 0xa9ea235e, 0xcf0f665d, 0x7979e563,
+       0x6a207cb1, 0x3e150b3e, 0xd32ca71f, 0x7ed0d67c, 0x85cf9989, 0xfa6893ec,
+       0x3f7c634c, 0xd25fb68c, 0x95b41614, 0x4797ed0e, 0x709bfce3, 0xb37dc1dc,
+       0xc325db9a, 0x895b2de6, 0x8dbd6ebe, 0x09022dc7, 0xfc61ae5c, 0x9fc61d22,
+       0xb5bfc62d, 0xade1d395, 0xba2262ff, 0x7187e985, 0xfd4473fe, 0xca06aeec,
+       0xc3339a5b, 0xbe5a3c78, 0x7992716b, 0x675cdda2, 0xc0b71189, 0x7c7d2adc,
+       0x3c9dde62, 0x6b0b723e, 0x6f7ce232, 0x67efab9d, 0x39f75b1e, 0xbbcd61e6,
+       0x45feff53, 0x635c60f7, 0x0e35c61c, 0x007dfb0b, 0xa7ee0bf6, 0xd92ea65f,
+       0xefd00f76, 0x97151fb8, 0xa667bfa2, 0x46d76eab, 0x75bb3f28, 0xe97f9502,
+       0x47fbe3ba, 0x217b7eb1, 0x52606795, 0xb81fda19, 0x94de511f, 0x1e4376df,
+       0x4e387b8c, 0xcf0f7bf4, 0xfbc777db, 0x3b4367db, 0xca7ca4f7, 0xf8219c3f,
+       0x5e22c0cd, 0x36a5e37f, 0x977a629e, 0x19bdfe4a, 0x48f991f1, 0xfc956fff,
+       0xc3e62957, 0xe517c8ce, 0x602797d2, 0x39f4b0f9, 0x6fefbb9d, 0xff082ab0,
+       0x17ee0cc6, 0x8524589d, 0x665c03c7, 0x1bfe8b24, 0x4aaabaf8, 0xfdc0cb9f,
+       0xf782a331, 0xad33d133, 0x19db00b5, 0x3fb9534e, 0xfc8892c3, 0xc767db50,
+       0xf4297db5, 0xf7d89f24, 0xd07ef0bf, 0xfafd029c, 0x9707922c, 0x01fa9be8,
+       0xcaccb5d9, 0xbcf973cf, 0x55fa0a79, 0xbe797ba7, 0x45658564, 0x37c5da3a,
+       0xb8654df9, 0xe4a5bb2e, 0x4927ea30, 0xa64da753, 0x330b5afc, 0xba039ca2,
+       0x70fb493f, 0x8939e7ca, 0x3d566c48, 0x35746bdd, 0x19f7a35b, 0xfd86ba7a,
+       0xf53b99fa, 0x8eb5f9db, 0xe886e3ae, 0x15fd347a, 0xda27f5e6, 0xe5ea578f,
+       0x3138e0d7, 0xdc7632fb, 0xfe05f8d1, 0xa1d3f345, 0xfed075f9, 0xb42cc2cb,
+       0x6d9fdc02, 0x4f8cfeda, 0x0c98f807, 0x25ae743d, 0xa04cf257, 0xe8a3a083,
+       0xb2fcda19, 0x3a59d7d1, 0xa7f85e7c, 0xff1e7a68, 0x9c3da273, 0x3be1ea25,
+       0x9a1e4b2f, 0x919f8c17, 0x9ab0f48e, 0xa949e7cf, 0xa117f389, 0x74766b67,
+       0x4edeb6a3, 0xe3cb7afd, 0x377339f9, 0xd7c83bfa, 0x7061325d, 0x078017de,
+       0x21013d6d, 0x7c5ae7b7, 0xedac1336, 0xd10d4716, 0xf058f7cf, 0x3e8fd425,
+       0xc52ffab1, 0x086abe79, 0xb2fda376, 0xde297988, 0xa1e1f409, 0x697c0bf9,
+       0x53858df3, 0x34fc28e3, 0xf0b13d76, 0x0f5bc219, 0xb9da77e9, 0x5ef5c1b1,
+       0xbd353ae0, 0xfbd269c4, 0x5f859299, 0x81f85928, 0x3e50a290, 0x0f78b157,
+       0x3dd3f9ea, 0x5517e912, 0xb97c42cc, 0xf3cb92aa, 0x3fd72b64, 0xda3fb934,
+       0x1af6b8fe, 0xaaaafc46, 0x6a73899e, 0x74b15d7c, 0x7f7ac698, 0x8b2acf80,
+       0xee2165ba, 0xd453d47b, 0x5957f9a1, 0x2eb8ffb9, 0xe37e125d, 0xe728c9de,
+       0xe4c3cb07, 0xe464ef7c, 0x7d65f33f, 0x1ceaa55c, 0x9f2653f7, 0xf2acf463,
+       0xe519307c, 0xef65727c, 0xff63e464, 0x8a5de49a, 0x037de1fb, 0xc2c6e7f7,
+       0x8374fef1, 0x20bca7e6, 0x3fdd8cfa, 0x4beabc5a, 0x1c01ffab, 0x9c6bf347,
+       0xb1ca7a92, 0xbb14a6d1, 0x0f3f9f58, 0x91e818e9, 0xcbf014e4, 0xb8d1e7f3,
+       0x5ca37fc3, 0xf1a3de72, 0xcfd895b7, 0xae4271bc, 0xc91f38fb, 0xa5577bb7,
+       0x820fbcf3, 0x2e02bdcb, 0x3d9c8533, 0x38a64dbd, 0xd16f0cc1, 0x0fcae813,
+       0x216461bc, 0x925ebfda, 0x5d7dda93, 0x0aa141a7, 0x6de7fb63, 0x792c77a4,
+       0x1ce286b3, 0x981b36e3, 0xc737251a, 0xf775e287, 0x9ddc4c54, 0xd25f2bac,
+       0x7f6ba191, 0xaebe6769, 0x413c24be, 0x1bd97f57, 0xe4f2baa5, 0xed742b9e,
+       0xa153bca7, 0x7bde5f2b, 0x95fdae83, 0x95d1cf1f, 0xae0a3001, 0x12fd99fb,
+       0xbeeb0adb, 0xeebb723a, 0x3ad9fffb, 0x378c0deb, 0x34f6109e, 0x8a7b7a0b,
+       0x350b0e00, 0xad573e3a, 0x852c2fef, 0x03e472a5, 0x3ae16ffc, 0x0d3d2f9e,
+       0xefdd1720, 0x7ebd36a2, 0xbeb364b1, 0x71b5db5c, 0xe1caf235, 0x154d1679,
+       0x9e78690e, 0x02fb0cc5, 0x6bebd203, 0x8c6fa0e9, 0x2c291787, 0x46bcf305,
+       0x86dff7db, 0xe63642ff, 0xdbcff0db, 0x9e91366f, 0x9fcde4bf, 0x95e18797,
+       0x7fc7add9, 0x7fc7aa9c, 0xff1e9142, 0xff1e8f36, 0xf8f55349, 0xf8f57877,
+       0xe3d4a94f, 0xc7a7d53f, 0x3d3cda7f, 0x7afdd3fe, 0xead667fc, 0xa4dd9ff1,
+       0x32ee77c7, 0x82f33e3d, 0xb1f5754b, 0x67f8d7f8, 0xfabdcb41, 0x435e0076,
+       0x74681d14, 0x4b57d0b4, 0xdb6333f9, 0x4e374dfe, 0x1d803d2c, 0xd4fba069,
+       0x2adbaec0, 0x007d385d, 0x6bbf22f7, 0x19c87d2c, 0xff981740, 0xcf92cc97,
+       0x2af77c93, 0xeb879319, 0x8adf1a15, 0xf6d1e396, 0x6cfc68f0, 0xf6127c98,
+       0x09f2a8f1, 0x21b8e3ed, 0x3a3478fb, 0x3e59863d, 0x23ad3fa4, 0x766dd1ff,
+       0xf8338f3e, 0xd3f472ea, 0xddf894fe, 0x54e09831, 0x5c31ef98, 0x2c7f8c0f,
+       0x35f9227e, 0xd26160ee, 0x3305ffd7, 0xbbb06119, 0xc65a2130, 0x7a5494fb,
+       0xbd7908d6, 0x3c3df848, 0x08f1fe71, 0x9fd94697, 0xb371c2eb, 0x125ce87a,
+       0x82e52b7b, 0x8e386bee, 0xb1857b7e, 0xc3dbf43e, 0xd38e3fb3, 0x7f8d49c7,
+       0x8cea9978, 0x74f56782, 0x59f488a9, 0x8bf29e39, 0x9127bfaa, 0x23feaa5c,
+       0xe0cb4e7f, 0xb9f62c72, 0xcf06996a, 0x7007a136, 0xa19fc07d, 0xf093fd52,
+       0xcdc12b4f, 0x0fbe4763, 0xfa3f71fd, 0xecdfb98f, 0x53298905, 0x1738e993,
+       0x8df119e1, 0x0b648ee7, 0x460be79f, 0x4e784166, 0xffd27e64, 0x8580561e,
+       0xf026fef1, 0xa3e68efe, 0x555e4d1f, 0x80199df8, 0xb8c45b87, 0x861ead33,
+       0xedd963fe, 0x1aafe861, 0x15ef7ef6, 0x60c51974, 0xf876f199, 0xfcd17087,
+       0x5e825980, 0xf718d976, 0x05f8c577, 0xb4e06533, 0xe4632798, 0xcaddb0e7,
+       0x1e476e66, 0xa398b4f1, 0xd198cdd6, 0xbee6e781, 0xbcc20f4d, 0x795193d6,
+       0xa69780e8, 0x55fce491, 0xafce5c99, 0x35745e5a, 0x9dc457e1, 0x5eae5a1e,
+       0x591a718d, 0x19fe50f1, 0x88e463de, 0x84e4defa, 0xa0fe28fa, 0x65748b58,
+       0x7047d5a3, 0x89bcbd59, 0xee28c6e8, 0x75935a5b, 0xe51fddaf, 0x0866088f,
+       0x6412c33d, 0x2a131776, 0x3c7dfc31, 0x657ae19d, 0x675272bb, 0xf9f7fedf,
+       0x835b8478, 0xbe6d37a0, 0x138c3766, 0x417deed5, 0x1ef60da7, 0xfdffce13,
+       0x937eed3c, 0x5f8a54de, 0xf821ce6d, 0x6fe025df, 0xf1852bde, 0xc15981bc,
+       0x4bd8a1b3, 0x00a7efef, 0x8dfead7d, 0x665c6191, 0xbdd703f5, 0x94d0fb81,
+       0x8b01e4dc, 0x9bf7dd9f, 0x08ff7645, 0x669ed4f0, 0x9a3672b7, 0xf8d16d5f,
+       0x053614d5, 0x7cc231f1, 0x67dc1f88, 0xf7dcdfe7, 0xcfec9180, 0x5185fefb,
+       0x065b33de, 0xf043e57f, 0xe21e6549, 0xa1160e47, 0xc396eb97, 0x789b0106,
+       0xf30b72ed, 0x629c8217, 0xb93fa44d, 0x68e89798, 0xba30e79d, 0xb2fad947,
+       0x5cf87db7, 0x0dabb45b, 0x8b87b6d5, 0xd3e0f6f7, 0x271d318a, 0xf08493e5,
+       0xcb0d988c, 0x84aff718, 0x2f1f8c32, 0xbcbde3ea, 0x13ea209c, 0xb1f6f2a6,
+       0xcf3480f1, 0x3e3a691c, 0x2cabbfad, 0xc55a7dc0, 0x715679f8, 0xc7f35e2e,
+       0xe77f5aa7, 0x62fc8e9b, 0x32f11306, 0x58b8ff5e, 0x67758a67, 0x5fd63e4b,
+       0x4c7fafa5, 0x3bac3bd4, 0xffb02adb, 0x8dfafa31, 0xeb24ffa2, 0xfdd06f8b,
+       0xf1fa5927, 0x71f5111f, 0x2a7b17d6, 0xee83ce78, 0x6f5156fb, 0x157cf2b6,
+       0xf788b7f8, 0x6235faf1, 0x069dd77c, 0x3ba28fe6, 0xe678dce7, 0x727bc28f,
+       0x6caeb255, 0x3c70fec4, 0xd5afbf37, 0xf743233e, 0x43ffd6bd, 0xabc4fc62,
+       0x5bdf75f2, 0xb7d04cc6, 0xba26c9ef, 0xddc057b9, 0xabaa5594, 0x59e2d7ef,
+       0xc5cfc60e, 0x34ce9ca9, 0x5e71493d, 0x74ffeba1, 0xf1849a91, 0x03c093e6,
+       0x8ac7107b, 0xf8fb82c7, 0x1a7e5b5e, 0xf96869d2, 0xb3823a54, 0x940ce80a,
+       0xc5da782a, 0xabde2dd3, 0xca245ca2, 0x09e67a1e, 0xe5aae43f, 0x09de5495,
+       0xa7cf8af4, 0xf9e97b96, 0xf8559424, 0x2fd047ee, 0x05b63248, 0x13f2c5fa,
+       0x1f3e2fd0, 0xf9f17e87, 0xf58bf418, 0x2c5fa11b, 0xc1f3023f, 0x07e87af2,
+       0xff430fcb, 0xee5d6e58, 0xe59af2a3, 0xd0f9e8f3, 0x573d3f72, 0x7aa5af2d,
+       0x7174a657, 0x80cbfde7, 0xe2eb96c1, 0xc9ccaec5, 0x5afe7943, 0x698778bc,
+       0x426afb64, 0xe1e441a6, 0x7fa10ef8, 0xe29be807, 0x3aebd957, 0x9a1da10e,
+       0x49f8e3e2, 0xf544d75f, 0x8e3e4a8e, 0x06731df6, 0x3f395659, 0xa0f9c8d6,
+       0x27f292ba, 0x9f9e33c6, 0xb5320ee6, 0xc4f79c5c, 0x7e42253f, 0xcf48a57c,
+       0xf262f34f, 0x8967b4f1, 0xd31e4718, 0x58e5c5e4, 0x98c2faa6, 0xf8f56c3f,
+       0xee77fce9, 0x93a859b9, 0xd773a4b3, 0xfffd1530, 0x36bd7a55, 0x4ea94679,
+       0x35cf947f, 0xd64b3b52, 0x2676baed, 0x5daeb567, 0xab79ddf5, 0x4c8f08dd,
+       0xbaf30ebe, 0xc61d2c15, 0x91bed45d, 0xe043bdc6, 0x241bd60d, 0x891efd3f,
+       0x53e857af, 0x7ac5dacf, 0x1ec8eb2d, 0xc5e0e718, 0x01a0a4c2, 0x3f67e0f9,
+       0xf0fda24f, 0xf20653cc, 0x21678e13, 0x226be203, 0xbfac6588, 0xf952f584,
+       0x50aae452, 0x8caa612e, 0x8458cbe5, 0xa7d04eec, 0xfae4ce6e, 0x187153d4,
+       0x3ff6ca3f, 0xc253f3cb, 0x0a166fa4, 0x7a6a147c, 0xd62566e5, 0x265b76cf,
+       0xf3faabd9, 0x737c5a2b, 0x0d3cad85, 0x51fe88f5, 0xdc1287f2, 0x10b95fb7,
+       0x3e9098e0, 0xfbda9e8f, 0x88c35587, 0xbbef39e7, 0x0cdf3a58, 0xe74f48fc,
+       0x4ffce1f7, 0x330eff15, 0x98e35870, 0xabc9d908, 0x50bf1a8c, 0x0c5f9093,
+       0x24493d95, 0x09d2badf, 0xc39db23e, 0x7ee599e7, 0xeb6a978a, 0x6254ff94,
+       0x42967cc7, 0x7bb73f91, 0xce573df9, 0x781bca88, 0x53fb932a, 0x1bc7588b,
+       0x9c8a0f28, 0xe3b70f06, 0x2fbb3adc, 0x179b4c6e, 0x13cb17cf, 0x2d730798,
+       0x3a36b3c6, 0x55ff2b67, 0xbf23fe26, 0x41533d7a, 0x87b788af, 0x688be618,
+       0x3f6132fd, 0xd1f05f7e, 0x6833ac2f, 0x268e72de, 0xcfa4bda7, 0xd8f7617c,
+       0x8be65f31, 0x247d2376, 0x17d7d71f, 0xf8ef3dd9, 0xef172e81, 0xf4e0f04d,
+       0xe8da8be2, 0xbb79387e, 0x9a24b2c4, 0x4b7fcf07, 0x71ab7ae6, 0x5e0b3973,
+       0xf0692406, 0x7984c9af, 0xf755ea9c, 0x0f213419, 0x4c521aed, 0x353fd13b,
+       0xf082e10e, 0x7044531c, 0xbbd6245c, 0x820af97b, 0x8eb15ed3, 0xdc1ad955,
+       0xd7987cc5, 0x2dc9f78b, 0x5eecd76e, 0x2e1f3afd, 0xd62ef8ae, 0x94c8f737,
+       0xcf0b1aff, 0x487f8953, 0x5744044c, 0x1b7ee44f, 0x9c5ee798, 0x4ef382a7,
+       0x5a32f841, 0x29bb12cf, 0xfb40e784, 0x924a8ea5, 0x58189737, 0x7b4afc74,
+       0xcdf42cbe, 0x7e769969, 0xfe7bb97f, 0x8b2f0b95, 0x7449df2e, 0xa71682fd,
+       0x6e5c29b7, 0xb46abd79, 0x66ad6dbf, 0xedbc887f, 0xc1df3178, 0xf026a7fb,
+       0xeb2b323c, 0x1d798cd9, 0x4717d9a3, 0xec62f333, 0xd20d400b, 0xe50b64cf,
+       0xf2d5ac41, 0x2aa3d45d, 0x13c2f3e5, 0x822deef3, 0xf4d8d74e, 0x119e6ef7,
+       0xf0233beb, 0x7ae16031, 0x4a77c628, 0xf5e7515c, 0x6ec86abb, 0x0341e2d6,
+       0x559f3c5d, 0x09d44bf3, 0xcc381812, 0x4db030e1, 0x5d5038a6, 0x9efc8dd7,
+       0xe8c7eec3, 0x4be8487e, 0x11a87a45, 0xf45a6bed, 0x5dc2f276, 0xeaf1d5be,
+       0x317c7b70, 0x189d920b, 0xdac7876b, 0x114c91df, 0x12b0f1ef, 0x589cf78c,
+       0x1e247057, 0x63ca6be6, 0x53305e74, 0x5fee917e, 0x0db3ad05, 0xc56457ef,
+       0x58917efc, 0x36cc4fbc, 0x6b779c11, 0x256b1d78, 0x993ddffa, 0x87ddffef,
+       0x1634df4e, 0xae55f9fa, 0xff5fcba4, 0x6bcf2e55, 0x758e8b1d, 0x58c1df78,
+       0x42f948e5, 0x8b8659c9, 0xe95773e3, 0xe86ff9ef, 0xa0923dec, 0x6473bf12,
+       0xc8e15fa1, 0x698b139f, 0x5ee8447f, 0x3e541bfa, 0xe6379c1f, 0x7c31efed,
+       0x0e9a3f3e, 0x622966c6, 0xcb8b86de, 0x9fa19ec3, 0xb7e2a9d7, 0x79f0375d,
+       0xf579c18d, 0xa2bb8f87, 0x79b5b1f3, 0x5ee519ed, 0x3b1729e8, 0x797aa99f,
+       0xf2a70510, 0x1ed3826f, 0xa9f3c8d3, 0xc9f9f312, 0xc1cf7e61, 0xe2e97af0,
+       0x9faedbe6, 0x7be7a9ef, 0x0d76456e, 0x82caadf3, 0x7dddfb7e, 0x093d8a2e,
+       0x099475f8, 0x7c132cfa, 0x113643c7, 0x853bbc0b, 0x143a97f2, 0x5e481f5e,
+       0xf4015a1c, 0x30b439eb, 0xed81e517, 0xa7ee9998, 0xcf928c09, 0xd38b26b6,
+       0x690c9ef5, 0x14ac3844, 0xaade87f5, 0x7e1efea6, 0x1f90ccc7, 0x9b7b8b34,
+       0x5877b61e, 0x0d51def0, 0x852e588e, 0x5914c067, 0xd972c1ec, 0x3ad51617,
+       0x3e0678c2, 0xfb3123de, 0x7b4f1b46, 0xc455983e, 0xb0e94af5, 0x8fda798c,
+       0xdd36f55c, 0x9948f40f, 0xeff73c42, 0x18baff86, 0x76df87f8, 0xe5e9c4dd,
+       0xa37f8441, 0x77e261f4, 0x22901ca1, 0xf8462dbf, 0xfeb4fc99, 0xb666bbc0,
+       0xa70e1a43, 0xb45e8225, 0xd7eb69f5, 0x7abb6de6, 0x23c9e521, 0x2be2703e,
+       0xe4d05f05, 0x7b909244, 0x13922eb8, 0xcf3c2957, 0x7842b27d, 0x15ea647d,
+       0x8f612e74, 0x2e474b88, 0x9f788d37, 0xfc628bfc, 0x67fdcf87, 0xc197da0f,
+       0x079d232e, 0x7dde7b07, 0xe051d033, 0x2fdd0a37, 0x8954f40b, 0x7a1cddf7,
+       0xea2274eb, 0xe2cb3f75, 0x5967ecfc, 0xce1f2e26, 0x5e7495c9, 0xec2fade0,
+       0x77fd1472, 0x3e22c964, 0xe783d3d2, 0xf2943600, 0xd0ab67bc, 0xf56fac03,
+       0xadfce2d5, 0x2ccdff53, 0x50d9c945, 0xdbbe9996, 0x3cb88a60, 0x5ba05fd0,
+       0x07d26166, 0xaedee97a, 0x764e73c1, 0x32c6870e, 0x78c53010, 0xcfbf29ff,
+       0xa54b23ab, 0xf7bce179, 0xf1f8fbc1, 0xb06bd85f, 0xcbc60cbe, 0x66defa1f,
+       0x9f8cf8e7, 0x78cfefcc, 0xd9dfaae4, 0x24b0bef1, 0xb7bdd189, 0x3a8db313,
+       0xca8b7e3e, 0xd651d0f1, 0x5bfa83d3, 0xde50aed0, 0x5ef84761, 0xdaf5ea0b,
+       0x93c848be, 0x7dc57e39, 0x16a66bae, 0x81dcf085, 0x6cbec746, 0x33e461ff,
+       0xbc5f601b, 0x8f577a48, 0xc7c13a6f, 0x99f9825e, 0x743d482f, 0xb270494f,
+       0xa5f28ec9, 0xedd060c8, 0x8e6cd4b7, 0x7a09ed37, 0x3f3be929, 0xc9acb410,
+       0x8587797b, 0x2fa6b9e1, 0x424ecdcf, 0xd6ce54bd, 0x1d8f3cf4, 0x75a5f8e1,
+       0x1f87e92e, 0x2ebad2fd, 0x3dafee3a, 0x378e5c3f, 0x17950ff6, 0xb0b37c79,
+       0x5fe662fd, 0xe2e8fa8d, 0xce775976, 0xcfb123fb, 0x678b9d17, 0x7ebd28e1,
+       0xe9dbd4d1, 0x73a2cabc, 0x7a0c2c89, 0x7ce247d2, 0xf9da47d1, 0xff1fc13e,
+       0xd9f19e2a, 0x3d2fc917, 0xc9e6f231, 0x9aa67aff, 0xb8d3cbf3, 0x5ea41b5f,
+       0x0db9f213, 0xce99fc57, 0x76087c09, 0x9bf0b87a, 0xc2c299d6, 0xb60ce351,
+       0xf5a1673b, 0x2545e10c, 0xd7ad0c7c, 0x10f8704a, 0x866fffec, 0x8e0ea663,
+       0xebe7fd43, 0xffbc38e0, 0xc3ff1a42, 0xd2df45e5, 0xfa51c4ff, 0x1ff37557,
+       0x8d0c77ea, 0xf56affdb, 0x5fb009b3, 0xdcaf0d5e, 0xb5e632fa, 0x7dd3341d,
+       0xa3b3ace9, 0xbd2fce82, 0xdb5ce8c0, 0xf4ff07fd, 0xddabe63e, 0xc1e4d3bf,
+       0x918c0631, 0xe4119ef9, 0x0f6618c3, 0xda41fde2, 0x80bb2b33, 0xdefb13d6,
+       0x98ec84a2, 0x52296697, 0xd4542bec, 0x2b427acb, 0xb328ded1, 0xfcd27f10,
+       0xe7bf5ae3, 0x9eed6532, 0xdad7da52, 0x1207113d, 0xf0d925fc, 0x2d7893fe,
+       0x01b8293f, 0x3f7564fd, 0x0f3ced96, 0x887641da, 0x9856bfe6, 0x668dfc9f,
+       0xf79863e6, 0x4ff5ca1f, 0xfdf986cd, 0xfa00d808, 0x764be5b3, 0x676f31f9,
+       0xd6f7b0bd, 0x3db8f5c7, 0xfaeefc51, 0xf4e2e56c, 0xba18b6b7, 0x6787fc9d,
+       0x5cce5cc2, 0x9068f38f, 0x9d5a7e7b, 0xbd86f987, 0xd5209ee2, 0xb2ff7e44,
+       0x58bf7423, 0xb7af66b5, 0xb3b5c6c4, 0x6ba7681d, 0xcc44f6fe, 0x611d423b,
+       0xaa67bf03, 0x6b978126, 0xf9429d7e, 0x24b760dd, 0xd9ff2314, 0xbdf87b23,
+       0xeb827672, 0x0186b169, 0x841c86cb, 0xeb8080e7, 0xe8d7aee9, 0x2dd3bb1e,
+       0x35ff0963, 0xee90fcaf, 0xc193daa1, 0xb740cfe5, 0x8d4fe48d, 0xf78e53d9,
+       0xe0c9eda4, 0x1287667a, 0xd28d2c4e, 0x5564d73b, 0xacfd5f10, 0xf501ac65,
+       0x75ae0d72, 0x106c1f82, 0x912985fc, 0xffd7cc72, 0x5bfc2cac, 0xe37b7f92,
+       0x0c6977e8, 0x4e54fefb, 0x306de9f7, 0x15e43dd3, 0x9a6fc6fb, 0x850df507,
+       0x34c7ca06, 0xf9a38bec, 0xefcb5a9c, 0x516fc1f3, 0xcbec374e, 0xa9d3dfa4,
+       0x3e508849, 0xa7bc4355, 0x351fe310, 0x7ba4aefb, 0x1fac4fc4, 0xf2fc839f,
+       0x439aaa78, 0x07aea8f7, 0x8fbac3a0, 0xefe38f77, 0x39d0a75b, 0x0486db39,
+       0x0bfe48ff, 0xdec48e4d, 0xa327b417, 0xe113bfa4, 0xd9e2de33, 0x250fe509,
+       0xbd7f8f0f, 0x52a39911, 0xe743c57c, 0x9fac6b05, 0x7bf74d7e, 0x27707fb5,
+       0xa24ef7a3, 0x8b0ecd5b, 0xc846af1d, 0xc8a63d99, 0xa35dfc7c, 0xee02559a,
+       0x55f79e26, 0xdfa12863, 0xbee0d2fb, 0xcd5ee621, 0xf6b78090, 0x4296f13c,
+       0xfc8193f7, 0xe7bcc1cf, 0x44cd0713, 0x4c362767, 0xdab1f3a4, 0x13003578,
+       0xe3cbec3b, 0xc424eac9, 0x5f82b3eb, 0xf6e2acd5, 0xc6bef6a5, 0xf112b1b0,
+       0x2996e91c, 0x1ec065af, 0x86f8c449, 0x0f2b4ed6, 0xa64ba7ae, 0x93d9e7df,
+       0x0df08871, 0x9e90c4f4, 0x48d8af0c, 0x315e06be, 0x7e7c44ef, 0x0982c656,
+       0xf0efb748, 0xb57a3bdf, 0xef7a4cdb, 0x976e31c0, 0xc9afbb0e, 0xfbc1c91a,
+       0x64af030a, 0xc81b1f12, 0x7ae76c8e, 0xc7bf1c72, 0x8a7fa8ed, 0x8ba58388,
+       0x51d2cffb, 0x1ddb3b3f, 0x0cfd4617, 0x08d7149e, 0x7a6e5db2, 0xa181307f,
+       0x219e06df, 0xbda53852, 0x0b9dfa6e, 0xefbe26d6, 0xcfefefa1, 0xbe438ff1,
+       0xf4017f7c, 0xfbefc56f, 0x7cd9dda8, 0x8658a5ff, 0x5e310cbf, 0xed9bf506,
+       0xd2f7a5cf, 0xfbfe6e17, 0xbea26d0d, 0x6603ea87, 0xc75a14ff, 0x63b6367b,
+       0xec5e7584, 0xb2fb5f3d, 0xda8f0853, 0xa4ce01bc, 0xa5c2c5ef, 0xb5eb9b2f,
+       0xe9623c1a, 0xdf9f1072, 0x9bf43f32, 0x6ed139d0, 0xe3b5c78e, 0xb48f9c4d,
+       0x96bd244e, 0xf2ebc735, 0xf3745687, 0xebfddf73, 0x01e7846d, 0x9409f7a3,
+       0x46a39147, 0x02d1efc6, 0x0bfd008d, 0x2fde4753, 0xe27c8a9f, 0x679e56ba,
+       0x1f73e9f4, 0xe2b02ce5, 0x748fc879, 0x3f3521e7, 0x8892741f, 0x47ab147e,
+       0xe62eac4d, 0xf34cb67a, 0xb423bfe3, 0xefd2a8c1, 0x8fd7053c, 0x09c23f27,
+       0x7e8fba93, 0x25ed6a8f, 0x56aba406, 0xc13de70f, 0xed3ebe36, 0x9eed1e7e,
+       0x8cf8589d, 0xb82029c9, 0x5dff3036, 0x71f36778, 0x1044baa6, 0xab1bee8d,
+       0xe8017fc5, 0xbc18c76b, 0x9a1fc471, 0xbf0c2e48, 0x2df4cbd7, 0x7ff503bf,
+       0x65ca2e5b, 0x4f56ceb4, 0xeae51130, 0xef6e76c7, 0x945fa9d1, 0x275f32eb,
+       0x8e9aa1dd, 0x9c57daf2, 0x89ea9933, 0xf12c7e1f, 0x0dcf8d7a, 0x0bd23f5b,
+       0xa0ed83f6, 0xb872abaf, 0x04988cdf, 0x82c68bde, 0xd353cc26, 0x524053e4,
+       0xb75e780c, 0x2226a1cf, 0x16b5f63d, 0x5cbda324, 0xa55d50ed, 0x38117451,
+       0xaa9ce8cc, 0x4f1bf78a, 0xf0b3dfc1, 0xdd7f424e, 0xbfbd649e, 0x2f3e7620,
+       0x1f9deb4e, 0x872b3f5d, 0x7373f3eb, 0xfff19db8, 0x9fb09872, 0xf1c6e162,
+       0xbde044be, 0x86bfe3d5, 0x7698c7ec, 0x0927364b, 0xdf79887a, 0x52bff2f6,
+       0xfd36c83e, 0x026974bd, 0x61bf1ffe, 0xe2974a0a, 0x7af29e33, 0x3e72376b,
+       0x5566fb57, 0x4cbc03e1, 0xeda7b9e7, 0xff7e8878, 0x99cee163, 0x2df38c85,
+       0x8f4683c2, 0x85bc730b, 0xb645c7a8, 0x17dc76c8, 0x9a659bb5, 0x66d2ab4f,
+       0x4fef02d9, 0x7e92366e, 0x73e62b57, 0x489fcb32, 0x62985378, 0x549fb802,
+       0xbfa489fc, 0x73bf116e, 0x680eb312, 0x3a52b6f7, 0x1c2c7c02, 0x829f04cf,
+       0xa8e0e811, 0x10b4f081, 0xe70e877f, 0xbf2243b1, 0xff6cc9e4, 0x03ee585d,
+       0x1bee9dbb, 0xfba3ab6e, 0x7de16233, 0xfa27e2d2, 0xa3d6225c, 0x1c7633c1,
+       0x08039e0d, 0xde97d44f, 0x2f724ad8, 0x148cb8f0, 0x9d750ecb, 0x5a7a7b21,
+       0xaff7ccf7, 0x411bf7c4, 0xce51516f, 0x0ef6ffe6, 0x322d7394, 0x754a7efd,
+       0xc58b8177, 0x1bb46bc8, 0x37337fab, 0x272510d1, 0x8a65db5b, 0x998eb49f,
+       0xda88b893, 0xe909be9f, 0x71eab8eb, 0x7bb54695, 0x5e30672a, 0xcd57c3a0,
+       0xe224bfc6, 0x8cebb538, 0x2f0d2eb4, 0xe2273003, 0xe4096dbf, 0x8ac81a2f,
+       0x9e1abf50, 0xf11be906, 0xb413d1a0, 0x2ec73d7b, 0xfc4837e8, 0x5fcf2fa8,
+       0x4e8119ee, 0xe3063f16, 0x6d9b7f62, 0x85e25f74, 0x63c1ab8e, 0x5f62df10,
+       0xb8f11953, 0xdffc8f3d, 0x250aa386, 0xbb6f1f59, 0x71f7072e, 0xf40bc80d,
+       0x9148d437, 0xcadee9f7, 0xfbdd336e, 0xeef1b35a, 0x9abc70bb, 0xd6036663,
+       0x6ebc1df7, 0x062bcd12, 0x9ca700af, 0x207de891, 0x89e3922f, 0x13e81f82,
+       0xf5b5bfb4, 0xe69bcd44, 0xdd14f601, 0x0790327f, 0x03e28cf8, 0xa07e0447,
+       0xf444ddbd, 0x19dfefcd, 0x663daf5c, 0xf598f6bd, 0xbe88cdbe, 0xeb4fc799,
+       0xd9aef859, 0x3e17ef80, 0xfa21637a, 0x4ed6fad7, 0x25f575a7, 0xfee1277b,
+       0xfe81cbea, 0x0b97e047, 0x1675851f, 0xdb3ac37f, 0xa35f08e2, 0xb23933ae,
+       0x3ac37d9d, 0xa77e084f, 0x4543f3ad, 0xe67cc44d, 0xa1997ec0, 0xed9024bf,
+       0x2f2570db, 0x0552efd3, 0x60401e44, 0x37e50263, 0xfbf177f6, 0x003e35d0,
+       0x3d205de3, 0xfa1e8818, 0x534dd42a, 0xcbd6be91, 0xed97cc76, 0x6fd97b5b,
+       0xfac377f1, 0xd476c836, 0x382afa13, 0x901f80fc, 0xf1cbeedc, 0x83e544dd,
+       0xabfdfa46, 0xf97f6d13, 0xef3b9d03, 0xf9efd236, 0x36f9e40e, 0xcc32c3cc,
+       0xc01af917, 0xafae56e5, 0xadfd691a, 0x60b78f2d, 0xa5f3707d, 0xb8624e74,
+       0xb9c3d67c, 0xdbac9d76, 0x69514c87, 0x99a3c0bc, 0x06846f74, 0x85b0e067,
+       0xf0690f68, 0x4bdcf2c0, 0x1012e086, 0x2f51ace7, 0x092ef7e0, 0xc9f0867e,
+       0xcf0272e7, 0xc31f208b, 0xc9a32b73, 0x13fe58ab, 0x88e547ab, 0x3f2c47b8,
+       0x3df98bae, 0xe531a5ca, 0x46f863bb, 0x437d4c7d, 0xe7c83d4c, 0x3ff2469b,
+       0x9f1c186f, 0x8647d90d, 0xc0e83f21, 0xb9be7e7a, 0x684d515a, 0x8d38bcff,
+       0x851ae7cb, 0x7da1ae59, 0x54c1cfc9, 0x5cd9ac2b, 0xa63def8a, 0xfa093b68,
+       0x4327366b, 0x21f39e39, 0x8a695768, 0x56fc6b2a, 0x2e554f9b, 0xf3dac7df,
+       0x540bf6ef, 0xa8af1a8d, 0x1e1d4dca, 0xf39528af, 0xda16fe7f, 0xb265fb57,
+       0x726f032b, 0x3abec3f9, 0x2779e9b3, 0x405b67de, 0xfada60f9, 0xd038e163,
+       0x7f112679, 0x0dffb067, 0xae639d13, 0x20a94aee, 0x32392bfb, 0xc5abdc22,
+       0xfafeb4fa, 0xd9c4de95, 0xeb337ad1, 0x3dfe8c4d, 0x33ceeadc, 0x059ed1cb,
+       0x28e505f8, 0x3ba27e3e, 0xcaed02b5, 0x54655f9a, 0x87db39e0, 0x5fbb3572,
+       0xdc3af1fd, 0xe4cdfb37, 0x737fe88f, 0xefbf019e, 0x3c56b37f, 0xe37ba7ef,
+       0x913c3ffa, 0x1a27e383, 0xfc0af7f4, 0x4bb72e5b, 0x6c1f0c6a, 0xfff91abf,
+       0x55bcb481, 0x1ae6fe51, 0xc3d92943, 0xf3231bcf, 0xe7a0de71, 0xa5de60b7,
+       0xb943cfd6, 0xbfdf7d2a, 0xc8eda3ff, 0xc86c4e1f, 0xd2b6452e, 0xd91c7fbf,
+       0x2ec7fdbf, 0xfd93b42b, 0xbe41ee91, 0xbd51bcf0, 0x362bdb9f, 0xad7bee0f,
+       0xe3071c3f, 0xa7fbfd8c, 0xa0bfa394, 0x2f9f18ff, 0x007fc994, 0x3f9882ed,
+       0x689bf5a9, 0x7cc11f50, 0x232bf66f, 0x7ef711d9, 0x7986905d, 0x91a6894d,
+       0x376833e3, 0x579df3e8, 0xeed07ed2, 0x2bb58ef1, 0xcf1f3216, 0xbfb18db3,
+       0x63c0fbb4, 0xd65ac4ed, 0x1a57bab6, 0x22822f6e, 0xc4ba096e, 0x5fd382ef,
+       0xbbfbc907, 0xeb379f77, 0x0a0e47ef, 0xfc42c3bd, 0xe3f61ab8, 0x8537f25a,
+       0x6c17bfc8, 0xbb8c4795, 0x479b96be, 0xf0913ddf, 0x51bdf9d7, 0x606e3d78,
+       0x7ae01b8a, 0xee2cc4dc, 0xc6ec91d2, 0x9f6839b3, 0x3f17b70d, 0x4d463f22,
+       0x6c64fdf4, 0xbc78ddb8, 0x0156d422, 0x56be3af3, 0xb82fdfa6, 0xf631bb58,
+       0x19f7ed7b, 0x389ea30e, 0xf823fd19, 0x64df71db, 0xabe7eb37, 0xfc4e33c1,
+       0xfb6c466e, 0x1db972f7, 0xccb5f451, 0xbbefb8bc, 0x27ae748d, 0x9b17c761,
+       0xecfa40ee, 0x54f3da32, 0xefd0af8a, 0x32fdb03b, 0x740e07e5, 0x8a5c489d,
+       0x65ff6672, 0xd06cbc74, 0x532fd9ce, 0xf3bfa49c, 0x29e30b8c, 0x8dc50fd0,
+       0x7b8fdd03, 0x9b477e90, 0xf95ca9c7, 0x379ff8e2, 0xe226fe26, 0x4e3bfdc7,
+       0x077f2216, 0x172a783e, 0x5f85c8e3, 0x7abd7b89, 0x60fe91cb, 0x0fbfa47e,
+       0x7e92ce84, 0x4792e969, 0x7ceb2fbc, 0xe6e2e9ae, 0xdbf7a957, 0xe7ce7cc2,
+       0x679a1e4e, 0xa1311aa3, 0x28f2d59c, 0xad543ffe, 0x8000ada0, 0x00008000,
+       0x00088b1f, 0x00000000, 0x7db5ff00, 0x55945c0b, 0xe779f8da, 0x300c2b9d,
+       0x8a22e45c, 0xe2e41dc3, 0xb9b660a0, 0x784288ed, 0x2d34c45d, 0xb95141d3,
+       0xeeb6da43, 0x78a31f66, 0xa8b56b2d, 0x5306acac, 0x4a1ac4d3, 0xb46b0a0d,
+       0xc972b324, 0xcdddab36, 0x0bbcca0f, 0x7ee7d588, 0xcffeffb5, 0xc2f39cf3,
+       0xdd9788cc, 0xd7e8fbef, 0xf7de78ef, 0xdcf2e7bc, 0xe73ce79f, 0x49d6630c,
+       0xcd8ca119, 0x8667f063, 0x24fe65b2, 0xb8d8cfe6, 0x0c2b05e6, 0x6d758c99,
+       0x783a2c90, 0x3322d45e, 0xafa58216, 0xef0d1cc3, 0x9f548d13, 0xd0ecbcff,
+       0x1e573d41, 0xb4267c7d, 0x6ca8f45f, 0x075741d1, 0xae381fea, 0x9b5df781,
+       0x33df0c35, 0xc60c6566, 0xaffc6129, 0x59e265a4, 0xb459c609, 0x1c41c97f,
+       0x9293d167, 0xb3c85e85, 0xc96fd8b5, 0x960b12d3, 0x9ab5ffa0, 0xfcf5da6f,
+       0xffe05f9b, 0xeb3c1b05, 0x1cfb590b, 0x68b6a619, 0xc673e793, 0xa14aa3da,
+       0x9d26e2df, 0xcf1c61e9, 0xb19efde1, 0x553e61f7, 0xf149dfe2, 0x083eefeb,
+       0xb5ea93ed, 0x034e8704, 0xf0a96d63, 0xca1edd42, 0x47b574b0, 0xf3c1fbe5,
+       0xcca2efe6, 0xeb7aaf50, 0xf9f012bf, 0x9bf7f82f, 0xe2d64bab, 0x97ca7217,
+       0xc4b334b1, 0x7e81897e, 0x4a7979ff, 0xd9ed3f7e, 0x59631520, 0xd8d0ed8c,
+       0xfde05a07, 0xa31ffac1, 0x6aeca1da, 0x19310db6, 0xb33fd3af, 0x58e1541b,
+       0xcb0c0cba, 0x0269a74c, 0x1deaadc0, 0x6ab7ad0d, 0x2d82eacb, 0xadbc3750,
+       0x3d401981, 0xc0ef98de, 0xd27fef79, 0x5fadc0b2, 0x9daacc83, 0xb121df50,
+       0x41665499, 0x241deb89, 0x0c8ebcd1, 0x038ee5e1, 0xfbe2533d, 0x2191cf99,
+       0x6006c61a, 0x63a5467b, 0x3324fe48, 0xbb2a3e94, 0xb4458b3f, 0x0021cd5b,
+       0x57d04967, 0x096ad2ed, 0x0db3879f, 0x4e620e54, 0xcc679f2a, 0xccf6c466,
+       0x33384262, 0xe1103836, 0x08be2327, 0xa42a119e, 0x1c09df9f, 0xc21d8c3e,
+       0xcc81ecfa, 0x2dfe0db1, 0x1c99ebd7, 0xb59698c0, 0x7e47e3fb, 0x1a7f0569,
+       0x7f35ef02, 0xd0125591, 0xc1583c9f, 0x60c4c5a7, 0xef183f1d, 0xdfc7700c,
+       0xe5e78f81, 0x7b157f61, 0xfe83a665, 0x30d1ee2e, 0x77db1197, 0xe69db16b,
+       0xd1b5efe3, 0x890f3899, 0xaa3ac3c5, 0xabcf8ea0, 0x0eadab46, 0x9b54b837,
+       0x9b2f0435, 0x4eca8139, 0x24f0f5b5, 0x34d3b7e8, 0x63376b4f, 0x0c79453f,
+       0xcf84d1fa, 0x0ebce2d3, 0x8fad9c7c, 0xaa05bc46, 0xb7566f89, 0x99b6e328,
+       0xd524ffb0, 0x7818d331, 0x66a59ddf, 0xe9f1e05b, 0x6cf5c643, 0xcd78df58,
+       0xf7805d88, 0x09403577, 0x0be7beda, 0xc5ccef32, 0xdb3217ef, 0x85a3a46a,
+       0xb9733275, 0x0d69ffd1, 0x2b82f7c7, 0xec15cc3e, 0x01785df6, 0x15c16bad,
+       0x011ae67f, 0xddbc0ced, 0x174e3f69, 0x3d39994f, 0xbee3116c, 0x1db2ca2a,
+       0xb749d306, 0x819c2bfe, 0xa6aaf51e, 0xa4c9d308, 0xfe197abe, 0xcdd10223,
+       0x72d788f4, 0x9f1787c1, 0xca3b62ff, 0xf6c90ea2, 0xa9c61994, 0xc773da90,
+       0xc3ab10c2, 0x2336b47b, 0x5cc4d3ae, 0x675bd709, 0x8db97330, 0x8aeedbd3,
+       0x07d3d69e, 0xbbcd3337, 0x8246bd6f, 0xe13577c3, 0xa4638037, 0xfafb1c07,
+       0xe380f18f, 0xd027fdd5, 0x24d5dff8, 0x94ffa0dd, 0xf66ff46b, 0xbf5f7f98,
+       0xcaee3471, 0x07f31554, 0xa5f95aba, 0xa6cc41ce, 0x3246ff87, 0xb77c13a6,
+       0x6f4e35d2, 0xed7f87ee, 0x1b245c6c, 0xc8f7ef05, 0x17c74879, 0xc84cf34d,
+       0x90409ae7, 0xf7c0b74b, 0x6dde6b1a, 0x302eafd0, 0xf7e91828, 0xe12c731d,
+       0x6ac0c7ff, 0x071fe3a2, 0x24ed970f, 0xb1f3abdf, 0x915072be, 0xe1b9bc4c,
+       0x55f79269, 0xdfbe3e7a, 0xe44a607e, 0x8ef55b9f, 0xd5df6878, 0x3e6999f2,
+       0xd83f938c, 0x59e219f6, 0xd65f8f99, 0xccf10cfb, 0x50436c9a, 0x0131ac0e,
+       0x003f12df, 0xb57ac35f, 0xdbc5ed92, 0x57d81f80, 0x8a0db63a, 0x44b60d1f,
+       0x7f1f1b93, 0xfcd2d66b, 0x51221b80, 0x1d59da2e, 0x974d5595, 0xe066ce09,
+       0xf2975c5f, 0x13758abe, 0x59af91dc, 0xdaa4d218, 0x6c9bef4c, 0x7d69f989,
+       0xaffa50f3, 0x5768c0fa, 0xf6e9ff01, 0xe11fd3ff, 0x9eeea5d9, 0xd9d28162,
+       0xc3bafb22, 0x9f05bff7, 0x3efe0f64, 0x579e1dbd, 0x9f2077e2, 0x2ca7781e,
+       0xa54fe511, 0xe71d3bae, 0x9f9df07d, 0xffde51d2, 0x086cbfb8, 0xed01df3e,
+       0x6974bf51, 0x6e2d2bbb, 0x9331c5fd, 0xafaa355d, 0xe0f02cbc, 0xfec77cfd,
+       0x8f3881da, 0x2c431006, 0x5a59c608, 0x3064e23a, 0x09f58392, 0xe40c3394,
+       0x6fd436cb, 0x9464d34d, 0x339f952b, 0xccf50be6, 0x33dfae66, 0x0a873307,
+       0xffb953f0, 0xaf8899f3, 0x49ad2cca, 0xc9f14b05, 0x80ac7368, 0x7a593ef7,
+       0xafed0493, 0xb5f1f244, 0xf163d7a8, 0xc4609cfb, 0x59c80a5b, 0xcb6ffe7c,
+       0xf25ecd83, 0xb2ac75c0, 0x90abc601, 0x1ca0a7db, 0x1110b900, 0x7e57fd0d,
+       0x54d1fdf2, 0x0ee8b633, 0x17ecfc45, 0xd133e7fa, 0x5b68c4cf, 0xe9b3b614,
+       0x05bd1fdb, 0x119f4dda, 0xb8036511, 0x8d98aa16, 0x0024dbf4, 0x5748adca,
+       0x690569f9, 0x15d7e9fd, 0x25b78eb4, 0x60e10d9b, 0x505bd08f, 0x3244a4cf,
+       0x95c0047d, 0x0a623b85, 0x68b4dc60, 0xa87fd715, 0x43de60e2, 0x0f771ac5,
+       0x240e2e74, 0x4208e67d, 0xc757fa3a, 0x9ada35bd, 0xda57f389, 0x9ee33e7f,
+       0xfc3f5b34, 0xe38e148b, 0xfbceb56b, 0x15dd9e70, 0xc016cb46, 0x15f05fdf,
+       0x0cd2f77c, 0x3b064b9d, 0x5c634bab, 0x7dfd012b, 0x75a73be9, 0xaf63c000,
+       0x0d1d96d1, 0x6bbccddf, 0x4bac6afc, 0x8bcd8307, 0xdb0b9e91, 0x2d3e2247,
+       0xbe2e5b06, 0x86dbd72f, 0x2f12c284, 0x0625b60e, 0x0fce32a0, 0xf96278e6,
+       0xcefdf969, 0x50a7cf9f, 0xaa17e3e2, 0x45b85eda, 0xcb6b7d42, 0xac54f5c7,
+       0xfd474808, 0x246dfa05, 0x01cad7f1, 0x2d45dfd4, 0xbbf6762b, 0x138f0e3e,
+       0x34073d62, 0xb02bf6ec, 0x031b03ce, 0xef30b52c, 0xcd7735a2, 0x817282a9,
+       0x25d43f2a, 0x0e7fcc7b, 0x385edfcd, 0xafec0224, 0xff311a8b, 0x6afe62a5,
+       0x5f3b8253, 0x56bfcf7b, 0x921e2fb1, 0x05a2db1c, 0x4dfd4231, 0x61e3a07b,
+       0x9754eba8, 0xf50d32ff, 0x82ca9a72, 0x0fb3797a, 0xc670d8f0, 0xf9e62cfe,
+       0x3e9ff03c, 0xc5af9e88, 0xfc3ee1e7, 0x54a7f0fb, 0x3ef85a8e, 0xf099bb3f,
+       0xd1a552f5, 0x8558c322, 0xcc17040c, 0x6ab33e6f, 0x8ddffe71, 0x3b7f69f9,
+       0xb4596bac, 0x8eb8f7ed, 0xa8aac1b9, 0x6c3cd0bf, 0x3ed15329, 0x71d7cd1a,
+       0xd690fb1d, 0x1a4cc051, 0x7ad8a232, 0x0283ea15, 0x02ca5f13, 0x34c9f389,
+       0x78e0d566, 0xda8d99d3, 0x5ad4eb1d, 0x063ffed1, 0xef306738, 0x9e9d98bb,
+       0x2a0e62cf, 0x6a2e61ef, 0xa76b2f7f, 0xa06f02ba, 0x9c21b993, 0xc9874e4e,
+       0x10c7ff04, 0xa6fa9fdf, 0xeb0a5e0f, 0x6274fa98, 0xeb3ec33c, 0x6e7c1006,
+       0x82a9ef34, 0x9f8f807e, 0x1f23f5c6, 0x14fd09df, 0xe3e2f04c, 0x7c140371,
+       0x9f8f5fc6, 0x39fc7ada, 0x31ab31dd, 0x8770e002, 0xd61de940, 0x1877f232,
+       0xfabe9133, 0x1cdfe0ad, 0x0042c8d9, 0xf0666d3f, 0x562e706f, 0x501193e9,
+       0xb3231bcf, 0x1f1e6187, 0xcfa4672c, 0x1d90c83e, 0xbfc22b44, 0x9dfa2299,
+       0xcada6634, 0xfb976800, 0x0ba67b73, 0xe041bcca, 0xbbc9b87f, 0x2bf521f1,
+       0x109ca103, 0x227cf9e7, 0x5c23536b, 0xfa7aa527, 0x3d32532b, 0x31c01ddb,
+       0x0db10e51, 0xdbd1f232, 0xa46fe0d1, 0x1b287540, 0x9be10bfa, 0xd3d7dca9,
+       0xb6b2e933, 0x13d1e60b, 0x78883b6d, 0xbbf93c59, 0xe1062c39, 0x81193ec6,
+       0x5f28e07a, 0x476037d7, 0x93b20502, 0xc031a035, 0xf6053ace, 0x80cfd616,
+       0xb9e5845d, 0x1795331a, 0xf7c18ec0, 0xaa16359d, 0x7fe4c687, 0x5bcefd84,
+       0xf88d497b, 0xf0e06359, 0xc86e762e, 0x959e3305, 0xb15b3936, 0xe7e5722c,
+       0x785dbaa2, 0xcb15bab8, 0x567ebd35, 0x2cfc9eb5, 0x8225ef31, 0x15f8974e,
+       0x38034c4c, 0x2d96692f, 0x305c1f54, 0xd608726d, 0x16bf5435, 0x015c551d,
+       0xa97b019a, 0x8d7eb652, 0x74b6b2f3, 0xfac306b4, 0xa28cd74e, 0xb1ad9f79,
+       0xd7cfbcd2, 0x2c3951e4, 0x6a5bff26, 0x9d912ec7, 0x43a1b939, 0x73ed091d,
+       0xf91592ac, 0x732b76f6, 0x36ff8038, 0xd83eb869, 0xf900fa04, 0xc15a4c78,
+       0xa923f7f3, 0xe22edb46, 0x9427d3f7, 0x5338e0e4, 0xb1aa1546, 0x333f5ddd,
+       0x47dd1c16, 0x7ba237a7, 0x0215fd65, 0x91df176f, 0x55178e08, 0xdda2dfe6,
+       0x93223f63, 0xc351eefe, 0x9effa154, 0xec3a872f, 0xf78b0b40, 0xfda186c6,
+       0x0e6358b0, 0x87b3720b, 0x993e03ce, 0x7e7cbd9b, 0x6dc3eff7, 0x9c83efee,
+       0xe515fe3f, 0x8e5cd7d8, 0xea732581, 0x83739459, 0x47e82dc2, 0x013f0a76,
+       0xd45f3bec, 0xe05a9577, 0x52dbaa3b, 0x87de7eb0, 0xfa87cdcd, 0xb32357c8,
+       0x3c708f91, 0x3914c134, 0xd3eaf095, 0xfb9a0f31, 0x5ce1dbc6, 0xa167d7f0,
+       0xb2a1d17e, 0x5d1f406b, 0xb7cece64, 0x8d5b5d70, 0x92e7b416, 0x52cfb524,
+       0xf1076ba2, 0x5664926d, 0xb439052f, 0x07e7d5f3, 0x1f50c73e, 0xde0a3633,
+       0x97d1bdbf, 0x1adbd4e4, 0xf8a589cb, 0xfbfcf3fd, 0xc3fb1f97, 0x3e584d37,
+       0x0ffc315a, 0x04c62650, 0x8f453f51, 0x75c50c97, 0x1166fe83, 0x37aedfd0,
+       0x1d219725, 0x81dd77f4, 0x9f301115, 0x543b9b61, 0xd8cca103, 0x9962d52a,
+       0x30ef3832, 0x18b4cdea, 0x4465e133, 0x891cb443, 0xf1d035ec, 0x5e90dfd7,
+       0xa9f7d4f7, 0x07b29775, 0x3fbd3eb2, 0x5b9e7254, 0x335f780e, 0xb270f8f8,
+       0x9a06d967, 0x6996dec7, 0xeb43dd9f, 0xe7028b00, 0x90b5a85d, 0xebd8717e,
+       0xda2ece91, 0x3f642c92, 0x419fdbe7, 0x85b45efc, 0xecdf505a, 0x57fa7f03,
+       0x9a84fed8, 0xd6e6f9d6, 0xbe31fd4f, 0xaa7e0012, 0x6457de01, 0xfb62e774,
+       0x8666c18a, 0x85f830f4, 0x3e10f23b, 0xd6f67b95, 0x7ae53f53, 0xc59bfa0b,
+       0x46b72f7b, 0x9e381da2, 0xbe91e259, 0x23faf0f6, 0x1916ace3, 0xff5c5a96,
+       0xe5b7af03, 0xac1f3d53, 0x9fb6357b, 0xa79fedcf, 0xed635e85, 0x88ef24e9,
+       0xf87dcd64, 0xe35e047a, 0xf6d14dfb, 0x9f636a88, 0x963d043e, 0xa02c831f,
+       0x65b7dfe5, 0x704513df, 0xa63d49b9, 0xe948fa15, 0xb32d69ef, 0xc19fa01b,
+       0x3d425cf0, 0x77fae5ab, 0xa40dc81b, 0xc2ff4517, 0xfe18b6b8, 0x65e515bd,
+       0xeda52ca4, 0x3e447801, 0xe1fb23ad, 0x199fc766, 0xb1f49ab0, 0xf9554762,
+       0x8b56f970, 0xe3fbe04d, 0x8e395b46, 0x6fe840b3, 0xa2a736a6, 0x68c8717d,
+       0x42c988ad, 0x851dd8fd, 0x78bd006b, 0x652bd61f, 0xdd62abb0, 0xd0632aec,
+       0xb3c5e94d, 0xf1efeb46, 0x9f6d9bfb, 0x0cf30bed, 0xa3f152c0, 0x57e8abc0,
+       0x3834c6ce, 0xa93ece51, 0x6fd672e3, 0x6513c904, 0xbffdde7d, 0x036e7c07,
+       0xf40872b9, 0x3f600d84, 0x4d4638d6, 0x555f7cf8, 0x35fa0ade, 0x84808f87,
+       0xa4cc0eac, 0xe00fd5ba, 0x3328ce37, 0xb9fe3f5b, 0x9ebe0252, 0x86e63842,
+       0xcbb47af8, 0x22d40909, 0xbaecdeff, 0xd91f8165, 0xe62fd147, 0x6fec6610,
+       0x4b9d7cdd, 0x0861590c, 0xe6e96c97, 0x3a99fbd6, 0x61e2277f, 0xf48331ac,
+       0xd4e358dd, 0xf3463613, 0xefe70d7f, 0xf5ef4ebd, 0xd9cdfd30, 0x9893bf41,
+       0x77fc855d, 0xae714b49, 0xaefb4d16, 0x2d9e00d7, 0xf416a925, 0xaca1f7c7,
+       0x5fc4ff45, 0x8b6a764b, 0x5ca3b31f, 0xea1a9969, 0x6dfcbf40, 0x6e5103f4,
+       0xbdfc600c, 0x996fb781, 0x637a4a15, 0x11eb8ea0, 0xe88f8f76, 0xefc6061f,
+       0xf7d18797, 0x47f552b5, 0x72fdf869, 0x5f3b925f, 0xaedcb83a, 0x23dd740b,
+       0x4bbaf3c3, 0x7ddb0c09, 0x636b1cc9, 0x9932ddb0, 0xc8fbc1da, 0xaeb7e82a,
+       0xe79f2864, 0x4f4993ff, 0x235865d4, 0xc7248c82, 0x37549e29, 0x88111ad5,
+       0xaf8164a1, 0x7efe7aba, 0xf125c620, 0xa1d4347d, 0xb786abfc, 0xfbb45bbf,
+       0xf025d04a, 0xdb01c939, 0xd2355f14, 0xe6633ff9, 0xa1218b9d, 0x60908d64,
+       0xe28b67fc, 0x77785629, 0xa268f8e9, 0x9897111f, 0xd2b6e429, 0x1fa07e1f,
+       0xff307689, 0x9b60b59b, 0x7a79e901, 0x3403a1b1, 0x78b2fb30, 0xe5fa1f85,
+       0x4bb26dd3, 0x9de2f687, 0x7b5ed639, 0xb5c7062c, 0x148b71f2, 0x1f35ceff,
+       0xb74efae1, 0x764c3d9e, 0xbb846bbb, 0xb7e0a4bf, 0xd82639c2, 0xd12e2fdd,
+       0xd672f971, 0x5bedf387, 0xd82bb6be, 0xf8d3556f, 0x797f7760, 0xfe5582d6,
+       0xbc626fc4, 0xe0d6350b, 0x8f687193, 0x8ca951e5, 0x57938ca7, 0x804ab7a0,
+       0x3a3d9e9f, 0x0ae767b2, 0xb9d2af3a, 0xaabca066, 0xb134d836, 0xa555cf40,
+       0x6f91d2e7, 0x02920a43, 0x1f5dfe70, 0x93fd0cca, 0xe8ef0213, 0xed5c2187,
+       0x2f447ed5, 0x0f6dd44c, 0x045f9306, 0x97d124f6, 0x54294fed, 0x11ad69b7,
+       0x177e900b, 0x1d00fd03, 0xf7f1309c, 0x8903ca27, 0xa9ff66fe, 0xf00663ec,
+       0x25af913d, 0x22d13d3a, 0xefeafc53, 0x1697654b, 0x7059dce0, 0xf804a9e5,
+       0xb7d973ae, 0xd9413723, 0x646fe2be, 0x515ecfff, 0x9bbf0931, 0x0a6cba5d,
+       0xf16bb9ea, 0x1d72ecd1, 0xe17a3f06, 0x3ad62236, 0x5219d704, 0x0555a570,
+       0x2b2c0dfd, 0x3c01667f, 0x8b6b169f, 0xda95e7c3, 0x47844af6, 0x475fdbe5,
+       0xd5d2dfa1, 0x2b6372fc, 0xd9f86f94, 0x8e016292, 0x88ee2b95, 0xa99d855e,
+       0xbe1013bb, 0x17c06a95, 0x87d08fd2, 0x0e7e8255, 0xb1d2dac7, 0x0f8af97d,
+       0x4df6cec8, 0x6bf2e36d, 0xfdf1cdd9, 0xfb6d96b9, 0xccaef824, 0x4a92a5a7,
+       0xf38e91d9, 0xfcb92f3a, 0x2b8458a5, 0x982e7ff7, 0x5081fe5c, 0x2edc54da,
+       0xb9e1db2b, 0xa86a9a5e, 0x77c0af88, 0x6ad94e65, 0xa1c77f20, 0xb77bf9c5,
+       0xd4e7832f, 0x979f26ee, 0x1e7f2732, 0x6dd8f4d8, 0x172eff1c, 0xcedcf7e0,
+       0xff882df8, 0x4e5f7b8b, 0x7d9d7798, 0xcbe7ab8c, 0xe9017fd7, 0x017ae00d,
+       0xde90689e, 0x7e1e741a, 0x08cee778, 0xdceb7a0f, 0x3e40e899, 0x14edfa57,
+       0x9c5985f2, 0x1f22a723, 0xd1239d58, 0x0ae4555e, 0xc9d33bd3, 0xa6724e8f,
+       0xc8a8dfa3, 0x4cef9623, 0x670ee7a0, 0xa7dfb602, 0x650971e2, 0x915dd2dc,
+       0xf8f30ff5, 0x89955daa, 0x582d94f5, 0xd1bdfa57, 0x693712fa, 0x0ec9ea3d,
+       0x62effacf, 0x95fd3c79, 0xe739e057, 0x73f85977, 0xd1e0accc, 0x8260edcc,
+       0x055a57cb, 0x8247f72e, 0xb9c32afc, 0xb9bcd0c5, 0xc7857fdc, 0xd865f62f,
+       0x76ae5122, 0x9e607ae2, 0x9ea102fb, 0x9f08768a, 0xe05752b7, 0x15ef3de0,
+       0xc48c2d5f, 0xac7d6638, 0x84b2ef12, 0x1ad4fd21, 0xd5aa9cb8, 0x8a901f80,
+       0x88f161fe, 0x1bf46a93, 0xea45e12d, 0xdc2c383e, 0xfa47a194, 0x4339b45f,
+       0xb50f4eef, 0x061c463b, 0xec2ecccd, 0xca705b50, 0x63c76ab5, 0xeed6e768,
+       0x46769d90, 0x6856f5ef, 0xf078c17f, 0xb85bb628, 0xda387039, 0x8bf7caa5,
+       0x17856536, 0x6533cdb9, 0xd33c2787, 0x61f59e9c, 0x5df59e4d, 0xfd65ab68,
+       0xb865dfeb, 0x0e23eb3c, 0xff4fd67b, 0x4819fee5, 0xfdb2c576, 0xeeed1931,
+       0x461ee5bf, 0xdf66723d, 0x9f88fe9b, 0x5a8bafb2, 0xb4589fd1, 0x80ce13c9,
+       0x6ded0937, 0xf48976fb, 0x9bc38968, 0x5be7fa3f, 0xb88b96c6, 0xa7724b37,
+       0x6f665293, 0xdd5f4755, 0xce733cfe, 0x955d02b0, 0xe23c5d2f, 0x7ebe88e4,
+       0xd46e756f, 0x3de43da2, 0x94f8b5ee, 0x8c66ad19, 0xe28e152b, 0x34b57eef,
+       0x2a0b7d9b, 0x34ffad89, 0xf0afe917, 0x6ff48911, 0xef891be1, 0x68ee9ca3,
+       0xca81359c, 0x0f047919, 0xa8b5de25, 0x41f97245, 0xd38a34dd, 0x924d82ed,
+       0xe7bcc183, 0x7c29d4ad, 0xad16e340, 0xc2c79cf7, 0x8bf7cf3a, 0x03fc0e9a,
+       0xf58b95f7, 0x8f51682f, 0x7cf66f15, 0x0f7ceb0f, 0x33d29bfd, 0xa51de28c,
+       0x79d17f5b, 0x5aebe7be, 0x7ec3aca0, 0xfdf5c33b, 0xb5e9378a, 0x05624e53,
+       0x010ff8e4, 0x6f50e7f9, 0x5eaeaafc, 0x3055b846, 0x58a603db, 0xbe5ddff2,
+       0x3a858f30, 0x9386c7b0, 0x5d75a5fe, 0xfb4014de, 0x199cf0e5, 0xd665f9e0,
+       0xf2f51236, 0x167e3de5, 0x36d28fbe, 0x45f504d2, 0x15b84750, 0x9f040db3,
+       0x32bf9472, 0xdbab17a7, 0xee4f117c, 0xfb81b675, 0xd76ae533, 0x19438401,
+       0x10efa76b, 0xcaedee7f, 0x065f5d61, 0xf5e1fda1, 0xdc50b33d, 0x25a8cabf,
+       0xfd3555bc, 0xaf7f73a2, 0xbf8a55f8, 0x5f3dc4a7, 0x07dbbd2c, 0x64957ae9,
+       0x632f467d, 0x456c68e9, 0x92312e3a, 0x9ebbbfde, 0x0c3af3cb, 0xb85da17a,
+       0xcbec9931, 0x026b25bb, 0x346d97ae, 0x17597f90, 0x855e8d68, 0x2926a7ef,
+       0xf31da376, 0x7c4bba03, 0x7df05b1c, 0xeb57b706, 0xfd902566, 0x74e4b6f0,
+       0x3fb61ca1, 0x6ea5f9c9, 0xba9fa72a, 0xfde82347, 0x11aa715f, 0x3b725768,
+       0x22636ea5, 0x3e657bb7, 0x3f27f60f, 0xd1758f92, 0xcc035e62, 0xaec52f34,
+       0x25b26f5c, 0xb3adb9c5, 0x95d80568, 0x1ff10798, 0x0ff8c332, 0x29be0e2b,
+       0xe84dbe7d, 0x068deea9, 0x4fe7c607, 0xb8adf94a, 0xbbb4a2cf, 0xfdcb8e35,
+       0xedd6d991, 0xf1c51da2, 0x1f53548b, 0xf78e0dfe, 0x1b5cca94, 0xab7f06ed,
+       0x82fd0135, 0xc30d1b93, 0xb3234f11, 0x44e61c79, 0xbedf9706, 0xfb8acc99,
+       0xdfa2d9fd, 0x479538ec, 0x7403ee19, 0xcc9cfd09, 0xbf5cf1e1, 0x7b8a7ccc,
+       0xf6e6ae01, 0x4530a797, 0xcda453f4, 0x7eebf23f, 0x87c0a3e6, 0x39f8e38d,
+       0x85b49f79, 0x0bf00bcf, 0x1b8f91f5, 0x52765e28, 0x2f0517e8, 0xa4594740,
+       0xdafc856f, 0xe367e828, 0x93c7e935, 0xff06ee3e, 0x03f480c8, 0x0c7841f4,
+       0x53af1464, 0x87e803e8, 0x51fba1e8, 0xd03b823f, 0x648fa08f, 0xfd8c3f41,
+       0x0e4fd237, 0x7f148ff7, 0xb5f75944, 0x8ba011fc, 0x7db738d2, 0x6ec0bacb,
+       0x53cfdc3f, 0x1da981e8, 0x5fdbd759, 0x498d91c8, 0x4897e728, 0xc7b4163e,
+       0x86fd8897, 0xd1180b25, 0x96ab245f, 0x99c36f90, 0x4023f28b, 0xbfb0182e,
+       0xec03775f, 0x37f1f8dd, 0x5dccf457, 0x81618dff, 0xfab1f51e, 0x39f68f08,
+       0xf78f68a6, 0x7b278477, 0xce6f1fbc, 0x4c4fa8f0, 0xfda3d5ba, 0x8f18cb64,
+       0x8d476ffa, 0xd53f68f7, 0x6ea3d53a, 0xce352665, 0x6f26a5bf, 0xef25fa04,
+       0x7d93e4d4, 0xd1970de0, 0x986f83ba, 0xb0bd8c2d, 0x1a817275, 0xe03a37e0,
+       0xa86892e0, 0x282b8b6f, 0x8c9d0350, 0x39783c8e, 0xcbd8c4da, 0x3d78d371,
+       0x18e5e0e5, 0xbb8cefa8, 0x836fd793, 0x3e8206c1, 0x605e9b8f, 0x6c78a54f,
+       0xc667e203, 0x6043ea95, 0x97cfb09e, 0x96882c17, 0x3a997fd1, 0x33e60938,
+       0x05b6da30, 0x9d0f4fdf, 0x60002ab7, 0xab9f9bff, 0x7c9f6835, 0xdf4f9718,
+       0x72e25d75, 0x32f103be, 0xc12fdfe0, 0x91fd230f, 0xb2c241cd, 0x8fda46f5,
+       0x85cd7a63, 0xc83ef8de, 0x18cac94d, 0x6a5b3dc6, 0x846abf00, 0x574a9e93,
+       0x83ca898d, 0xbe54e135, 0x4566635f, 0x9ad6c700, 0xd70f2a24, 0x91f9e858,
+       0x7e54519a, 0xf2a5635c, 0x951e4d68, 0x54f9356d, 0xcd3c604a, 0xddb1b946,
+       0xb28356b2, 0x3c0eaecf, 0xafcbefa5, 0x52fcb6b9, 0x3e0a53b3, 0x06e3f1a1,
+       0xb47107eb, 0xcc2641ae, 0x1f9e51cf, 0x1985ffda, 0x4ce8d1e5, 0x68f3d13d,
+       0x9f599b63, 0x67c8ebc9, 0x97312f5b, 0x53b79fca, 0x710bb7bb, 0x187ca066,
+       0x76a46e5d, 0x2ed03d71, 0x107ddb1d, 0xd5e7c6a1, 0xcbea0b5a, 0xf63c85a7,
+       0x71901d53, 0xbe1ebf1c, 0xc7483747, 0x98184ee5, 0x895ef85f, 0xe1ed6e4f,
+       0xaa0e0de3, 0xc1b67da6, 0x7f248c73, 0x1915bd14, 0xf9c08aec, 0xd2d12e45,
+       0x31d53f73, 0x3b2bc633, 0x90135c6b, 0x3d09c74e, 0x92cb4e3f, 0xe54c1e70,
+       0x4729fa43, 0x1235b9fe, 0xa59b8bea, 0x18adcc0c, 0x4cdfcba7, 0xf39aa2fe,
+       0x70310b2f, 0x56dd5c7b, 0x3bb432f2, 0x71491a16, 0xfbe141f4, 0x59d81c58,
+       0xa9795539, 0x898f27a8, 0xfde7a7fc, 0x3c23df6d, 0xbf02a5a7, 0x409104ab,
+       0xbe79e13f, 0xf6bb3f24, 0x5d216627, 0x7bcce816, 0x4fc3f019, 0xfe221f5b,
+       0x67300828, 0xd7ac2649, 0x8417fd12, 0x0662f799, 0x50fec99d, 0xff88b8c1,
+       0x24fbfec1, 0xffbeed49, 0x74d921de, 0xc8a718f1, 0xf3e5a8bb, 0xd13b26eb,
+       0x00504988, 0x190701c7, 0xf1eedfe9, 0xc39fa47e, 0x1633ab82, 0x354c1ca3,
+       0x28bb6167, 0xe63fb74d, 0xacfd7457, 0x6812fca6, 0x5ba77fe9, 0x1685e41c,
+       0x4de2779e, 0x978e7f77, 0x38aaffa8, 0x1954ef9e, 0xd953d7ae, 0xe2972972,
+       0x38fcea78, 0x7ac0dbf4, 0x1d5f57ec, 0x2e7ae788, 0xe496b57a, 0x98228902,
+       0x2987d5b2, 0xbde63b75, 0xa3e03fd4, 0x00567718, 0x77e2d327, 0x7c7faf54,
+       0x7b479c5c, 0x7befb62b, 0x4e08accf, 0xc75ffbe5, 0x4af8f93f, 0xe90f18b5,
+       0xe0732165, 0xf8e5bc12, 0xc52084ea, 0x3f3c274e, 0x7f20621f, 0xfa064e32,
+       0x33254e1e, 0xcbe91941, 0xbbe458f5, 0xde2fda06, 0x0ff4e06a, 0xadca9bea,
+       0x2b5ede2a, 0xa860f8f4, 0x5b7b7c63, 0x42466d82, 0xa2e3f516, 0x0cc6e47e,
+       0x9108eba4, 0xbb861767, 0xbb5f7203, 0x4857a041, 0xc6788808, 0x2fd55968,
+       0x8fc74f3c, 0xe83a4429, 0x9df2f904, 0xf4eefc9b, 0x8eea5ff5, 0xdefc4abf,
+       0x365dfee8, 0x5f7ca77d, 0xbec554b1, 0x48b9260b, 0xa7115474, 0xfc053b22,
+       0xb425f7d0, 0x169b581f, 0xddf29cf5, 0xdf839071, 0x02fe1e01, 0x2fcb1172,
+       0xf8e21e41, 0x8879057f, 0x1e41dfe5, 0x2013f3e2, 0x076cb10f, 0xbfcf8879,
+       0xe5887901, 0x32fc7b8c, 0x9aaa7f91, 0x3cefb0c6, 0x736341f8, 0x3e3d5fdf,
+       0x5a3a7fa6, 0x33f3cf13, 0xfff7478f, 0xbfbca1de, 0x0bb3e39d, 0x19da37f4,
+       0x4d2b9740, 0xe3d6d741, 0x5f7c7e5d, 0xd39931ad, 0xaf045779, 0x10d78f2f,
+       0x6c555add, 0x98df7e13, 0xf1faa5ac, 0x21c51518, 0xdfbc41ac, 0xf22a09e3,
+       0x8da7a7e3, 0x7dc789a9, 0x3e7850cb, 0x7c7eafbc, 0x1d6f7f28, 0xf32b9fc8,
+       0x48cfde55, 0x143a7130, 0xf112ef78, 0xea77a055, 0x3e7f695f, 0xde7ddb85,
+       0xaa711ded, 0xf03f473c, 0x96f82938, 0x37ed02f8, 0x376883e4, 0x1334a8be,
+       0xa874285f, 0x04eadfd0, 0x3a71afce, 0x5ba0e741, 0x63a87e08, 0x19874e50,
+       0x8add9f68, 0x9eb038fb, 0x17e092ad, 0x71507e6f, 0x07e14b7f, 0x7a140f85,
+       0xc33e048f, 0x1d6522fd, 0x57a2f6bf, 0xd629dca5, 0xf7ea16d1, 0x8b6bc23b,
+       0xc97184c6, 0xf87f435f, 0xe7aaa47d, 0x9fc83de8, 0xdc667ea1, 0x6359c923,
+       0x8e4feeac, 0xe14ffc75, 0x6b85c8a1, 0x382ae3c0, 0x7fb17d88, 0xe7240e15,
+       0xfd238e50, 0x8eb723f6, 0x8b722bc6, 0x78e9efd3, 0xa3a461eb, 0xc6a0c92e,
+       0x81977578, 0xfaf78fd3, 0x7f39931b, 0x3ab47428, 0x8bfd7181, 0x5abd8ceb,
+       0xe9eb29ee, 0x4622e75d, 0x87ce2ff2, 0xb3c6f73f, 0xf9372eb2, 0xa5e70277,
+       0x6e3193c0, 0xfb020c5f, 0x3385e302, 0xeadeb812, 0xce7a701a, 0xfeb7d646,
+       0x9ecfa112, 0x0a7df153, 0x3ef4bf45, 0x53b9e497, 0x0ef43d53, 0x7bb5bf43,
+       0xddf88ebf, 0xafc562a5, 0x7d84ffa3, 0x8383f9ba, 0x667b1e04, 0xbed0abc6,
+       0x68d1fceb, 0x39d63d47, 0xfa04fbb0, 0x349b9d91, 0xd6fdfb8c, 0xdde81249,
+       0x30ff1805, 0x4f5f3c63, 0x6ae7f6fb, 0x3b412950, 0xe813a5e7, 0x233d56bf,
+       0x52803d33, 0x1987e67e, 0xf70b4f48, 0x1f684c6b, 0xe27a6ed5, 0xa9e3d230,
+       0xed19923d, 0xb03dce92, 0x515f687c, 0x4030e7e7, 0x63a85cfb, 0x2d4645fb,
+       0xf92befe5, 0xbc62e52a, 0x31950cef, 0xfb1f4f18, 0xbee0868c, 0x7bcf2770,
+       0x12d36f79, 0xe53863ca, 0x34585890, 0x6b2ff9e6, 0xe7b8c08d, 0x405cfcf3,
+       0xf29731b9, 0x32774bf8, 0x2ae30b8b, 0x3b167e8d, 0xcf3abfaa, 0xc762957c,
+       0x3dda2d46, 0x9f3d9bc5, 0xacf56e97, 0xfe48be03, 0xe6783797, 0xf02584bf,
+       0xcc967a7c, 0x5a1e2832, 0x8af64417, 0xe5afdf22, 0x73175967, 0xf7d8cdb9,
+       0x95cf18a1, 0xf510fff7, 0xa7d7918d, 0xd4077a8a, 0xf1c0fe2f, 0x52a5c0a2,
+       0x6088bfc9, 0x5a2fb899, 0x4260dfb9, 0xf9b2b37f, 0x86967f5b, 0x53edbffb,
+       0x92df7f88, 0xadef684d, 0xdf69926b, 0xf0c5a2ac, 0x564be612, 0x6b54fdee,
+       0xdfb843f6, 0x1dcaf647, 0xfd1abecc, 0x254a9743, 0x28db23f6, 0xddacc6ce,
+       0xdd7e290b, 0x1da1306c, 0x17d6f950, 0x7d60f7ad, 0xab70c4af, 0x3b7073ae,
+       0x67c2c9d1, 0x67d7da64, 0xec8da168, 0xf11913a3, 0x0676788a, 0x2116be10,
+       0x80cf11de, 0x8cb3c477, 0xfdefc4f8, 0x274e0eb4, 0xb53e1fdc, 0xc157e383,
+       0x9ebcae7b, 0xd6945dce, 0x7d8f3c73, 0x3e53db66, 0x261a0744, 0x7ef080e8,
+       0xbbc7336a, 0xed2aff76, 0x7adfa440, 0xd6683a2f, 0xce01d2f5, 0xf03a2aef,
+       0xd8897fc2, 0x03a6f03f, 0xc45ffc6f, 0x9bf20564, 0x1cf53e7f, 0x5a7edfda,
+       0xe25797ca, 0x8eca0371, 0xf1810a1f, 0xaf9d04e6, 0xc79e0fb8, 0xe2cebf87,
+       0xe938cec0, 0xf28b9b6f, 0x4ff8c4ee, 0x8ec06c30, 0x8195d84d, 0x69ab52f4,
+       0xfa34f6df, 0x5f7c81fd, 0xea7a2bb3, 0xdd6137e6, 0x11fe82e3, 0xe78218d5,
+       0x24267428, 0x2504b2b3, 0x057e0dde, 0x0e30e5e6, 0x0773c077, 0x45a2b7ae,
+       0xfc01d2e7, 0xab1c9ed8, 0x15d73fbb, 0xa395d7c1, 0x1f739eed, 0x1fd005fa,
+       0xb959238e, 0xf2d6579f, 0xff1897c1, 0x32b2fc54, 0x9fb10bf4, 0xdd0bf006,
+       0xd32515f6, 0x656ed427, 0x23cd0c42, 0x66d7ec36, 0x676bc3b4, 0xec4f9b31,
+       0x2303f4f5, 0xb1c4a0fd, 0x5e3f69ae, 0x76284f43, 0xf20fb323, 0xe421873c,
+       0xef1122d4, 0x11c0f43d, 0xd78c3075, 0x7c2255b5, 0x7c80b494, 0x36f3a10a,
+       0xa2783a0e, 0x7f6893f0, 0xe00de91a, 0xbd5ec676, 0xdd23254f, 0xe5be6919,
+       0x912b3e82, 0xa5bd608e, 0x71fc0799, 0xae42e59d, 0x51fb3794, 0x6d94a7bc,
+       0x2bba45c8, 0xfd5cf185, 0x8ee953d0, 0x6e53f246, 0x9d8a4f44, 0xb3c7b959,
+       0x9104d6dd, 0xd2cc9747, 0x6ef8017e, 0xeacd5e41, 0x72392793, 0x6be6006a,
+       0x007330f7, 0xfeaf73f2, 0x1467e713, 0x09b893f9, 0xdfaddc58, 0xa99e8764,
+       0x4c29f63d, 0x6734f51e, 0x61fb47b8, 0xf78f664d, 0x8f24ae19, 0x5b0e23f7,
+       0x6d59ea3c, 0xdfda3ca3, 0xa3d5a5f2, 0x9e7b6b7e, 0xcedbfb47, 0x7bd47be4,
+       0xd73d6152, 0x23bba7d9, 0x3f68f25c, 0xe8f06cde, 0xa052627f, 0x28c7bd47,
+       0x4aec23e0, 0x963ddec5, 0xef21edc0, 0x64ef8152, 0x8a38e78b, 0x51dbfebf,
+       0xb54de39e, 0xb3778e7a, 0xfa0ed978, 0xc27e0d54, 0x58afd00e, 0x84fe02be,
+       0x0684fc1a, 0xfeb027f0, 0x5813f82a, 0xc09fc13a, 0x3f83afe7, 0xe03df581,
+       0x1f7d604f, 0x6f583ff8, 0xf2a3c9aa, 0x7a7c9aad, 0xb5f8237e, 0x8b0f718a,
+       0x71888f71, 0x7d385dff, 0x2a3bfa2c, 0xfec36bfa, 0x57defae2, 0xaeabc5e4,
+       0x098f3f00, 0x7dc5ab3a, 0xf6e2eb3b, 0x745b8c5c, 0x2db3287f, 0xe6cc47c0,
+       0x82135c38, 0xe7982cfa, 0x7f77e427, 0xca957184, 0xdc26b1bd, 0xf4d75917,
+       0xdf7c51d9, 0x233647b9, 0xfa6c1e5f, 0xb9fb1fd6, 0xc50c0570, 0x420f4211,
+       0x8c1ffcbd, 0x7bc30fea, 0xbe30773c, 0xe9080411, 0xb7e92737, 0xdd4a710b,
+       0xf255e741, 0xedb51a1b, 0x48d8bfb4, 0x6a743fef, 0xa8efdf3c, 0xc26f78f7,
+       0xadafb8f6, 0xe11c5076, 0x9fd2935c, 0xc797da8b, 0xeafe7449, 0x56f78edc,
+       0x45647e63, 0xee306163, 0x7c35960f, 0x3aff3a1a, 0x6fb8b8f8, 0x81ea2a57,
+       0x9c59668a, 0x55fde2b7, 0xafe72b34, 0xe3cbfcf8, 0x5083731a, 0x0c483471,
+       0xb605d055, 0xcacbf281, 0xa395b69a, 0xba4b2adc, 0x54fb8347, 0xc4594e5d,
+       0x517e7837, 0x3b7189b9, 0x7fd979ce, 0xaefbf43e, 0x2b14d0f3, 0x3de5b7e2,
+       0x0bb71c7f, 0xd9b8dbcf, 0x3912a32d, 0x7225477e, 0x9ec2ef7f, 0xdf31fcf7,
+       0x3df39d64, 0x8bb5770e, 0xd4507fd6, 0x7824a0bb, 0xfeb4c937, 0xc22a2b92,
+       0xd8dfd283, 0x19fa9944, 0x87ef14df, 0xe4e63aeb, 0x344e4de3, 0x8571e7f3,
+       0x23ff3845, 0x64b2b3e1, 0xdc7907b2, 0xc4e86bbe, 0x6087686d, 0xfe7f409e,
+       0x17ec5cdd, 0xf22ad9e6, 0x7b8c3f42, 0xf1e515a3, 0x0ce0bc91, 0xdda211d2,
+       0xeedc895d, 0xe2dad5cf, 0x331c8f50, 0xbe3e299a, 0x0fd62f22, 0x4b107bf1,
+       0x12f79e7c, 0xee943bed, 0x331de3e1, 0xdd23f9b5, 0x4233db1d, 0xe9477b46,
+       0x4f58aa6f, 0xe2f77d2f, 0x2a784ecd, 0xb11bd476, 0xf1fc3e9f, 0x4d1393e7,
+       0xe388fed4, 0x576819d3, 0x25f24b1d, 0x9c55a4bb, 0xe06b2837, 0x96b1f176,
+       0x6dd97ac8, 0x2272663f, 0x92ba57f7, 0xced78454, 0x77688d26, 0xd1e636cf,
+       0xbceb434e, 0x3e73d5b0, 0x63c74726, 0x3f978f68, 0xac19d32f, 0x28754d72,
+       0x66f4ffae, 0x0b15f9cf, 0x5c6b9738, 0xf46ea1a1, 0xcbdcde5a, 0x57af9437,
+       0x89f0acde, 0xe0a9f099, 0xb71258f1, 0xf3858ee7, 0x8de55f73, 0xafae88db,
+       0x45b5278e, 0xf910ffa3, 0x7cb79e7b, 0xb159ff23, 0x2bfcdc1b, 0xe4d4b3ca,
+       0x62a966c5, 0xaf83ecfa, 0x12ebac12, 0xcaefd0b3, 0x18f2bf27, 0xc6167b03,
+       0x3a7b40ac, 0xdff2e500, 0x7b71c29f, 0xc073f0f6, 0x09a6fa15, 0xc7a91e78,
+       0xf3028c02, 0x71acd9ee, 0x88c7ff08, 0x6142ed76, 0xdb369ed7, 0x8fb8ca46,
+       0xeb455cba, 0x21f54f2b, 0xc853a63f, 0xd18d8bbd, 0xe1bb25bf, 0x7f426cb0,
+       0xdb93ac68, 0xdc0de5c1, 0x4674adae, 0xda3469ff, 0x8b1a0ded, 0xe5379059,
+       0xe43b0b55, 0x4f7bb094, 0x92d6ef2d, 0x625fb37f, 0x79e3444f, 0x2fb48de1,
+       0x813a915f, 0xb90ad9ec, 0xef09ec81, 0xe7dec5f3, 0x7876cb89, 0xbe2217db,
+       0xae7cf4e5, 0x898d87f8, 0x324676bd, 0xf23933fa, 0x87e430e8, 0xc5578156,
+       0x669259bf, 0x5fbe4309, 0x504f36a7, 0xaf0810e2, 0x946ffdaa, 0xe51dbce0,
+       0x37f2163e, 0x7045be96, 0xfb9efaed, 0x8ce15d31, 0x38c5d1e0, 0x389abb7c,
+       0x2469579d, 0x07bf1e87, 0xf4fea5b2, 0xc6396392, 0xfe3ded99, 0xcb189f24,
+       0x3c58be43, 0x56abfb8b, 0xf942f98c, 0x5e0fc288, 0x7576f57a, 0x26e81cbb,
+       0xe44b3e27, 0x9138ea76, 0xcfc4b49f, 0x886dfa42, 0x39e9db9e, 0x48199ccb,
+       0x1fc0430f, 0xe3c5b9d7, 0x25bb1887, 0x21f5b76c, 0xe257ff1e, 0x26d55309,
+       0x7e9ba04d, 0x9509f654, 0x1df395fe, 0x04dfec37, 0xfafb1bfd, 0x20077807,
+       0x5a672fbc, 0x4d476f48, 0xab63f255, 0xf5952f89, 0xc37a005c, 0x68c63038,
+       0x9be56f10, 0x7df2e40f, 0x373a36fe, 0xe7cfeb98, 0xe2f22b91, 0xd9787d73,
+       0x4679e425, 0x25172f12, 0xd7efea79, 0x89ddac92, 0x64963e50, 0xe4913efb,
+       0x73e8899a, 0x93f9ef49, 0x7ef6b0d4, 0x4fe2efe4, 0xcbca39f8, 0xefc80fc0,
+       0xe64b56f7, 0xc97b0f38, 0x768791ea, 0x8f8f399e, 0xadd83846, 0x98a1496d,
+       0x6bf9c04f, 0x398352ee, 0x003f7dce, 0x8ffd1de9, 0x646ff87c, 0x62fd39df,
+       0x8f9d0953, 0x350d2db1, 0x1545fee3, 0x8dcc43f2, 0xee9bdfe9, 0x43ec9e19,
+       0x2ce982fb, 0xfbc0af3c, 0xf68d45bd, 0x27924878, 0x3a09445f, 0xb449b7ad,
+       0xb3ff5b5f, 0x66d1c79a, 0x9b37144b, 0x79f90f0e, 0x78aed101, 0x4d81e50c,
+       0x77ed2a87, 0x7d8885d5, 0x87da10e6, 0x7fac53bb, 0x388fc8ba, 0x634671a4,
+       0x0550e71c, 0xc59aa7df, 0x3e1fb49c, 0x7951b59b, 0xaf72b7dc, 0x0fb73a8b,
+       0x0bfc3f46, 0x48e28e9b, 0xf8b72bf5, 0x674d9ca1, 0x3fb84d2b, 0xe3b26c06,
+       0xb6d71197, 0xd1f7bc37, 0x0a00f394, 0xca4b1f9e, 0xf504911f, 0xf0a38033,
+       0x5f7f57e1, 0xca5ef9f6, 0xff7f3a1b, 0x62ee331b, 0x537507e8, 0x7569475e,
+       0xcbed1263, 0xd25b59d8, 0x2afc3ec8, 0x07f054f8, 0x781ecccf, 0x020cb585,
+       0xdd64ccf8, 0x8dd25d23, 0x39c0a9f1, 0x0d3dd34a, 0x8c7a0941, 0x9e3790e4,
+       0xb257b815, 0xacee716a, 0x682ce8fa, 0x954af77f, 0xabcaed19, 0xfc037ef0,
+       0x95fc0cb8, 0x7f224fcb, 0x52f85af6, 0x38af74f0, 0x2065f69f, 0x7bcbeeff,
+       0xfe1f8a65, 0xb5ebe36f, 0xd2595b24, 0x9bd6f875, 0x97c5af4f, 0xf17a9773,
+       0xf69f17af, 0xfe05a5f2, 0x6d9fc373, 0xa3f13fa9, 0x3372df82, 0xffa8c9f8,
+       0x0e2cfc5a, 0x177ddfd6, 0x4ae7a46d, 0x59ec48f7, 0xb5f866e9, 0x6f63fc9d,
+       0xd0ad017c, 0x49758a39, 0x64b8f1bd, 0x78e38f1e, 0x52dc96bc, 0xccd7dee4,
+       0xd124c875, 0xe3e7067e, 0x47947407, 0x2867ecac, 0x933b16fb, 0x2ef1beb8,
+       0x05bb06bf, 0x4e1e89f7, 0xed00363a, 0xa55ae3bd, 0xfaefbe1f, 0xc1b6f2f5,
+       0x5ff7c1f7, 0x71e5e18f, 0x5477cf2d, 0x1e1f56ea, 0x423afc0f, 0x7db84767,
+       0xa367252d, 0xf4b5f01d, 0x1ebc29fb, 0x7d6335a6, 0x09b65856, 0x4a35c7ea,
+       0x908570fc, 0xbf2a0edf, 0x38cb759e, 0xf7b1276a, 0x89661e11, 0x9238d3e5,
+       0xf3079414, 0xf177faf9, 0x405f71c3, 0x24a6ff59, 0x253f0f6e, 0x6f1bd1d6,
+       0xf14483ff, 0x3aa0b9f6, 0x902fb84c, 0x0c5e74fd, 0xc7f13f3c, 0xafda0cd8,
+       0x3e39ec5c, 0x8a68dfea, 0x7ea46e53, 0xadd2bf6e, 0x9bed4c29, 0x1cdeaf57,
+       0x2f3f8977, 0xa47f278a, 0x1ad0e058, 0x64fdcc94, 0xea006c47, 0xf5af4531,
+       0xe8c37e1c, 0x2b3d471e, 0xf5bdcee2, 0xdca347e4, 0xed81e2f5, 0x3f60248f,
+       0x3a7b5ac5, 0x533f539e, 0xda145cff, 0xd7dbc50f, 0xbb5d9024, 0xfa025d7d,
+       0x1e5bc527, 0xdd52b049, 0x91fe46d7, 0xfcfbaf9a, 0x7a5f5bee, 0x2e8ecdd8,
+       0x8afdca1c, 0x3903fad9, 0x484edf68, 0xe30ab8b9, 0x947ff1f6, 0x2f770e28,
+       0xfa855b6b, 0xe7124e76, 0x27a7562b, 0x7cd4cff9, 0xf25b749f, 0xf728ade4,
+       0xab7d248f, 0x9bfd4229, 0xe6fea6a4, 0x30fac730, 0x95adbf8c, 0xd7d6fe28,
+       0xbbed307e, 0xb494ae16, 0x47a821e1, 0x6fd03303, 0x240a4aec, 0x9b5bceb8,
+       0xe7cf8ad1, 0x27cfe32c, 0x8e7b1ce8, 0x6b4f3f61, 0x14091f29, 0x3e7b8c65,
+       0xf712577f, 0x97aee6db, 0xc6579ec8, 0xb42a7f89, 0x5d9d7dde, 0x97f01d8a,
+       0x29de4897, 0x2d2733e7, 0x70fdf4fb, 0x6aaff7e8, 0x07a80fdb, 0x2a793e8e,
+       0xb8d9e50e, 0x48a9b3a0, 0xdb5af1e7, 0xeeb825b3, 0x578a3a2d, 0xca47a666,
+       0xf87ed061, 0xc09e63fd, 0xc2b2ee72, 0xee304b67, 0xc19f49bb, 0xfcf985d3,
+       0x15664b16, 0xd5efabfa, 0xe10f35df, 0x3d49e676, 0xeb8be1d9, 0xcbbce913,
+       0xcbdfe4b5, 0xc2bc7f80, 0x9e8d6764, 0x26355dca, 0xbbb7d73a, 0xafea9c26,
+       0x64a998d5, 0x2d7d3933, 0x75797136, 0x5c46fead, 0x906661f1, 0xa16b9957,
+       0xff53b03f, 0x4a6ad69f, 0x0fc67586, 0x4eb2d8ad, 0x5ab70bac, 0x63d1ec32,
+       0xeb990e11, 0x13456bee, 0xee24e7f6, 0x6c747d5f, 0xe1d9146d, 0x285e3acb,
+       0x2477f781, 0x032447e7, 0x2f9bf5bc, 0xbde0bc51, 0x107335e6, 0x745bc5de,
+       0xdd627d7c, 0x084c9e67, 0xbce3167b, 0x7fc86a1f, 0xf1dcdaaf, 0xe7283ac2,
+       0xeb4fbfaf, 0xbb37ef4e, 0xbe64b0de, 0xbe237b3f, 0xfe1c16ba, 0x247abe75,
+       0xcb67f88a, 0xe86fba1a, 0xaaabe5df, 0x7e09cb65, 0x56f9c915, 0x8d19fb84,
+       0xe9f90a3d, 0x89aff24c, 0x25fbedce, 0xc722bf82, 0x4f6fef95, 0x532ff0e6,
+       0x1d93d739, 0x0ff8e429, 0x7c2239e0, 0x4e9f340f, 0x87fa3b40, 0x5dd759a6,
+       0x7e1abef7, 0xc0134d3f, 0x13fefdd7, 0xb5a91ca5, 0x7d605ac5, 0x0639c523,
+       0xc9c5f7ef, 0xc79e1c4a, 0x724ff16d, 0x80a953cb, 0xa1040589, 0x3e5c93fe,
+       0x9a2b9720, 0x46ab38ee, 0xc2fc0dff, 0x50ed3c6f, 0x5e9b8df6, 0x6f7cd6bf,
+       0x3f625654, 0x7bb93eea, 0x8f2a97cb, 0x6d6e677b, 0xc7b8f1f7, 0x815fd7a5,
+       0xefda5a67, 0xce57a889, 0x543e602f, 0x9d327367, 0xce2b3897, 0x03ee7573,
+       0x65c78cbf, 0x6fb23c98, 0xcf9b679d, 0xf59ca3a7, 0x5be56f5e, 0xca3e89e7,
+       0x925cd69b, 0xcfe3fd68, 0xbc6fd3aa, 0xcfdb03fe, 0x6724fdd3, 0xd123ed35,
+       0xb6d4eaff, 0x2a1e23a7, 0xfcf2e6df, 0xf283855f, 0x96ad64bc, 0x132509c7,
+       0xf23991f9, 0x74038a05, 0x8071e61e, 0x4897e6ca, 0xf0b4f69e, 0xaa954c78,
+       0xe30c372d, 0xad1dd517, 0xc27acf28, 0x89565fb9, 0x1e603727, 0x1e8563a3,
+       0xe1477754, 0xbd1d8e79, 0xc1fdc0f4, 0xdcfc3533, 0x59ca9571, 0xe958794e,
+       0x8aed0cbe, 0xf0cfc873, 0xe8d2ce7c, 0x67e748d5, 0xa386031c, 0xfd28fc7c,
+       0xdf8a4aa7, 0x926bebbd, 0x3d958ec9, 0xd77bc4f2, 0xa27990e1, 0x62ec530f,
+       0xe97c8f5f, 0xb7f9ad2a, 0xe11f57e4, 0x435573fb, 0xb7b13f39, 0xac553f38,
+       0x770da03c, 0xf04eafeb, 0x4e4f6293, 0xe227f778, 0xd609edcb, 0xf99e51d7,
+       0xfec42ca2, 0x921c03c2, 0xec8dda24, 0xb6348fdb, 0x4f3e3f08, 0x4d55f7a6,
+       0x397dc332, 0x7947ee16, 0x036c7905, 0x604e5be5, 0xaf3cd1ce, 0xbc31fda7,
+       0xbbe267bf, 0x43cc08f2, 0xf69a7b03, 0x6c7d73b7, 0x75a79871, 0xb809255c,
+       0xbaa7333a, 0x916eb3e9, 0x965a3297, 0x47758f48, 0x329d92f8, 0x6cc5667e,
+       0x4ed2af9c, 0x0cf6e2a7, 0x167643f4, 0x73f37473, 0xf4eeae35, 0xd7fcb702,
+       0x56faef19, 0xce645e93, 0xe36e19cc, 0x7df94348, 0x7f71973d, 0x9549e41c,
+       0x91cd87d8, 0xfd0a7e7f, 0xf9fbc5ad, 0x5571e3fe, 0xe79417f4, 0x25dfe78d,
+       0xefce673c, 0x66366027, 0xa4ff22b5, 0x40f3a00d, 0x8625bb55, 0xcd957af9,
+       0x17182dba, 0x87b4d4aa, 0x6baf3d22, 0xf48b5cfa, 0xb2fb855c, 0x3a9cfc69,
+       0xe89b978f, 0x132a8c5e, 0x4d7afbe3, 0xdc605f89, 0xd730e2ae, 0x4fea15a2,
+       0x72801e29, 0xdb2bc71b, 0x7ffe48d3, 0xff917339, 0x49e0de5f, 0x3ce13d37,
+       0x27cdef9e, 0xc13350d2, 0xdf8fa949, 0x8663f9c4, 0x898d7fb8, 0xf0f8ebf8,
+       0x73f77ab0, 0x6150d24c, 0x57e7ca2f, 0x15d31da1, 0xfef05923, 0xfb1f2e9d,
+       0xec8fb44a, 0xe9aedc09, 0xe657677a, 0x8e2f9242, 0xcf9869cc, 0xf1deec23,
+       0x65aa376b, 0x6f8cf9b7, 0x2ec6f1e1, 0x8fbc561f, 0x841b6ef0, 0x2129f8f8,
+       0x803a1e5f, 0x7a3a1dee, 0x5483c61b, 0xf2c7dffd, 0x1d0388a0, 0x6a5138c1,
+       0x4627bcdf, 0xc6797246, 0xad47441c, 0x92919ce2, 0x3f7ca3af, 0xd7a7ac53,
+       0x7c78924f, 0x05f25aeb, 0xcf306bf7, 0xb06bf715, 0xc3e4457c, 0xd60d7ee2,
+       0xb0f9155f, 0xcf835fb8, 0xeb06bf71, 0x2c3e447b, 0x1d60d7ee, 0x7cb06bf7,
+       0x1ec3e44b, 0x1e62a9c1, 0x49f43d9f, 0xe4568ba4, 0xf57d81b5, 0xf55e41e3,
+       0x8fed9e81, 0xf59e4907, 0x4fb51281, 0x49f42579, 0xa1e311bb, 0x66e7c126,
+       0xdec3b43f, 0x1059b5f2, 0xceb9cabe, 0xec4f7933, 0x171a3e43, 0xf2366b34,
+       0x8e884f57, 0x345a1ca1, 0x50cb76d4, 0xe1f0eef8, 0x491b71b1, 0x7f681a3e,
+       0x29ddf8fd, 0xc731e71e, 0x99588d24, 0x4631f509, 0xdfbf9c49, 0xf15f2c30,
+       0xb19fa12f, 0x6a99852d, 0x684c172e, 0xe5c8e727, 0xe2ce3845, 0x9408c308,
+       0x6899ffbf, 0x26ea1ecb, 0x2e0773af, 0xa87b438a, 0x02fe6355, 0x4ff6b2e3,
+       0x29fd0c34, 0xb4a77e25, 0x26389bdb, 0x9f1bbf1f, 0x3872bb14, 0xf7e7aff6,
+       0xacb559e1, 0x5567e701, 0x3efc4af9, 0xe51ab314, 0x2e50fe40, 0xdccdb247,
+       0xcd69762e, 0xe7f420ea, 0xe084c67d, 0xc0ab6e7e, 0xdf8161ef, 0xb8bf0223,
+       0xcd4e35bf, 0xc4b0b7f7, 0xbd2c2dfd, 0x27d6d0f3, 0x943ddfe7, 0x947740f4,
+       0x04db1e7b, 0x731f9ce5, 0x6b8dbdd2, 0x0c06dd05, 0x4b7a76e5, 0xff217e52,
+       0x94fd49ce, 0x79ddf889, 0xa17ee78d, 0xf7df5df2, 0x33abdf8c, 0x1669cb8c,
+       0x0ddfce20, 0x27cc7662, 0x8233782e, 0x0e9d4fe2, 0x00b65e7e, 0x18e51c78,
+       0xb9fb937b, 0x4bf39c2c, 0xd4611bc1, 0x51c456ae, 0x12da822b, 0xa7415cf0,
+       0xaea52be0, 0x18ae9b9c, 0xdf63750e, 0x828abcf9, 0xa73c04b6, 0x541929d0,
+       0x5b154f48, 0x8263fbf8, 0x44622aef, 0x1dfdca7f, 0xe214677a, 0x9bff6ba3,
+       0xeefe7851, 0x216ba361, 0x7e2efb97, 0x12b991de, 0xbce9af30, 0x79813ce4,
+       0x5ebb85c6, 0xc5798e9b, 0x17ce35e7, 0x5760beb0, 0x3bcc74e3, 0x9e352f3e,
+       0x1fbfb930, 0x3cc28ce0, 0x4e5dc2e4, 0xe3407efe, 0xb716810b, 0x13f5e6ba,
+       0xa2bb5ef8, 0xbc38fa71, 0x38e747cf, 0xf374835c, 0xc32fa71a, 0x10a7bdee,
+       0xdccd653e, 0xbddecf6e, 0xa8ebc2f7, 0x51faf797, 0x438bc13e, 0x4c7df9a3,
+       0x47af2fcd, 0xd46ceb7a, 0xdc3c3f10, 0x0f0bf9f0, 0x851d3b52, 0x9cea2657,
+       0x298a1899, 0x9a5bf5dd, 0xe75f44d7, 0x307f58f7, 0x31e685a5, 0xb3f39831,
+       0xe9dde53d, 0x73a03e78, 0x9007eeef, 0x800626ff, 0xd9f38b41, 0x94fc2065,
+       0x0e3c91be, 0x7e9d01e3, 0xffb0736d, 0x3c7457ca, 0x308de0ef, 0x61a4dfba,
+       0x976f8f28, 0x8510dd0c, 0xd6f5567a, 0x620fedce, 0x0315f35c, 0x0554f3ed,
+       0x54af3b71, 0x1f791fae, 0xeda5efe1, 0xb9d2af98, 0xaefb40d3, 0x838b1825,
+       0x78f6c97a, 0x9fff3e7e, 0x3c41cedf, 0xe99bc8e4, 0x5bf7cfdc, 0xc3842a0d,
+       0x0035ad31, 0x8fd8d9cf, 0x2cdfc869, 0xe392f511, 0xbe3e7cc1, 0xbf84b9ed,
+       0xa8510d90, 0xff834b67, 0x3de70530, 0x02f0de51, 0x65ec3bfa, 0xd9de3f7e,
+       0xf837009d, 0xcd36ecee, 0xe772c470, 0x273a3f4e, 0x30da5e7f, 0xb179ef07,
+       0xceede36f, 0x3c10361b, 0xf912dbed, 0xa13b70fd, 0x6ed861d3, 0xb3f3c7a3,
+       0x474e5edb, 0x2bdcf47f, 0x552fc913, 0x97e15ce8, 0xe7deadd2, 0xd5b9f8ed,
+       0x666ff152, 0x5ba333b2, 0xbedceb1c, 0x659f3a67, 0x6b9fdf7d, 0xefb9d0d0,
+       0x895b1d12, 0x3f0acd79, 0x91de4694, 0x552beb87, 0xdda027d5, 0x7da23252,
+       0x59c5f20e, 0x4387d303, 0xbe848fbb, 0x7cb3dd2a, 0xd7bfda2a, 0x420fcf9a,
+       0xf820fd1e, 0x832687f0, 0xd19f7dc3, 0x0d7bfcbb, 0xeeac7f33, 0xed5bdfab,
+       0x23f0fe79, 0xfd1cb3ad, 0x2e20cab4, 0xfb404e3f, 0x97639006, 0x977338c5,
+       0x333fb67a, 0xa7e88834, 0x809edb52, 0xffe94f7a, 0x6e26a1bb, 0xe9dbaacf,
+       0xefef325e, 0xde42ca26, 0x79e7e2ec, 0x1d48f74b, 0x41048e74, 0xcf07da1a,
+       0x81ddbd52, 0xe1fd4479, 0xc0a47c21, 0x3cb5f403, 0x57e69a25, 0xf3a060da,
+       0xed3e65e0, 0x952768fe, 0xa3fbb5fb, 0x96f9d3fd, 0x228df74c, 0xfe9442fa,
+       0x53c6fa63, 0x4e2593e2, 0xdfd0d58d, 0xf41cb078, 0xbfe1178f, 0xa54f1401,
+       0xc578d0c4, 0xfcfcbe4d, 0xce9da9b9, 0xcf9f7b63, 0xdc9a75c4, 0xe9b3b1f8,
+       0x3f7750a5, 0xb44a607d, 0x20ea87d8, 0xe7fae9be, 0x07485137, 0x12b62aa5,
+       0x49cf27f7, 0xd4081cfc, 0x39c81ce9, 0xfa59cfb1, 0xe907d1a3, 0xe50fdce7,
+       0x529dc7c4, 0xc3b9c93b, 0xf9213ebb, 0x2769a9d0, 0xe53fb739, 0x6c0f5e33,
+       0xeb72839f, 0x5e49ca70, 0x839f688f, 0x63b693e7, 0xf2f3023d, 0xe3ffe918,
+       0x474dcebb, 0xe6513f7d, 0x25ec13f9, 0x87c7898d, 0x0917bc38, 0x39068138,
+       0x87fe435e, 0xd2768cc6, 0x961f2217, 0xfe6e0182, 0x9d4fc298, 0x0f7bbccc,
+       0xbf3167f2, 0xaaec08d7, 0xfed1d786, 0xc16a159b, 0xdc37ba38, 0x90c57d94,
+       0x442c7fa0, 0x67eedd3c, 0x164a4dfb, 0x93b663ee, 0x4ed4017f, 0x3be57c76,
+       0xbb33f23a, 0x51dbdd34, 0xd9fa057e, 0x72bb62c6, 0x4ceadb6d, 0x4d05d298,
+       0xf49a2b7b, 0x91f39413, 0xeb7a732f, 0x9f897d4c, 0x92fb10ff, 0xe0fd04d3,
+       0x48f59a1d, 0xf3c7121f, 0x7c6f4d7b, 0xb3a6f28c, 0xb4e4962d, 0x6d9d3f37,
+       0xadee827a, 0xbbf412f8, 0xf00e2ddd, 0x94cbe165, 0xf3133007, 0x9f578c3f,
+       0x79f9edfb, 0x6c83f91a, 0xa473dbbd, 0xbacf3ac7, 0x2e905c37, 0x607c1e5d,
+       0x863fb827, 0x8d7186fc, 0xefba36ec, 0x005eb7a1, 0x7eadd975, 0xd5eeabd0,
+       0x400bef1e, 0x6131e1fb, 0x760f9417, 0x7dff271d, 0xadebcf37, 0xf546bd05,
+       0x2fb4bebd, 0x7a0ddaad, 0x2deb842b, 0xfe6517d4, 0xeab7146d, 0xfda3abdc,
+       0xa7cd1594, 0x40fd70a3, 0x299f148f, 0xee937e6b, 0xfd117e9f, 0x8fd22c87,
+       0xb30f94a1, 0xfd1439b7, 0xb979e510, 0xce2099ca, 0xfca3a417, 0xc8579e50,
+       0xff3a04ae, 0xfdd1b52b, 0x798a2f11, 0x2ea0ab97, 0x5bcc5d63, 0x9acf7ce2,
+       0xde62fdf9, 0x853c7b78, 0x0f9033cb, 0x8ae96f74, 0x40dc78b7, 0x42250791,
+       0xe7c41cae, 0x4dff9ca9, 0xee147eca, 0xf7df212f, 0x294c2723, 0x9aac8e02,
+       0xa58f3ae2, 0x885f3998, 0x1e5fa9ef, 0x7af9e277, 0x8f4f9f6f, 0xccefc549,
+       0x7a68e7bd, 0x9f6c51e5, 0x1039417c, 0x8560724e, 0x55d61426, 0xf74482fa,
+       0x5ecc953d, 0xd9cd0b9e, 0x747df522, 0xe6316c1f, 0x9eaf1ae5, 0x251d3797,
+       0x953870a7, 0x5dffb8aa, 0x7da25dba, 0xbe1a73a5, 0x86f2075f, 0x1a2c05ce,
+       0xf9173cb7, 0x8548416f, 0xbe4fddd6, 0x9d57ff51, 0x9e5eaf63, 0x9f0fd61b,
+       0xd8dd2e97, 0xdd5d803a, 0x3ead895f, 0xf57cd437, 0xe7de6573, 0xb33cca0c,
+       0xe1dc0335, 0x2e797331, 0x48b9ffde, 0x83c2efff, 0xb35cfbaf, 0x177a85ce,
+       0xc3fb4be0, 0xf6a95fb7, 0xa8deaf88, 0xa0e612bf, 0xcd6b8ffd, 0x972cbbdf,
+       0x9e31c75c, 0xb6bf80c4, 0x8e9d9f11, 0x1a77df72, 0x37b5e82e, 0x385c512e,
+       0xb101ee84, 0x8f710e15, 0x7897784b, 0x39454662, 0x812a7622, 0xfa58e70f,
+       0xfed28781, 0x5e78533f, 0xc74170d2, 0x3d962703, 0x78a33af3, 0x019485ce,
+       0xf25f3ed7, 0x37ff9083, 0xac64be7d, 0xdfb76f2f, 0x4fb8c260, 0x507ffed7,
+       0x956bb85c, 0x6fdf2671, 0x7808b230, 0xb69e1adf, 0xfbfe3dc5, 0x071f2a78,
+       0xb9d383cf, 0xf5cd24fe, 0x7ea94ae3, 0xb22571bd, 0x697d5237, 0xe9b3a59f,
+       0xaeb7e932, 0xee132c96, 0x39b67487, 0x556fc88c, 0x50affcff, 0x2d9dc3d4,
+       0x5a3e51df, 0x29a7cfe7, 0xc89d6d4f, 0x24d83c17, 0xccdabcf2, 0x2bbcf87e,
+       0x6c5cdbef, 0xfb28b0f7, 0x2e3c0ae2, 0xdc4a94a6, 0xa41eedc0, 0x7801d4f0,
+       0xc7badbbf, 0xa67c6132, 0xe51230df, 0x41cff801, 0xe2fa37a8, 0xfeb0e609,
+       0xf1ee2fe2, 0x8f353884, 0xf1896027, 0x1e38b884, 0xc63ac04f, 0x78c4b013,
+       0x78c73e02, 0x9e31d602, 0x278c7580, 0x09e31d60, 0x013c6258, 0xce2f7f9f,
+       0xe0817477, 0x234ef1e2, 0x9825fdc9, 0x5bf00cd7, 0x5ebfee22, 0x6fdf8db2,
+       0x503be784, 0xaf955dff, 0xebe447b3, 0x3ed23738, 0xd95ed560, 0x73c22882,
+       0xcc04f620, 0x843ee9db, 0x46aaa071, 0x8cdcb2c9, 0x3cd267cf, 0x7d64b5d6,
+       0x6f9f1b31, 0x5ef058d3, 0x8e27a023, 0x81c97acf, 0xb69603f7, 0xd5b8a36c,
+       0x94fdb0b8, 0x20d55fe7, 0xceb78c31, 0xb93f71d0, 0xc3a78642, 0xec953f69,
+       0x1b5d0ae8, 0x3b652ff9, 0x79fbb324, 0x9751aaef, 0xfb284e48, 0x2bf90bd4,
+       0x9834e156, 0xacf43c8b, 0xe15be795, 0x153e613f, 0xec9baf22, 0x68bb3710,
+       0xe35fee21, 0x3a67f973, 0x36f15267, 0x1b87ddff, 0xb6955be5, 0x3cc6ae34,
+       0xbbcd9bad, 0xf62a9b9a, 0xf9f833ab, 0x8b27bc91, 0xf185ef76, 0xc8e8367a,
+       0xd434594e, 0xebe910b6, 0x714ac690, 0x0dfb4397, 0xdc9d67e4, 0x7711e898,
+       0x510791c9, 0x46b163dc, 0x9ffdfd22, 0x54f2b689, 0x79b1d7a0, 0x32de29f3,
+       0xf88fdc36, 0xbdc3a158, 0xd895f989, 0x3334e2ef, 0x7472b9c5, 0x9fd477ec,
+       0xf052e3c8, 0xd12b5394, 0xcc85dbbd, 0xe606e742, 0x863df95a, 0x73837dca,
+       0x50abcf19, 0x46f16ae8, 0x8b4bdf89, 0x8a10bc3f, 0x9e1c9cfb, 0xa03e5b73,
+       0xebe64ffb, 0xa91bfdb8, 0x91e3fbe2, 0x89fcf30f, 0x94737805, 0x53b7f08c,
+       0x9df5fa09, 0xf36e7876, 0xedc5141d, 0xf618737b, 0x4344785f, 0x6139c179,
+       0xa46c1393, 0xde51c7e7, 0x47bae484, 0x7ae525fe, 0x6f33d3f2, 0xcb8690e2,
+       0xf927801d, 0xaf48ad59, 0x51b1ef14, 0x98a6a479, 0xac0919ca, 0x5d6ef3df,
+       0xc46cdffb, 0xf8aa73ef, 0x3cd7c93d, 0xfd73e7ff, 0x456b6f73, 0xeaa45d5e,
+       0x47bc08d8, 0xa347f228, 0x1391e105, 0x87ce9fb6, 0xb7fe8ac5, 0x456fe427,
+       0x99fd597c, 0xfdc7c71d, 0xdf000d99, 0x84905c5c, 0x15a773f1, 0xef74d7cf,
+       0x47944c97, 0xdd1c957d, 0x53f30ab8, 0xba24e2aa, 0x67d73d27, 0xf4284e43,
+       0x6d131b9f, 0xd55e3941, 0x9dafe3c4, 0xb83a7250, 0xfc4b21cd, 0x6ba7bc5b,
+       0x4fe3c082, 0x5337b609, 0x9f3df407, 0xabacf828, 0x1fcf32e5, 0x767c71be,
+       0xc80bdd2b, 0xf42abdf8, 0x989af307, 0xb4e29832, 0x34f51d0a, 0x3a416d84,
+       0x89e848fa, 0xd53fb3d9, 0x92d11da0, 0xba456b64, 0x6974539e, 0xb3ad2855,
+       0x929938ff, 0x271def77, 0xffb79773, 0x1ff6f917, 0x795354d7, 0x952966b4,
+       0xfe76356d, 0x75f6d7de, 0x59c5cdea, 0xef3b624f, 0x9bd32b38, 0x02cf4803,
+       0xb678f3bf, 0xf8155c57, 0xe7c6e55c, 0xe7025b63, 0xa43b45ad, 0xa9f74b4e,
+       0x12f3be62, 0xce85c923, 0xabe37ed4, 0x148cdc0a, 0x8661ed8f, 0xecff08e1,
+       0x0ab558a4, 0x78115fde, 0xc89be250, 0xe43eb82f, 0x5f912c17, 0x7e3eead4,
+       0x2c0b5e79, 0x02edc99d, 0x0605d93b, 0xe5eaebc2, 0xbc244f20, 0x21e4c95f,
+       0xc9782e4f, 0xee607013, 0x2d61f3a6, 0x47efba3a, 0x86ccf7c9, 0x7ef0cae2,
+       0xcb938be4, 0xce3ec197, 0x42af749d, 0x13e50fa5, 0x7d139f03, 0xf3c75a1d,
+       0x3e588af4, 0x6ae9d7bf, 0x7ae74339, 0x9f7707e6, 0xcfda0e78, 0xf648c47f,
+       0x8588eacd, 0x7227ff23, 0x872a72e6, 0x7f78d3c7, 0xf77afa83, 0x7097ac37,
+       0xbdf175ff, 0xadf1032c, 0x0610dfdc, 0xfbbf90df, 0x90dfdfaf, 0xef00369a,
+       0xdc7bb06f, 0x8d7610df, 0xec461bfb, 0xfb86667e, 0x76230dfd, 0xbdebc8bf,
+       0x333c37f7, 0xffa4e303, 0xfc37f78b, 0x7de7e706, 0x34b8c37f, 0x746f0f2e,
+       0xb1d8037f, 0xe9fdf839, 0x962e6b78, 0xdedd6291, 0x888f95e7, 0x9556c77d,
+       0xb996366d, 0xc7ba76fe, 0x91ca88fc, 0x2a47e589, 0x1cf8fde7, 0x1a6a62f8,
+       0x13ee45f0, 0x1ef14319, 0x939d4896, 0x26f7c8f2, 0xffb00b5a, 0xd3ac12af,
+       0xf38ef4b0, 0xc1f58ad7, 0xf7c2ee7c, 0x0a62f9de, 0x71a6545d, 0x8d2abfbb,
+       0xdae8d1f3, 0x57edcffe, 0x9c84a9a5, 0x61bcfebc, 0xbe708bbe, 0x86d9fcca,
+       0x0f9c4cc2, 0xcc58b7cc, 0x9bcb04b7, 0x0ab697bd, 0x922c907d, 0x724f138b,
+       0x04ca943b, 0xed1023b5, 0x390f8185, 0x03be7102, 0x780dbbeb, 0x7b45e3fe,
+       0x86ed01b7, 0x1b759717, 0x568bf9f0, 0xdded9f9e, 0xcf1a637f, 0xdd1848f3,
+       0x190fdf4d, 0xdb7bdca0, 0x5af6881d, 0x5afbf142, 0x4b9d0c7b, 0xc3d2789b,
+       0x7f13325e, 0x86cf110f, 0x4862a43c, 0x619e430f, 0x5c716f3c, 0x52b7e908,
+       0xfa5a6f3d, 0xa42afdd0, 0xcc0764a3, 0x12fe8ddb, 0x3c7ba937, 0xe8baf1cf,
+       0x3a1ee53b, 0xde3cd3b0, 0x4f9e3057, 0x23c8503a, 0x836713b4, 0x7e28a9bc,
+       0xbf941fff, 0xf578d4e0, 0xf41c7747, 0xea564fe6, 0x7de0ef6d, 0x9e4d55cc,
+       0xf3de16ed, 0x459efd20, 0x5a8decf1, 0x1a8b87f2, 0x5e596357, 0x7f16a9fe,
+       0x4aec05de, 0x5760f68f, 0x9aafd47a, 0x2a3cd7a7, 0x3ab4bfef, 0x81719fac,
+       0xa7715e0e, 0x671a4383, 0x87a7fa32, 0xbdc47c2a, 0x39f7fc6e, 0xe87388b6,
+       0x9d9e3d2f, 0x3963f3c9, 0xaff7c05d, 0xd51d1cdf, 0x367b7b52, 0xb9be424b,
+       0xc1c8a951, 0xb46d7bde, 0x09e13ee2, 0x2ab3defc, 0x1655f7e1, 0x510ec899,
+       0xed52baf8, 0xed8d58ec, 0xbe78fc42, 0x7dd19a9b, 0x0354c755, 0xf8e4fdf9,
+       0xb109f587, 0x5a158fb4, 0xbf6174eb, 0xba2593dd, 0x2f9c7e47, 0xaa39ab97,
+       0x2597f2fc, 0x25da16bc, 0x036be77e, 0xe5a55ff5, 0x10cc0bf7, 0xf1c35ae7,
+       0x57ca127e, 0x7fa16730, 0x01ee2b5e, 0x1c4495ab, 0xd603dc54, 0x01ee50e5,
+       0x10b33c73, 0x9d3759e0, 0x85dc83df, 0x677b41f3, 0x03dc56a6, 0x3efb3f96,
+       0xb94b3f7c, 0xd1f6387f, 0x47ba10cc, 0x5b7682ce, 0xf3b7065d, 0xdec47b95,
+       0x51cbcc96, 0x621fd84f, 0x3ddf4e34, 0xf9c58372, 0xf9018714, 0x6c0fb95e,
+       0x1cedbf90, 0x5efbcbe2, 0xfca4a7b0, 0x9fb00b59, 0xe55f3e34, 0xb34381be,
+       0x9dba3e86, 0xfb85d1c3, 0xfc13555d, 0x379f4fc8, 0x04a4702a, 0x66a914fc,
+       0x3fd01d76, 0xfdd1cdee, 0x8ed4eb69, 0x907ef015, 0xa2efdc5a, 0x742df616,
+       0xda9c33ed, 0x2f50b55b, 0xb311627c, 0xc91ebda2, 0x38f77ee8, 0x820bcf3d,
+       0x189618ef, 0x0fd196a6, 0x5e2e3c60, 0x2ffbc018, 0x158e630c, 0x5567f512,
+       0x23f3f929, 0x188477f1, 0x7bf1f9c5, 0xbdf4e1ff, 0xb7bfc55d, 0x121ca1aa,
+       0xebd1efcb, 0x7d23a55e, 0x3066b851, 0xb29307f9, 0x9cece53d, 0xaaef9e74,
+       0x9ba61f94, 0xc3437b95, 0x56f38e11, 0x455e5326, 0x02bf21ad, 0x6efb30fd,
+       0xe1703f7e, 0x67277bea, 0x0d5efce1, 0x9d9920b6, 0xbf48d29b, 0xe56f322f,
+       0x0e7ddfac, 0x0c3b6dcf, 0xba54fcf4, 0x167a606d, 0x73ccf9c6, 0x7983c2f6,
+       0x62d3dfd3, 0x39cda0de, 0x505be2f5, 0x1e37b14e, 0xa7447bc5, 0xfb5329dc,
+       0xceff8c29, 0xc7c95b01, 0xa4bf6c99, 0x26fe870e, 0xcc48968f, 0x514c1875,
+       0x0a16efe8, 0x73a4267c, 0x606b523d, 0x875ef133, 0x1383d5c2, 0x1938ee30,
+       0x91fa91f3, 0xb9d3f3bf, 0x231da9be, 0x73bb466d, 0x679e58c8, 0x15afb4a3,
+       0xe925b979, 0x0864ef5c, 0x21f528b8, 0xd17dbcb1, 0xac475d5a, 0x571a963f,
+       0x5a4f9422, 0x9d70b3b2, 0xee586293, 0x1ffb8426, 0x874cbef8, 0xd22c0401,
+       0xc234b6f3, 0x77758d83, 0x6df5c1ac, 0x75f5a14d, 0x9145318c, 0x5df7171e,
+       0x3971302f, 0xdc4631dc, 0xf76a6813, 0xb1457a43, 0xcf5ef78a, 0xddf02417,
+       0xf0c7dad2, 0x2fe692f7, 0xf6f9d3d3, 0xa34e4f05, 0x3afcceb8, 0x5f739f99,
+       0x35ef79ef, 0x7193dbd8, 0x58f7de7e, 0x8d57df7b, 0x53748234, 0xba225eb4,
+       0xd16b521b, 0xf752de62, 0xe0a3f046, 0x15d1917d, 0x91537e87, 0x215960c5,
+       0xf59f73f5, 0x91e700cf, 0x8c0abbf8, 0xc3d5cce2, 0xb8e3776c, 0xe90a1b85,
+       0x54df68fe, 0x0c1fed1b, 0xfd0f7f01, 0x39d2e7c3, 0xf0024ddf, 0xea42bdd2,
+       0x178c08f6, 0x83cf29f9, 0xa246094c, 0xfbc30363, 0xa6343a3b, 0xc75f9c04,
+       0xfd0a832a, 0x382b49c2, 0xe99f033d, 0xfcf1c3d5, 0xbe41f315, 0x9fbe2a1f,
+       0x5f9d5cbd, 0xdc00728f, 0xa420bf1a, 0xe7a20ca7, 0x0cb62caf, 0x8799d79c,
+       0xbb9428d8, 0xe46fd7f3, 0x00f412f3, 0x3c38e576, 0x5b667f2f, 0x2bb470f4,
+       0xcaf9fa15, 0xdd38bd92, 0x94ee0e9d, 0x9eb0ff08, 0x3f8f68c3, 0x14b79969,
+       0x03f3c3df, 0xb2931f48, 0x95bf945d, 0xcc339723, 0x6709ea7f, 0x47a9de74,
+       0xb59ec1c8, 0x15c3b26a, 0x0fc8a2b9, 0xde2b07a0, 0x5be0a063, 0x57ff2391,
+       0x87c01a7e, 0x672290e4, 0xd0a47914, 0xbc972297, 0x800e6ae9, 0xf4e1f6f9,
+       0x453fc93d, 0x543ae1ee, 0x91e4fbc3, 0xdacd6782, 0x28976431, 0x2f91ce78,
+       0xe1137eec, 0xbf246c50, 0x462e17ae, 0x4a25c13d, 0xdef09acb, 0xacfbdaee,
+       0xe2dc6b1d, 0x7b14f7a5, 0xb7bf3f9e, 0xf9dcf3da, 0xe79ea5dc, 0xfd2f67ce,
+       0x03da10ec, 0x0d6dfd27, 0xff139f88, 0x2ff9ea71, 0xff8bf9e0, 0xc79e2e71,
+       0x3dd02f25, 0x7ccb3d13, 0xf9da3cc4, 0x496996bc, 0x7e110cef, 0x5e21fe2a,
+       0xa7ce31e6, 0x4781d185, 0x43ce6f51, 0x7de3a538, 0xf9e08c57, 0x139f8177,
+       0xab853f02, 0xc3b69c78, 0x76dc512e, 0xa7c14ade, 0xa3ef3d6b, 0xb58226f8,
+       0xddf6c6fb, 0x43cdf13f, 0xd7c85109, 0xb613fdca, 0x8a3ee2b5, 0xbfc987a5,
+       0x14f729b3, 0x29eebdda, 0xed4ada5c, 0xbde7bb58, 0x5699be10, 0x1975c52d,
+       0x4bcd3b8f, 0x12f3c83a, 0xcc264837, 0xcf122a0f, 0x1e4ad68b, 0x4b3f8ae7,
+       0x5373f1e7, 0x57ef9aba, 0x27a4df61, 0x523e9036, 0x06e414e8, 0xda2e739d,
+       0xe85da190, 0x89e77f26, 0x5493f3e7, 0x69c3bf1e, 0x3e79e74a, 0x2c948815,
+       0xa3122f3c, 0xcef2405d, 0x4a48fb4c, 0xc34979fb, 0x759c6357, 0x35fc7ade,
+       0xbeb8b73c, 0xdd298f98, 0x3d10fdc4, 0xf23f2de8, 0xff95faab, 0xf8a879bd,
+       0xfe695bcf, 0xbe9567e4, 0xfc55ebba, 0xbfd29b7d, 0x950f48e9, 0x4979130e,
+       0xd3918ea9, 0x9f86ef28, 0x7814ad7b, 0x6bebb71f, 0x54a78c7f, 0x33bfe1ed,
+       0x96076500, 0x298acb95, 0x01695a4e, 0xfaba08be, 0xaffbce5c, 0xef9fcdfe,
+       0xc523d9c7, 0xefd2c2ef, 0xf9ee561b, 0xcab5e296, 0x7f7a1cef, 0xecfd2557,
+       0x267ee3cf, 0x43bbfee6, 0xc435fb39, 0x3ccd552f, 0xf7b558ce, 0x5637ed32,
+       0x6a155fed, 0x57fd67eb, 0x7ab3e79f, 0x62aa779c, 0xfdd12feb, 0x5738d726,
+       0x9c4c3c14, 0xdd85bbfb, 0xd489e742, 0x1732f28c, 0xc7a3bf0b, 0xfcdd7f11,
+       0x2a4daaf2, 0x51eca7ca, 0x8f30039b, 0xeff58ba1, 0xc61ccd27, 0xe045f4f5,
+       0xa95fbc27, 0x7da641ab, 0xbe06aef1, 0xf0d951ef, 0x23de2b44, 0xa255b950,
+       0x9ce57b6d, 0x991ee567, 0x7ef3dde9, 0xf8337f31, 0xdb2cf3da, 0x81f747e5,
+       0xeb253895, 0x8f4f9836, 0xc0301cde, 0xc3593e6d, 0xe9957d38, 0x2f09239c,
+       0xc329fe62, 0xd4799ecc, 0xbdd04f2d, 0x93aed004, 0x7cd797ec, 0xe82fcf19,
+       0x3cf38a3e, 0xe50479bf, 0x1b389403, 0xa6bf692b, 0xfdf297c1, 0xef3c69ce,
+       0xc6231ae3, 0xdb8c331b, 0xcf31e71d, 0x557fbf1c, 0xe716fb26, 0xce797c89,
+       0x3b8cbeeb, 0x0c7777c4, 0x05d0f6e3, 0xfb4a9fc1, 0x7f876712, 0xdd3fb41c,
+       0x539519f4, 0x37be3db1, 0xfea3a5b6, 0x97c7bd3c, 0xbd381dee, 0xb7dcb9e7,
+       0xce8bbc61, 0x1b922131, 0xe30d159f, 0x37173dfb, 0x1c13fb8b, 0xa03ce2c1,
+       0xbe73d693, 0x3b425221, 0xcbe442b9, 0x86f3df9e, 0xd8f88abf, 0xdbfce34e,
+       0x57999271, 0xcfee49c5, 0x6fa3f944, 0xfc9388f7, 0x295ff56f, 0xf948779e,
+       0xad6e9c62, 0xbfe1a7c8, 0x7c1265f7, 0xe6b1f627, 0x85df330c, 0x8fb015f7,
+       0xb275eff8, 0xd1a7e641, 0xe7f39abf, 0xe1d38a60, 0xfd617cef, 0x9e798ffb,
+       0x42119cc1, 0x67b784ae, 0x47673ee1, 0xca23b734, 0x022702d7, 0xbe80cb48,
+       0x72bf00ec, 0xa0d98a87, 0xee30d8fe, 0xfa079d77, 0x91c30ed7, 0x09dffe79,
+       0xdef10ff0, 0x3cebfb30, 0xc63ca6ff, 0xafe78095, 0xac3c8bcf, 0x425720f2,
+       0x417bf430, 0x817949d0, 0xbefdc12b, 0x2e2df2e4, 0x20bc43ca, 0x3df18ff2,
+       0x87ca35c6, 0xd11d76f3, 0xf73a4ea6, 0xa18fd7b6, 0xd37aaadd, 0xe2b0e88f,
+       0x9d16c365, 0x6e7e1e9b, 0x2f8bb718, 0x2ceff968, 0xf9f3b7d8, 0xa06ff894,
+       0xfa082e7e, 0x40d9f12e, 0xee213bf3, 0xf2d12873, 0xd186877a, 0xef749def,
+       0x9db3f7e4, 0x87db688b, 0x99db9ce3, 0x1dfa794c, 0x4d858ed1, 0xe5e79ef4,
+       0x73a2be95, 0xeecebce1, 0xe77ba3f4, 0x1363fef3, 0x6cf465e5, 0xff2849d5,
+       0x74600ece, 0xb6ecec4e, 0xcfb7a401, 0x17da664a, 0x3061fb3a, 0xb35a57f5,
+       0x960fce94, 0xfb409882, 0xb43cca13, 0x7b6ecedb, 0x17f90a26, 0x6eb16bea,
+       0xfce61b63, 0x0774f911, 0xdcea77bf, 0xbb253f2b, 0xa52b93ef, 0x82b37ef7,
+       0xdbfde54f, 0x16df1f82, 0x30eefcfc, 0xbe77d713, 0x6862a7ce, 0x01bf9c7d,
+       0x001fe4ce, 0x67fdd13f, 0xa1cd9c27, 0xfa53f412, 0xf5159fa6, 0x95c6877c,
+       0xc1c11cf0, 0x1bfefc57, 0xecf27f23, 0xebf260f6, 0xfd838c31, 0x469edd9c,
+       0x7e4af5f9, 0xd9b424de, 0x04698f08, 0x73791cdf, 0xbf63dd3a, 0x17f297d5,
+       0xa2dcd74b, 0x993d7ca2, 0xafa5dfdb, 0xea249fce, 0x2edfdc56, 0x0a83e3fd,
+       0x471f68bc, 0x172fc3c9, 0xcd62b472, 0x6e78016d, 0xa659fd81, 0x6acbe2fc,
+       0x0dee279e, 0xcb85a317, 0xcf7db29b, 0x0396df13, 0xfeefe39d, 0x34738995,
+       0x78f0af65, 0xdbead974, 0x78f9269e, 0x9cf0c354, 0x13e705c4, 0xff70eefe,
+       0xbeb9c851, 0xbed42def, 0xeff3da0c, 0xf9a7f23f, 0xb9d0d76c, 0xdd7c6f0e,
+       0xc8aff7f4, 0xa5f7d6ff, 0xfa03b04e, 0xccb99fc9, 0x1bf81eda, 0x830681ca,
+       0x794f4ec5, 0x8d79f3be, 0x0f3f2173, 0x70f92066, 0x8efc503e, 0xbbcf0d77,
+       0xf13d5b2a, 0xfffef84f, 0x4343a703, 0x00800064, 0x00000000, 0x00088b1f,
+       0x00000000, 0x7ccdff00, 0xd555740f, 0xf73eef99, 0x9b926e5f, 0xfe4026e4,
+       0x426e1210, 0x3c498880, 0xf1101ff9, 0x314c4902, 0x04a2226a, 0x0921bc63,
+       0xa0304804, 0xcc3b135d, 0xa404c5cb, 0x8d38cf0a, 0x0dea958a, 0x02ce1e45,
+       0xad282827, 0xa20ae674, 0x6b1ac474, 0x83b1d8ed, 0x5a907117, 0xbb4c312d,
+       0xefb4e3a2, 0x9cfb7dfb, 0x412e73dc, 0xd75efafa, 0x760b597a, 0x7fffb3be,
+       0xedf7f7ff, 0xa5f3f11d, 0xc422a662, 0x109440ea, 0xfe7f82b9, 0xb9f87f84,
+       0xbaff885e, 0xa9442ec6, 0xd4939d10, 0x95094b04, 0x3f855b6f, 0xaf07ca8b,
+       0x2c1045bd, 0x7f73b6de, 0xfe5ebdbd, 0xc677eb4a, 0x64cabc2e, 0xc40e4621,
+       0xbb537606, 0x3ea54edf, 0xcfb7efd4, 0x9c600ecf, 0xeee28933, 0xf6c1173a,
+       0x798dcca1, 0x52ca2654, 0xca215488, 0xa6eb5884, 0x7df43d5f, 0x06e650e1,
+       0xb9072bd4, 0xdfb971a4, 0x306b6eda, 0x04da9e2a, 0xefb507a9, 0x0cc439a0,
+       0xb739d621, 0xa80b5b0f, 0x88acb024, 0x125460cb, 0x9f68fb95, 0x6b3ef0ce,
+       0x1a1c6893, 0x1d4aa96f, 0xcc07d0a7, 0x30ed4c97, 0x0d5a164e, 0x85f3ea39,
+       0x1de109f0, 0xf63af9a2, 0xcff3fb9b, 0x06577c64, 0x453ea21f, 0xbf94a718,
+       0xcb27267a, 0x4a8585f9, 0xc68de2bf, 0xac36fa7a, 0x75deb411, 0x29de8f5d,
+       0x58fbc20a, 0x0e351367, 0xc519df5a, 0x1339ebca, 0x35beee2d, 0x74f9d2ef,
+       0x9e175efc, 0x9e69b847, 0x1562fc0e, 0xe1eaa162, 0xa7ee007d, 0x94fa3af1,
+       0x964f3ced, 0xe4d8479c, 0x113c74fe, 0x71f51c5a, 0xab50bf54, 0xf5feccbf,
+       0x3d6e5e75, 0xcf0b54cb, 0xf3cb267b, 0xfbd07cc8, 0x9bbaab2d, 0x5d7e2fea,
+       0xbae4909c, 0x52f43f94, 0xeaf08708, 0x57fad1e3, 0x99c782aa, 0x7f79baa9,
+       0x587d68eb, 0x0e5dace7, 0x7bb9bcd3, 0xfd9cf0cc, 0x90ef3866, 0x6a382e19,
+       0xccd7d586, 0x5e6d12f0, 0x7b7b4f1d, 0x64d48088, 0xcb938f5f, 0x0b71e87f,
+       0xf6212ccf, 0xfc32a4f7, 0xcb878f7c, 0xfe5c9ea1, 0xca8f42fe, 0x0a9ea1f0,
+       0xf1ea5f86, 0xa7a47c32, 0xf71fcb86, 0xeff7f1d4, 0x18ea7869, 0xd7edf8b4,
+       0x08d83a48, 0xd147e25f, 0x5e156781, 0x85cbcb0e, 0xf800e486, 0x0742d849,
+       0xb979265e, 0x7d4f26b0, 0x18be03c8, 0xf020f339, 0x7754ef5b, 0x1e8bdc13,
+       0x882c4269, 0x4a9dfdf3, 0x329dfaf8, 0x8b2d35bc, 0x50b2cdfb, 0x1c7e7bbb,
+       0x3a71845d, 0x825da28a, 0xf96d0be6, 0x17352b64, 0x07be7189, 0x05c75a54,
+       0xe05ec8fb, 0x78fbb3b7, 0xfaa6c893, 0xafb79ecd, 0xbb13f497, 0x988b8e31,
+       0xcd10ae68, 0xfd16c256, 0x3bf456ba, 0x418467c0, 0x985c5d67, 0xccfb2b8e,
+       0x376c43fa, 0x18ae34c0, 0xbbedc330, 0xeed7edcc, 0x01f30a89, 0xf4cfdfff,
+       0x923ec67f, 0x9c7a26e6, 0x1db9ce7d, 0x2d1b3feb, 0x3f410f96, 0xc05b772c,
+       0x87d11ba7, 0x756550f0, 0xb8d95eb1, 0x451dd943, 0x9aa1fdfb, 0x4f47fdc4,
+       0x79104cce, 0x96bfe797, 0xc50e5231, 0x62bb7806, 0x89d33cc1, 0xe2d7212d,
+       0x97495697, 0xf40b78d4, 0x1adabdd1, 0x98b4ef67, 0x20557fd6, 0x574fc4c6,
+       0xc1324bef, 0x4d5343f9, 0x9239afed, 0x0c2faa6d, 0xb7d531ce, 0x55f9b6de,
+       0xa589e92b, 0xed4d8bdb, 0x697e422e, 0xa4f7179f, 0xad6cfeb0, 0x778cd6bb,
+       0x2dd3ada1, 0x276bddbf, 0xf7f6a17e, 0xfd534e1e, 0xedd69718, 0x51db21a5,
+       0x54cf5b49, 0x8f595bfc, 0xb3ea2a0f, 0xd50b5e34, 0x745ea8fb, 0x0e9c79bb,
+       0x36edbf0d, 0x96d377e1, 0xadf9a63e, 0x70e3bed4, 0x12b3604a, 0xb776bfe6,
+       0x78d226f0, 0x170ce66b, 0x359c6904, 0x1961fd3f, 0x3ad3a9f8, 0xfe26e998,
+       0xec094fba, 0x7cdf1375, 0x7930749a, 0x687fd52e, 0xfe0bbdf1, 0xe964ecfb,
+       0xcf082acf, 0xaab7ed9f, 0x1ed32798, 0x85722e4c, 0xeed32ef9, 0x07fd018e,
+       0x0135adfb, 0xad3a63a2, 0xe6149ac3, 0x49fec18f, 0xf0ae3931, 0x987e75be,
+       0xbb4e08ee, 0x217afb17, 0x80567d5a, 0x5ed8f23f, 0x55693c5d, 0x0bed1fc0,
+       0x9ae3bf15, 0xba373ef0, 0x3f7d3f65, 0x0bfc931f, 0x23915792, 0xab4fbdc7,
+       0x57aaecff, 0x8fb43c0b, 0x99239e8e, 0xcb75e856, 0x5469bdfe, 0xbf7d3836,
+       0x07da7ec3, 0x7cebfe67, 0x7bed679a, 0xf6a56156, 0x38b031ff, 0xefed2e7e,
+       0xb57603d3, 0xfb07e096, 0xd108e87f, 0x02dad63e, 0xf6ca950e, 0x5e1d06e7,
+       0x37d86f2a, 0xed57dfc8, 0xbf06ae6b, 0x5b5d16ae, 0x76f3efb1, 0x3e0377e2,
+       0xbb2917da, 0x65eeb4dc, 0x7fde1685, 0xa1f08c7b, 0xff3acabe, 0x6fec64c4,
+       0x9248529f, 0x3bab6e25, 0xefa668e8, 0x6fa942ce, 0xf465e522, 0x29aad2d4,
+       0x48747ed4, 0x4e5fbc61, 0x7305963e, 0x8e963e59, 0x6dbcb879, 0x9274f88c,
+       0xba89ef10, 0x791fb67c, 0xd1f784c2, 0xcfe65653, 0x00d6a3d1, 0x23bb47ec,
+       0xe8297938, 0xa6764ff0, 0x4ff12743, 0x2749f105, 0xca8f3efd, 0x1356f9ba,
+       0x1953deff, 0xe5f7e26b, 0x344720c2, 0xaa62edde, 0x76adbe09, 0x1dfda986,
+       0x211d5db7, 0x7ae1450f, 0xc2f35bd6, 0x6e7704f5, 0xf8147bf2, 0xf991620f,
+       0x989b953b, 0xfa9896cf, 0xc35b8a77, 0x7be7c0ed, 0x0b3c61de, 0x95b8ec31,
+       0x893b64ec, 0x72d3f40f, 0x7bed19df, 0x46d3bf88, 0x7d39724c, 0xd2affa86,
+       0xec05da4e, 0xf09af8a4, 0x8266865d, 0x76a5f2ed, 0xcdad0892, 0x58eb409b,
+       0x7c2ac87f, 0x18643f66, 0x41bac5f4, 0xed4dce87, 0x9dfbb0b5, 0xed0167d4,
+       0xec3fd3a3, 0xfe3172e8, 0x9284e96d, 0xe88afdf5, 0xcef6e24e, 0x6f0924f4,
+       0xf643f7c2, 0xfc06428f, 0xd431bc61, 0x4336b49f, 0xd7eb225e, 0x0f61bed3,
+       0x5fed8bd6, 0xd7ad5f40, 0xd5c6d7c7, 0x4ef573f9, 0x6f5867ea, 0x164f38e4,
+       0xd79f987a, 0xfaf83bee, 0xd2cbc254, 0xc842c4ba, 0xbd50c74f, 0x52ef39bd,
+       0xfdf5d33e, 0x004b76c5, 0xea7a3cf2, 0x68d9f338, 0xf9f98dbb, 0xef58f84a,
+       0x48ffbc15, 0xfb455bfe, 0xabfcd271, 0x406a290e, 0x9780ed91, 0x08cbe0a9,
+       0x804fa4bc, 0xe34f1d2f, 0x5fa88b78, 0x9d685f8d, 0x01288fab, 0xf04bc9e8,
+       0x1b51e3a2, 0xb04f957f, 0x09eb497f, 0xc6227af0, 0xf2911513, 0xed03af77,
+       0xc2297747, 0x0f195cad, 0x58398eb7, 0x90cfa7ae, 0xac391efb, 0x6fd3f0a8,
+       0xf7f1b31f, 0x23a97e71, 0xde41157c, 0xce39f2cc, 0x5e52753f, 0x73258d96,
+       0x7cd7ffbf, 0x99fe2574, 0x6dfa433e, 0xcb0efeba, 0x8fd203cd, 0x7c9b8c28,
+       0xbf4e968e, 0xd01eb297, 0xfde5e9f4, 0x4deb3f52, 0x7f9803f2, 0x5b8bedc7,
+       0xdda371e2, 0xbe089293, 0x9ddb354c, 0x21279b51, 0x346fe0d1, 0x14f53d93,
+       0x25a75f83, 0x1f1c6887, 0x57d806fc, 0xb4fb1f4d, 0xcdf6b6f1, 0xfa190cc8,
+       0x93d8b6f9, 0xdccfb505, 0xe6cb893c, 0xec327768, 0x6b66f345, 0x47e0ec1d,
+       0xae494ddf, 0x68fa3e20, 0x2d727d8b, 0xfdd1f10d, 0x1f229925, 0x67971570,
+       0x1e5a8d1f, 0x7eefc098, 0x9d1bb35d, 0xb67de3ff, 0x4e5b9f5f, 0x9c872fc5,
+       0x5f1c396d, 0xdbace341, 0x9b996ef2, 0x8b16f6ec, 0x6a42bdef, 0xc832a9f7,
+       0x07b85b76, 0xc3f2ea0b, 0x2ddac37e, 0xefb02955, 0xfe3c7f1d, 0x6fbbec34,
+       0xfe193db3, 0x417e6fe6, 0xbb614f76, 0xf9c2fec5, 0xe7bfc968, 0xf40d8d9f,
+       0x579fbf12, 0xbe9a3784, 0x5abeb1af, 0xd1d936e0, 0xfe63b7a3, 0xef349cc7,
+       0xd81bcc14, 0x55798a9b, 0xebcc2cff, 0xc1333cdb, 0xdc7e0df7, 0x1fa53b3d,
+       0xdbb357b7, 0x01a88417, 0x03bfe0dd, 0x474eff86, 0x01dff60d, 0x09477fc3,
+       0x47df1dff, 0xde92ddf2, 0x388523bd, 0x8917fa7f, 0xabb62edc, 0xe7f85cae,
+       0x2a312af7, 0x8abdccf4, 0xdd06e29a, 0x7b49a4f7, 0x722fd1aa, 0x908dd73d,
+       0xcfe065af, 0xa29cc7eb, 0x0bbfc0d5, 0x5e09a245, 0xb5334cec, 0x996772af,
+       0xbd486fea, 0x2dff54ca, 0xbe09a14f, 0xa9ae7731, 0x42ea4dfd, 0xc54b7c13,
+       0xebed4cb7, 0x7826f5bd, 0xa9834d69, 0x66bab2fd, 0xcb1dfd53, 0x1bea98d7,
+       0xf04c1b7c, 0x9bf7ed9d, 0xb5d5dfda, 0x15ef54d9, 0xdaec1b6e, 0x08ab9c51,
+       0x7384ffef, 0xbef79515, 0xa465d335, 0x96c5fceb, 0xf809a1ae, 0xf4915a76,
+       0xf62e6e63, 0x5f1114a6, 0x1f245866, 0x8b85e952, 0xc3c8a730, 0xa822e9f5,
+       0x70ed73c8, 0xb226f81a, 0xfcfd645d, 0x3d1763d8, 0x2fadc344, 0x2360d55c,
+       0xfcbf31bd, 0x820cf158, 0x6be0be8f, 0x987e91b0, 0x17b1ed7f, 0xfd7e09b3,
+       0xfd646785, 0xa22ec735, 0x6d8be17e, 0x60a97eb2, 0x68b86297, 0xd69f834a,
+       0xecfaff3d, 0x8b8caaed, 0x3973bfb0, 0x5a1e057e, 0x280f126d, 0x289fc483,
+       0xa27f118f, 0xb3f88d7c, 0x25e68735, 0x927944fe, 0xfef897ce, 0x44be742f,
+       0x97ce8a79, 0xe7467f28, 0x74c3944b, 0xf3f944be, 0xfe5ce59e, 0xfdc7c7a2,
+       0xced3d97e, 0x5d3dfbe5, 0x7adffdfc, 0x75fcb9ba, 0x57bf9f8f, 0x0f716917,
+       0xa4ca5004, 0xaf3f01dd, 0x8882ba77, 0xf623889f, 0x2cf5c6cf, 0x95e2bbc9,
+       0x4cf15376, 0xf6548d16, 0x2c508976, 0x4b6434e4, 0x10e4e73c, 0xbf689884,
+       0x136abd61, 0xd67e0ce7, 0xeb7b47df, 0x318e388b, 0x59facdcd, 0x2c5a7efb,
+       0x3a2228cd, 0xddf2cd4d, 0x5beb4451, 0x25b2d456, 0xf5c7f481, 0xc1d9775f,
+       0x4459ef2f, 0x327c44fb, 0x5993e347, 0xf446dec5, 0x02f3a0cb, 0x8d064df4,
+       0xdfa5956b, 0x11cf2492, 0xdeb24551, 0x538e6542, 0x77e413f8, 0xae4923af,
+       0x41c8f803, 0x11be0d99, 0xa34ce302, 0x172a4ef6, 0x700be338, 0x5eefa44e,
+       0x122efc9b, 0x8d56e30c, 0xd77bd609, 0x7fb1b36d, 0x41136712, 0xf17683cc,
+       0x1ce75e54, 0x4f88542a, 0xa970ebae, 0xd0a5c738, 0xb7114777, 0xdca95af3,
+       0x5f6a7bf3, 0x1fc9aac0, 0xbcf5c453, 0xdc9b388f, 0x4f98d547, 0x553fd178,
+       0x7f5a51a8, 0xa3f7aca7, 0xbb3875ff, 0xe7c97096, 0xd4281fc4, 0xf3c788bf,
+       0x1f68ff62, 0x3107db2b, 0x681fce5e, 0x1cb0f8be, 0x150d2465, 0xc67fa9ba,
+       0xbd0a977a, 0x30616bbd, 0x6970fa0d, 0x211d82e2, 0xbeef4fa2, 0x8e436f84,
+       0x7be597be, 0xe77e7818, 0x950c9e27, 0x66935be0, 0xaf59414c, 0x40dfc1f9,
+       0xd3f47e9f, 0x5de3a5f1, 0x6f8e97a7, 0x9e3a6e9d, 0x48bf44af, 0x4bd245ba,
+       0x58d553a7, 0xdfc0ff18, 0xd309f4a5, 0xfffcafcf, 0xdb129f43, 0x15d620d0,
+       0xb154e1d5, 0xebd12bae, 0x9d5111ee, 0xc79a4d40, 0xaca3af3c, 0x01cdf6cd,
+       0xc2c45bde, 0xe470376a, 0x8e23e6b6, 0x196ed913, 0xb95e95da, 0xf188a6dd,
+       0x6f15258e, 0xa5c66afb, 0x688a9eed, 0xbc589bd7, 0x47192bfd, 0xf5f603ba,
+       0x102ec7a4, 0x9a337aa7, 0xef8094e8, 0xd121575e, 0x8fa6b171, 0xb62e8a4e,
+       0xf996e41f, 0x8d4adf41, 0x56f38bd4, 0xe95b3fb3, 0xd587fb32, 0x61f5d75f,
+       0x11c9eade, 0x019932fe, 0xda25edd8, 0x7e8837b8, 0x9a66b71e, 0xcd12ddb9,
+       0x63925d0f, 0x48be7efe, 0x44b323f3, 0xa554f416, 0xc4bae550, 0x2b03f676,
+       0x74dc72dd, 0x78665f8d, 0xf83e62ac, 0x506cf841, 0xcefdaf8e, 0x6f7ac5e1,
+       0xbf867e10, 0xde5c0225, 0xce3c8228, 0x0148a44d, 0x1d8422df, 0x24738770,
+       0xb32241d3, 0x10fbeade, 0x19e7d67e, 0xff38d9be, 0xafbed1a9, 0xb1e3cf80,
+       0x43de3737, 0x5e2e2df3, 0xc77e839c, 0x9fec3d2a, 0x60ce731c, 0x6572097f,
+       0xdfcb0a4f, 0xe4bec94f, 0x938edad0, 0x827941fd, 0x090e4fec, 0x7f641bcb,
+       0xddc92f00, 0xdaafd02c, 0x04db08a3, 0xdd1b80f9, 0xf8ad848b, 0xc6fdfaf2,
+       0xf34d1f82, 0x99bddf11, 0x7112bb38, 0xcb1337ee, 0x37dfb12b, 0xb22c5313,
+       0x9970728c, 0x44ce72ff, 0xcfce9cfe, 0x85aaf9e1, 0xf1e5d26d, 0x1235e3ac,
+       0xff9e3a9f, 0x2ccebc02, 0x73af009e, 0x4f1c9688, 0x1eb8be74, 0x58ce9ef1,
+       0x2fbc4fa9, 0xe25489c7, 0xad878ddf, 0x6ff9c801, 0x8c34c4b0, 0x1914f12f,
+       0x47a4fa3f, 0xc5be034c, 0xfefe049e, 0xdb678d6d, 0x3ef1e7ba, 0x70577557,
+       0xafa724bf, 0xfbe698bc, 0x8b3828ac, 0xc9f1163c, 0x79f8deae, 0xcfe7cf34,
+       0xfbf8555b, 0x76cf561d, 0x4de43a15, 0x8d2cfaab, 0x9e3ebe2b, 0xc61c6b79,
+       0xb9e1349d, 0xf129c3a6, 0xda6b9fa8, 0xbe58ebb2, 0x1538bb85, 0x0a3f4d72,
+       0xffb742e4, 0xa7e610d3, 0xbdd8733d, 0x40fef2e8, 0x5bd48c59, 0xacf59ed4,
+       0xc7ea3f4e, 0x538d3a70, 0xfd297a46, 0xfff61891, 0x5bdeddb3, 0xa8225f80,
+       0xcfd67fc9, 0x2593a3f3, 0x5988171e, 0x568e204f, 0x022ed279, 0x295a3f54,
+       0xcba8e5f5, 0xeab8fac9, 0xe8362da7, 0x5f4d5ef7, 0x39d2a544, 0xd1ff20cb,
+       0x31e1189e, 0x6e6c6ff0, 0x538e0992, 0x27da9aa7, 0xea9b6454, 0x4c73bd13,
+       0x8a6a93f5, 0xba94f04c, 0x29f6a679, 0xe09917cb, 0x5312df34, 0x5bf6f4fb,
+       0x87aeb04d, 0x9127e5d2, 0xd4c2b5d1, 0x4af77a7f, 0xff2cfb53, 0xf0bd535a,
+       0xa973877b, 0x7fd68d7f, 0xe68db6c6, 0xa5af427a, 0x7f21720c, 0x39af8a9e,
+       0x6afd10a9, 0x216aab5c, 0xbffb3397, 0xf58f5e63, 0x4aec2b6b, 0x2622827a,
+       0xf06ffe11, 0x555ef598, 0x74ae19aa, 0xd206be17, 0xf59b762d, 0x0a91f92e,
+       0xcbbd29f8, 0x48fefa66, 0x0b37a6b1, 0xbf9f0144, 0xdf7f44af, 0x23fd131c,
+       0x3f2975f1, 0xf41858bc, 0x71bcb8c8, 0x1bcb885f, 0xbcb882f1, 0xde5c4611,
+       0x79711ed8, 0xf2e23d63, 0x93e2fac6, 0x1d283e66, 0xf941f336, 0xd03e66fb,
+       0x5e9233f9, 0xfe664373, 0xa7c53e10, 0xaebd037c, 0x9fe66f3d, 0x09d0fa48,
+       0xed57e996, 0xb3f7c452, 0x75e9effe, 0x3abaf402, 0xfa71af4c, 0xcfe1be10,
+       0x9d5e082e, 0xa4eab800, 0xbfe00455, 0xe1bcfb68, 0x36572eea, 0xb07fd3e9,
+       0x3966def9, 0x37aaf8d7, 0xe8d5f24d, 0xa1a317c9, 0x1889dff7, 0xefaa753f,
+       0x7cbf6817, 0x074cc5d2, 0x37c463f8, 0x14b3e71b, 0xcb9c5de8, 0x74f8e463,
+       0xf875e72e, 0xf40d63bf, 0x5b4e3ad2, 0xe7e815fa, 0x7efbc41f, 0xe777fe8d,
+       0xb7c82975, 0x83ba8aa6, 0xa6be68ab, 0x04ca8e7f, 0xf05d34dc, 0x85e452b9,
+       0x790deb4a, 0xfa74a6ab, 0xb8f9eb4e, 0xa9073b58, 0x7ef34f54, 0xd4fd2c52,
+       0xe0edd538, 0xf09e4bf8, 0xc742ee22, 0x7ca6cc97, 0xf454e3e0, 0xc063e06c,
+       0x1ede22a2, 0xb0127bb2, 0xad4fff4f, 0xf822f902, 0x3327f0ad, 0xf7ae7f34,
+       0xd6274e57, 0x30a77b3f, 0x02abd5d9, 0xe533614e, 0x3826dc8d, 0xd4d5287f,
+       0x1e239afe, 0x30617d53, 0x7c5f54d7, 0xa5c13552, 0xf6a615c3, 0x4d7befe5,
+       0x8d50dcf0, 0xe7b5fda9, 0xba704ceb, 0xf8127918, 0x73c8ae9d, 0x6c92f4f3,
+       0xc8f67799, 0x83d358fc, 0xd6f79c89, 0x5fbad3cf, 0xf09ffa2e, 0x6f39933a,
+       0xfe913fce, 0x688903bd, 0xfc839fc2, 0x6985d86b, 0xfb97e94e, 0x20cf3936,
+       0xffe91f1e, 0xf0b17eeb, 0xf68d7957, 0x3b49fa87, 0xb40f9fa3, 0x97ee80f3,
+       0xe1e0553f, 0x16fbdaf5, 0xc207c05a, 0xbf034a16, 0x09894537, 0x4a730ce3,
+       0xd723dd24, 0x722bafaf, 0xdc0aa7fe, 0xb8da1f12, 0x7de53acf, 0xcb71c882,
+       0x9d7f244b, 0x96a7519d, 0x5db4f950, 0xd6757f7d, 0xbd3cf9ff, 0x83487f71,
+       0x235d34fc, 0xb168dfd7, 0x304f5ddc, 0x17f2c2c9, 0x6b56f30c, 0x299595f3,
+       0xa69fb8df, 0xf9cf2d04, 0xf2008eb7, 0x379b977f, 0xe0fa21d5, 0x222ed407,
+       0xf110aa3f, 0x74ef9fb2, 0x74f39f91, 0x1fe38db7, 0x5ecd0e4b, 0x9f81cfe1,
+       0x4c49ef25, 0xe80b73a7, 0xe7055f0d, 0xad4a379d, 0x25b58ebc, 0xfac39e52,
+       0x1fbeb05e, 0xa31d7215, 0x0f3e0edd, 0xcc3fc04d, 0x11bafa57, 0xc8e5b3e7,
+       0xc44a1ef8, 0x19366cf7, 0xf88c03df, 0xf7c44a1e, 0x79f91df0, 0x03cfc8c0,
+       0x301e7e46, 0x9128f3f2, 0x9d77c79f, 0xa0f1230f, 0x7e753b9f, 0xafda4212,
+       0xaefe089c, 0xdfd2407d, 0xb75ec1b3, 0x6b58b69b, 0x514a3511, 0x941f2e98,
+       0xa5dafe4a, 0xa0ed01e1, 0xaed72e57, 0x80979aca, 0xf0a8f0b8, 0x21bfb824,
+       0xc2d7f9fe, 0xfd778e87, 0x5f961d1c, 0x93975f29, 0xae3cfd73, 0x3975b79f,
+       0x48ef948e, 0x7789103d, 0xe79f31fe, 0x1e3e7cf9, 0x5ee4d007, 0x27ae8ba7,
+       0x00d422ec, 0xb1c8157d, 0xc1f8de70, 0xbe5cb338, 0x9779c9a9, 0x3c672726,
+       0xec0b64ee, 0xfd9bb74e, 0x474d768c, 0xf6da7cea, 0x1eed9598, 0xa15771d9,
+       0x836dbf61, 0xe47af1d6, 0xafc87d3b, 0x7816fed0, 0x560fc705, 0x41812bf6,
+       0x37ecd7ea, 0x850e5ddb, 0xd50b7d51, 0xfbbc8abf, 0xecbb48b6, 0xbe7075e5,
+       0xd6d6b688, 0xad5fae6f, 0x46694f9d, 0x646ef407, 0x2527e47e, 0x0aa5bf9a,
+       0x5f724ff5, 0xef08de7c, 0xc0abe34b, 0x37d8048c, 0x32ad579c, 0xa4f7c30e,
+       0x90793c74, 0x861498af, 0xb9319f09, 0x367dbfb0, 0x52e7a675, 0x79f1d43e,
+       0xde5e3e69, 0x452f1043, 0xcf4579f3, 0x7c867fc7, 0xe7aee83c, 0x9ff6b443,
+       0x4ac2adf9, 0x50ecf9f8, 0x73f5e314, 0xb3dba9cb, 0xc9fc863d, 0x11177925,
+       0xa3047b8f, 0xfea8a7fb, 0x97a5d609, 0x74c590be, 0xfa92e3df, 0x71e387cd,
+       0x2038ed7e, 0x071d2cf3, 0x18e7278e, 0x12d9c4ec, 0x8b6fef1b, 0x4969f7c5,
+       0xc37ef869, 0x0502afda, 0xf8b56b28, 0xc67ee450, 0x457cddf5, 0x7f692be6,
+       0x146aefac, 0x4be91fde, 0xf3d33901, 0x3822f5ea, 0xcf9ea519, 0x60ab6df0,
+       0x8cf9e83a, 0xef0560e6, 0x6aef5963, 0x09350c7b, 0x2aa9b93d, 0x73ce13c6,
+       0x3de43284, 0x3be5cb99, 0x3ca98e96, 0xf3636dde, 0xd2e89c78, 0xe99f962c,
+       0xc0363b7d, 0x4fb39cef, 0x908781d8, 0x89138e5d, 0x9fa1fba7, 0xd0e3fda8,
+       0xfb86a585, 0xd6159b37, 0x2b211be7, 0x871f7c25, 0x5f0eb9f5, 0x2ae0d7ec,
+       0x45bbdf09, 0x6bbb21c2, 0xf720929b, 0xf604388b, 0xc1fb1289, 0x16bf7979,
+       0x503ec0b7, 0x0ef81f62, 0x7a18063d, 0x18f4300c, 0x9431e860, 0xbef863d0,
+       0x1665d452, 0xa65e655a, 0x638728d2, 0xf069514e, 0x31979077, 0x18cbc8c2,
+       0x632f23db, 0xc65e47ac, 0x8cbc8f58, 0xc65e4611, 0x19791ed8, 0x8cbc8c23,
+       0x32f23db1, 0x19791846, 0x65e47b63, 0xcbc8f58c, 0x9791eb18, 0xcbc8c231,
+       0x2f23db18, 0xbbbfac63, 0x6de5315b, 0x0df526ee, 0x99d96bbe, 0x29b1fcc4,
+       0x94baaeab, 0xec61fbe8, 0xcf6dbf1f, 0xae8f9d06, 0xec6edf01, 0x9d25518c,
+       0xdd246bfb, 0x79d2422d, 0xbce981a4, 0x2ae121c9, 0x813dc535, 0x47fc859f,
+       0x7fcc8e65, 0x03fe44a0, 0x281ff225, 0xb4a8ff91, 0x4a07fcc9, 0x1df03fe4,
+       0xc8940ff9, 0xfe44a07f, 0x1ff22503, 0x40ff9128, 0xfa07fc89, 0x1281ff21,
+       0x477c0ff9, 0xf22503fe, 0x9a7ef81f, 0x883c81d6, 0xe7f82ebe, 0x23f3a639,
+       0xfce9a1f1, 0xf0c136e8, 0xe1ed8dcf, 0xe1eb1b9f, 0xe1eb1b9f, 0xf8611b9f,
+       0xf0f6c6e7, 0x5f708dcf, 0x0be58789, 0x1fb1ba7e, 0x9c2374fc, 0x813fefdf,
+       0xbb4dd3d8, 0xca1af77e, 0xb4f29c50, 0x77bb26e2, 0x20579ff8, 0x568a156f,
+       0xb2551332, 0x1589ca8b, 0xb4fb0495, 0x62056f7b, 0x737a02c4, 0xe6e89a1e,
+       0xa7be0a0b, 0x2a65ff9b, 0x5179ebd7, 0x17ba21fe, 0xefec121e, 0xf87be48f,
+       0x155fdebb, 0xbd4a2b6e, 0xb89e187d, 0x7afce45d, 0x8697d63b, 0x214d5075,
+       0x6e1425ee, 0x443d1572, 0xa2d7b4fc, 0x0f99fbc8, 0x91b1fbc8, 0xe68af57c,
+       0x1cb5ed37, 0xfd43163c, 0xbe159a46, 0x26cb3927, 0x808bda4e, 0xf822aea7,
+       0x4d2c3f11, 0xaeb8fcd4, 0xa39fb879, 0x138f5baf, 0x22f09e92, 0x447f3e7f,
+       0x9e695a38, 0x3853feeb, 0x39cfe0da, 0x7e811fa4, 0xed5e2738, 0x0dbbbc57,
+       0x54a07dfc, 0xf9f5cbde, 0xa56bcc37, 0xefef57ef, 0xff06d79a, 0xfbf6462e,
+       0x33c4cf5f, 0x53ee6f1e, 0x3f695b76, 0xef0bf7f3, 0x497bb520, 0xef57a7d3,
+       0x795a3b77, 0xcda3b75e, 0x57608f78, 0x7383c3a6, 0xa65508a8, 0x1140ee72,
+       0x78ea2fc8, 0x86bdfda3, 0x3f8a91fd, 0xbaef7889, 0x8feed17d, 0x39d1fc0d,
+       0xef826894, 0xfee69239, 0x7c67c0d8, 0x4317194f, 0xfa143dc9, 0xc5a1627d,
+       0x2f70d303, 0xb63eeeb9, 0x0711ce77, 0x495d77f0, 0x9bee1562, 0x9d42a389,
+       0x692bbe09, 0xd68532de, 0x55780be5, 0xeeb9dbdc, 0x304ebb3f, 0x618ea7bc,
+       0x79329f66, 0x70f60ea5, 0xc6095fb6, 0xf66e2a12, 0x13265a0f, 0xb37f937c,
+       0xf7ed193d, 0xc0ee150b, 0xa0b7fa6c, 0x3cafbc28, 0x56896c31, 0xf8e22fc0,
+       0x91ff0324, 0xfc0db8e6, 0x05daa852, 0xe6dea3f8, 0x44df43b6, 0xf7911bfa,
+       0xb8ffc837, 0xb407de43, 0xd3afd8db, 0xb766a3fc, 0x3ec5eb5c, 0xcd1ffb3b,
+       0x30ffc987, 0xfdd4ffdc, 0x075efd0d, 0x106a1df9, 0x8dd0fc76, 0x3aaa9faa,
+       0xf7c7bc36, 0x0acd3e27, 0xbe244dec, 0xe0fb34fe, 0x0bf015ed, 0x9f40af49,
+       0x45f0df92, 0x79bbad29, 0x9c7889cb, 0x17fe42e3, 0xd8b8dfd9, 0x9f3c58f7,
+       0x47bcb54f, 0x3d2786ab, 0xd1a6d42e, 0xbfbb55a3, 0x2de911f3, 0xbbb0d4d2,
+       0xa0bbdc41, 0x115fb2f5, 0xe10a27e9, 0x99ee25fe, 0x1e7ed3b5, 0xf6f56822,
+       0xe2a9ade6, 0xf7517f52, 0xf369d737, 0xf3b3e9ae, 0x11769d3d, 0x26b07b60,
+       0x4ebf6e60, 0xedd73ff3, 0x95777f33, 0xdd1d7169, 0x49ced4ef, 0xe6d9bdfa,
+       0x632f8eb7, 0xcecba7bf, 0x371bcbf7, 0x1c483f4b, 0x23bc0114, 0xd8bcdc68,
+       0xe3704d12, 0x4caaaf61, 0x6b6f37c0, 0x262d50fe, 0x8fd67c25, 0xb91eb0c5,
+       0xc32a6c75, 0x72a58fb7, 0xae58c779, 0x0f988efc, 0xa55439d1, 0xf1a01e04,
+       0xa0fcd5df, 0x08c7b865, 0x9853f9fa, 0x8f89478f, 0xa6814531, 0x9578e69f,
+       0xd79708e3, 0x705b7dda, 0x5076b24f, 0x13795fb0, 0x58aa25fc, 0x18a9ff0e,
+       0xc5559072, 0x146b67f7, 0x720b3331, 0x7be341b0, 0x7ac10392, 0xacfacbc3,
+       0x7b803eb2, 0x077dcb31, 0xceb7a02d, 0x19ff3eff, 0xfc9be01b, 0x1793c38a,
+       0xf3a0677e, 0x341ca477, 0x2c716ac5, 0x8d538c97, 0x58b0b1c7, 0x4ff09a5a,
+       0xe2ebd3bf, 0x55c0bd73, 0xa12c2649, 0xd64f2e2a, 0xfd34bf57, 0xa61c3ece,
+       0x46f8c2fe, 0xf4c2c5a3, 0x8f3f211a, 0xe18b87ef, 0xc9c814aa, 0xf708a576,
+       0x64f5f5d3, 0x2aea2c54, 0xffa6129f, 0x48ae4d4a, 0xee7052ee, 0x99ddf8d8,
+       0xde1be229, 0x9e10b405, 0x094d5f21, 0x842b6fa1, 0xc265f5ea, 0x6da4495b,
+       0x713eda10, 0xb9d68161, 0xbd778342, 0x36c1fb54, 0xe187e317, 0x770565b5,
+       0x5fc63ee2, 0x151b07ac, 0xd67fdf1b, 0xf14673f0, 0xfeb197b5, 0xae83550b,
+       0x0e2379b1, 0x3f122dd0, 0xda1f6d77, 0xb0f09b31, 0xafd24cab, 0x976fd1d1,
+       0x7603e5f7, 0xf25ad39c, 0x36115da4, 0x9c9de64f, 0x3c70f177, 0x47f7df51,
+       0x48df7dda, 0x49940c7c, 0x7ad7f0fb, 0xc5b8f097, 0xa241e67b, 0x812df7e7,
+       0x4de32f83, 0xd6df14c2, 0xf7ff5a32, 0xd79acf71, 0x11fde3ef, 0x189eb0df,
+       0x5fc44fd7, 0x1f30b2ce, 0x7b3eecad, 0xe61d92d8, 0x5f6dd6a7, 0xce2cf93c,
+       0x420fe4c1, 0x94db7d9e, 0xe5c15460, 0xb599ecf9, 0xcf2f2c31, 0x7ac1c77c,
+       0x7c31d1b7, 0xc61599c2, 0x7fdd07e7, 0x327a976f, 0xe343d338, 0x568ae8ae,
+       0x2a33f7a1, 0x7d029eea, 0xa654f362, 0xe0b9574b, 0xf7895ef1, 0xac7d833d,
+       0xa7afc314, 0xb7fc1e22, 0xfea2656f, 0x0e59a39e, 0x23e6dfe8, 0x3d535b85,
+       0x83dbefe8, 0xb72ecdfe, 0xfac5fe03, 0xb7b644be, 0x3e32294d, 0xf9cf1c4c,
+       0xb5ff71b5, 0xf5f9da4c, 0x0b9e7215, 0x108939da, 0xb537af64, 0x948b7493,
+       0x194e3d37, 0xc70ad719, 0xcb6cf657, 0xb2645c46, 0x973d7b50, 0x0f710be2,
+       0xae385147, 0x18ff1912, 0xbc875797, 0x4fc91917, 0x4171eb9f, 0x36da9ced,
+       0xabcd4e7e, 0xff3f814e, 0x5c46e2a8, 0xb9e5d5bb, 0xadc12e63, 0x49b8ed27,
+       0x3c936a29, 0x4782348e, 0x77b8abbe, 0x15f7de83, 0x046adeb2, 0xbef08a4d,
+       0xb6e582a0, 0xa4e54035, 0x9df7cbcb, 0xf8cf1e8f, 0xf415f611, 0x56ceb03a,
+       0x6491d7b7, 0xfa5a77f0, 0xfef1af15, 0x7bff0ea2, 0xd9f79599, 0xe007c748,
+       0xb2fbaeef, 0x07112b1c, 0xf707b725, 0xf8d73ef6, 0xed47ef44, 0x6d475ef8,
+       0x7c1d78b6, 0x82fb4235, 0x457cc2de, 0x6257f186, 0xd4fcc37c, 0x4fb5fd9e,
+       0xbc78e2ca, 0x3bed3766, 0xd79ba50b, 0x3c607849, 0xf1a0ec8d, 0xe30f3c3c,
+       0xb01825bd, 0xee0f58ab, 0xc2bc1093, 0x9e63b01d, 0x9c857d95, 0x976df047,
+       0x25b6f8f3, 0xcfe1f23a, 0x0c8edcd9, 0x7c479fa3, 0xc46cbe07, 0xaf327ea1,
+       0x56e0fd97, 0x51de13c2, 0x6c1abde1, 0x9abe245a, 0xf6b7f5b5, 0xc6fd9a27,
+       0xa0ed47fe, 0x5766834f, 0x5e90e922, 0x6578f92e, 0xde0742df, 0xbcdab41d,
+       0xa7c12efc, 0x363ffbe1, 0xbc843f44, 0x13c0c345, 0x63822cf6, 0x9d7fa5cb,
+       0xadf92e5e, 0x13383b36, 0x364668f7, 0xe1bdf344, 0xef3f7706, 0x8fdf1c77,
+       0x97e07e11, 0xdf18ebb8, 0xdc7e27c4, 0x301d6bc3, 0x9ebc37d3, 0x75b71e38,
+       0x6fe599a0, 0x70e7cd95, 0xf3b1d71b, 0x1f7899d5, 0xaf7240d5, 0x7db8fec0,
+       0x739fe099, 0xc991dd8f, 0x0275a4fb, 0xa7aa71cf, 0xf984b53a, 0xe75af986,
+       0x2962a69f, 0x457cfacf, 0x539e32e5, 0xdc713e54, 0xda724aff, 0x7859bdba,
+       0x154bc711, 0x595ca2aa, 0xd4f9754e, 0x8b41b5e5, 0xaf6cb653, 0xbe833e17,
+       0xf5ddfb21, 0xe9f804c2, 0x42b9d6d2, 0xf3e127a3, 0xd7886135, 0xd9e8d0ad,
+       0x7b966d98, 0x6f71878c, 0x0517ebd0, 0xa51de267, 0xb79f5ede, 0x03f64931,
+       0x6ecf83ff, 0xb78cb728, 0x35edc8df, 0x8de9a67d, 0xb1bd7196, 0xf4324b7f,
+       0xf38541c6, 0x48771b61, 0x81e36ebf, 0xfd6f8e38, 0x3fcbe376, 0x7dda9dbb,
+       0x9360f8fa, 0x6b437df1, 0x3689ea50, 0x37a0a7f2, 0xff766956, 0xf6ef815c,
+       0xbb4352f2, 0x05981def, 0x543158b9, 0x04dfee78, 0x7d083bef, 0xaf03ebf3,
+       0x13cf37bc, 0x3efaafb6, 0xc77b6e56, 0xe232ecde, 0x87bbea4d, 0xbdf25772,
+       0xe70bd02c, 0x453e96af, 0x1dba3fe6, 0xf4ea7fec, 0x6683e48e, 0x9716df92,
+       0x7459def9, 0x26fde5d2, 0xfd3ace9d, 0x7ceb7a75, 0xa75bd3a0, 0x3267bf13,
+       0xbafafdf8, 0xbdd6d7ef, 0x4ddfe342, 0xadbf52e5, 0xac72cf68, 0x72cf7962,
+       0xb5ef80b4, 0xf35686fa, 0xb93a71f7, 0x56fbf5c7, 0xfdde05c8, 0xdba34e80,
+       0xb90e32ed, 0x653a12ff, 0xebebeec2, 0x1bc5ad58, 0xe1b8b4db, 0x260fcd2a,
+       0xa46c3d3a, 0x2467ead3, 0x7f9e5a9d, 0xec7fdfeb, 0x3d49fde1, 0xfd8a23b6,
+       0x074395c5, 0xdb0d5e99, 0x5167b51e, 0x65caa7bb, 0xcf5c71dc, 0x11ba1577,
+       0x6db15f3f, 0x7ff90ed0, 0x046fdf4a, 0xf76a37bf, 0xc2bc7579, 0xbb0628fe,
+       0xde87b7a7, 0xdcf3483b, 0x1e3a21b7, 0x79f475f7, 0xa8e4d35e, 0x09312ba5,
+       0x3574b5f3, 0xab9c4fff, 0x291fbd74, 0xa5a36777, 0xf1a4ac3c, 0x17679720,
+       0x194efcaa, 0xec89b7f9, 0x5c9a2beb, 0xc5e8453d, 0xd8f498fd, 0x7ef8e7a1,
+       0x2a313dc5, 0x3939d6f2, 0x05e600a1, 0x0edd631f, 0xafc88bd2, 0xbe8474e5,
+       0x45c83ac0, 0x28357be7, 0xfe6492e3, 0xdde09923, 0x2a7ef916, 0x33cb2adb,
+       0x08461e9a, 0x7262f50d, 0x8ffb14a8, 0xf3975bd4, 0xd4fe742b, 0x53d489c7,
+       0xafdfdb97, 0xd2bcbe34, 0x6966cefe, 0x355c92f1, 0x36f349d3, 0x455b323d,
+       0xfb4ae8fc, 0x7cc8c474, 0x897ef8d3, 0x26922b59, 0x3c8e6fd8, 0xbf7e5d07,
+       0x13c95503, 0xbc92f7ec, 0xfa2726b2, 0xfcf1f59d, 0x8fccbf48, 0x6ec8559c,
+       0x1bb3bf51, 0x9b1ef9a2, 0x3e3d2fbe, 0x33bee7ff, 0x24f2eff8, 0x8a14ee2d,
+       0x18d93f83, 0x507fc9a3, 0x6f5ef8c2, 0xfbdbaef8, 0x5c50eed3, 0x7f3f4192,
+       0x43d9a5dc, 0x7901da11, 0x0433dd16, 0xfba71ce2, 0xf259c6cf, 0x7d729fc0,
+       0xecfbbf7a, 0xe86ee9ea, 0x7c512db9, 0xa6fc9d2f, 0xb52388ad, 0x3e3913f9,
+       0xf1775773, 0xce349db9, 0xf2e97d5d, 0xe7e694fd, 0x5ff4d2af, 0x5bcd7dec,
+       0x677ed1cb, 0x7c7e1b96, 0x81ceab9b, 0x40ec5bf8, 0xfd9b23bd, 0xd00e795e,
+       0x29f755f3, 0x7ddf8ea2, 0xae423f41, 0xc0e6af2c, 0x29deacde, 0x8b5afffd,
+       0xe77c86d8, 0xeabadef4, 0x2787e834, 0x2e2f7e15, 0xd51e9176, 0x3ba467cf,
+       0x4ba9aeba, 0xd65d80a9, 0x81cdc7de, 0x3f62b58d, 0x3b9c5e43, 0xd817f905,
+       0xbc03d60f, 0x8be9a13c, 0xe26703d3, 0x7c61793c, 0x78efa5fe, 0xf3d0be74,
+       0xfb886d66, 0x347f024c, 0x5a3f8326, 0xd6d8fcb5, 0xb70cc581, 0xf7e52e0d,
+       0x4c68bd3a, 0x47d6c8e7, 0xe7f71eab, 0xc4ad9de3, 0xe2e76b47, 0xb517e19b,
+       0xc44a8eef, 0xeed326b9, 0xa1fa34cf, 0xf20f83ad, 0x83f39dfb, 0xa77efcd1,
+       0x995f5dd2, 0xb55cfb48, 0xd387be4b, 0x485555db, 0xb9db5bf9, 0xa70ef4d8,
+       0x3dc4c68d, 0xc50fdfe0, 0xfd28bdf2, 0xd3834d7d, 0xf11e05e7, 0x47ae66ce,
+       0xe349afbe, 0xe3099ef6, 0xae797af3, 0x30d7be47, 0xb9ba17bc, 0x7477fa81,
+       0x718f18be, 0x6ef63dd6, 0x71086119, 0x528adaad, 0x9da17bc3, 0xdb50bdf2,
+       0xdbbf1363, 0x42eeffd1, 0xca6111fb, 0x4815de2f, 0x17d43f60, 0xbbe40e14,
+       0x7ec16e7d, 0xe8ab79ee, 0xfdd75d86, 0x937bfd12, 0x09f38786, 0xffa099fd,
+       0x644fbd9a, 0x26fc6ec2, 0x7b8dc24e, 0xe817f8ef, 0x289edf21, 0x04db7fe9,
+       0x7e2db7fb, 0xefeb2fe9, 0x1d9ef0c0, 0x8af6f0e7, 0x8d6f1e58, 0x5f489ef6,
+       0x2c17f917, 0x89b1bfb7, 0xef03ac1a, 0x1fcfc084, 0xa06d82d8, 0x8fe407e7,
+       0x5551df22, 0x83eff921, 0xdf356b7e, 0x80412253, 0xff41f15f, 0x23c8718b,
+       0x95587eea, 0xbc5ed7f5, 0x5878dea3, 0xcd8dd7be, 0x8c73e61b, 0xeb25e2d0,
+       0x36df92dd, 0x9d5ec8fe, 0x2afd993e, 0x0b61d2fe, 0xd7a2263a, 0x1a6fcd5a,
+       0xe41d0f87, 0x7ec75973, 0x0c7417e9, 0x40bf619d, 0xf7f433f7, 0x9ff6eb80,
+       0xef413f61, 0xc490feb7, 0xf921e74b, 0xa2d739bd, 0x4abc5bc7, 0x0acbce0e,
+       0x5595cfc3, 0x19b66e37, 0x9f862ae1, 0x3f4b732b, 0x7ec236da, 0x3fb943f9,
+       0x674cf3e7, 0xc12e369f, 0x3b7cc376, 0xf2a594c0, 0xfa170cfb, 0xb7e74c7b,
+       0x3cf243ce, 0xd98cec14, 0xd76df7c6, 0x7b286cbb, 0xcf6c5d3b, 0x72597577,
+       0x5c58256d, 0x4773fb0c, 0x53627bb5, 0x1a32fdd6, 0x31348271, 0xc592dc72,
+       0x9802c3f7, 0xf9f8452a, 0x0efe98be, 0x3e4fc2e8, 0x0bf8c629, 0xe22e87a6,
+       0x37d85f6f, 0x3f2237d7, 0xdb42afb2, 0x18a85e47, 0x98e53c7c, 0xb03fbbd4,
+       0x57b06d8b, 0x902756c2, 0x916a3837, 0xabff8dfe, 0x0277f918, 0xcf32f15c,
+       0xff2d963b, 0xc653837e, 0xe44747fb, 0xc20873df, 0x17fda08e, 0x897f6e4e,
+       0x73f1a19f, 0x87cc945d, 0x33d8a2de, 0x698691fe, 0xc11df2c9, 0xadb2ebfa,
+       0x703385f9, 0xefde4e8f, 0x4de5a0be, 0x91757f75, 0xb433afa6, 0x6a639673,
+       0xaffc0baa, 0x7efcbd78, 0x63bc81f3, 0xe1ff982d, 0xfe40a711, 0xb89fbf4e,
+       0x9e462468, 0xb0d6a66b, 0x363c537d, 0x8fed48d1, 0xb88259e5, 0x70b0ff9f,
+       0x38575e72, 0x4b5cfc23, 0x56b3df34, 0x25f1be8e, 0xf5ba7cf4, 0xb409e38b,
+       0x51bff4ff, 0xa6c0e854, 0x783f73d1, 0xb1c6ca9b, 0x8fb107dd, 0xef7de38f,
+       0x1e9c4f40, 0x23e339ad, 0x1eec3f52, 0x7ed2aa72, 0x8ffae308, 0x7c65ffde,
+       0xaebc2592, 0xe4e7230b, 0x7118c1df, 0xd1785c72, 0x238cab51, 0x42e7ac45,
+       0x7bef87aa, 0xfbc63b53, 0x80259705, 0xa3a2d973, 0xfac7dfc7, 0x331ee116,
+       0xfda775fc, 0x119da333, 0xc4448c9e, 0xfebaa1ad, 0xc3961e94, 0x707b747b,
+       0x8fd7cb54, 0x952e38b8, 0x5c713bdc, 0x03f85de5, 0x2417e764, 0x5f99cf98,
+       0xf37f4854, 0x87be8d0b, 0x64beebb2, 0x640b66bb, 0xd9aff768, 0xf6d32e7e,
+       0xab5fdbaf, 0x0d32ff36, 0x165ccb0f, 0x22dbefb9, 0x81f1adf6, 0xae9d674e,
+       0x9d2d3bfa, 0xc33be23e, 0x8a8ef027, 0x88ff92e8, 0x2e7587a4, 0xa797e5ec,
+       0x893890b6, 0x84b5ffa9, 0xa057f2e9, 0x3f7f1047, 0xc7a6cfe8, 0xc91e99b0,
+       0xd9e8c1bd, 0xb31e13f0, 0x79109fb0, 0x0ae452bf, 0xd64d03d6, 0xfa078e18,
+       0x7cfde462, 0x9013ff92, 0xa7ee5d7f, 0x61f284d7, 0xf10b4f2f, 0xb215d634,
+       0x45f7f10c, 0x0f59b373, 0x69c3134d, 0x16c0cefc, 0xd63f852a, 0x749f78ab,
+       0x0e86515a, 0x5db90cbc, 0xd27ce2e3, 0xfbfc8085, 0x8189032d, 0xbcd15727,
+       0x38f2cb03, 0x8841703f, 0xfbd02382, 0x67ec31ed, 0xd60a240d, 0xb30d0307,
+       0xf4bf1ed8, 0xfc266b47, 0x188691b0, 0x140e4bce, 0xafc07686, 0x51e9981a,
+       0x15f4d4fd, 0x1f82cc45, 0xf277afe6, 0x52f5033c, 0xc8ec0cbf, 0x44e2f790,
+       0x47e439e0, 0xc31edfbe, 0x4181aef9, 0x42e21a6f, 0xf37de2d3, 0xa7fad2e7,
+       0x0ddf255a, 0x2a77d164, 0x1aea571f, 0xbe5e30da, 0x21a8775c, 0x34bdf9e6,
+       0xa90e744a, 0xba7efa22, 0x90f38e3b, 0x71ea9f3a, 0x33fee9d8, 0xfa4f024f,
+       0x350fd83b, 0xaef1d2fe, 0x403be578, 0x9f3aff1d, 0xaef0d64d, 0x36fc926c,
+       0xbd775f7e, 0xd3bafbe0, 0x33b10968, 0xf552ff70, 0x937fcf00, 0x758a5be0,
+       0xba206ef7, 0x897eb158, 0xdf78d3ff, 0xd0df8137, 0xdfa2d734, 0x0af7e3bf,
+       0x47ca424d, 0xa13efe93, 0x413efcdb, 0xe225a684, 0x11f3141e, 0xcbbdfff5,
+       0xef7e0cd7, 0x3af1718c, 0x2dde573f, 0xffa9e543, 0xcf784eb6, 0x295ced65,
+       0xbed139af, 0xfea75835, 0x1ff7436e, 0x927e154f, 0xfa7c3d01, 0xa1a637fe,
+       0xebaf892c, 0x1bc7bb40, 0xd30d50fe, 0x885a61f0, 0xd87c9bdf, 0xc70655f0,
+       0xc1bd3793, 0xaee7ff7c, 0x5f037ff7, 0xa0d7f003, 0x00a0d7f0
+};
+
+static const u32 tsem_int_table_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x51fbff00, 0x03f0c0cf, 0x3373f78a, 0x45e6fc30,
+       0x5e0287f0, 0xb0c0ceca, 0x0257881c, 0x56204bf1, 0x50606364, 0xff5e2362,
+       0x5b042972, 0xc181825c, 0x8aa78805, 0x0812f901, 0x06692171, 0x06495486,
+       0x08497506, 0x7690337f, 0xeddca290, 0x2a1b0183, 0xc8098a60, 0x5846d821,
+       0x31b191e4, 0x1c817c9a, 0x8084df2a, 0x73c681fe, 0x7bf951d4, 0x06b42155,
+       0x9a2e7c54, 0x7ca83efc, 0xf35fd430, 0x1b9bb1d4, 0x27bfa642, 0x006840b0,
+       0x849cc450, 0x00000398
+};
+
+static const u32 tsem_pram_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x7dedff00, 0xd554780b, 0x733ef0b5, 0x7993331e,
+       0x31e424e4, 0x09261081, 0x83086820, 0x3ac54440, 0xbde311e1, 0x1a5e1db4,
+       0x15e18fad, 0xa0484842, 0xdeb787e8, 0x2409033f, 0x88b06220, 0xf0ed6bd8,
+       0xed160b48, 0x16850348, 0xd22d00e9, 0xb15ab077, 0x5ac17eda, 0xa4490850,
+       0xcb6ad457, 0xfbdad6bf, 0x13267324, 0x5fafdb40, 0x4fc5ef7b, 0xfd9f6b36,
+       0xd6bdaf5c, 0xb4518fda, 0x2b719664, 0x0ff09763, 0x8cad63a4, 0x74def4b1,
+       0x26328b36, 0x21636a43, 0x52c668c7, 0x7bbf4d66, 0xce631a51, 0x36ef9a89,
+       0x6b399228, 0x00b5dcfa, 0xf3689ecf, 0x36c79561, 0xc8b7d9ff, 0x8d86d8cb,
+       0x017778ef, 0x7f05debc, 0xfff5f7c1, 0x24abc2c9, 0xd18f0ec6, 0x0a5d3c38,
+       0x9d21735b, 0x60f0e56d, 0xfdf06616, 0xc672cf55, 0x13e7502c, 0x63114f18,
+       0xe593fc3a, 0xb1843c23, 0x2086c60c, 0x2abfc5ec, 0xb3ef8319, 0xbd9eec04,
+       0x5959ea94, 0xf6f1c240, 0x531d51a6, 0x299ba136, 0xc85ed469, 0x596bf545,
+       0x7537d5c0, 0x6778f9f8, 0xdf1a3367, 0x71c7846c, 0x61f84158, 0x5b00eb0e,
+       0x7db3bc60, 0xb3bf520f, 0x1ca33ba1, 0x6e6183ce, 0xf36f78cc, 0x856c7e07,
+       0x92cd6776, 0x66174f08, 0xb0f378c1, 0xccad4f1e, 0x8b9a383f, 0xfb8d3769,
+       0xa4283af1, 0x752b8ef5, 0x4ae34496, 0xb9bdf685, 0x8c3bef98, 0x31a759ed,
+       0xf34635f6, 0xf5e01f55, 0xa6122b0f, 0xade23b3e, 0x6c3eed37, 0xf7cefa95,
+       0x6cbeb3c7, 0xbc22776b, 0xccb9f094, 0x5a9bc7c6, 0x9483501a, 0x416677ef,
+       0x3cc4e7fe, 0x323e0c06, 0xcf4c5d39, 0x88b7f902, 0xcaf9cffc, 0x8042b1a7,
+       0x8f41843f, 0x12ec02a0, 0xba27edfd, 0x90dca2e9, 0xeb6ef86e, 0x1a07aefd,
+       0xdea193df, 0x7ae65980, 0x0ce4afba, 0xa49507b6, 0x4b8028c0, 0x2e68f5cd,
+       0x37763237, 0xbe9da573, 0x983dfe0e, 0x7484be0d, 0xf9f1fc06, 0x825ebfb1,
+       0x1d61677e, 0x8dbf97b9, 0x33c3f0f4, 0x8c05ed5c, 0xe99ace35, 0x57cf3062,
+       0x385d3303, 0xcd6757df, 0x97c779a4, 0x372b3d9f, 0x37d05839, 0xaf1f48df,
+       0x43868e83, 0xf8b7417d, 0x566403ef, 0x3940291b, 0x4c70fe61, 0x5270cb3b,
+       0x9187d080, 0x7e03c669, 0x87496e94, 0x997887fe, 0x1c60923f, 0x8366425f,
+       0x881b2c72, 0x78ffd59f, 0xdda9cd80, 0x94b04cdf, 0x7b8c1386, 0xdf03b619,
+       0x00d1a5dd, 0x2e34eff1, 0x58d3d9df, 0xec66e1d4, 0x1366bb8e, 0x29a4361e,
+       0xc06feb09, 0x442312f1, 0x55f7c275, 0x659dc78e, 0xda7b6009, 0x8e10396c,
+       0x18935f99, 0x28b2918f, 0x1ed9ff97, 0x3bdcbf4e, 0x13fa0a5e, 0xc0ad63e0,
+       0xb0e45adb, 0x31e3bdf1, 0xe7c06bbe, 0x1e90ffc8, 0x76984bf7, 0x8d3db1db,
+       0x20aaedb5, 0xe4320a39, 0x213fc82f, 0x3ff0bd49, 0x18e2aa6b, 0xd3f262b3,
+       0xfa0e48d2, 0xad1e17ad, 0x140f5ca0, 0x021907f2, 0x03602c4f, 0xff8418f9,
+       0xe7ad8dca, 0xd69d5ffb, 0x53bf0333, 0x8fa0d3f4, 0xa597ff24, 0x8e5dd74b,
+       0xda7615af, 0x7fa85bd0, 0x8f44a99c, 0x0241c92b, 0xff44f4fe, 0xefeff805,
+       0x698a0696, 0xea38d1bd, 0x6a1d9698, 0x37df4093, 0xf1f72e0e, 0x5a01e775,
+       0x08f58c37, 0xe5027cff, 0x8ec38c1d, 0xaca7ae5a, 0x92b7a0b5, 0x79817ea1,
+       0xd94c687d, 0x1da124df, 0xd69856c1, 0x6a3978b5, 0x07a224fc, 0x1e95e812,
+       0x3bb5c4fa, 0xc6f58242, 0x88b37541, 0x36c3f2de, 0xdebe5e3e, 0xe8165868,
+       0x856538d9, 0xa378f50d, 0xd70d9967, 0x65ecc68d, 0x5e43530c, 0xd9adf68d,
+       0x2baecbde, 0x80ec7a6b, 0x4f6dc930, 0x31b1d67e, 0x6b186f58, 0x7f4328df,
+       0x1625e92d, 0xdfc0ff6e, 0x16e8f764, 0x0a4b471c, 0xb6afb1eb, 0x72979ca1,
+       0x37b06738, 0x16e00ebc, 0x8e7bf9bb, 0xed92df28, 0x8ec8870d, 0x1d845af0,
+       0x91f5da21, 0x536c327d, 0x94323b6f, 0x858e361b, 0x863f5834, 0xec2e58ae,
+       0xebc4af19, 0x75876131, 0x9a5a5e13, 0x048d2527, 0x00dc293b, 0xfc3d110d,
+       0x6b1db0eb, 0x475f4593, 0x73ad887a, 0x6009bc20, 0x099dbfea, 0xf6f18e3b,
+       0xca36edda, 0x0eddbb6f, 0x37ec50e9, 0xebe9ab19, 0xb63d7852, 0xdf20ec8e,
+       0xbd8c5b46, 0xd1f203b3, 0xfd810b3e, 0x1d812c34, 0x453c6204, 0x2fb58a2a,
+       0xba708625, 0x434a9780, 0x71b7c809, 0x7cc46b7e, 0xa68ee3a0, 0xa05e4949,
+       0x3faf0ef3, 0x78f407c9, 0x820ce360, 0x4903b25b, 0xef9c0281, 0x1976248c,
+       0x29b13efa, 0xb0491d30, 0xa7e7ba43, 0xb35fa993, 0x636c761d, 0xc61f9b51,
+       0x7cc4d2dd, 0xd6538056, 0x8ed09207, 0xdcf987cd, 0x93b6f526, 0x7ed9b0fe,
+       0x2794d6da, 0xdb0e5f21, 0xce2dfbe4, 0xcd51f93b, 0x9d4a748b, 0xade7e666,
+       0x96978e21, 0x6d6edc69, 0x8dd77af1, 0xf994b840, 0x64f7c256, 0x73bcb9bf,
+       0x945dffbd, 0x2f57e753, 0x3c079d12, 0x10f2b501, 0x5229fe7f, 0x85ee7dac,
+       0xe7f062ff, 0xa76e609c, 0x54dbe265, 0x3bc6d8ff, 0x6cfed092, 0xf4920609,
+       0x37f3be82, 0xd0a747ec, 0xc9ff4613, 0x8b7d444f, 0xc779df58, 0x4fc0cfcf,
+       0x8dc4799f, 0xd721bb67, 0xe8d720c9, 0x92a7646f, 0x7d1df07e, 0x7b224c73,
+       0xc0e3d0d0, 0xfc4ecc87, 0x13dbf116, 0x92ffd5f1, 0x273758d4, 0x4b9f8148,
+       0x5aec9788, 0x0b0a77d2, 0xdf1a4afe, 0x77c8ce5b, 0xc8902c4a, 0xc4bdfdbe,
+       0x59a7b9ed, 0x7ae637f0, 0xe8748641, 0x13d7c166, 0x2eeb1be5, 0x1bfec053,
+       0x8cbd3fd5, 0x80594372, 0x6b365af4, 0x83953d23, 0xb23e577e, 0x799bd71c,
+       0xd1f2efa8, 0x74a5afa4, 0xf4a66b04, 0xb4a1165a, 0x6a51b580, 0xd642e5e8,
+       0x71d0f04d, 0xe0162381, 0x23ba5bdb, 0x74f30fcc, 0x10584414, 0x105e99c6,
+       0x1d7ed090, 0xc9cbb52f, 0x146cbf20, 0xb940b6f3, 0x8d2f6e75, 0x24dcb62b,
+       0xb5ef57a8, 0x33d05484, 0xe4db597b, 0x055bd464, 0xf7e5822c, 0xdba52d3a,
+       0x8dcb7a0a, 0xef1c7817, 0xdf3004b2, 0x1f73ef68, 0x7f03db9a, 0x92b9465a,
+       0xfe12b90d, 0x30a7ad35, 0xa3ea156e, 0x3015ae3d, 0xfa04d6ff, 0x76e16dca,
+       0x76a3b8f9, 0x476bea3f, 0xbe461699, 0x2e682f4f, 0x3e7d3846, 0xdf00c9f3,
+       0xb7ef0ef4, 0xbe31c701, 0x1de9de77, 0xdee90901, 0xbad0b1e6, 0xfe0718e1,
+       0x59e3da35, 0x8c62fead, 0x1937c027, 0xf51055c7, 0x84bb00cb, 0xde9fde9f,
+       0xd6327d74, 0x67b6eb8b, 0xf489b400, 0xa8997c57, 0x8db75567, 0xd57c040d,
+       0xff256ebf, 0x7caba2fd, 0xb3e18b08, 0x63a2ea77, 0xec630fe6, 0x4a71dd6c,
+       0x28daea3b, 0x493baced, 0x1b76ff69, 0x8be042ac, 0xe7cfffc8, 0x0feb7ec1,
+       0x51de601f, 0xce10ee34, 0x84b4e9c7, 0x6dfe48f3, 0x6bd196b2, 0xf80080a7,
+       0xcd9e306d, 0xbd68f263, 0x9e22fc45, 0x009631d5, 0xd6cb39e2, 0x882d2d2c,
+       0xfcf177c9, 0x5a9f4771, 0x31d97a89, 0xbd418d9f, 0x656559b2, 0xe7c46748,
+       0x255b481c, 0x0101fdcb, 0x427485cf, 0x7f783f7b, 0x40eb403b, 0x27804bd6,
+       0x9bc503e4, 0x9fa995cc, 0x04fe6af4, 0x4904fe26, 0x2806caef, 0x636cfefc,
+       0x2bfbcc1e, 0x06d6cf1c, 0xd843ad85, 0x22b579ab, 0x9ff9bb74, 0x34c560ec,
+       0xf6d8f606, 0x50c769f2, 0x9fcbe73f, 0x7f21561c, 0x56f2ad70, 0xcd9e8c7b,
+       0x04fb0329, 0x1590fef4, 0x90dcfce6, 0x2c0e8619, 0x4df9c728, 0x8b32fce6,
+       0xcc5df7f0, 0xfc57f685, 0xf82d96bc, 0x7f7f4241, 0x3a8b1d75, 0xe25818d5,
+       0x296034f8, 0x12b82ca3, 0x246cb7e6, 0x5accf8a3, 0x9b6ff70b, 0xc5f01eb1,
+       0x8fae9106, 0xe548c76b, 0xac0b4e09, 0x4275d81d, 0x4b29fdbf, 0xe8058d71,
+       0xa932d072, 0xaef282c6, 0x87da1844, 0x1fcd348e, 0xad7e504e, 0x93fea145,
+       0x0cbf3694, 0x91beeae3, 0xde01b6f9, 0x51dda997, 0xc5658f94, 0xd5085f5e,
+       0x47ec2f99, 0x1ac0a4ba, 0x29f7f288, 0x8c52b3c6, 0xfa85a567, 0xdd3b5089,
+       0x126df380, 0x5ddbc3f6, 0xd0cbd236, 0x9c6fec0e, 0xf12a2df3, 0x4916a3db,
+       0xd0483f21, 0xde454d65, 0xb6002563, 0xec66feeb, 0xa4129dc7, 0xccf7c8d4,
+       0x3ea2f32d, 0xa6621ac8, 0x36adb95f, 0x32a3f907, 0xfe412910, 0xa3f19339,
+       0x7bcc2a35, 0x29f31d5b, 0x33977f80, 0x5bc705b0, 0x70ed4f7d, 0xc86d77b4,
+       0x94b8e9cb, 0x4db269fb, 0x14f95653, 0x28a657c8, 0x50f81551, 0xa4e47099,
+       0x5434c6ea, 0x1769fc8c, 0x376016fe, 0x814b0c94, 0x5dff846d, 0xb6268dd9,
+       0x70c3ea8f, 0x81b13d69, 0x0c56f7b9, 0x66d969df, 0x70cdd658, 0x4ae37a7f,
+       0xfba87ce9, 0x3fc430d6, 0xdbac3b23, 0x7970edc5, 0xc710af82, 0x9ba6e1bb,
+       0x17df4f08, 0x1f57b7fa, 0x80fe4d85, 0x1997e2bc, 0x7e62c743, 0x2bcbe533,
+       0x74319e7e, 0x99a5e200, 0xbc9b6be6, 0x87b8f18c, 0x8553c79f, 0x37d46bbf,
+       0x9e8ff0f0, 0x6c3fbc77, 0x38c0fa43, 0x4ecec26d, 0x58bc72f1, 0x0dbe1675,
+       0x602992f0, 0x0fd7ce9b, 0xf34b4585, 0xfae01a78, 0x7e24f6b7, 0x2f35b257,
+       0x83c3dbea, 0x98df2a35, 0x77c3cbc2, 0xfa34dccf, 0x614c7a4e, 0xa7f61b61,
+       0xbe23fea0, 0x27b48808, 0x52e5a43f, 0x7ea3547e, 0x97c8cc22, 0x25f80e08,
+       0xc0b37e53, 0x47d85faf, 0x9e54a77f, 0xb62609e6, 0x534f498f, 0x521b8051,
+       0x357d90d6, 0x68621bd5, 0xcbb2bb57, 0xc73b2f49, 0xd55ded99, 0x9b9bb663,
+       0xde74dbbc, 0x05d69fbe, 0xa6cf689b, 0xacf8a1af, 0x0ce4bb2d, 0xe71493b6,
+       0x9a86db0f, 0x65c44561, 0xa7b0b25d, 0x9037606f, 0x655fac9f, 0x79f8507c,
+       0x13fe836e, 0x609dbd38, 0x93bfa02f, 0x81776029, 0x0fbe4f41, 0xb6ffcc60,
+       0x17db8c29, 0xf67a3f82, 0xf6e2521f, 0x7c78521f, 0x9c8dfd7f, 0xff46103f,
+       0x212bedc7, 0x8e3dc4bf, 0x3b4373d7, 0xe3c63e3c, 0xb13f46f9, 0x5eef51df,
+       0xfb46d098, 0x3f02ee00, 0xd3488fa5, 0xe5051da8, 0x98f3e614, 0xa615e3f0,
+       0x5931fc53, 0xe75923cc, 0xb45d7cf1, 0x718c03a7, 0x3f44d74a, 0xf1468ff7,
+       0xf9d06ef1, 0x853db178, 0xa4ded3c6, 0xe04f9f22, 0xbbb42efe, 0x97b73f31,
+       0x249cc97e, 0x07eb0f90, 0x005c97b4, 0xfd537474, 0xcbea4590, 0xd7f08a47,
+       0x43afe115, 0xa0b2d33b, 0x87ac019d, 0xf23f04cf, 0xdf61bfb8, 0x7f71100c,
+       0x5a63bbe3, 0xe63ff8df, 0x9ff1c527, 0x6a529f91, 0xe3ec9f2e, 0x8f7c667c,
+       0x181adbf7, 0x64bbafe7, 0xb3a40761, 0x52bf9c61, 0x52bf8aaf, 0x3e509e70,
+       0x12cfd8c5, 0x513a92fc, 0xa70117e8, 0x8bf8350c, 0x83deddd3, 0x8f9fce4f,
+       0xdc7abe0b, 0xb5dbabe0, 0xf4e9181e, 0x3f0e54f8, 0x07ec6296, 0x114d3e71,
+       0x2c4ea4ed, 0x35493e21, 0xb979d7fa, 0x30bda1d4, 0x2942edd2, 0xd2db83e7,
+       0x87b3be78, 0x2c92bc0f, 0xd20bd2f5, 0xaf6e68ac, 0xf9147a1e, 0x05f1386d,
+       0xca55d5d1, 0xfc85cdf9, 0xf3faf126, 0x9154fca1, 0xa7d1e8ef, 0xa2ffa161,
+       0xd665927e, 0xcf8857ee, 0xb6133ef8, 0xc2fea0e7, 0x7b72f3c7, 0xe824d4e9,
+       0x29d743d2, 0x8b9721c1, 0x9516316b, 0x8ba21e2c, 0xd41b2164, 0xf946522f,
+       0x92a97d87, 0x0e3efd04, 0xf972b1f8, 0x5d9af8a3, 0x2f1ed7c4, 0xc87e4238,
+       0x01ac3ee3, 0x6f7af178, 0x2a1943cf, 0x4fd0f8b5, 0xc794bc7a, 0x4dfbe23f,
+       0xbc7cbd2d, 0xd38ecb4d, 0x136e6967, 0x8b223e7f, 0xf93889fd, 0x9b9acb59,
+       0xf909fd69, 0xf1313cdb, 0x7179788a, 0xd8fae44e, 0x0f2bebe1, 0x288a67c8,
+       0x0beb0497, 0xc23ed7d2, 0x9f8a1f2c, 0xb8eb63eb, 0x9f45f100, 0xfbe44ef1,
+       0x399a4a66, 0xfaf187ff, 0xf2757bd8, 0x110fcbd2, 0x8405beb1, 0xaf3bf8fe,
+       0x696cff6f, 0x11f64fc8, 0xf4f100d2, 0x467025b2, 0xdce87c46, 0xf5b0743e,
+       0xf4267f84, 0xa9b74183, 0xef85e314, 0x1c9e5cd9, 0x63d6847a, 0xf9e5c147,
+       0x3fd8bd6e, 0x53a75b5c, 0x556f88fa, 0xf92f3cd9, 0xd86eb42d, 0xb62a9a8a,
+       0xea1b3fc3, 0x3addf43c, 0x173b542a, 0x2b61c6e0, 0x6fb0db82, 0x9e93cfe1,
+       0xfd8afa42, 0x2a5c6372, 0x47282bda, 0x25bf21d9, 0x7085ca8d, 0x1e08ea9a,
+       0x927b4747, 0xf820e2e2, 0xc70d6056, 0x50275850, 0xfee08c2f, 0x04686390,
+       0x1f341063, 0xe5532bf4, 0xf8829260, 0x628e6828, 0x75d143bc, 0x2906b792,
+       0x38f91cc2, 0x7fc92bdf, 0x3de5c2c8, 0xbd5fda71, 0x4d47dc24, 0x8a45d720,
+       0x06deec8d, 0x9824c235, 0x4628c35f, 0xae434b7e, 0x5233cfd9, 0x78e5c287,
+       0xf87b4ef1, 0xaaf918ed, 0xe098a48e, 0xe159fd9a, 0x68e463b7, 0xc0fce331,
+       0xafb44b96, 0xb13fc556, 0x839ed66a, 0x90617778, 0x625dda16, 0xb840cf69,
+       0x51df758b, 0xfb3ca322, 0xf73728fd, 0x8831c1c9, 0x0111a4b7, 0x0f4523e2,
+       0xda55f888, 0x5d1bed55, 0xe85eaf09, 0x9a42659e, 0xb1d4522d, 0xc69a4037,
+       0x4c7198d3, 0xf67fc652, 0xaf701871, 0x69141cbd, 0xfc27a1ad, 0x3d48ffd2,
+       0x17af1c51, 0x868f112a, 0x1572605e, 0xa441fb13, 0xfe42ac17, 0x64827aa6,
+       0xaf186b8f, 0x878f78c4, 0xf0fe83eb, 0xefd628dd, 0x342f4235, 0x7ad05ea0,
+       0xcea1bfe5, 0xd855b04b, 0xb6878ac9, 0x764a59f1, 0x1ae78430, 0x596bb332,
+       0x593e027b, 0xfc520ae3, 0xb95670ea, 0x19afbf07, 0x6461ee5c, 0xc4fb73f7,
+       0xac9aef18, 0x7ebb1672, 0x3979b8e2, 0xe7e2bcf3, 0xc4df1fd3, 0x1f0647af,
+       0x3237c8a9, 0x12c39ea5, 0xe2957ea6, 0x861e7891, 0xd0235fdb, 0x925950fe,
+       0x8f7d1d6f, 0xd1f2f396, 0x3ce69142, 0x6202e540, 0x235ff17f, 0xc049f35d,
+       0xec307486, 0xb835bf59, 0x5ec2f51f, 0x234e5245, 0xbd3ac49e, 0x3765ed3a,
+       0xdef8c1d2, 0x2fb5fd31, 0xd2af1aa0, 0x4f104ba2, 0xf83b9cb3, 0xa463643a,
+       0x233b0c8f, 0x371cc0a9, 0xdb3c0bb3, 0xf2a65f02, 0xd8df04b3, 0xd1cb9a86,
+       0x8bee2a79, 0x91725b84, 0x3971f1be, 0x9a4a072e, 0x0dc55f39, 0x679f1855,
+       0x1c1e3dde, 0xa0d9eaef, 0x561f8177, 0xdfeb374f, 0xf2072c6c, 0xa7857bf2,
+       0xabfd08ff, 0xcdf3bdcb, 0x07514809, 0xc99e47d8, 0xce10f6be, 0xec95a673,
+       0x9e0c2445, 0x99e23087, 0x415939ac, 0x9fe2373e, 0x7d2f0383, 0x21cd7184,
+       0x45c93ef3, 0xe856f341, 0xf65b7047, 0xc18ce8af, 0x7521be3c, 0x72fec48f,
+       0x0f3d131c, 0xc0373c30, 0x47580ad8, 0x1ef38f71, 0x1bbeb14c, 0xf1e7e049,
+       0x2b0f4176, 0xf48c81ca, 0x10ea5309, 0xec4b85fe, 0x75a3267b, 0xb7ebdf9b,
+       0xb6163f80, 0xb0f67f90, 0x5adcf64e, 0x5c27ce99, 0xa303ffad, 0x926fd1d1,
+       0xe4bcbac0, 0x9e7afab8, 0xc6317340, 0x459606e3, 0x5f1bae28, 0x9f9933ce,
+       0xcfcf8a6f, 0x0ff17c15, 0xb4e6f3a0, 0x9d2be47c, 0xfbd061e8, 0x88707247,
+       0x6f863e3a, 0xabe93f75, 0x4aa572f8, 0xed0aa870, 0xf3140acd, 0xca7eab7d,
+       0xcbfc3f49, 0xeaefb469, 0xf45eaaf7, 0x55ef264b, 0x5c02b7a3, 0x679f95bd,
+       0x93b21cb4, 0xcd3e74fc, 0x234ba8e1, 0x0efce53f, 0x1ac1ec89, 0x9b86db6b,
+       0x57b7ce31, 0x85b76466, 0xbf382ccb, 0x6cee62d3, 0x85cb873f, 0xf5bd59c3,
+       0xbf587df0, 0xf695bf62, 0x2c0fab19, 0x00cdc2fc, 0x92ae3c2f, 0xb2dd57ad,
+       0xf0081b52, 0x4114b0a2, 0x97126bb8, 0x993ed0df, 0xddcbb7e4, 0x89db3196,
+       0xe6361dfb, 0xedc606bd, 0x0598cb6a, 0xbf0caaf3, 0x2af58250, 0x5c3e4b77,
+       0x6def2637, 0xf5059639, 0xb44977aa, 0xa778bccf, 0xe8637983, 0x8e55ba73,
+       0x60f18ade, 0x43c62798, 0x12e6b216, 0xcb757bc4, 0xeaebcd46, 0xbad9f7a5,
+       0xed6bcc11, 0x4177ab85, 0xc96f503f, 0xa70f92f3, 0x82c2c4b8, 0x079d27c8,
+       0x9ddb65ec, 0xda95bf38, 0xabce1770, 0x0b72c351, 0xd9f673c3, 0xadbe38bd,
+       0xaf7c095a, 0x56ab7a7c, 0x8b57c31e, 0xbcc75e77, 0x7a727c31, 0xe5e67e4b,
+       0xb0b39dd6, 0xa78ec68e, 0x99c3c452, 0xc7a6d612, 0xb5933fc4, 0x648fa114,
+       0xff06fb53, 0x64655e87, 0x745e87d7, 0xba0d5e11, 0x7eb9d32d, 0x4176e830,
+       0xba547417, 0x37db628b, 0x07480dd2, 0xe82bee2b, 0xeb0e3e94, 0x609ba639,
+       0x6cfa473d, 0x435dfc46, 0xef940cfb, 0x718ac89e, 0x47eddfbf, 0xb7f71e47,
+       0xc62ac5fd, 0xce1c0207, 0x792827b8, 0x237f332f, 0xe706acdd, 0x75b911e0,
+       0x1493a3ab, 0x5acdab90, 0xbc862970, 0xc9f86f1f, 0x1f0029a4, 0xc80d8350,
+       0xb0520dff, 0x227fc782, 0x3597941e, 0x61e49f62, 0xfc63c20c, 0x7da34b3e,
+       0x16f7cd81, 0x3125976d, 0xcb8434d7, 0x287189bf, 0x6a51e768, 0xf2768547,
+       0xc64edcaf, 0xed4c137d, 0x6157dc64, 0xda99b3b4, 0x3b5d5fb1, 0xc9bbef9b,
+       0x2afb9e3c, 0x41be768d, 0x6eaeb8ed, 0x4ff7195e, 0xfee78f34, 0xf3276a2a,
+       0x43d91f1e, 0xc30a7ec6, 0x63c61ab8, 0xbf5ca776, 0xd1f2c58e, 0x7f636fa4,
+       0x58aa902e, 0x909e4a3e, 0x14a79264, 0x1e09aa7f, 0x54d03a50, 0x67903d3e,
+       0x76599efa, 0x3a5f1c6d, 0x0c138f49, 0xf0a68a83, 0x50369378, 0x3c53bd23,
+       0x83f046d0, 0x77a49d03, 0x7829bc1e, 0xe137ee0d, 0x3eaf5158, 0xeb4705a8,
+       0xe186f809, 0x65c5387e, 0xfb4c16bc, 0x1f62a5d8, 0x4fa0d272, 0xfa829f86,
+       0xe1ee9635, 0xd71f0029, 0x7a867f8a, 0xfdca84f6, 0x4b4fc32a, 0x7fd232b2,
+       0xdb45b98d, 0x6d783143, 0x22fc0c1a, 0xa4dbb6f5, 0x8fc83d06, 0x56e7aaaf,
+       0x5da23729, 0xc5a1d1aa, 0x7b3eacdf, 0xb9d0a424, 0xac2bb230, 0xd88fe81a,
+       0xbfe835fe, 0x037ffa80, 0x9faa7ef1, 0x1379adfe, 0x72dbfd4c, 0xdbfd4c2a,
+       0xe41fe834, 0x9fea8fe3, 0xbf80ff44, 0xacbf409b, 0x5bfd40be, 0xffa82a73,
+       0x98558d46, 0xe9ea4ffa, 0xfff61cff, 0xe7cfca9e, 0xde7f99f6, 0xe7f9e64d,
+       0xafe79a54, 0xafbff9f1, 0x4ffa2c7e, 0x5c5ff9a2, 0xff3e67fd, 0x7f3e4a9c,
+       0xa7b76f2b, 0xfe0f777f, 0x4bfc463f, 0xadfee25a, 0xf3cd13f9, 0x9e65521f,
+       0xaff795bf, 0xef3d726a, 0x6bfd49df, 0x69472c6b, 0xa8aa43fe, 0xf41acd7f,
+       0x83691f21, 0x1cf16a92, 0x5e48182f, 0x6fe133f4, 0xf823a53f, 0x9aa88af9,
+       0x3078e347, 0xc5ddf389, 0x6737e024, 0x61653eaf, 0x97d04090, 0x2f4f044b,
+       0xf1ac5dde, 0xc51087fd, 0xa188162d, 0x732fdfce, 0x9593747b, 0xee756dce,
+       0xcf084397, 0xc50b74df, 0xecac6b47, 0x1fed00fe, 0xf904e182, 0xd4627c7f,
+       0xc579d8b6, 0xd59a0ba7, 0xf8a6edd3, 0x684f1f34, 0x0b511b12, 0xeaa05be3,
+       0xfa34f826, 0xdf87a05d, 0xd20c7f42, 0x7da32a33, 0x2fd1b7f7, 0x6e5626bb,
+       0xb573f256, 0x014af621, 0x310eebcc, 0xc70ad3fe, 0x12e5e9f7, 0xb8bba79d,
+       0xfa86a971, 0xc3b3416c, 0x08d50fe4, 0xb01f753a, 0xd5ff7186, 0x27753f38,
+       0xbf632289, 0x63f9f43b, 0xdc2e3f68, 0xef54c032, 0xed5e161e, 0xd6f3f281,
+       0x7b8c19cf, 0xb32a5f08, 0x11fb8f5e, 0xf106a6a0, 0x841b2af8, 0xd6b294f1,
+       0xf59e2a8d, 0x354cb3bd, 0x0577edd9, 0x2a97f0cd, 0x1aa770cc, 0xd40e3156,
+       0x5b6248b9, 0x6b7bdda1, 0x807f78d5, 0x4b45b9fa, 0xef25f615, 0x61a00eef,
+       0x8bdd6416, 0xad98f5e9, 0xd3ef5d13, 0x3c635d79, 0x0f015f35, 0xf6e3d68e,
+       0x432ff274, 0x0687e4e9, 0xf8ef3e75, 0xdaa7def1, 0xcf1801fc, 0x84c90f7d,
+       0xb7f1f8cf, 0x2df8721f, 0x6fb7a760, 0x7e8a93f9, 0xe27cfc4e, 0x8aff7fc7,
+       0x1ae8f9f8, 0x42730fae, 0x5321f9f1, 0x6b48c3dc, 0x376f17f6, 0x6fb7b5db,
+       0x3bb1d937, 0x45e09ba7, 0xe54cbbe1, 0x63996e17, 0x79a0befa, 0xbcfbe991,
+       0x7826a5a6, 0x5321e84e, 0xac57fbf9, 0xb7bf7d34, 0xfbe9ad76, 0x9a362a97,
+       0x4f82bbe0, 0x59dfca99, 0xddf4d5b6, 0x17e46872, 0x5fea8e51, 0xc58ee995,
+       0x1bd3cefb, 0xdf7cded0, 0x1e90f8a9, 0xc1fc60ef, 0x9795768a, 0x63fdced2,
+       0xe82b7ce9, 0xdcdc72c1, 0xa4a6b8d8, 0xea2269be, 0xf3fa4665, 0xead33589,
+       0xad3f0043, 0xf27f0979, 0x07458d16, 0xda9353a0, 0x72ddc7c3, 0x2bf6f7cc,
+       0x8202df7c, 0x77efb63e, 0x7e713db9, 0x4339b6cd, 0xbff104f4, 0x8365b95e,
+       0x92eb9d70, 0xab09c712, 0x31a9cee2, 0x7ce48ab6, 0x99d7c6a8, 0x83eb8d2a,
+       0x93593daa, 0x7e0fae30, 0xcbdaf0f9, 0x289117f5, 0xfad0c72e, 0x187e474f,
+       0x2fef8a64, 0x926f99de, 0x32c38eef, 0xea096b8d, 0xc3abd004, 0x8d7ec0d5,
+       0xcd1c47ee, 0xc70a3999, 0xa1a03fe1, 0x4e9fd9de, 0x5d477aeb, 0x55b7f6e9,
+       0xd2804fa4, 0x28caea77, 0xa4175d3d, 0x0abaedf4, 0xabaadf4a, 0x6ebdb4a5,
+       0xafbfa505, 0x66fa510b, 0xbfa5135d, 0xf4a66bad, 0x4a16dd64, 0xa617537f,
+       0x4fceb3b4, 0x3d0f21a9, 0xec2037fa, 0x8ca36361, 0xcc587b09, 0xe7bd21a5,
+       0x9bc5169c, 0x0e2f382e, 0xc2ff7b47, 0x3fdd2b49, 0xf15f0fe8, 0x1d3fd6fc,
+       0x94af64fd, 0x93900787, 0x9eddff1c, 0xb764e9c4, 0xfa0652b0, 0x6fb0ed68,
+       0x1016e6fa, 0xc0cb20ac, 0xee9be482, 0xee2ed04a, 0x995e65c7, 0x5ddfcc4e,
+       0x71e80338, 0x171f6bfa, 0x3543bb61, 0x1d25febe, 0x661d6995, 0x99beedd1,
+       0xde3d3ea3, 0x2efe1fa4, 0xe774e307, 0x96d7f07b, 0x3464e743, 0xd0b9da9d,
+       0x1f18656a, 0x41d070bb, 0x8e1787fb, 0x3ca3776f, 0xe1c8f32e, 0x8ff6c7b7,
+       0x6e48eaaf, 0xbff269d8, 0x6685f0cd, 0xeb4234a9, 0xd67937b1, 0x3d2be428,
+       0x939d36fc, 0xb46a50f3, 0x51a3ccb3, 0xe677673f, 0x71a678f3, 0x0a7764bf,
+       0x9df82bf1, 0x3deffe54, 0x31dafe9e, 0x2b58c3c6, 0xb68d83fb, 0xe79e1906,
+       0xbf7cafed, 0xb7fca4fc, 0x83baf146, 0x17b445ea, 0x25fff0ac, 0x10a04fba,
+       0x135bb46c, 0xd1d64391, 0xd4dbbf98, 0x1af3d41f, 0xbca5fd3e, 0xf9adf1cb,
+       0x18f5c8fe, 0xe25bfd58, 0xc512b562, 0x49788cad, 0x926ce297, 0x4bc6f746,
+       0xbadc446a, 0x05aed6da, 0x6b7ceb21, 0xb6e365fe, 0xeb8eeb67, 0xc2aaee78,
+       0xf3a1acd6, 0x39191153, 0xf9dcf505, 0xb40cfad6, 0x17cb1707, 0xa8240c1e,
+       0xe3cad33f, 0x6ac28b7b, 0x151d79b7, 0x5da0c1fc, 0x3a1f9f23, 0x818e9e74,
+       0xcedc2c3b, 0xbe776f8e, 0x49e2eaf5, 0x289f764b, 0x17dbd9b9, 0xbff64b4f,
+       0x5e7c51a7, 0x92b8a661, 0x35973f81, 0xe30adf30, 0x8a79dcab, 0xd477d1ec,
+       0x5caff0d0, 0x9df53f46, 0x7143d39f, 0x215e6339, 0xccfd86d6, 0x623a209d,
+       0x80df3bde, 0x9fddf4f5, 0xa51cfca9, 0x8c6b9738, 0x9e2fd8c3, 0xadb9a027,
+       0xf8bf698b, 0x4eff7ddd, 0x167cdff6, 0x581d1370, 0x91da1173, 0x14a599e7,
+       0xbd9e74f1, 0x431b1eec, 0x94702687, 0x9af34f10, 0xd80c76cc, 0xe17826bf,
+       0xce5c3316, 0x3ea06466, 0xb2a4df29, 0x33f344b0, 0xd5615f7d, 0x590b7e89,
+       0x575c1aed, 0xe71e55eb, 0x6533ab9d, 0xead5e810, 0x68bd7def, 0x598fc00e,
+       0xc468faf9, 0x72a5165f, 0xb232b03b, 0xd173c355, 0x7b1d687f, 0xeb0ccdc7,
+       0x3ae0d787, 0x512bda10, 0xbf1e361c, 0xf1fc769f, 0xebd635e3, 0x3120713e,
+       0x529dea8e, 0x5f8d73c2, 0xe8667c17, 0xde6273eb, 0x01f05f86, 0x427e31c2,
+       0xf6e22ac4, 0xee919332, 0xc85b75e7, 0x7ddf4c92, 0x1edf9c51, 0x8bdeafab,
+       0xab40fc71, 0xbe06ec95, 0xf394617f, 0xdf94835b, 0x9cbcfd21, 0x1688a7df,
+       0x88937ed2, 0xa4f71beb, 0x217724e4, 0xfb167943, 0xf776f56c, 0xb8d78436,
+       0x4e1ce82a, 0xb43bca0d, 0xe4bba8f7, 0x6dabc638, 0x07ea39ac, 0xe27ab5fe,
+       0x66bc03f6, 0xf9f621d8, 0xf703306b, 0xfe3c7d0a, 0x2e6118ef, 0xe199f2e7,
+       0x29e0f65f, 0x5b4c7c4a, 0xbf3c5ec9, 0x39e28ce5, 0xe9413605, 0xf2b7f1e8,
+       0xe3e3dfd0, 0x1ece7867, 0x79d72fca, 0x571825f9, 0x7f2c7a01, 0xea66527d,
+       0xcd51f465, 0xc70b1287, 0x4a3523ac, 0x587c86b7, 0xf942a1f3, 0x7a6f599f,
+       0xd18d5561, 0x82d67f9b, 0xa00f51a7, 0x49f1c49e, 0x7eec4fd0, 0x7abe3818,
+       0x36cb9cac, 0xe67c7f33, 0x9331a471, 0x835976fe, 0xc71a241f, 0xd3df6e67,
+       0x96d97da7, 0x7f6c77fe, 0x93f69f68, 0xfd5fb513, 0x85f6e7bd, 0xfcad7d60,
+       0x3c6e13ce, 0xd2aef754, 0xa7f7819c, 0xbb565aaa, 0x51df2e51, 0xeba46e42,
+       0xe13961bb, 0x9b12e3fd, 0x277e77c1, 0x225ad3de, 0xb3eceef8, 0xfd017c8f,
+       0xaa2d8b97, 0x9d81f14e, 0x9815a8d6, 0x22eb4972, 0xad3b1f2e, 0xefcc38a7,
+       0x37ecd79d, 0x6fca8beb, 0xa5e1913d, 0xf090de7d, 0x1fe4a39f, 0xc7f1d92c,
+       0x6abbb412, 0xbde93758, 0xffd87af8, 0x0f64a987, 0x68fbc1cc, 0xf38ddff1,
+       0x2f02353d, 0xd08fad35, 0xd69abc79, 0xb779c5db, 0xe33bf276, 0xbb0855eb,
+       0x389b06ff, 0x05f626ef, 0x30b0bc0d, 0x77ebfbb7, 0x0a78593d, 0xe3b1d5c6,
+       0x20a96e67, 0xfeb94f96, 0xf79910bb, 0xfb7bef8d, 0xd04eab97, 0xb5f6b18f,
+       0xf77b4eb1, 0x20e57f0b, 0xa8d4ab4f, 0xaac1fd1b, 0x3f9d2aad, 0xfb6e7aaf,
+       0xf186bf37, 0xbeadd799, 0xe2fed061, 0x9bfc7ee7, 0xfc5e009b, 0x8d369a82,
+       0xf789c34f, 0xd4fa0cc2, 0xae2bffc0, 0xe547a5ef, 0xe1ac7f77, 0x7fcc0a3d,
+       0x2e97b538, 0xac385f8b, 0xf17d51b1, 0x58723931, 0xc415efe3, 0xaa7227d1,
+       0xfa8afd04, 0xa8681f5d, 0x243ddebf, 0x04dcccb1, 0x63fadcf8, 0x4f118fb2,
+       0xaf414f44, 0x95c5fa1e, 0x90ba01af, 0x57a38c5e, 0x908f397c, 0xe3176c7f,
+       0xcfdfc0f1, 0x6df71f7f, 0x21f56b7e, 0xff9e2a1e, 0x73e71bb2, 0x7ce5a946,
+       0x19d5f5fe, 0x42a68e78, 0x94e8650d, 0x678afcf2, 0x5bfe201e, 0x0c81e278,
+       0xcfeedfbe, 0xb262e712, 0x9e0b9e70, 0x2cf34d9e, 0xc3e24167, 0x7bf3af8a,
+       0xac2beff4, 0x720485f4, 0xedc6c872, 0xacdb33b0, 0x067899b4, 0xc7dc1217,
+       0xb70e5978, 0x29703c50, 0x301e5bc5, 0x32d89ff6, 0x71b7df82, 0x19b26d7a,
+       0x2960dde7, 0x1ddfe589, 0xa7486d8d, 0x99fd83b3, 0x61ae4718, 0x43e0484a,
+       0xcaed04ba, 0x7266a627, 0x52af313a, 0xfe81ea24, 0x58f98c9f, 0xdbf54dbe,
+       0xd8f54d0b, 0xfededca5, 0x61fe8b97, 0xbf6849dc, 0x7b00c99e, 0xcefcc130,
+       0x9fc1f989, 0x67c31636, 0xe5cef231, 0x2e5ac77f, 0x87fc86ef, 0xf7e297a7,
+       0xcb857eff, 0xfb43d611, 0xcd15c605, 0x6787efa4, 0xac1fa449, 0xce489a2c,
+       0xce42a877, 0xf9e3dfcd, 0xe0afc605, 0x37c3dc7a, 0xd12a4fd8, 0xf2dbec81,
+       0x563f504d, 0xeebf62af, 0x721aedbe, 0x83e850bc, 0x80fa7103, 0x557e9d3d,
+       0x6a55b8fb, 0x435f9bf8, 0x0d7905f9, 0x557e5179, 0xdce18f7a, 0xb9bfa3ee,
+       0x5cf6e41b, 0xb35b90c4, 0xdb978d5e, 0x59e33d8a, 0xe73db922, 0x7284b1f4,
+       0xe509f90b, 0xfc4ed9d6, 0xabd68ffc, 0xb2df1e06, 0x1a45cf99, 0x7c3fb27a,
+       0xffc9ebc6, 0xea1379b4, 0x0af3f849, 0x8fcbea2b, 0xfc1a1f06, 0x6aedf957,
+       0xc3d5cf3a, 0xf61f06a7, 0x87c1a9f0, 0x2691e27d, 0x7f7fc63c, 0x530dff16,
+       0x29501c08, 0x50755e7e, 0x4399e712, 0x238d06c7, 0x9969f97c, 0x06c7cd63,
+       0xe1c2c5a5, 0x57123838, 0x07071fde, 0xe307cae2, 0xf9535ae0, 0x3547fdaa,
+       0x6a36387e, 0xf8af272a, 0x0487f62f, 0x1d6301f1, 0x4f7d69aa, 0x387f210b,
+       0xbabea9bb, 0x185c858a, 0xa6517f2f, 0xe0177978, 0xd3f40d78, 0x1c373bb5,
+       0xdab23d02, 0xdd2be3ce, 0xd41adae9, 0xb77a5d7b, 0x6ecaed1b, 0x75f38f3b,
+       0x29ddba05, 0xa9dcf631, 0xede93283, 0x4d2b30f6, 0x0dd277e4, 0x3b67c057,
+       0x8f3befeb, 0x7da177ff, 0x954dfd0e, 0x302b399d, 0xd32cd32e, 0x2bf9c9f9,
+       0xb9e374ef, 0xf983ae91, 0xfc832c5f, 0xf9913f05, 0xafc86476, 0x7bf8c564,
+       0xe6d0b0ef, 0x53ee1289, 0x993e27af, 0x7ffb9077, 0xe627d7f3, 0xaf514afb,
+       0x435cb9dc, 0xdb7e0afd, 0x1bfbb15b, 0x4f153b46, 0xfc1fe5c7, 0xcd1f2177,
+       0xdca8e714, 0x141efe61, 0xbb128271, 0x6c318f90, 0x2dd3f08c, 0x4c32efb1,
+       0x58be0b95, 0x3ae87406, 0x310c332e, 0x1328385c, 0xe6ec2e1d, 0x9e2804e7,
+       0x75f2237f, 0x0345e937, 0x47281d5f, 0xafaff4d7, 0xaefef63a, 0x2fc82be8,
+       0xfc28defb, 0xf63b482f, 0x07fc3ebd, 0xb5ef7f08, 0xdf58379c, 0xd90f93f2,
+       0xeba4ff69, 0xbcf88b90, 0xe45fc5eb, 0x03e1057c, 0x775b8a56, 0x10a0fa1d,
+       0x956ba6f9, 0x5df502b5, 0xb7ee60d7, 0x41f8bfd6, 0xb3ad3b61, 0xa5bf440d,
+       0x4bdb8d76, 0x3dfe3f07, 0x70bd239e, 0x76856610, 0xc90721c4, 0xedf7cd51,
+       0x7aeb6714, 0x58a283f1, 0x9d6fe07f, 0xafb112cf, 0x6562e5d9, 0x297c707b,
+       0xe6a83f7c, 0x5f6e3707, 0x5a3ee789, 0xe0f36b0f, 0xfe1fe4fb, 0x68f510a5,
+       0x1f6e1ed7, 0xcfedaa75, 0xc3ddbee0, 0xa0ddbf6b, 0x513abd02, 0x3d820698,
+       0x0a63aeb2, 0x8bedd79e, 0xfc50bf97, 0xf1f16af0, 0x7c197fd5, 0xe7ae7e48,
+       0x0934615c, 0xe8fa1f26, 0x3ea06ff7, 0xbe256438, 0x2e7be634, 0x96ec92b2,
+       0xcf7bcd2b, 0x4b79b8ff, 0xf799abd1, 0x79f27f89, 0x838789df, 0x8395f7c6,
+       0xe2fe7cbe, 0xe73f0483, 0xaf78d1f2, 0xb3dfdf92, 0x3fd9b8f3, 0x353ffceb,
+       0xdd00f7dd, 0xb79e57dd, 0x3dcff49e, 0xfee9feef, 0xdd04fb93, 0x52f73c75,
+       0xd0bfc3f3, 0x9ead3ef8, 0x6bfd25f3, 0xd761bdf2, 0x9af8b3af, 0x03963ef1,
+       0xa75806bd, 0x4d19ae9d, 0x375c4618, 0xebdd0662, 0x6f79fb94, 0xf7124e63,
+       0xbf89649f, 0xf306c0cb, 0xfe131fb8, 0xa05f1e14, 0x7e4e81fb, 0xf2714fcf,
+       0xf14c847b, 0xeb34bbd1, 0xa3eb9dae, 0xfaec4533, 0xb3844193, 0xae28fa27,
+       0x3657e71d, 0x812fcc48, 0xfb5cab5d, 0xbfd1c76f, 0xa2584751, 0x4f4a42d6,
+       0xe228da61, 0x99aeaa95, 0x81671efc, 0xcd7bb619, 0x67b455b0, 0x36fc7c63,
+       0xdc630b0f, 0x44791e5a, 0xf27373c7, 0x3de18518, 0x0e6b3b04, 0xf5617fa1,
+       0x92dfeb98, 0xde714cc4, 0xce9fa76c, 0x1ec2abcd, 0x0b7e829d, 0x4601d9c2,
+       0x1ec275fb, 0x74fcd255, 0x7dd6461f, 0xfd144e74, 0x7a182882, 0x4edeed2f,
+       0xcff389f1, 0x8e02fa9e, 0x640ff167, 0x767c0366, 0x28b176ee, 0x1ac257d6,
+       0xad953bfa, 0xc803bd32, 0xccd16894, 0xc3477d98, 0x1dfc5cce, 0x72a7cd17,
+       0x0d3c358f, 0xfbee57ea, 0xf7ad2143, 0x6ec9baab, 0xf92b3d0e, 0xedd8685a,
+       0x58afb885, 0x377b70a9, 0x92abbe9e, 0x71deffb8, 0x718651c0, 0x3f276902,
+       0xb9195a4f, 0x9cc6b553, 0x49287993, 0xff11ca35, 0xfc497685, 0x5f18249d,
+       0xc34639ec, 0x25d8edce, 0x57edf1f1, 0xca901de9, 0x62742f9d, 0xa4f2a3bc,
+       0x62e687d5, 0x28f7cecd, 0x3bf93ebe, 0xc9dbb9cf, 0x7e4d93af, 0x72ff1f6e,
+       0xb0fc4ca7, 0xec9ab5a4, 0x2f89805d, 0x3f844496, 0x9ffd29f7, 0x7179dfc5,
+       0x5a705e1f, 0xb96fddfc, 0xb6729e31, 0x7e4dc5ad, 0xc7cbcee6, 0x93f8fa7b,
+       0x9fc2b591, 0x8f78bcfc, 0x793fb132, 0xf601ff16, 0x38a4eed7, 0x00e77cbf,
+       0x5a322f71, 0x6977b974, 0xfef73f16, 0xed0f1833, 0x19ee73d8, 0x5fd5771c,
+       0xda0cf4ff, 0x5d90ecaf, 0x9a917dc7, 0xf8a55f67, 0x58ef5191, 0x767f8f12,
+       0xc516faee, 0x9fc13adf, 0x5f3ad6c7, 0x7e83933c, 0x1f0be74c, 0xbe7fa065,
+       0xf4a9c5fc, 0xbdf2ca2e, 0x02593393, 0xe45237f9, 0xc455f0df, 0x76e9e2ff,
+       0xd928f5b4, 0xee81e7d9, 0xc4f4e7e8, 0x3cd52209, 0xf115e2fe, 0xe389dd81,
+       0x01e27dad, 0x78bf33ad, 0x6e179e0b, 0x46a87d55, 0x781718ae, 0xfa39e805,
+       0x5bb8e82a, 0x9f227fc4, 0xe05c6cbf, 0xe803fe3c, 0x7324c7f5, 0xd6fde05c,
+       0xfbc0df05, 0x4075acaf, 0xe88171bf, 0x88cfe055, 0xe490bee7, 0x79424eef,
+       0x8a6df3db, 0xa6fd20c7, 0x9f3b84c1, 0xe3073f7b, 0xdda8efe1, 0x107bd1f7,
+       0xf4755a2f, 0x7c5f2b6f, 0x73a9e48d, 0x978a09ef, 0xed571132, 0x787f3d64,
+       0xf19c4bfc, 0xe2e1d9ab, 0x074104f1, 0xdd78378c, 0x0ae22f94, 0x788daf9c,
+       0x86717f43, 0x713c8e11, 0x43c78f5e, 0x21bc77aa, 0xba5ef7fc, 0x5e901349,
+       0x1f1b2ea7, 0x23a0f037, 0x8d886e1e, 0xeb8e25a3, 0xe2d1c4f4, 0xcfc466e8,
+       0x0064e27a, 0x24bc6367, 0x2896bd2c, 0x95b9db2e, 0xd53adfc7, 0x8c7be7c4,
+       0x23be5ab8, 0x57c36e4e, 0xd2bb4f17, 0x9e2d3e3c, 0xd4bc3806, 0x3abe3c6e,
+       0xdfac493e, 0xb7571c4b, 0x7eefde1f, 0x7ef9954d, 0x9c1acb85, 0xa6fdc0ea,
+       0x5d1a53d6, 0x3dbf0328, 0x74676310, 0x1d8cf388, 0x6714cacf, 0x4a391359,
+       0x7f5e3dfa, 0xf179fb18, 0xe3132de3, 0xaf9fb25d, 0x5c7b1d1f, 0xd3b42761,
+       0xf100e471, 0xa7dd92f5, 0x6c73ce28, 0xf6b577e7, 0xd716f598, 0x7ccc708f,
+       0x5c3f9e3a, 0x8986e3c8, 0x7729b7df, 0xe6a6bb70, 0x6a7ee260, 0xea67bf76,
+       0xa2287167, 0x97a9f3f1, 0xe2acefef, 0x3bdb13bf, 0xfdd2a6db, 0xb911b3d2,
+       0xf1fed134, 0xc4550eed, 0x0a799ba5, 0x3b9d28eb, 0x83efc13f, 0x89397b8c,
+       0x3f2f69ce, 0xbe06fa51, 0xc41cb607, 0xd6cbed1a, 0x5b4f9c95, 0x083fd3ff,
+       0xe27adde9, 0xafd7196e, 0x18df887d, 0x95e8b33b, 0xd02ec9da, 0x066f450f,
+       0xc6bb21c6, 0x4e1b9deb, 0x87e34c5a, 0x5d71327e, 0xf0768068, 0xc39e017e,
+       0xeec8f1c2, 0x8f1c5292, 0x7b745bac, 0xaab37382, 0x150bdc53, 0xf9baaaed,
+       0x77c33b5c, 0xce9da0b8, 0xa4f9c691, 0xe9e23240, 0x3cd9b6fd, 0x2f9205b5,
+       0x1deefe77, 0xea3b37a1, 0x0d7a2c7c, 0x7082a7bf, 0x5cbf388d, 0x0968f071,
+       0x888ac1ea, 0x8c9df0c4, 0xe499ac45, 0x45239b66, 0xdb312f9c, 0x7f079515,
+       0x5b2be54d, 0x2cc5f979, 0x3ef1e542, 0x57ddac4b, 0x671b191d, 0xeefe708f,
+       0xaa4ee712, 0x73a22c3e, 0xf738c688, 0xa8ea7e08, 0xbe7a4dd3, 0xc4e7c70a,
+       0xd46d497b, 0x8064754f, 0x5ca31fa9, 0x9b3787f5, 0xda56abda, 0x3faadf88,
+       0xf7e51cfc, 0x879d57c8, 0xfb7fd0f0, 0xeee34c83, 0x3a46ff6d, 0xfdb7d8ff,
+       0x7f1f9489, 0x8333d57e, 0x66b329c7, 0x184e691a, 0xb8c867f5, 0x149e543f,
+       0xb5fc07ae, 0x5097c1e9, 0x9b5c781f, 0xf0cc7f72, 0x7409a6dd, 0x0e97fc0e,
+       0xcdc1de71, 0x83bcfcdc, 0x75816433, 0x6dbe6bf8, 0x3a32271b, 0x23b2f0cf,
+       0x8b033cf6, 0x311ea216, 0x1ef9f5ca, 0x1b21de77, 0x942a80ab, 0xc5f338c5,
+       0xd3f57d3b, 0x7e10dbdd, 0x1bdfc5da, 0x87dd61cb, 0x76c37cf1, 0x62e43fe1,
+       0xefbf327c, 0xf59f63bb, 0xc9b4b1bd, 0xf8874bc5, 0x9f59cd60, 0x66f7825a,
+       0x7e2ceed2, 0x7e0e9061, 0x8257c583, 0xbed3e4e7, 0x0b263c55, 0x4fe766e0,
+       0xe2abfc39, 0x3f003931, 0xc3957aeb, 0x073a258b, 0xeac8f9db, 0x3e17f412,
+       0x059e9eb3, 0xe9eb3198, 0xcefe233f, 0x63bcde07, 0x55cf1781, 0x3de26b74,
+       0x1b960082, 0x2fe3813c, 0x0be6f9db, 0xb10e0fe8, 0xfd44afb4, 0x3f178df2,
+       0x8bfba148, 0x9d439de2, 0x4748e835, 0xe9709ac8, 0xfaf3e732, 0xf82c73bc,
+       0xd04a7469, 0x58fe04e1, 0xbd04673b, 0x8ab5f5eb, 0x0e7e3619, 0x823e7cd0,
+       0xd74469e9, 0x4cae82f9, 0x205cb7dc, 0x0e50b3e6, 0xde203c69, 0xf11bd62c,
+       0x4aa872fe, 0x2fef54fe, 0x710d718b, 0x591efbf6, 0xde9d339e, 0xfe34a323,
+       0x3b3fb23d, 0x3f314302, 0x1cc3fcab, 0x7de373e4, 0xca77f8b1, 0x496dd298,
+       0x136fcf64, 0x37f594ef, 0xc19c4fde, 0xbcfdb1eb, 0x1cf77a1f, 0x3d1b3907,
+       0xd1e1f35f, 0xc62bd1cf, 0x03d214f9, 0x8d44fcfc, 0x973e1fa0, 0x1e1ff748,
+       0xdb5fb464, 0xe8fc9565, 0x597d7777, 0x7b37f5a7, 0x7ff234fe, 0x11b91cbb,
+       0xf5d4673c, 0xebed2f15, 0x0fe0ef19, 0xb51c983e, 0x2e1e49bb, 0x45c3c9c6,
+       0xfb9bff33, 0xdde4baed, 0xe9ed4edf, 0xa8303da2, 0x76c7ee63, 0xed5d7cc9,
+       0x38d2f3aa, 0x61d0b306, 0xb6aed3b4, 0x614ee9bf, 0x00fa0b5f, 0xe2c667de,
+       0xe9fecefd, 0xdfa0b777, 0x17e889dd, 0xcb9c7eff, 0xcb1fbc19, 0x463f299d,
+       0xbfc5c8ef, 0xd74f171b, 0x29f9a51a, 0x719ab2bc, 0x13b23df0, 0x5e8dba0c,
+       0x13e88631, 0xe44ac743, 0xdf07d1fb, 0x0d78e0b3, 0xcfd93dfa, 0x9d07f239,
+       0xef88fd7c, 0x7daca32f, 0xf9413060, 0x49af4e95, 0x8ada175f, 0x67c80a7c,
+       0x8bc785a6, 0x129796fa, 0xcfda07ce, 0xcef9dcbb, 0x0bb79d42, 0xf9c7aff8,
+       0x746ff818, 0x17defd0a, 0x1cb0ebff, 0xabd29fe0, 0x5863ffc0, 0x1bfc3fae,
+       0xa162da7e, 0x7ee31617, 0x1fcff015, 0xf23233bd, 0xd912dfa0, 0xa8bffc49,
+       0x97fb1645, 0x432a5dfc, 0xb1ba2c8f, 0x87de30f6, 0x8975f45c, 0x78be74f8,
+       0x789cf287, 0xbcfe3287, 0x88597960, 0xcf95e4f4, 0x0f49860d, 0xce69de2d,
+       0xb7cbd9df, 0x17ce7439, 0xf7a33425, 0xfc78ccdd, 0x7d0a705f, 0x896edf31,
+       0x9e335f7d, 0x2d6b830e, 0x59e5f3a6, 0x21da7b93, 0xf163ddbf, 0xb9f146be,
+       0xe30caa9f, 0x6d257e3e, 0x308fbd1c, 0xed829a4e, 0x35b90b16, 0xc2b21bda,
+       0x86e5a76c, 0xf30ff7cc, 0x0ff7cc9b, 0xef9b3587, 0xc5b35e1f, 0x6470ff7c,
+       0xf0ff7cd8, 0x9bd79dba, 0x9b9151e0, 0xef47e54c, 0xc782649f, 0x54cdff44,
+       0x19f1ec7e, 0xdb7c7826, 0x37f2a6dd, 0xfa6b9c9c, 0xa57b637e, 0xefcdfbe9,
+       0xb7c1332c, 0xa987ff74, 0xd701747c, 0x56ea478b, 0x057de114, 0x96472f03,
+       0xf31d166a, 0xe8b70e97, 0x19f9b185, 0xa6216f7e, 0x93f47e45, 0xc99793fb,
+       0x628a87b6, 0xa662e7d7, 0x64daf49a, 0x74ee199b, 0x0732bf0a, 0xff8805f8,
+       0x1ab938a7, 0x34d55b54, 0x8b81c01c, 0x6c39d286, 0x428baf90, 0x4abc5dbf,
+       0xc931f6fd, 0x1ae892d7, 0xcbe5e384, 0xd2006f78, 0x8ec77f10, 0x94f8fbbf,
+       0x9ea7ccdd, 0xcd8af47e, 0x69ff9c65, 0xbd6271e6, 0x9262ac6c, 0x9dff2313,
+       0xd2f9b171, 0xfe7469c2, 0x5576bfa7, 0x76ebbccf, 0xb354be80, 0xe46a50e6,
+       0xfc4b2eaf, 0x2e79257b, 0x173b6fe9, 0xfd8fa5bf, 0xfb42e794, 0xcde5ed29,
+       0xc96d6e78, 0xefe4dd3d, 0x78cd5966, 0xfbf985e9, 0x9e78c6c2, 0xb80563ae,
+       0xdaf71bce, 0xd6224016, 0x82ef9a6b, 0xe06467d7, 0x7eec8379, 0x2e39e0fc,
+       0xa99fafae, 0x1f375d0b, 0xa66cc709, 0xd139e4fb, 0xdfb4129a, 0xd6738887,
+       0xcf892d9b, 0xf02add3f, 0x148a8992, 0x46a704ed, 0xe5f3fbf1, 0x89f1ba6f,
+       0xf06b2aa3, 0x9f7c1756, 0x48adba3b, 0x99e9fbbc, 0xb71deae1, 0x9c728fa1,
+       0x9ef4cd81, 0xfc69983f, 0xe3cc85f7, 0x5027bcc9, 0x1bdf0b9a, 0x273e2d52,
+       0xf612ddc1, 0xd8cc3da7, 0xf0df2800, 0xd7c69957, 0x3a46e470, 0x8339a417,
+       0xe6371f14, 0x01b9c4c9, 0xfde03f63, 0x1fe459b4, 0x73db5c36, 0x97de882f,
+       0x6819df79, 0xdfdf76c3, 0x2cf7f2a4, 0xefa64927, 0xa5e6ce39, 0xe51c60c7,
+       0x0f8a0ead, 0x40be5b2a, 0xe1e68dfe, 0x467869e3, 0x8d12d962, 0xddb1c787,
+       0x87801f1c, 0xfede89db, 0x63168bdc, 0x3abdf0d2, 0xa2fba359, 0x2389fb83,
+       0xdf8c643c, 0xe744c23f, 0xe3cc6bac, 0xb13d3796, 0xeb9e18f4, 0x61f0ebd8,
+       0xa8bae1d3, 0xde79aba0, 0x7c66d3ab, 0x5fbc2ef1, 0xef4c8af7, 0x19db7b5d,
+       0xc8f9a54b, 0xbc0270e1, 0xf183741b, 0x97e3843f, 0x7cd094b7, 0x17bd0573,
+       0x1d71bd02, 0xa50258f0, 0x0b0cff44, 0xcfc6f9c3, 0x78e42423, 0x7ee74ba5,
+       0xcb9ca7bc, 0x75fe679f, 0xd5bda03b, 0xfbd77eae, 0xef5f1726, 0xefb4fd29,
+       0xb59556f7, 0xf654c31d, 0x306764cb, 0xd63c3b56, 0xf5fd066e, 0x80d76c55,
+       0x0b87e4e5, 0xedfeddb1, 0xf0d360b3, 0x67db2bdc, 0xff219768, 0xd6d97619,
+       0xe8c5f9b8, 0xae2e1ddb, 0x0abd296f, 0xc70bbb7d, 0x68eee67b, 0x5d267b42,
+       0xdaefac4b, 0x746bfe05, 0xc079d18d, 0x7e6bf67e, 0xc76c4aed, 0x5d1eb7f5,
+       0x73c8dfc9, 0xe86a7c18, 0xb077ee79, 0x8ff68d72, 0xaf0f1c2e, 0x9dfb8e1d,
+       0xcf3a3c9e, 0x833b5fdb, 0x2c697c56, 0xdbc0cfd2, 0xfb665d4f, 0x0bf8f01c,
+       0x245fc781, 0xe01563c4, 0xe3c262d1, 0xd8cbaecb, 0xcf599f85, 0xf5ef9857,
+       0x837c0a74, 0xf62effbe, 0xefe67e77, 0xb18e308b, 0xd245f664, 0x9fb99ff7,
+       0x627af332, 0xcfd0e1f8, 0xe74fd8f3, 0xf88abfcc, 0xfdc53b69, 0x935ef7ea,
+       0xeac6718c, 0xc37a3d49, 0x3cc3edc6, 0xf7e783d2, 0xce38fd59, 0xfe3ca9f3,
+       0x0ddf7e74, 0x71ce30c7, 0x6a78eeae, 0x3fcf7d2c, 0x8548a27f, 0x39efcef6,
+       0x1e90a451, 0x81de9b0f, 0xebf4beae, 0xf7b380a2, 0xbf0f421e, 0xb43af8d9,
+       0x29e3cec9, 0xb8b9e24f, 0xd2ad8cd1, 0x99df0853, 0xf40d9619, 0xd7edb85e,
+       0x2bc6df03, 0xc57dc7e6, 0xc97ab200, 0xf500b59f, 0xf1271ce8, 0x8d9f278b,
+       0x5a7a85c8, 0x2f8f16b4, 0xc3cffb33, 0x77e9df0c, 0xf7a512bc, 0xb66f5dfa,
+       0xf24af6d3, 0x3e256cdb, 0x07a6df45, 0x7ed0dd93, 0x4a57874a, 0x43abf806,
+       0xe7d07ac7, 0xfd732657, 0x8d977ddb, 0xe696bbde, 0x0f96dcfd, 0x8665b97c,
+       0xef1f7fc2, 0xf414bcf8, 0xfce97643, 0x90cf033d, 0x7b263e1e, 0xf7815678,
+       0xbcc262f6, 0xd011de9f, 0xd4874e75, 0x62dacb2c, 0xe415a7e8, 0xcde02862,
+       0xf9f8b5e5, 0x2f44c3ef, 0xbbc43359, 0x3d6f729c, 0xcae7a887, 0xf7c49e8e,
+       0xbe69c7c2, 0x7dc50c9f, 0x1f165197, 0xde23cfbd, 0xea364c55, 0xc65afb89,
+       0xd4bd173d, 0x2bb61efc, 0xee2966b0, 0xb93f38b7, 0x4a9656d5, 0xbf98b7ef,
+       0x9dc7778b, 0x8ef9cce3, 0x8adec480, 0x7af8bbe1, 0xbf0de5f1, 0xe3e75323,
+       0xa36757d8, 0xd3afeef9, 0xc041437d, 0xa1e75fbe, 0x979d60f4, 0x8dd50ff2,
+       0xe75a34a0, 0xec1d34a3, 0xd40f6e00, 0xe807bc6e, 0x7f1f7690, 0xa3e0dfd7,
+       0xfbf8ea47, 0x1ab03ddc, 0x66ef8939, 0x2642ff77, 0xf9fcacbc, 0xcde7e258,
+       0xd1f7a0a3, 0xb79abdfc, 0xa7ecec62, 0x632cfc56, 0xac8be80a, 0x31927e87,
+       0xb369f805, 0x805dcfc4, 0xeec528bd, 0x02d7af27, 0xfe0a5f5e, 0x46d4c56e,
+       0xabc22c1b, 0x6c5de0d5, 0xfd0b140c, 0x0f23ffd5, 0xe3c1cefe, 0x5ef81659,
+       0x68d4dca2, 0xab8e1cfb, 0xafcf64d6, 0x5b31e717, 0xbdfbf126, 0x6ebdfe46,
+       0x4a776fae, 0x13baf7c5, 0xe1be0ff0, 0x6cd4fe4f, 0x1983bce3, 0xbc014c9f,
+       0xb91fce00, 0x5925e397, 0xf7c3eb1f, 0x36e47fd4, 0x8efe19ec, 0x8fdfd18c,
+       0x246eefc4, 0xedc4591f, 0xbdff0f1f, 0xbf8d348b, 0xa982c477, 0xd6fe77a6,
+       0xc8427689, 0xd7fbe348, 0xeed121bb, 0x1807a3b8, 0xefe003ee, 0xf3fac43a,
+       0xeff84759, 0x7a116c50, 0xa81e8169, 0xe51af9c2, 0xf5f1ef8c, 0x0a5eb48c,
+       0xda39e3d6, 0x411628d0, 0xc572c6f9, 0x4dfd2e50, 0xc6133bfe, 0x02bdda39,
+       0x8defc6cf, 0x72e249fc, 0x9da44e79, 0x0aef3d22, 0x9ef84a3c, 0x0e7b34f7,
+       0xcfbd57f0, 0x19b145ea, 0x5a23f477, 0x684febaf, 0x9fcf3c36, 0xed14f07e,
+       0xed4bd667, 0xcfa29a1a, 0x0dbcefbb, 0x6af5a5e3, 0xef87166d, 0xeb78c26a,
+       0xa7daae93, 0xde478ff8, 0x43f21b79, 0x005778a6, 0x66f50439, 0x6780ddab,
+       0x6641fa35, 0x3f0e555a, 0x18d99eef, 0x76b846ca, 0x804bbe0e, 0xdfb40370,
+       0x841fe29a, 0xa694e4fc, 0x05bf1e37, 0xf4fca361, 0x60a77c46, 0xfbe75b97,
+       0x2e60ce35, 0xb03d29da, 0x062bb00e, 0x6ccc3856, 0x57e6353c, 0x3a23f47d,
+       0x20e4bcef, 0xfd2b8f7f, 0xe70974e0, 0x3a7fbe99, 0x7e82ffe1, 0x4bd2bdd2,
+       0x7ce1ef71, 0x7171e07d, 0x7dc61e83, 0xe0d6a9db, 0xf131dc0f, 0xc5b9ef9f,
+       0xce64eb7a, 0x7e85fbd8, 0x3da7ae51, 0x2d574711, 0xee94ddfc, 0x47ce8ca5,
+       0xf4ed660f, 0xf110dc7e, 0xf8b960fb, 0xae8c8fbe, 0x40d57fa1, 0x9b877ef8,
+       0xdb0ef3ef, 0x54dafb9d, 0x69dfcbd6, 0xa8fdda85, 0xfce3d387, 0x5e849b98,
+       0xfe2f55be, 0x4dd21938, 0xa5de8052, 0xf7e01d0a, 0x2cced938, 0xa10ea792,
+       0x5b35ceb3, 0xd574eff8, 0x2afca40e, 0x5d5ddf71, 0xbf40d915, 0x4a9cf16f,
+       0x738bdcfb, 0x3bd71923, 0x8321d77b, 0xf0a716ff, 0x29bee37c, 0xbd9c63c2,
+       0xf64b8cfb, 0x73c1cc6f, 0x7e1eef13, 0x64f0e89d, 0xba0d2e72, 0x1684f5ba,
+       0xabbed174, 0xbbd60b86, 0x97f59ef6, 0x76d5ddd6, 0x5ccdf25f, 0x6c7bd1af,
+       0xdc2f9a3b, 0xf73b788e, 0x7bf4c5b0, 0xa47a461a, 0xf20e710e, 0x2a0b075e,
+       0x554700f8, 0x680cff76, 0x711e9ce7, 0xf876f8e3, 0x4ba2d703, 0x8ffe4960,
+       0xcfa0ecdb, 0xbafcf25a, 0xf659f405, 0x368d8d63, 0x4d16b7e0, 0x98fc891f,
+       0x11a1bc9d, 0x5db17df9, 0xb8ce3f16, 0x50ff25e1, 0xe002ae71, 0x767e1b93,
+       0x7e4fee1b, 0xbe64fb66, 0xd9aa0ed9, 0xc05df7c4, 0x0192913e, 0x1e904b2f,
+       0x6d6c5b00, 0x1b39cf74, 0xcd7a4369, 0x93732f7c, 0x6864f5c4, 0x5f3f8f36,
+       0xc5667ee9, 0x8e160e87, 0xc49fc3b1, 0xa3f81f45, 0x7ed10942, 0x6e87c554,
+       0xf7b7fefa, 0x03dd3763, 0x938fdbed, 0x54fd1bbe, 0xf143f6f5, 0x8fd7aad9,
+       0xe47e7f90, 0xf6cec35a, 0xfcb0bad3, 0xc65e7105, 0x76c4cfee, 0xa099549e,
+       0x805bf80f, 0x9f7b7a67, 0xf40521c3, 0x7d1ed1d1, 0x4a71b5b4, 0x4637d236,
+       0xe9304d3f, 0x7402bf2b, 0xe0249a3b, 0xe5c4aed0, 0xe7cae293, 0xc69ef019,
+       0x8efb1329, 0x2f7b49e7, 0xcaf2836c, 0x303dac5f, 0x25a36f8e, 0xa354bdae,
+       0x7b53efff, 0x749dff06, 0xdf097d1f, 0x129a3a79, 0x65f3c628, 0x1799b3dd,
+       0x4a1be1e5, 0x4317ddb7, 0x1e6e9387, 0xf0f8a86f, 0x7bfe133a, 0xca685ef1,
+       0x35e7533f, 0xdc2f5bed, 0xefba65fd, 0x4efc5273, 0xf10b0551, 0xe74f6c7b,
+       0xffabf69b, 0x759f1c6f, 0x8cfdc51c, 0x783fca63, 0x7a4d231c, 0x051c77a0,
+       0x3acffca6, 0x5665390e, 0x4fee2e69, 0x7bd0b4ad, 0x90961995, 0xb9ed0f2d,
+       0xa7e42d07, 0xe78b69a0, 0x3670c0ce, 0xf7adfefd, 0xda0e75a0, 0x1d855ee7,
+       0x9e515257, 0xddfc5efc, 0x0a03d0a7, 0x6f905bad, 0x5547af53, 0x77c7ecd8,
+       0x460ad8af, 0x07e779ed, 0x1fd1b9ab, 0xd8b9bbf3, 0x158ace8f, 0xcfa69fc8,
+       0x5bd075a1, 0x960d60f6, 0x7b4ceadb, 0xc9333576, 0xab2bd92b, 0xd073a5a5,
+       0xf25efdbe, 0xdf688d1b, 0xfb712664, 0x346f6246, 0xd131bf1e, 0xfbaf2e77,
+       0x36e37b1e, 0x5784678c, 0xafd16bb1, 0x91c3db0b, 0xd5874823, 0x73c7b24e,
+       0xe137091f, 0x16b5e5fc, 0x3946ddfa, 0x1b73bc25, 0xf70e8fc2, 0x4e11bda1,
+       0x7bb5fae1, 0x81ec93a5, 0x22a17535, 0xbea5977c, 0xdb03af99, 0xf8ea261a,
+       0x4e0d0b7b, 0x577e0ac0, 0x7bc2ef6b, 0xec7a7f25, 0x8ddb46a3, 0x4d7cc7a8,
+       0x7b0e7403, 0x635d70b2, 0xe231b679, 0xe173ac3b, 0xba206c95, 0xff9c0692,
+       0x4852b017, 0x76447ccf, 0x46738359, 0x5ff5e325, 0x2de0fbc2, 0x7f887a3d,
+       0x20239fc7, 0x7a8c013c, 0xfbd95e50, 0x7bcc0a7d, 0x9eb9d7fb, 0x47da0d7a,
+       0x13e60d3b, 0x9861bb22, 0xa7b1f342, 0xb164dff0, 0xfda3cc8f, 0xc39db0c8,
+       0x77f923dd, 0x1b491f63, 0x247da166, 0x3d87c0bb, 0x3ed7978b, 0x80517ccf,
+       0xe2939735, 0x59efc620, 0xc7f1993a, 0x62a5e3cf, 0xdf09259f, 0x47e18841,
+       0xda32c35b, 0x4f7f8f44, 0x64fdfe39, 0xa2e6f985, 0xe6eb25dd, 0xc5938ffc,
+       0xff2a52be, 0x4b7cc9fd, 0xafe7f690, 0xd3b22161, 0xbd289a40, 0x7f29458e,
+       0x78276b14, 0xf9a57a34, 0x2bcb3d78, 0x64f9942e, 0xee3327b4, 0x415be232,
+       0x5d75c759, 0xf8a3f617, 0xe9b4dadd, 0xfe9f69f3, 0x0a1a03ff, 0x8000e598,
+       0x00008000, 0x00088b1f, 0x00000000, 0x7dbdff00, 0xd5947c09, 0x66fdf8b5,
+       0x324ccc9f, 0x10926649, 0x04084cb2, 0x90938094, 0x49945044, 0xca5c5842,
+       0x6c80b104, 0x6c806ac3, 0x7d58b52a, 0xd3040cbf, 0xac1abc80, 0x40ed0dc5,
+       0x368ac5b1, 0xa351b468, 0x59f5561d, 0x2b148ffb, 0x4aa768ad, 0xb6293d95,
+       0xd6d5f67d, 0xf7b9ce77, 0x32fbe666, 0x9fef6e03, 0xbbf71f2e, 0xd9cbbbf7,
+       0xdee739ef, 0xe80d4e49, 0xb58ce59d, 0x5bdf87f9, 0xfeec61e3, 0x027b6fda,
+       0x19b98cc5, 0xf3c275f3, 0xe9cd857e, 0x76c633b4, 0x0cb1d10d, 0x185996c6,
+       0x54e63dfd, 0x4e6311a8, 0x6c60ab1d, 0x09fe138d, 0x6ce6b3df, 0xcbcacede,
+       0x8c4c2b7d, 0x5358c65d, 0xa0533c26, 0x8a64b1dc, 0xf9afde11, 0x1a66557d,
+       0xc702bff4, 0x3c57fe81, 0x74119958, 0xe77b77c0, 0x2cf03c9a, 0xff501677,
+       0x35afefcb, 0xfd40c605, 0xbe4d8bfd, 0x2f6fde62, 0x4de0c7ce, 0xdbbe5061,
+       0x50994dea, 0x9bff58c6, 0x5e03b67a, 0x937f8e7f, 0xb5f73f06, 0xc66640c0,
+       0x9858b40e, 0xa163246f, 0x2c5591e4, 0xe63a9e19, 0xed8c6963, 0x7b367a37,
+       0xc6cfd05d, 0x27ec5ee1, 0xa433e494, 0xab743942, 0xe50adbc7, 0xae9eac87,
+       0x8fffac5e, 0x0f0eef24, 0x958d377d, 0x3b27fae2, 0x98c51a3f, 0xf2a1fbe2,
+       0xf8f12db9, 0xed866130, 0x3d73eff0, 0x16ca978c, 0xf5d1edf9, 0x9d3a4bef,
+       0x0a777087, 0x55b46eb8, 0xe9e93b96, 0xb2f3e273, 0x2a78c0d4, 0x9e1116d7,
+       0x2cb3b55c, 0x1cb19ed8, 0x68b647e7, 0x0b1d2ebf, 0xf1da7f60, 0xfd0299ff,
+       0xc593e396, 0xb3c49bc5, 0x6efc8bc4, 0x74cbe28d, 0x575e2716, 0x167aa7d3,
+       0x1b298f4a, 0x3b4e4dfa, 0xfbd137be, 0x504b4e73, 0xca1e6307, 0x257fdc0a,
+       0xeb2a74a0, 0xa7983035, 0x2c79293e, 0x35ab45d2, 0xa73e0779, 0x23fb1966,
+       0xc73eb682, 0xc000b3ff, 0x18537e60, 0xc99bdf9f, 0x92535e53, 0x7d20fbf1,
+       0x65dedd3f, 0x5fa0c360, 0x8875dd47, 0x98586bc7, 0x07e76bde, 0xdb107efd,
+       0xba8f74ef, 0x7528ed7c, 0xbaaf7af9, 0xe09058cc, 0x734b4f75, 0xb46371c5,
+       0x9b187bdf, 0x2e0719d6, 0x22b005df, 0xb2ef579c, 0x8a8f8e86, 0x99d0d3f6,
+       0x75372aaa, 0x8f1d090f, 0xfe356719, 0x0ff20863, 0xaf3d775f, 0xe0730e62,
+       0x06f788bb, 0xfae13116, 0x7e4d0280, 0x959b07e0, 0xe15f11f9, 0x031f56bd,
+       0x9bb26cba, 0xc5015bb6, 0xcab53d4d, 0x736f7862, 0x31f23d40, 0x3369e196,
+       0xb940f6f2, 0xf3f83f34, 0xb71be031, 0x26fb6b3f, 0xab29f885, 0x9f97cc76,
+       0xeffc2377, 0x469fe02e, 0xf1087b03, 0x7a8eb033, 0x74464758, 0xef6d671d,
+       0xad1d3057, 0x8e5c9747, 0x4a626174, 0x5f3d744a, 0xd4cb5e19, 0xdfba6af0,
+       0x465dd41e, 0x002928e3, 0x5d0ec6b7, 0x9d6504d0, 0xfc84d7a5, 0x79d20f72,
+       0x3b95bc1c, 0xf1687f39, 0x1cf119bc, 0xb1f69f87, 0x97885dca, 0x27e72772,
+       0x2a7bdafb, 0xf9438f8e, 0x801256d9, 0x970376f6, 0xaff8069f, 0xc584e419,
+       0xea65653f, 0xcc9a6858, 0x64e9fbf9, 0x2ab73d0f, 0x9af1057e, 0xb015f3a1,
+       0x801ec642, 0x20b659b1, 0x03ef583c, 0xfd9e5956, 0xc8c5c9fd, 0xcca3de2f,
+       0xc867f1c9, 0xaf2a7282, 0xf9793a7f, 0xc3ca20b4, 0xf692f281, 0x8f9444e0,
+       0x3da8bcb2, 0x0bed0398, 0xf002b658, 0x3c08eb38, 0xe0387881, 0x03d61ad8,
+       0x673eb4fd, 0x0e9198f6, 0x07efbd5c, 0x9e322e80, 0x504db337, 0x48bdcd6c,
+       0xfb4d2cfb, 0xfc85d602, 0x0e7db09e, 0xdb4577b4, 0x9210c0b3, 0x6e22b743,
+       0x46ad2401, 0xc3f39f8e, 0x71a9293d, 0xfa9f2ee0, 0x31680107, 0xe0d5a772,
+       0x69dca0b5, 0xb923efb5, 0x9cbb9518, 0x99dfa3de, 0x5e81dfd4, 0xdc512360,
+       0xc3c43334, 0xe627ec06, 0xebd1bd7b, 0x43f57ec4, 0xbc0bdb4a, 0xef53198c,
+       0x3900669f, 0x658806d6, 0xb2763057, 0x73824ee3, 0x1f9f44db, 0x69d5b0f9,
+       0x9d61eb60, 0xec40eceb, 0x2cd69700, 0x6dd70843, 0xc2b20532, 0x0d7ed105,
+       0xe3cd0311, 0xe9187dbc, 0x34eb44b1, 0x354c0a7d, 0xcf61d70e, 0xfff3958a,
+       0xa9d9e377, 0xb63c769d, 0x017b657f, 0xea71678c, 0x93c056bc, 0x1f6763d9,
+       0xb6a3f0c6, 0x8683c31f, 0xdb68fdb8, 0xc427f849, 0x8c9231b3, 0xa59738f8,
+       0x338a169b, 0x9ca991ef, 0xfcb2be9f, 0x5391af98, 0x6145a3ee, 0x24895efc,
+       0x1c901417, 0xf40a9919, 0xff38e8d3, 0xe4879f1b, 0xc1df8655, 0x6dc713d9,
+       0x04b2aacb, 0xfb32ae48, 0x7d7fb247, 0x7093fa62, 0x560ebd31, 0x9beb0e85,
+       0x3177f619, 0x2f141838, 0x0c399be1, 0xc182f1ec, 0xa76d8cf5, 0x47b40cf9,
+       0xff59887a, 0xd13f06dd, 0xa0aaf1b1, 0x5c700fc5, 0x896259e7, 0xe0ddb940,
+       0xed00b7b9, 0x7ec1d7a7, 0x667ae0f2, 0x3e47f8aa, 0xc4dd8137, 0x959a7ec0,
+       0x47ad53aa, 0xd812933e, 0xfc0a771d, 0xd73bda6c, 0xfa01795f, 0x47e67101,
+       0x334a4dfa, 0x191f5138, 0x36be7c8d, 0x7cce37ec, 0xe089bf64, 0x2b5ecf75,
+       0xd8a583f1, 0xa8bd4212, 0xe0cdaf1d, 0xc1b4f9a7, 0xce58827c, 0x39b7e3e1,
+       0xd01dce0d, 0x892a36de, 0x67e06259, 0xe08b321a, 0x62e5de7f, 0x736fa87a,
+       0x59c63d01, 0x54d384af, 0xa1d7d384, 0x2e8680cb, 0x08aefc47, 0x2e8625e9,
+       0x1eea97bf, 0x5153974c, 0xf9f397fe, 0xfcec4b33, 0xc3c4a787, 0xd4fa20eb,
+       0x44c54dd0, 0xcbbe43e6, 0x5876e784, 0xd35d582f, 0x3ce314f6, 0xcc0272a0,
+       0x399db66f, 0xd37bde41, 0x9f21372b, 0x33eef454, 0x2e87e431, 0x5ea3ad37,
+       0xf71daf7c, 0xff7f021f, 0x33d27548, 0xc9efa8e5, 0xaedf0049, 0x028f24de,
+       0xdc695d55, 0xf77ed63e, 0xec22aa62, 0x34fe0e97, 0xfda2c644, 0xcc57db20,
+       0xf01dbe67, 0xdac4983c, 0x7f77a02d, 0x29f72a92, 0x01a7f1f7, 0x99c61718,
+       0x1de8d2f1, 0xf588f764, 0x80b5041f, 0x223233ed, 0xd7fd1563, 0x582edbc0,
+       0x1ade0c7d, 0xb422912c, 0x14c7ff53, 0x357c44e8, 0x60648d1d, 0x29f0ebb9,
+       0xadddf7b2, 0x7feb0edc, 0xba4216c1, 0x759f8c1b, 0x4ffabf34, 0xb8e0b287,
+       0x37ab78c1, 0xaedec984, 0xea8f34ff, 0x4b41dd61, 0x067eb45a, 0xdc78e2d0,
+       0x9c3858a7, 0xf0f13e10, 0xaf4143f1, 0x8fc01f12, 0x1f021da3, 0x840fa708,
+       0x77803ebd, 0xf70da9b7, 0xfc2c6773, 0xe28df33d, 0xc7a109fb, 0x0bca483f,
+       0x3e77b031, 0x35fb9228, 0xdeac464f, 0xeefab7a9, 0x66eb039d, 0xe3d9e96f,
+       0x6d5a58f0, 0x707b476f, 0xa297d9a9, 0xbfa5fbc0, 0x0aeb2bd5, 0x07c48408,
+       0xcf3c05cb, 0x88edef30, 0xab66e0bf, 0x9fc271f3, 0xb0531f7a, 0x9bdc72b5,
+       0x6ef2fdf0, 0x9f4d17bd, 0x20f6d525, 0x5bd15bf6, 0xde03a4f5, 0x79b768af,
+       0x74bbf418, 0x3d23f792, 0xd5af738e, 0xf700beb3, 0x872ac33d, 0x7e6bbf40,
+       0x7944e054, 0xcfeb5b60, 0x140178b2, 0xdba619f7, 0x2b771e00, 0x252b178b,
+       0x6cfbe280, 0x67800d1b, 0x4faabfc3, 0xf43ca15b, 0x968d9cbe, 0x425ec65c,
+       0x5a768e59, 0xee3a7730, 0x538e7f53, 0x4ca682bb, 0x5fcfdc76, 0xf17289d3,
+       0x19c3c9c6, 0xa5ddd4bb, 0xe79cc3b3, 0xb46f15a4, 0x6919f8c0, 0x8c1d12be,
+       0x64ad2cb7, 0xe4b7f63a, 0x7f7f31de, 0xd3dbea10, 0x7b474f26, 0xbe26f003,
+       0x1abd3e9f, 0x898ac854, 0x2b2dfcb2, 0x16365d96, 0x83c71bb5, 0x1d161cfc,
+       0xaec4ed1f, 0x399e5934, 0xfb7c327d, 0xb5735541, 0x93dffa01, 0xf1636736,
+       0x7e5d8c25, 0x07d3a57f, 0x769f3fe3, 0xcbb7ad13, 0xdfcfdb24, 0x5df683e8,
+       0x08dfb02c, 0xb7de6ff5, 0x0005ba7c, 0x97f74aeb, 0xe9fd6138, 0x4e367b96,
+       0xf06beabb, 0xbb4528cb, 0xb9a771df, 0x210e6f89, 0xf6d6f348, 0x157eb89b,
+       0xe9c39efc, 0x0a3ca078, 0x72988eca, 0xad772f16, 0xde3f2f8f, 0xabfae749,
+       0x7d7e292b, 0x2f971a69, 0x0eb0ef00, 0x16dbb3e9, 0x9510511a, 0x964fc027,
+       0x5b5fc4f1, 0x5f009f38, 0x1f1074cd, 0xcbefedc7, 0x9dc02ff2, 0xf832e9fa,
+       0x970fb86c, 0xcc180d72, 0x4c9ce386, 0x75e4a8f5, 0x9212ef45, 0x0ba62fb7,
+       0xf870f5be, 0x72d5abb8, 0x8b7a5985, 0xbbf22e10, 0x059d6219, 0xd13f81a3,
+       0x40f3008f, 0x85635cfe, 0x01fa3efd, 0xb26654f6, 0xf5dfd80b, 0xf6aa569f,
+       0x4c75d1fd, 0xfa83f7a6, 0xa23cfe85, 0x17f16f7f, 0x45ea5781, 0xfaa2e5e0,
+       0xda33ad8b, 0x314fda9f, 0xafee3fb8, 0x4c57a418, 0xbb79e7f1, 0xbf8013a4,
+       0xadae462e, 0xa415f210, 0xcfcbed16, 0x8ec97f3d, 0xe3b1054d, 0x67f4e7ae,
+       0xf3077d00, 0x457c820e, 0xf0615639, 0x2bed8b5d, 0x419cd37a, 0x836de885,
+       0xd20337a0, 0x5773c49b, 0xad25735a, 0xdce28b77, 0xfc0ec711, 0xefae348f,
+       0x1f143a2a, 0xf39927da, 0x31c5fa03, 0x1ff293f3, 0xfd12effa, 0x7e7a7197,
+       0x179e8074, 0xff08ff20, 0x7d02f306, 0xff3c198f, 0x319d844f, 0xb39ebfa0,
+       0x123e7086, 0xfe955f6e, 0x9f50fda5, 0xd3254f50, 0x868f333c, 0x63a4c193,
+       0xa1f82dff, 0xe4c3f3ab, 0x755f512b, 0xe1e299eb, 0x51b946eb, 0xf064e521,
+       0x86aad7f5, 0x95131d93, 0x67b21ecb, 0x5b0cdca4, 0x1bf6d12c, 0x6d3ebcb6,
+       0x3355ca03, 0xe1e61fe0, 0x2f1483d2, 0x7763ce8d, 0xe397d71a, 0xcf17cc03,
+       0xd5317c0e, 0xad08e521, 0xd5b5a1e3, 0xbf5c43ec, 0x23e3afd0, 0x3ccbf241,
+       0x6038e024, 0x3dfd0887, 0x9a791cc3, 0xf4d47bfb, 0xa760cb28, 0xa30aea34,
+       0xccfd63fd, 0x243fba18, 0x9f8b40e8, 0x009f2baf, 0x8384410e, 0xfbc3cd31,
+       0xf682b287, 0x17f40185, 0xad6cffc0, 0x20a9bbdd, 0x2e76de66, 0x1d7add8f,
+       0xe1176397, 0xaf3a570b, 0x41c17fef, 0x07851cfc, 0xd2fa63b7, 0xaedefcb8,
+       0xdfb87563, 0x3e03a838, 0xf3b5fa41, 0x7e7b9e75, 0x67fbf508, 0x929beed1,
+       0x304ddbcb, 0xb26be71e, 0x1c5e1b1f, 0x7f3d5dba, 0x7494dfde, 0xa38a970e,
+       0x63b412be, 0x5eedf846, 0xf4542fdc, 0x8467dcce, 0xe28f5172, 0xce92d6c4,
+       0x9f393a8b, 0xb8097502, 0xb63bbebc, 0x39a77fdf, 0x1475d1be, 0x3c62651d,
+       0x7db2e7ce, 0xe39dba4a, 0x4667d613, 0x72d41a78, 0xb9bf3e54, 0x19f7f879,
+       0x00f5bd61, 0x12db140f, 0x8b9d5d6e, 0x8f915bd7, 0xf22f328f, 0xc5ceb9f1,
+       0xd78831ba, 0x77d91907, 0x7ee1f203, 0x8f690ebe, 0x22765d02, 0xe7a4165d,
+       0x8e233f52, 0x50c56cfa, 0x26ed023f, 0xd3a9bef8, 0x857dc211, 0x25303d37,
+       0xab39d71d, 0xc6fd1abf, 0x75e6b68d, 0x03f798d6, 0x3da1bbed, 0x3f4071d1,
+       0x08b9e706, 0xe89e76f6, 0x1069a07a, 0x260d7afd, 0x2a42d3e0, 0x5d6e1187,
+       0x7fbede26, 0x4478a301, 0x84dfbea3, 0xafbfa0f5, 0xac3cfa25, 0xe2fc434b,
+       0xe6ed09be, 0x473fbd7a, 0xa67d7dc1, 0x007a8bd9, 0xef4421f6, 0x60ccad07,
+       0x855ffe85, 0x1ae9ca27, 0x117b2dfd, 0x0a85355e, 0x7ee423c5, 0xee16e51f,
+       0xb24c669b, 0xcfb23d11, 0x7e8e1b6e, 0xe38db75c, 0x88b1fa09, 0xd2962c7e,
+       0xbffdff28, 0xff684bbc, 0x41dbf523, 0x0e7ea145, 0x477a355e, 0x08becc6b,
+       0x7ff943fb, 0xb9cda950, 0xec5fe905, 0x743ec8eb, 0xda2ef545, 0x58f6a52b,
+       0xfcc507bc, 0x47487922, 0xda28f6b1, 0x6cf603a7, 0x538d89f0, 0x3e5f2e41,
+       0x73ac33ad, 0x9eed1522, 0xafe85dfe, 0x2b59ec06, 0xd056a1c0, 0xa082c1c5,
+       0x37e7193e, 0xaf0fd602, 0x8a05250e, 0x71d1ed9b, 0x209f8432, 0x10fdc4c3,
+       0x79fc4919, 0xe9eb9d3a, 0xf9fc5cbb, 0x24667886, 0x7c2bf7c7, 0x99c7ea24,
+       0x54d8fcb9, 0xb6bfe5c9, 0xefd11add, 0x8b7bb657, 0x1efed515, 0xe935deec,
+       0x7135eedc, 0x8bf710bf, 0x83da247f, 0x8a78439d, 0xf27e55da, 0xf43b49e3,
+       0x5237bd6f, 0x7fc921b9, 0x7e89f92f, 0x38aafb07, 0x9890c9fb, 0x2016c9f7,
+       0x7d8c919c, 0xc205e2dc, 0x8b78ec65, 0xef2bca85, 0xe414d1fa, 0xd42c55af,
+       0x6abafc86, 0x63141ea7, 0xeecbfe74, 0xf60a7bba, 0x30a42cbf, 0x32fb828f,
+       0x106bb53f, 0xd0d9bff0, 0xe7854a6c, 0xea9b0ef2, 0xe36dbabb, 0x2f296554,
+       0x59fdbabe, 0x723142cd, 0xa65f2a26, 0xbf6d7bd0, 0x76b59e92, 0x1e2d07e8,
+       0x67ecb75a, 0x68235dc9, 0x52fdb2fd, 0x2df5a5e6, 0xcf542f6d, 0x9274c1ff,
+       0x27e6893b, 0xceed12e9, 0x9a79dc60, 0x003fef54, 0x31cd07f8, 0x9c3138f3,
+       0xf49df1e6, 0x45d23740, 0x16361e74, 0xc70b151c, 0x608fce89, 0x64f60cad,
+       0x3a0477e8, 0xdf485e09, 0xdb9d26ff, 0xee1d5f05, 0xfdd813a3, 0xdabfff63,
+       0xb9f315fd, 0x0a1d659c, 0x3974811b, 0xfd876d5f, 0x3959f511, 0x0e426d3e,
+       0x28eca875, 0x98b16bf4, 0xf9e0ddfd, 0x2eefa66c, 0x05fbcc9f, 0xb0b7643b,
+       0xbdb98b97, 0xbd80c8fc, 0xff662f3c, 0x52997689, 0x7f8cf288, 0x53f428d7,
+       0x26c3a9c1, 0xca3b8c0f, 0x42d7edc5, 0x1d3fafb7, 0x26b66fda, 0xca3f458f,
+       0x085e6b66, 0xf8c0d1f5, 0x6ece5cdd, 0xbbc40e36, 0xdb9e1133, 0xab5b75ff,
+       0x07bbf101, 0x83907fec, 0x601e8f95, 0x74f91891, 0xb7c55afd, 0x6ff0f00c,
+       0x2f7ae781, 0xbdeb0fb7, 0xe870d361, 0xcf9ebb27, 0xaf73a72b, 0x2ef98862,
+       0xb3b78ea7, 0xbf2a8cb8, 0x939443aa, 0xe70e5c5c, 0xe19585d4, 0xdb7b2ed0,
+       0xfd80c54e, 0x2fa42a75, 0x51019bb3, 0x2ecc7031, 0xf5cd76e3, 0xa595db65,
+       0xb43851c5, 0x9d8b6aeb, 0x0cf6b780, 0x4cf5179b, 0xee903b83, 0x0b1e79c2,
+       0x978c1187, 0xa035eb1f, 0xf6e2dedd, 0x84bdf0b9, 0xccef4783, 0x3b6a3d46,
+       0x31d9e7c6, 0xfae62fb0, 0x64b22285, 0x7690ef47, 0xdb8c6be9, 0x32a7a485,
+       0x7d228fd6, 0x9197e727, 0x0644f426, 0xa7633c0b, 0xcf14edf6, 0x78c71e47,
+       0x1da2fad6, 0xf4e58edc, 0xdfe85357, 0x326bef89, 0x856d292f, 0xc39b85f7,
+       0xefb82586, 0x0fdf16de, 0x08f42a5c, 0xec4c63ac, 0x2f262e3a, 0x02633b64,
+       0x13e484ff, 0xfbf8b4db, 0x407ec60e, 0xba8f95f5, 0xd6f9c26e, 0x8c31306f,
+       0xb7f84907, 0x9c3efdb8, 0x76e7764f, 0xfd236105, 0xe95c727a, 0xe47ac3b7,
+       0x924c0fdb, 0x25fd399f, 0xf56b0b94, 0x72b165be, 0xf089836e, 0xe8e6ed24,
+       0x3f9db8fc, 0xebf5c5cf, 0x4cff6ed3, 0xf7634f9c, 0xacf3f216, 0x5327f9dc,
+       0x96b53f3c, 0x47062e2f, 0x77f38ea5, 0xc50b1cfd, 0x351f2ac3, 0xdeac1d10,
+       0xd1990a60, 0x87bddafe, 0x62ee77fb, 0xf51f945e, 0x65947b9d, 0xddeaee30,
+       0x31e5947b, 0x1f5a1d70, 0x233e7052, 0xb90f921d, 0x3dd2d35c, 0x5ed18ffa,
+       0xf6e56439, 0x7b4a99db, 0x67a6e310, 0x6c7a818c, 0xcd886677, 0xe2882c1b,
+       0x533dd5e1, 0xf1c19f29, 0xcf8c398c, 0x2c8edd76, 0xbf6bb40b, 0xfa45e4d4,
+       0xbe07716a, 0xa4f802eb, 0xf85dfc19, 0xe1cbaa7d, 0x7adf075d, 0xe514accc,
+       0xc38517e0, 0xb93a1ae5, 0x3fce2efc, 0x0439084f, 0x3fc8a57f, 0x9f7c5c5b,
+       0xed147601, 0xf9190eb3, 0x7c619e3a, 0x7dd3a7be, 0xafc7446d, 0xd9b8d1a5,
+       0xfd0561f5, 0x9ea705d8, 0xfb26b921, 0x6f99d28f, 0x8bffce33, 0x84d3b3cf,
+       0xc85ab6f4, 0x7747caa1, 0xccc61f2a, 0x9e9711fb, 0x06ef65da, 0xfd53b4ba,
+       0x6a2ee9de, 0x7c1ecccf, 0xab77d0af, 0x8c797ea1, 0x88eb91bc, 0xe0767723,
+       0x7ac7ec7a, 0x13b9700f, 0x31467ee6, 0x9f3e2d5f, 0xfb87f946, 0xf4db503b,
+       0xe51c14de, 0x0d0efe81, 0xa4fea24b, 0xedf2d01c, 0x51ce82d3, 0xe4ecea5e,
+       0x527b25a7, 0x2bb64fce, 0x833d5774, 0x5a7cbaf0, 0x61a1c12f, 0x53d6819b,
+       0xbf0ff263, 0xc21f8625, 0xd877ee2e, 0x137dfb37, 0x7ffbfdca, 0x63d116f9,
+       0x79428743, 0x2de3ac44, 0x27e88dd3, 0x47a13e08, 0x6e5af2fb, 0xcfadb02a,
+       0xba7845bd, 0xe5cb8bb6, 0x863dae86, 0x9d28f6a5, 0xb7da9c16, 0xa1ace910,
+       0x3f70ccd3, 0x0877f404, 0x53a5a3e7, 0x77291f09, 0xe413e113, 0x0b07f113,
+       0xc2bf489a, 0xfd00aa3e, 0x9f6e5213, 0x66587e16, 0x143fefe7, 0x4fd28a70,
+       0x254ba8e0, 0x17c4ad77, 0xf74aa705, 0xedff7059, 0xefbfc855, 0x8cf0e6aa,
+       0x98ed579d, 0x9dd372c4, 0x2186f42e, 0x11d33792, 0xf203ef95, 0x91ff7c5f,
+       0x0fbc37c0, 0x186cf7f3, 0xfe720dda, 0xb9a5fc5a, 0x438fbcb9, 0xf4f17d67,
+       0x2407b49b, 0x9b6cfcdd, 0xfe47a541, 0x1c1132ed, 0x5032edff, 0x792b5bbf,
+       0x91ab631c, 0xebadb3eb, 0x2794212c, 0xf29dceaf, 0xdaf2029a, 0x8c299371,
+       0x25ba83cf, 0x307f58f5, 0xaedf8f9b, 0xe58addd3, 0xd676f5f6, 0x7df5784a,
+       0x49fa22ee, 0x723e5c66, 0xb3ff7879, 0x07d59e5c, 0xff0621ed, 0x5acc0fac,
+       0x9708fb46, 0x66f18bd5, 0xba603816, 0xae9831d1, 0xa5eccf3c, 0x3b6bbd7c,
+       0x3c49ff39, 0xfa253c80, 0xe120fc92, 0x4867851a, 0x1f124fc5, 0x5d8fd1a7,
+       0x6be5e9ce, 0x54ed05e5, 0xc7fee1c7, 0xcbb8f014, 0xf3015c79, 0xf28e2b0f,
+       0xfa2242b8, 0x8df6bd5d, 0x4760e3ec, 0x9d7acaad, 0x616f929e, 0xefe2ab1f,
+       0x2eef0231, 0x7b732cf1, 0x9d65f7f8, 0x8fab97c4, 0xdb3f1337, 0x66b971a7,
+       0xc796a63f, 0x58a7fd8c, 0x6b37b72f, 0x30539d6c, 0xc7e6a65f, 0xf9f7138a,
+       0xcde6e489, 0xfaefcf0a, 0x64fedb78, 0x9f62f7cc, 0x718ff581, 0x6f5f2b14,
+       0x89cb9b8d, 0xe000bb33, 0xa6cdef44, 0x17f5d90b, 0x8f858feb, 0xd5cf0828,
+       0x7667d602, 0x33f84f57, 0xa577affa, 0x92c04778, 0xe1beef4f, 0xbcc33f8e,
+       0xe49ceccf, 0xaba5b745, 0xd3f44fd5, 0x717ab6ef, 0x7be2021f, 0xd709fa1a,
+       0xbe4fee75, 0xf93bbe12, 0x28a565e4, 0x39bbe7b7, 0x567a9fdf, 0xb2e116bf,
+       0xb8bf67fe, 0x8757eb1a, 0x8e337494, 0xffc7ebb3, 0xea7e86ce, 0x9f913676,
+       0x5fc9f5a8, 0x416f3099, 0xdfceda17, 0x62714aef, 0xd93f93bb, 0xbbc23572,
+       0xea95b3b5, 0x3b64fd4f, 0xecfdf795, 0x0ffcaf17, 0xc9fc6ffa, 0xea776c5e,
+       0x9784bdd9, 0xf28180fa, 0xf5d112b3, 0xb97b3dd6, 0x8f3d44bc, 0xcb87307c,
+       0x92d74931, 0x6cfe4f7e, 0xbd5884d1, 0x0bb7df21, 0x127b4e3f, 0x05a723d7,
+       0xe2aeaeff, 0x4fd3ce71, 0xfed0e759, 0xc22914c0, 0x317d72fd, 0x02558ba7,
+       0xb79df51e, 0xf4ed1b18, 0x3bf3f53d, 0x8e7c7be0, 0x3cc4fa01, 0xf3b56852,
+       0x7a0bca73, 0xed0cf09a, 0x679fa3c6, 0x293ffcf6, 0x715b1f38, 0xcd3571b3,
+       0x0f5e49f3, 0xafad8eab, 0xbfdf1358, 0x176dc1be, 0x83e70176, 0x1cdaaeec,
+       0xb301c90f, 0x3d8c4477, 0x68175d9c, 0x35f0f8c5, 0x3d5e026b, 0x13c5f1e0,
+       0x850ca787, 0x2946cff2, 0x7aff08e3, 0xa0b9eb85, 0x4069c69d, 0xd1f037ff,
+       0x649f050f, 0x0ae19938, 0x8fdc0392, 0x06606355, 0xfaa7f93b, 0xb4344e49,
+       0x53b83d0b, 0xfd2db7f8, 0xe8383779, 0x3115fb3b, 0xcef86df1, 0x7f72a76e,
+       0x2f31b7de, 0x0e705a72, 0x898f1de9, 0xca4a7be6, 0xbb1c1603, 0xdf944c60,
+       0x9422feb4, 0xb40eb537, 0x709f2b47, 0xe94fa3bb, 0xe9c2d247, 0x999f5143,
+       0xdb27a3e1, 0x01fcc5f5, 0x5bff028d, 0x8a0ac895, 0xe3c0bf63, 0x47578dd8,
+       0xcae5628a, 0xff7cdd1f, 0xcdd04e76, 0xbd3817b9, 0x68e9d41c, 0xc7707f7f,
+       0xcaadede8, 0xd4a6fd60, 0x8d5f09f9, 0xf76e2f80, 0x768c39ae, 0xf31d4352,
+       0x7635bf22, 0xbb067a09, 0xd8d3e115, 0xfb0cbb5d, 0x4e9aea1b, 0x2bb06a7e,
+       0x72850ca6, 0x472b3d63, 0x56dec97e, 0x95e202f5, 0x767df375, 0xa3d81d76,
+       0x83577788, 0x7a805f57, 0xd7addb8b, 0xefa0aa8c, 0x287ae6b7, 0x61ac153e,
+       0x68adaeb4, 0x1abea2ff, 0xbfdb9a32, 0x37640d81, 0xf9124f31, 0x70c0593b,
+       0x0c6fb62b, 0x8f9467ce, 0x17c3e5a1, 0x1be3b214, 0x1590b643, 0x9bb6bfbe,
+       0xdd8d2fdb, 0x4acf0f9c, 0xb1a7c8f8, 0xd1f92177, 0x60b3339f, 0xd5f31f8c,
+       0x3d72a617, 0xf499bcf9, 0x1f16e9e4, 0xba0470fb, 0x78aa3d33, 0x05ddeaea,
+       0xbe6f1e3a, 0x58f38cc1, 0x61d1e62a, 0x553f72e4, 0xcdc2f1c8, 0x05671e7c,
+       0x7c159f3d, 0x526dd67b, 0x419c1bfb, 0x159c37f2, 0x279fe1e3, 0x1829e843,
+       0x985961ba, 0x377ebce8, 0xf665cfef, 0x4316dc95, 0xd1bed207, 0x433d93d2,
+       0x01e57611, 0xf6418505, 0x3e2a99b6, 0x858ea6bd, 0xd79d609b, 0x2785d36c,
+       0xe7bb258d, 0xebc79226, 0x9e5e2c4c, 0xeb833389, 0x7f749a8b, 0x6ba3fa09,
+       0xb1bddb66, 0x249ae07e, 0x768ace9f, 0x3ff4a958, 0xde30cbfb, 0xe1c32273,
+       0x6665bc45, 0x4bdae278, 0xdccff783, 0x23aebb8e, 0x0ff71638, 0x734975a1,
+       0xda091e28, 0x4ed3fc89, 0xdff71ef8, 0x09fcae3b, 0xd2b77fdf, 0xf8c074bc,
+       0xe8657e62, 0xfa1775f7, 0xe2fd70d7, 0xcf5bc6f0, 0x27696ed3, 0x7dc12c2f,
+       0x3b2ce35e, 0x2ffdc3f1, 0xbd384b29, 0xbe432281, 0x60fe700b, 0x7b8f1fc0,
+       0x0ec91e88, 0x87f66c6a, 0xe723d3e2, 0x8bb04697, 0xd2d64ed0, 0xa397dca3,
+       0x43b589bc, 0xfe4a7f25, 0xfe8fb947, 0x92b74930, 0x9f28bfff, 0x3e72339f,
+       0x47eb073c, 0xefa01f3a, 0x6f7d3917, 0x087c075a, 0x0f809bf5, 0xb6e4635b,
+       0x41e2df76, 0xe7b28726, 0xf610b627, 0x8365e523, 0x81935fdb, 0x3af1ddf3,
+       0xf94abaa5, 0xc6e2f8d6, 0x4dd90ba2, 0xcfef0316, 0x4b1afc02, 0x755b183f,
+       0x8833d294, 0x36b6de72, 0x5162ffbe, 0xe5ebfd86, 0x27ce0dcd, 0x1ee19459,
+       0x81924f9c, 0xc4f5033a, 0xed085b0e, 0xd207e95b, 0x0c9ae7ce, 0x6867ee45,
+       0xc7fed2be, 0xbfb601f8, 0x5bec4333, 0x820dbb44, 0x15f6632f, 0x5d1e0fc4,
+       0xe7944fe0, 0xc89f409d, 0xbf29beef, 0xea471c94, 0xc8fd2d35, 0xa7ae07f8,
+       0xbb7138b6, 0x7f62bd8e, 0x87e7a1a5, 0x02abbc85, 0x7775c0de, 0x237fc318,
+       0xc1c5bc7e, 0xc8200f28, 0x4718e97c, 0xe724657b, 0x45fd51a3, 0x667f7df8,
+       0x95d218e0, 0x7be2abf4, 0x16ad2f8c, 0xbbd5c771, 0xf3d8a18c, 0x8c99f517,
+       0x5873e9c6, 0x13e07a82, 0x61e0565d, 0xc5583efc, 0x33d461bc, 0x3c52b3df,
+       0x72d40c08, 0x2c4d3794, 0x3e708c92, 0x8c781a98, 0x5bdf57e8, 0xb3c37e84,
+       0xbe2c644a, 0xf7c6c07f, 0xebaffd3d, 0x9e612343, 0x1f912de7, 0xf9c0de60,
+       0x20de8535, 0x8bdef3f4, 0x2ef73eef, 0x73fef6f4, 0xb08f85e6, 0x4586bf18,
+       0xf8c437ef, 0x3825cfbd, 0xe829d047, 0x41c449a0, 0x3ed18199, 0x2e4cf6f9,
+       0x63e7a31f, 0x3df41c78, 0x263fda9d, 0x5c99a99f, 0x3825757e, 0xc9919267,
+       0x186ba5e9, 0xedfeb7e7, 0xeae1c50a, 0x8bfbaed6, 0x6ebff81e, 0x4f4c238d,
+       0xab3b46a8, 0xeb0c19ce, 0x00dca2c6, 0x811973f9, 0x22a59677, 0x9da0dfaa,
+       0x44f22261, 0xa97149d0, 0x2d3f4225, 0x1ff57eed, 0x0cea4f28, 0x14b132cc,
+       0x0ff97fcf, 0x8faa850d, 0x5192cbed, 0xcef8afbc, 0x7fa8196d, 0x8877e732,
+       0x1e792d3c, 0x97fd3aea, 0xbdf50f39, 0xc411ff4c, 0xee14fcd7, 0x1b7f9bb7,
+       0xfdb24797, 0xb49fa116, 0x027ef1f4, 0xaccb1c3c, 0x7f7c88da, 0x7dffba5d,
+       0xedbfce7c, 0x9d6e4aac, 0x7d3f2253, 0x16e7e904, 0xde71f787, 0xde6c5e5d,
+       0x78e53fca, 0xbc01bf18, 0x16f495f7, 0x3a402dad, 0x077bcfed, 0x663d4efd,
+       0x6acbd227, 0xd0c4e38c, 0x4e38a245, 0xc78df8e2, 0xf8d1f484, 0xb0f442a9,
+       0xa3d5e7a4, 0x4346ef08, 0x8964e884, 0x6c784ec5, 0xe9c0d4fc, 0x2678dda9,
+       0xdc07bf22, 0xfdf74b2f, 0xfbe1f883, 0x0e295313, 0xe1c2fc04, 0xce628d0b,
+       0x0ccb1c55, 0xd1374cb0, 0x1fdc22ff, 0x5278b79d, 0xc9acbf30, 0x7e0f4034,
+       0xc3bd8c4b, 0x3a6a1c72, 0xe89d79e8, 0x60259960, 0xdcbdbd42, 0x91e74cd7,
+       0xcb84a7e6, 0x78b1c59d, 0x7cffa89f, 0xfbc717f4, 0xde3f2171, 0x8e7cf133,
+       0xe5ce74c1, 0xa299edcc, 0x97e7365d, 0xdd58f2f7, 0x14bcf833, 0x7bddf09e,
+       0x54b944c3, 0xbb448b94, 0x9d1e5e0c, 0xbdf2f9c9, 0x769dbcb1, 0xdf82a99c,
+       0x0afa658e, 0x5df04e11, 0xf1f484d8, 0x7644358a, 0x37c8196a, 0xe6b76794,
+       0x720a9d92, 0x3966746c, 0xa54e138d, 0x23d26676, 0x1ce419ac, 0xdcafb3e0,
+       0x54d9f043, 0xf282f409, 0xc53365e6, 0x257e246b, 0x9cf8b55e, 0x0df9e624,
+       0x652795c6, 0x2b8e0f96, 0xf09c3633, 0xe712f445, 0x7c22465c, 0x78e0e67d,
+       0x9e9d7e00, 0x3c2e7a49, 0x566f9626, 0xb94a3809, 0x1a925ef6, 0x9e8547af,
+       0x7af0299b, 0xec3aed1c, 0xfc4fdbc7, 0x6f1a5ef7, 0x7ae42aef, 0x4bddda47,
+       0x263bbc84, 0x4a7cabe4, 0x73f5a23d, 0x7bfc131f, 0xe259232c, 0x55e22175,
+       0x33901fea, 0x39df3c61, 0x926657ff, 0x3f436c33, 0xbb40bbe5, 0xf9aeb8a5,
+       0xe985fee6, 0x0dbe37a0, 0x94a98cf6, 0x728e3bbe, 0xbbfed064, 0x8385d258,
+       0xc86e5ea1, 0xeb29eb14, 0x51a971e7, 0x184b5d7c, 0xe2e50fc8, 0xff1f47f8,
+       0xbbc39010, 0xf701ef31, 0x956f9873, 0xc1ecec46, 0x6bee00fe, 0xb851dd33,
+       0x263bc76b, 0xa67d60e8, 0x28f3a062, 0xf104ac25, 0x4fadf0b6, 0xcba00b1c,
+       0xa63ce2b3, 0xc3681ccf, 0xf1dcce7e, 0xc7e1d93a, 0x0ea2e14c, 0x537a9c7b,
+       0x9407b1f8, 0x27a2fd68, 0xae9e74f4, 0x8fccf7ab, 0x97bac366, 0x38bdeaf4,
+       0xfebb92e4, 0x68e5e6f6, 0x291af747, 0x7cfa029e, 0xdde701b3, 0x63c6edcc,
+       0x9c1d353a, 0xafbd5dbe, 0x41e829d9, 0x7294fb9e, 0x8f8898e7, 0x2e5e64ae,
+       0x7792926f, 0x5b83f960, 0xe30ebe6e, 0xff98cb54, 0x7ee00f90, 0x64e9d6f2,
+       0x02ccdeff, 0xb4b36f94, 0x738e7d5d, 0x7cba8779, 0xce8383f3, 0x5e1c9279,
+       0x17bed219, 0xf8eae37e, 0x0adfb8f1, 0x126d3cba, 0xe675f771, 0x57f771b8,
+       0xe3475f04, 0xb8eafde3, 0x8e17cbfb, 0xe26937bb, 0x423b51ee, 0xfde7771b,
+       0x0dec21be, 0xfe3637ec, 0xfe2aba7e, 0xeb155e3a, 0xa6d4fa68, 0x6378abca,
+       0x4c92dd90, 0x5a9f4df5, 0x4ec7cc13, 0x88af4fef, 0x03dbce3f, 0xfce3a8e3,
+       0x7c79efd1, 0x259fee5f, 0x3a7d349d, 0x2cacf484, 0xfa37fb4b, 0x6bd50e5d,
+       0xff4b43cf, 0x0f8be4b3, 0x42196615, 0x622da2fe, 0xbca5ee9f, 0x2ed10fc9,
+       0xea9cbe42, 0x53022579, 0x84e77a5c, 0x28b0c322, 0x01d768df, 0x122a75f4,
+       0x674f8f23, 0x7fa45c3a, 0xe74bccbd, 0x2fdd04e5, 0xce86a3bc, 0xaef1fcdd,
+       0xb9f54cea, 0x07f720c4, 0x907ef899, 0xe8c68c4e, 0xc7d1a65b, 0xff41bb4b,
+       0x45fd9326, 0xfcfe80e7, 0x87a41df2, 0x067f3057, 0xcbdf7bd2, 0x5f02f323,
+       0xf9cb0f43, 0x6c5c10dc, 0x2ea779e4, 0x8a661fb2, 0xf3d0dcf9, 0xb3af8d2a,
+       0x8e348cf8, 0x199c798f, 0xf3e685b4, 0x806a2105, 0xf30355f2, 0x631ae747,
+       0x95fcc513, 0x5e476e1e, 0x496c9e25, 0x6de70b20, 0x98f571c6, 0xc2ca12be,
+       0xaf04eb67, 0x14939f07, 0x83cf81bf, 0x6b0a79e3, 0x3af6c1ce, 0xd7cf444b,
+       0xa0c83309, 0x5e1256a3, 0xf2887654, 0x17e75986, 0x76f7c72e, 0x9313c907,
+       0x16714798, 0xb75c45c8, 0xdd705985, 0x24f87b66, 0x33c4b7c5, 0x3e21e558,
+       0xe4630e0e, 0x9d6248e7, 0xdbb5c70c, 0xb17106cf, 0xb054e64e, 0x0f9e756c,
+       0x5e50c9df, 0x20c6f3f2, 0x3059bd2f, 0xafca33cf, 0x405e2057, 0x4fbf733e,
+       0x98437aa2, 0xf2105b9f, 0xafcc4d2e, 0x21bbc855, 0x7388abcc, 0xeeef24f2,
+       0x73a0ac73, 0xdfe62eee, 0xa1eef28b, 0x971469e4, 0x9a0164cb, 0x8334fa4f,
+       0xfdb96e4a, 0x1ce672ea, 0x29de5683, 0x0121bf38, 0x3b0b7bf5, 0x4a44f946,
+       0x79f59fd8, 0x46b3ed3a, 0x7665bfa1, 0x51979f12, 0x9e590fc8, 0x56f3c49d,
+       0xbee964e6, 0x579c3e5e, 0x4c6f6fbd, 0xcfc3e7e3, 0x982c5865, 0xcc76009f,
+       0x8fbe2c9c, 0xa2c83f7f, 0x93259579, 0x1f30eb3c, 0xf156ada6, 0xb77c07ae,
+       0xeaf39c39, 0xc0baafd1, 0x0639fdc6, 0xea1dab4f, 0xf548afb7, 0x26e379e2,
+       0x66dd8791, 0x8ddeae75, 0xe0e05e78, 0x1b7f58ed, 0x6fb715c6, 0xcf313a72,
+       0x3fdd55d3, 0xaafb84c5, 0x83b9cce5, 0xcff7a1c5, 0xbe608f80, 0xe032c13f,
+       0x23f41149, 0xf7c4efdf, 0xa93cbc85, 0xfca5f702, 0xb527b0af, 0x66cbe712,
+       0x69371429, 0x4613d9ea, 0x9ce15a3f, 0xbfa3f212, 0x4c41fc23, 0x72e5fff0,
+       0x575fc13c, 0xea9de946, 0xd7b9444b, 0x1da0e1be, 0x847bc39e, 0x1665d77f,
+       0x3e18d771, 0xe13bc9c1, 0x1a388545, 0x38b8fd88, 0xfc99787f, 0x057b7ce3,
+       0x38e1fe8b, 0x4971d1d5, 0x75164d4e, 0x7bc21b97, 0x14af9f91, 0x3cf112cf,
+       0x8dc780b8, 0x8f76757b, 0xdbf9c749, 0x6f5b8852, 0x52e11ebf, 0x8ad8dce1,
+       0x094ab9f3, 0xbfcf33d3, 0xb8e28f45, 0x017202d4, 0xafbc63f9, 0x4f33ce86,
+       0xd41e7466, 0xebc4acb6, 0x2ceff784, 0xf421e7fc, 0x60eb8f47, 0x6d986714,
+       0xbe197992, 0xe7b79e14, 0x0ad7f9a1, 0xa7359b1a, 0xd9194672, 0xdc267a25,
+       0xfad8baaf, 0x4eae4ebf, 0x55deb0b9, 0x8935efe7, 0x3e5916bc, 0xba276591,
+       0x94d64dff, 0x9f48b327, 0x9ee5b8f0, 0x8d7f612c, 0xce50a362, 0xe781c8c4,
+       0xca99ddb0, 0x09c91237, 0x1390bd75, 0x19c6fa37, 0xf2177ec9, 0xbf65ca42,
+       0xcb99dfc8, 0x6b84467c, 0xe34fb8af, 0x924ae570, 0x8059b317, 0x8abeffde,
+       0xc90803e3, 0x30ddfd88, 0xdce76d4d, 0x679757e8, 0x41dad1cf, 0xdc726e1c,
+       0xfd7501b9, 0x4ecf694c, 0xf3b3db53, 0x2a59fbbf, 0x9fcce3e9, 0x1f9e7c36,
+       0xd269cbcd, 0x8a34e5e4, 0xeea69cbc, 0x63bb77c5, 0x3f8072f2, 0xb1a72f28,
+       0x397962fb, 0xc779eedc, 0xf18bda18, 0xc256778b, 0xfb9e614a, 0x01c71e45,
+       0x8d28e3cc, 0x2163a5d2, 0xc40293f7, 0xc7273f29, 0x0b73a369, 0xf252baed,
+       0x3b27b6ab, 0x4deffe54, 0x4a3d38eb, 0xc3ccaa7f, 0xcd666d99, 0x774fdc9d,
+       0x719be780, 0xf8485a3f, 0x52cc9e25, 0x03701fa4, 0xf234f1f9, 0xedce9dc0,
+       0x51bcf746, 0xd39d2fe4, 0x79465253, 0xf9077649, 0xf2cc9ff1, 0x0273f7d0,
+       0xbbe7e425, 0xe2973ec6, 0xdb3d4d2c, 0x51eccb0d, 0xd25cf9ba, 0x90d98d9b,
+       0x63fc06de, 0x3fc998cf, 0xf5fb33e6, 0xeaae8043, 0x83f2614d, 0xbd1bd0c5,
+       0x6e97a44f, 0x5636f816, 0x072ee7f9, 0x69bdf4b8, 0xc06ffba2, 0xda3f26f0,
+       0x92a42fb3, 0x9330cf7f, 0x50d83e91, 0x7d9f08c9, 0xf9828fe8, 0x475a9c7f,
+       0x5a86fa76, 0x5cec7a46, 0x65c7bf1a, 0xf21d0b25, 0x1b6abfa1, 0x7e8c51d0,
+       0x5d53b558, 0x249d67ae, 0x0f77ebe7, 0x6b9247a2, 0x3035fe52, 0xf188de8f,
+       0xf7f52ea5, 0xbe5ab86c, 0x3d390895, 0xadc9c6ee, 0x4e300798, 0x5b11e5c7,
+       0x933a1de6, 0x9df3c5f6, 0x5451591f, 0x90b954fe, 0x38e7d4fd, 0xcbfce7a1,
+       0xe8b970e5, 0xca27ab5f, 0xb574dd85, 0x1f70f981, 0x6820ed29, 0xba03e54f,
+       0x4eaa3d1e, 0xf132cf39, 0xa4bfb49d, 0xaaf8961c, 0x11a20f1c, 0x10da6ce8,
+       0x630cc761, 0xd0df10c3, 0x82b9d13f, 0xea34991b, 0xaffb883f, 0x4078c52b,
+       0xaba4410f, 0x4212cea0, 0x9a536dfa, 0xd0593f49, 0x26e786ce, 0xf8724025,
+       0x3d417597, 0xd604c7d2, 0xd075c37c, 0xd7a5a26e, 0xe8077286, 0xe521bae4,
+       0x6569fa51, 0x8a3dbce1, 0xfea88e8a, 0x711bea4c, 0x8bea48e9, 0xddb9eff0,
+       0xfb032d70, 0xfdf5c60e, 0x0737db81, 0x039fbe14, 0xda00ef3b, 0xa6e86f37,
+       0xc74c9d13, 0x5da07efb, 0xff8d538d, 0xc3ebdd8b, 0x20572b50, 0x433c243a,
+       0xf68f9c06, 0x949f1fbe, 0xb72d4c5b, 0x3c67d80a, 0xa1e37aaf, 0xdf3ee0ef,
+       0x328d96b6, 0x49611ea0, 0xe27111de, 0xb10fb74d, 0x67fb3d7f, 0xf6e2dc70,
+       0xe383e521, 0xb1467d16, 0x59d0d05f, 0x0b53a1e3, 0x3d28b337, 0x82b8be4a,
+       0x00b3eb35, 0x78afca7e, 0xa40ae87c, 0xf18ba043, 0x461c5616, 0x3f7194b8,
+       0x490fe49f, 0xb4a21577, 0x3e59d255, 0xbb3a47cb, 0xd61adbaa, 0x0c3f5327,
+       0x444a09f3, 0x900ed2bf, 0xf8eb7d76, 0x8055f441, 0x16a5d179, 0x93d2216f,
+       0x29c603b4, 0x2cee47de, 0x483ebb40, 0x3d0c7d76, 0x12e5cc3d, 0xadf913d0,
+       0x7549e906, 0x24de86bd, 0xb9588fde, 0xcd64ac7e, 0x95989fb4, 0xb863f5c4,
+       0x8fd266f6, 0xde892620, 0xe9c99d5e, 0x88f986ad, 0x9a992ade, 0xea2daa4e,
+       0x611e96b2, 0xde9a9d44, 0x5a6f4402, 0x6f444d3a, 0x526f48f9, 0x9c5fa64f,
+       0xf37c0ede, 0xcbe076f4, 0x63949bd0, 0x6aceac7b, 0xa9b3cc3b, 0x30bd214e,
+       0xade1cdee, 0x50d91e58, 0x9eecf640, 0xaa7eef54, 0x65f5e66f, 0xe63d3ebd,
+       0x11ae148d, 0x6afe05f5, 0x55ad372c, 0xf2b5dee8, 0x64af3c23, 0xbebc5df8,
+       0x7ef37d64, 0x14dfb73c, 0x78bfdfe4, 0x01ce8db2, 0xf7c4da85, 0x58d51d95,
+       0xdfe76a6e, 0xa2718c7f, 0x2bbf30cb, 0x2fef8ad4, 0xe5e05cd9, 0x3f6e5bdb,
+       0xddeb124f, 0x9fb33ca3, 0xdfe0ebbe, 0x92c87cdd, 0xe6eec8c4, 0x62d5eff6,
+       0xf1b6939d, 0xbc3eba75, 0xe8079a66, 0x907f7963, 0x748fb0ec, 0xe72415f5,
+       0x2b63ec12, 0x7c1c8e95, 0x7ccafbca, 0x7ebb6f16, 0xee238f18, 0x366bfdc0,
+       0xfc640bb7, 0xb5fce30d, 0xcb0df631, 0xecb0fe16, 0x9d20b881, 0x3b0f62db,
+       0xe32d1fc8, 0x9807e183, 0xd71f7a82, 0x8a25df88, 0x6c2d4e17, 0x6a61fb26,
+       0x46138cbe, 0xdc604b0c, 0x993fcf92, 0x634fcf12, 0xaafee6ce, 0x416f2213,
+       0xf10bafbe, 0x483d88fc, 0x41df7424, 0x4e549bd2, 0x5df3aa65, 0xd9780a7b,
+       0x3fe9b0fd, 0xbe0073db, 0x104366ba, 0x429e5b95, 0xeadf1f79, 0xe494e165,
+       0x6a9ff3c1, 0xe5136160, 0xaff9f101, 0x7b893568, 0xbb5cb83a, 0x4d8fe051,
+       0x3bf4411c, 0x5869e04b, 0xe35390b6, 0x539438d8, 0x7dbc0a37, 0xe46cd2db,
+       0xa8c3ba7a, 0xd9451f91, 0x4a1eafa8, 0xebab8768, 0x4ea5f235, 0xd842bb8c,
+       0x3f592bdf, 0x123f27f9, 0x8789f7f6, 0x8abdfdb8, 0xb27f9275, 0x776e61ef,
+       0x90f2c036, 0xc67eb45e, 0xe5d4bbd5, 0xb9754e86, 0xf63ad411, 0x91add4df,
+       0xefdcc53b, 0x4350f7db, 0xeaf9fa05, 0xfc937c1e, 0xce5275cb, 0x0672d484,
+       0x672e6b0c, 0xfc94b81e, 0x7e595f43, 0x535d86ec, 0xf2bf2a85, 0x8c776cfa,
+       0x9e79e4ff, 0xf8c8d227, 0xb1cfbd3e, 0x13dea1b6, 0x4fd4a3c5, 0x95a08fd2,
+       0xbe42252f, 0x6f297ac8, 0x5fd7184a, 0xd37cafb0, 0xf6356d87, 0x07492add,
+       0xfd25df62, 0x2a2ed213, 0xe908bb41, 0x7cf8d2eb, 0x0de9fa0b, 0xfd18b0f3,
+       0x42ccb734, 0xc7dbd7f8, 0xfa2aec04, 0x48fa2468, 0xd7538fbc, 0xee47e86b,
+       0xf4126ea3, 0x3a460373, 0xc83ffc60, 0x4e4adbfd, 0xff98b33f, 0xefcfd220,
+       0x91fa7157, 0xbf2fb9fb, 0x63e9f37f, 0x1f726ff7, 0x71f745f8, 0xfd637403,
+       0x3973dd29, 0x5ee06f3b, 0x373fda17, 0x1a2e9c29, 0x31fefe16, 0xca529fbc,
+       0xcc2dc38b, 0xcb46306b, 0x16cdd3ad, 0x7bca378c, 0xfb5e66de, 0x1892c55e,
+       0x51d673f9, 0x1b8443f9, 0xff9371eb, 0xfd26c1b4, 0xd99c7cda, 0xdfdbdeba,
+       0x98f83945, 0xe7b6e28d, 0xb264635f, 0x9236df9c, 0x8b4fa1f2, 0xcf9cb6f8,
+       0xbd7687cd, 0xacf98112, 0x9c6f3b58, 0xd5b8ec01, 0xcfefe84a, 0x0befe829,
+       0x5d7a40ec, 0x7b8b0bad, 0xffc97b15, 0xec4dc72f, 0x5c920d37, 0xfae3ed34,
+       0xa2495fb9, 0x5f7856fc, 0x7b071b14, 0xdf97286a, 0xf5279fd2, 0xdca2dbe8,
+       0xb57bce2a, 0x0bfed55a, 0x59ef965d, 0x0adbff5c, 0x2df0575f, 0xf47bc923,
+       0x16bc63df, 0x9a1b36b4, 0x985e7836, 0x0bf3b09f, 0x858427e4, 0x650cf93e,
+       0x4663ac37, 0xc22f6f86, 0xbf8884e1, 0xbaf1109e, 0x7e3cc913, 0xf681ebf7,
+       0x78bef9fc, 0xbdf1109e, 0xb8ea6913, 0x11176c8e, 0x8b78e3fa, 0x88c1bfc5,
+       0xdfe67171, 0xf3c47a00, 0xf299b980, 0xf5f3e63e, 0xaa90bdf5, 0x3a7f473a,
+       0x5c33f2bb, 0xff6e3dff, 0x65af38db, 0x40f3ea1d, 0xd29ee27d, 0x7d3f413e,
+       0xe394fe56, 0xfdaece9e, 0x9bebbf0c, 0x1ccbefcb, 0x65904f28, 0x77dff53f,
+       0xd2e48455, 0x113bf940, 0xfb9b4e71, 0x3e1fa439, 0x1b4e9c51, 0xc39ed397,
+       0x17d5c6d4, 0x7113be48, 0x5e42f9f5, 0x7ee1e82d, 0xd61685fd, 0x17ea1436,
+       0x9c5264f5, 0x58392eb6, 0x07ab8aa4, 0x9f2a5f6d, 0x5f69d242, 0x1c40ef6e,
+       0x3898e1fa, 0x43888374, 0x75f5c836, 0x1ce7d7a9, 0xe7d37caa, 0xdd439d9b,
+       0xdad0e383, 0xd1e785bc, 0xf14630de, 0xc393ab70, 0x5f5f46ad, 0xf3d8fe8d,
+       0x7be518cb, 0xd2fafadf, 0xded7f456, 0x86dc51ba, 0x06efec29, 0xeb44e701,
+       0xcc75fb72, 0x278bf2a3, 0x7acc4f31, 0x54d20486, 0x63e8b265, 0xd68735f2,
+       0xcfbeab65, 0x6aa61e6d, 0x52f6bf9f, 0xb0417d55, 0x6c2e5554, 0x7ed542bf,
+       0xaa954744, 0x6bc1f23c, 0xd84bed54, 0x97f214b0, 0x9f47a6bd, 0x3424bb12,
+       0x7a3f5553, 0xefaa4dd7, 0x5bcd663f, 0x2ebb4227, 0x5d7efaab, 0x16f5f416,
+       0x0db77057, 0xe74c63ae, 0x2c3f5512, 0x8a9584ac, 0xa75b3de8, 0x92b9f993,
+       0xee3cbd65, 0x2af75970, 0xf5ab38d5, 0x6d4784f5, 0xf594b55c, 0xe1fca21f,
+       0xb30de290, 0x95d671c1, 0xbbe9dbdd, 0x323fd98b, 0xa1edf0ee, 0xcd96ae22,
+       0x6b5d39b2, 0x764ec2e9, 0x7a6df9e2, 0xb0961ff2, 0x122607a2, 0xe42c8cbc,
+       0xf3bf8c19, 0xcec5fb8c, 0xbe5076ef, 0x2fafcdd7, 0xb398f9a5, 0xf56174d4,
+       0x36c2e9a8, 0x0e174d4a, 0x520e9aaf, 0x40e9abc6, 0x9f54ef0b, 0x04582e9a,
+       0x780173fe, 0xd3534fa7, 0x9c15ffcd, 0x3be06bd7, 0xd5af80ee, 0xf9e3704e,
+       0x334ed261, 0x1b487b0b, 0xcef6902f, 0xdd85437d, 0x7191fa25, 0x48253680,
+       0xf881fffb, 0x1e70f8de, 0x6a5a4bde, 0xafdc6669, 0xb43adfe4, 0x925fae3c,
+       0x4bf227de, 0x12ceb84a, 0xe66ae1f6, 0xc47df927, 0xc749fdca, 0x3f92576b,
+       0x266b0569, 0xccf4fbfb, 0x18efc2a9, 0xcb1776a4, 0x07941807, 0x8b29f600,
+       0xc2aedbf1, 0x070bc02b, 0x51e953c3, 0x3f3c0ec2, 0x3ea47acb, 0x1a73f008,
+       0x3a17bb6a, 0x95e56254, 0xff657fb4, 0x8e527e12, 0xe8cd7ec9, 0xd03e41cf,
+       0x4a3635c8, 0xfb51c71b, 0x2c0d9071, 0x1d71b115, 0x0b8d8b0f, 0x5137fd69,
+       0x5bec0dbf, 0x5f990e31, 0x5ce78ad0, 0xe47d39c7, 0xbd672c1f, 0xf4bdf0f3,
+       0xe2ff90db, 0xbfe03612, 0x2ea7a848, 0x21be3712, 0x291e44a8, 0x962f1c18,
+       0xc30067f1, 0xc7c2ef87, 0x2e4f1513, 0x8be663ce, 0x4748dd23, 0xde99fd83,
+       0x3f412fa3, 0x3a7f5d7a, 0xc4c1abb6, 0xf27898ee, 0xd6844aab, 0xbbe66df3,
+       0x7adcf63b, 0x329ceb23, 0xa0c8fc8f, 0x987ef11f, 0x62efee2e, 0xd87b5add,
+       0x1d667e40, 0x7de904ac, 0xa3898b35, 0xa9eb4416, 0x965c1fac, 0xb3173e79,
+       0xc723fe23, 0x3ccb9c29, 0xf909893f, 0x899ff727, 0xdf3279f6, 0x296bde41,
+       0x39f47af3, 0xb2c74f82, 0xf03fd8b1, 0xfc873999, 0x4a97c00b, 0xe40e1f2c,
+       0x20fd5101, 0x5facd43e, 0x1de83be6, 0x5a37e465, 0x2fdebb1a, 0xaf690f00,
+       0x68c3975c, 0x63427fbd, 0xa485ed08, 0x61f3bf63, 0x2aaf5975, 0x04c9b33f,
+       0x27f41a1b, 0xeef22f3c, 0x7b76d53a, 0xde4e8e71, 0x22ffa963, 0x0f8c4af0,
+       0xf0272791, 0x2fed45f1, 0xe1272799, 0xe2239a58, 0x57b85133, 0xe5e3b8e4,
+       0x5dc00c0b, 0x2ee02f5d, 0xbcb672e1, 0x2f88a7f7, 0x0648e3bd, 0x74bafbc2,
+       0xa78895ff, 0x8f91a3dc, 0x5e745d14, 0x9433fa35, 0x5bbe7ae7, 0x1adfe74f,
+       0xaff2e2af, 0x893d05f1, 0x663d7388, 0xaea917ba, 0x83d93f7b, 0xc0405a67,
+       0xaa75fd82, 0x711c8605, 0x06823f01, 0x49f689de, 0x68373d72, 0xd5e64ee8,
+       0xab673ac0, 0x1c306be8, 0xbfa3c766, 0x0a717d1a, 0xc81e7f9e, 0xe7f43207,
+       0xa753dec5, 0xa0ba475d, 0x3fab4c87, 0x53fd7080, 0xec56ce6f, 0x73df46af,
+       0xb3e11b28, 0x51f3a146, 0x3cfccc93, 0x7e2c90ea, 0xa47c6d5e, 0x79e78bd9,
+       0x3df872b3, 0xf3bf235e, 0x4845e9c3, 0xc519cb77, 0x735bdfef, 0x6fde1a5b,
+       0xa919c721, 0x251ce8e8, 0xffbccf63, 0x4f8c32bd, 0x83bca7ce, 0x7f716605,
+       0x70b6edcf, 0x5f93c821, 0x4c7df899, 0x74cd61c6, 0x553fa4fe, 0x974dfe4f,
+       0xfa464d9e, 0xe797f393, 0x3c7be54e, 0xbbf98f17, 0xd6a4fdf2, 0xc2b771fe,
+       0x478e4273, 0x52698e75, 0x66b8ff75, 0x320f147b, 0xef11ae8f, 0x7afd056d,
+       0x2efd22ce, 0x8f5b7bea, 0xb1e97d89, 0xb8f70311, 0xe3e36238, 0xca5f568d,
+       0x717eb8e5, 0x9d5feb6f, 0x5a5494be, 0xd61efaaf, 0x5d6f2273, 0xa2449efe,
+       0xe5b65f7b, 0x97dee228, 0x4e4f77af, 0x996afca2, 0x8fa5af3f, 0x8d0f410c,
+       0xb86606a9, 0xfb73ce8c, 0xa5eed42f, 0x9ee3eb7f, 0xa3943ac3, 0xfc81f993,
+       0xe397bd9e, 0x2cbdffe7, 0xd3cd19d6, 0xdc79d08b, 0x17bffc81, 0xbf782f2a,
+       0xb7de2346, 0x99070319, 0xf788de1f, 0xd38b8e6d, 0xb1e7f42f, 0x9ddefc5f,
+       0x4fbe1c8c, 0xbc7cc46f, 0x5cf7d8f4, 0x71c744ce, 0x48bafc89, 0xcfe7f232,
+       0x5e74f5bb, 0xe9afe7fd, 0x3388eda6, 0x2e02d3ef, 0x7e0dba97, 0x1d1897cc,
+       0x2747f7e6, 0xbdcf276a, 0xda9ff3c8, 0x455575f9, 0x31fce216, 0x78de37df,
+       0xcaf80bef, 0x71a57779, 0x62be347c, 0x1a82f7e6, 0x57765e78, 0xc905645a,
+       0xcf1aa70b, 0xf1ca1f7f, 0x244d75dc, 0x4d61ce8f, 0x44857ee7, 0x0f4de0f4,
+       0x925ca1a4, 0x1855b8f7, 0x0c67159a, 0x1e8c5dbf, 0xabd770a2, 0xee183af0,
+       0xfd97aa26, 0xf9cc3c9e, 0xce61e4f6, 0x73ff72a7, 0xe53d41f2, 0xdb430053,
+       0x58b71f71, 0x8c93bbe8, 0x764e4fc7, 0x59dfb428, 0x2d6c6012, 0x3bc59dc8,
+       0xf8fb7357, 0xa86d71f1, 0xfe3df0aa, 0x2ce2c78e, 0xe786aec6, 0x389a0d92,
+       0x4947d8ba, 0xb36cba3d, 0x63adeeda, 0x7682ff9b, 0x4cd672d2, 0xfdc565fa,
+       0x76ebefea, 0x8e31fb5e, 0xa3f78da7, 0x94ed188f, 0x87d85cf4, 0x82b17fa0,
+       0xb87ea055, 0x4c4ff1f5, 0x891913f8, 0xc804e1f8, 0x5023e1db, 0x79e85aee,
+       0xcf49c5a6, 0xa1beb991, 0x8aa700b9, 0x2e5e40dc, 0xe2de75fa, 0x7f5f3af0,
+       0x3c0feb9e, 0xcb7a0c2c, 0x5279e7ac, 0x1e3c79e6, 0x87bc7dfe, 0x3662e000,
+       0x9f497b73, 0x6fccd772, 0x44432cd1, 0x9c479757, 0x3f49530b, 0xfe90b379,
+       0x9d4e4f5d, 0x3f77f086, 0xbae1f369, 0x4afa5536, 0xa9b11fd0, 0xb49b9f96,
+       0x3e3c7998, 0xfb09f3f4, 0xbc36d5d0, 0x9e154b73, 0xecf6719b, 0x6f0aa30d,
+       0xf285fdd7, 0xe6afda98, 0xba198679, 0x05a1dec8, 0xb6dcf1d1, 0xebc61650,
+       0x7df9a3dd, 0x657d2e30, 0xdce79709, 0xb0146bfe, 0xf73c53ef, 0xe0f979e2,
+       0xa18f20eb, 0x7e06f3df, 0xc652e3ae, 0xd1f32cf1, 0x3b58ec70, 0x2fc00cf7,
+       0x2e06f7f6, 0xc6c254ed, 0x8417ba64, 0xebf53be2, 0x50f319c3, 0xa0613d2f,
+       0x979c98f8, 0xaa4357eb, 0xf5260e30, 0xc9c53cd1, 0x8ec266fd, 0x1fe4cb9f,
+       0x11cda38f, 0xd85732f4, 0x1c6cf3ef, 0x37984bce, 0xc9bbbf0f, 0xc07592c2,
+       0x3baaf352, 0xab7d69cb, 0x2768a98d, 0x625078c8, 0xbfbe22fb, 0x0ea7f1ab,
+       0xe9580e7e, 0x4e4ec22f, 0x02e92fa1, 0x2b9f587c, 0x9f88b0f8, 0x99c36387,
+       0x8d8fe30f, 0xdfa48caf, 0xf12731c5, 0x27c83738, 0x738bde0b, 0xac36f510,
+       0x564be57b, 0xbc8a1f7e, 0xefc9d127, 0x999a6d3f, 0xf3e74a53, 0x7dd3f68e,
+       0x918ce716, 0x9063e23c, 0x67f3783b, 0xdf3da3db, 0xca39e032, 0xa0d3b06c,
+       0x7fe8f5dc, 0xc8b0f2f1, 0xf0ffbc0a, 0xf38f47bd, 0x8f91a5f2, 0xa3f1fcb0,
+       0xfbc2df7d, 0x234b1bc6, 0xd650f42b, 0x5e2ff63d, 0x20391b8f, 0x0cc794ac,
+       0xffd08233, 0x076154a9, 0xfe742379, 0x91c5f1b9, 0xeabf58ba, 0x9cb9733f,
+       0xede5653d, 0x45b0154e, 0xa3de1133, 0xa3ffb7e2, 0xb0f32f68, 0xf7e57ae5,
+       0x77fe2b2c, 0xf2e5ca3f, 0xb738a571, 0xdac6c93c, 0x179e3cad, 0x1c3c064c,
+       0xf14919e8, 0xd3723bc8, 0x8cee7db8, 0xb233bdd0, 0x11efed1f, 0x295771c8,
+       0xce8bf7fc, 0x57ffb919, 0xe5c8efd6, 0xd9c61f72, 0xf70ce340, 0x33bef3f1,
+       0x7f104a73, 0xc0833780, 0x8bdf819b, 0x0fcf9dbf, 0xe3dfc5fa, 0x0e303d01,
+       0x3e07f8fd, 0xd105f683, 0xe4e96b79, 0x564e8217, 0x6c38f2b6, 0xd1216a7f,
+       0xb89b24d3, 0xbd4ca4bf, 0x871e5d0e, 0x53733fdf, 0xf0073af9, 0x38d0a992,
+       0x398e02ad, 0x6399a291, 0xf7bafcbe, 0x3bad1ffe, 0xbc3e5f06, 0x3740e487,
+       0x9757a7bf, 0xf485f1c7, 0xdef6469c, 0xa77f5516, 0x1fbe69d6, 0xdc9ee8cf,
+       0xfa42b4c6, 0x1ee2fbfe, 0x1b3f7952, 0x9630577e, 0xbf68a9db, 0x5821fbca,
+       0x1b166af0, 0x07b81c57, 0x93dc53a2, 0xebceb03b, 0x9d3ac4ca, 0xd8ce9d62,
+       0xe0183ddf, 0x79fd23cf, 0xe7ee62b3, 0xe007ef93, 0x715fd03f, 0xc54fe8a9,
+       0x43faf1e7, 0x97844ebe, 0x78d37ebf, 0xc0d4f391, 0x9ace0073, 0x227849f9,
+       0xc577d37f, 0xf394ba6a, 0xee5738fc, 0x5dfc358f, 0x13c715f0, 0xdc36a4f7,
+       0x99abf3c1, 0x0dd74d47, 0xcc3a055d, 0x39df9037, 0x1e5a3370, 0xe665f7f5,
+       0x0e71fd89, 0xbf9049cb, 0xbe2f3438, 0x6bde909f, 0xa97d87f7, 0xd4c5f7f2,
+       0xb73e8a7e, 0x7187d7b7, 0xbcfcb3b5, 0xbf1a95ff, 0x9e95c60d, 0x8bbf47b1,
+       0x797517ea, 0xdf871e65, 0x7f53bf60, 0xccafce1e, 0xc7acf55c, 0x2c7c4b0b,
+       0xebca067b, 0xdbaa94b2, 0xaea3f7f0, 0x819dcbcc, 0x686cbcf2, 0x200527d5,
+       0xcbcaafcf, 0x55d1e5e3, 0xf2c30c9f, 0xfdbc7963, 0x28b3df24, 0x6f3059ef,
+       0x5109e4c6, 0x3ceae27b, 0x5f4dc10f, 0xda7ba3ad, 0x5f98ec06, 0x918ec999,
+       0x2cf44d70, 0xe39aeb33, 0xe6a705c5, 0x684bf80d, 0xff1e371f, 0x313cc1e9,
+       0x188fffb1, 0xbefffb54, 0xbb1e7e64, 0xa6ffe5ef, 0xf33328f3, 0x1e21d702,
+       0x16676c9a, 0xbd794016, 0xdb8a7ded, 0x43b03e29, 0x71e2afd0, 0x5f30f9b2,
+       0x3f26cce5, 0x956c4dda, 0xb82062d7, 0xde177f0a, 0x7bf00711, 0xee2795e9,
+       0xf187ca1c, 0x08263ce3, 0xcaf4d039, 0x718efe3f, 0x7653a6df, 0x13899a2f,
+       0x0dba1e7a, 0x3d09aeed, 0xeb83fc6f, 0x467e7e61, 0xfa027bce, 0xf8fde133,
+       0x7fcd336e, 0xcb25cf42, 0xbf95fdb1, 0x3a4429ed, 0xb858eab9, 0xdf42c515,
+       0xaa1cbfcb, 0x3ec3373a, 0x67de60be, 0x849b38c2, 0xf44d9fc7, 0x8f00973b,
+       0xcf8f0e46, 0x9ced3f28, 0x845b70fb, 0xf9f573ec, 0x29dfb024, 0x259e7c8e,
+       0x217e3179, 0xfd6bb9cf, 0x616b47a4, 0xaafef07d, 0x8c41987e, 0x53e93cfd,
+       0x6892080b, 0xaaa592b9, 0x2196d5ca, 0xce35f6aa, 0xd4fd5502, 0xf5544bac,
+       0xaa253dd3, 0x26a3b5f2, 0xef5fdaa8, 0x679554ad, 0x6aae9f8c, 0x55abeb5f,
+       0x9dc24b95, 0x5ee3f6aa, 0x1fd756eb, 0x43c47a61, 0x7eef51e9, 0xf71f967c,
+       0xe2b5bb91, 0x7c7ef344, 0x072bf84e, 0x7c4fd687, 0xfb9da7c5, 0x13f4bdf1,
+       0x491bcf6b, 0xbd6cf1bf, 0xef8a643d, 0x1432ce1f, 0xd005ef46, 0xa379f8eb,
+       0xc781a983, 0xbcf26f11, 0x13f424d1, 0x166a1203, 0x04f7e59d, 0xb47ee7cc,
+       0x941888a3, 0xe41d734f, 0x6c6a3c7f, 0x9e5dea7e, 0x728b9007, 0x39feaaef,
+       0xfa4f75aa, 0x775aa034, 0xc1a95b25, 0x72aa2dd3, 0x550ef38d, 0xeb59a9fb,
+       0x3dd3f554, 0xda78351b, 0xef5f2aa2, 0xa783487d, 0x3d3c1aed, 0xf497aaa1,
+       0x58fc23dd, 0x09ffa0af, 0xbd23139e, 0xab8788d5, 0x3e13f44f, 0x5476f7c6,
+       0x38ae9e23, 0x2af849da, 0x51abfb0b, 0xd6bc565c, 0x619f1fbc, 0x77e187d8,
+       0xe8b25afb, 0x43c5a079, 0x2d43ac7e, 0x5af9e8a3, 0xffde978b, 0x7a78cb57,
+       0x47c5bafe, 0x4cb4dfcf, 0x8b6f67a3, 0x2d9d9e9f, 0x99fed49d, 0x07ee6e96,
+       0x87b81f4b, 0x03fd1722, 0x469174e7, 0xfbbefc8c, 0xcfc91358, 0x73914973,
+       0x1acf5e58, 0x97be5e49, 0x872f88cf, 0xbdc91878, 0xeafbe57f, 0xcdfed1f3,
+       0x3e65efe3, 0x57cea746, 0xdff87682, 0xd7bceef3, 0xddd8cb90, 0xce59fceb,
+       0xdfc65e54, 0xd36421e1, 0x79dc43ef, 0xce0efe2f, 0x284aa853, 0x0ce77288,
+       0xdf89f72c, 0x77953c57, 0xf1608ce7, 0xfb9788d7, 0xffcbc506, 0x8da8748e,
+       0xc2753f97, 0xcebf40e3, 0x3a46cfe1, 0x85871e10, 0x4ac7cb7f, 0x127bf88c,
+       0x23128695, 0x1aa3d9ea, 0xc73e44bb, 0xcf3f2b99, 0xbdbae373, 0xf83e5237,
+       0x3dfa4635, 0xdf0a99b9, 0xc776caf7, 0xe83eb9f2, 0xfb4cdebb, 0xdf3a23a9,
+       0x3e8fe472, 0x8431ffa5, 0xbdfe5e73, 0x1cfaa7a4, 0xbf0879fd, 0xf01ffc9c,
+       0x31ffbbb2, 0x36531bc5, 0xe724f872, 0x53ed27ff, 0x64f841be, 0x4f81c7e7,
+       0xeb93be7e, 0x172fb0b1, 0x3e5900ed, 0xa06beb52, 0x6fa560f8, 0xb0e3ae04,
+       0xd7f9ccdf, 0x208d08ef, 0xfcaf90ff, 0xcf3f18c6, 0xa246f923, 0x7078599b,
+       0x379dfd10, 0x7ef143e9, 0x7c85ef77, 0x3a202fbe, 0x5ce67dc1, 0x8e0bed1b,
+       0x03bdf8e8, 0xf347f6da, 0x74e0bef9, 0x7f7dfb82, 0x755ee02f, 0xcf53c343,
+       0x6b7d7f41, 0x9f75d4ac, 0x63d9247f, 0x5d00cd7d, 0x13bee9a0, 0xbd7967cd,
+       0x42402bd9, 0xf879daf1, 0xaa7fa82f, 0xbdbfb6e7, 0x5fdfed0d, 0x0e92f363,
+       0xf04a5e71, 0x5e3449bb, 0xfb216e90, 0xdcccc169, 0xf38bd42a, 0xa16ffc44,
+       0x614190c3, 0xc9aa4340, 0xb32cfd09, 0x0401b497, 0xad570ad9, 0xa56a7f09,
+       0x3696e72e, 0xbe1aae7c, 0x013f84c5, 0xa7bc5f52, 0x06d8cd0d, 0x9272e160,
+       0x5b37917f, 0xd68b5e60, 0x3f7c3dea, 0xaea3cf27, 0x2bf952fe, 0x888f7e92,
+       0x0200233c, 0x20ff57ed, 0xfbbf2de0, 0xa2d78083, 0x185f117c, 0xae7cc6c3,
+       0xcd2d5f8e, 0x82ca38c7, 0xc4128b37, 0xc2f5d417, 0xb89dfc7e, 0xdf7b58b7,
+       0xddf71c88, 0x1fe76e7c, 0xa2650131, 0xd713793d, 0x7ce76303, 0xd61cbeb2,
+       0xa9c7b63f, 0x4584fca3, 0x1e21cf0d, 0x3c0b77ce, 0xf237591a, 0xc5c10dd3,
+       0x978e53ef, 0xc5ed9ce6, 0xd7b7a5f4, 0x2fab1d59, 0xeafe22cb, 0xbe397d58,
+       0xf51aa3bf, 0xe18fd4a2, 0x8f213a96, 0x1e8e499b, 0xe54b5968, 0x7a412d43,
+       0x2ed2d6be, 0xd50771e4, 0x41e5baff, 0x42438f21, 0xf7a2ef1e, 0xe8732d3d,
+       0x804b4af9, 0x07a5d79e, 0xc9ff2136, 0x4b2cecb8, 0x0f6cf280, 0x1866643e,
+       0x63df3b97, 0xe00c7ca6, 0x711ec788, 0x9991be61, 0xf36a55ce, 0x7e72b48e,
+       0x06ba1e80, 0x15b273dd, 0x17c81bc7, 0x3f317b42, 0x661d3d31, 0xa5ca071e,
+       0x5bfc7fa7, 0x3d874392, 0xd3da071e, 0x423fc8bf, 0xcfb0e2fa, 0xb94230e3,
+       0x1ca2c7f3, 0x50cc38f0, 0x36ff93de, 0x38f41f6f, 0xe67e50ac, 0xfaf36fc7,
+       0xf9e0a310, 0x07fc7f2f, 0x4c95f392, 0x51fc8039, 0x0c98296d, 0x75f402ea,
+       0x8be401e5, 0x278b59a9, 0xcf0c5f23, 0x4c7d10f7, 0x803bacf7, 0x6d476be5,
+       0x0e95e037, 0x06c97b3e, 0x55caaefc, 0x26efc06b, 0x01b2dce7, 0x7c329bbf,
+       0xbbf6218b, 0x367bc569, 0xef3af960, 0xa7da0376, 0x958e51c3, 0x6591fb47,
+       0xb4e52f59, 0xacbb8bcc, 0x60fa4fc7, 0xf49fb76c, 0xd54b8481, 0x31bbdaac,
+       0xadd4d59e, 0x55f7f138, 0x032966aa, 0x5b980149, 0x7ef788d8, 0x943ebc82,
+       0x1d65327f, 0x96135bf0, 0xbdf2a0af, 0xfd59beeb, 0x4ef91876, 0x11dfbf2b,
+       0x1efa8efc, 0x31dfe1f3, 0x2e5afbf1, 0xf1b8b841, 0x0762dbdc, 0x02ca4fdd,
+       0x2eb3b40e, 0x700f3d43, 0xfdf42718, 0x93acf152, 0x63becdef, 0xe61f3748,
+       0x60e5fd8b, 0xe0b1f0f9, 0x9339cd7f, 0x3e42f504, 0x467a949c, 0xc0d1bbdc,
+       0x7a0fc83a, 0x6d3abcb1, 0xcf36b8fe, 0x6b8be644, 0x59ea4af3, 0x507fef2f,
+       0xafcf385e, 0x2e17941e, 0x5c4955f7, 0x5941ce9e, 0x68d30133, 0x5ff870d5,
+       0x037f0120, 0x00008000, 0x00088b1f, 0x00000000, 0x3bd5ff00, 0xd554740b,
+       0x9dcefbb5, 0x9924c85f, 0x0420807c, 0xa2499f27, 0x924033e4, 0x90c82426,
+       0x4c1fc410, 0xf9481740, 0x90ff280c, 0x5636b044, 0x5634335d, 0xb51b6ac0,
+       0xdf6ad0a5, 0xabec4540, 0x63411495, 0xa4107425, 0xaa7547d0, 0x7679a820,
+       0xc8f80a40, 0xb8ab4067, 0xf7b78fa4, 0xe666f73e, 0xaa40124e, 0x0ac2f5ae,
+       0xff9ee73b, 0xce7deffe, 0xbd9ab4e9, 0xa70004ba, 0x15b66dc9, 0xfecc7403,
+       0x01d042eb, 0x5c0bf8fe, 0xfd9d00f9, 0x3eb1ebd5, 0xf419a10e, 0x98b00250,
+       0x9600d8ba, 0x3208cf80, 0x78e19f42, 0x73fc0cd0, 0x59977f11, 0xdfa9190e,
+       0xdfb5e7b2, 0x60103dc1, 0x042d4008, 0xb009908d, 0x1eaa25bc, 0x475a4642,
+       0xf7f46b7d, 0x5a628066, 0xad386847, 0x3ad75fe3, 0x50e1b1af, 0x40e373d5,
+       0xb738014e, 0xa533e4d3, 0x1f5fff73, 0x9df2f2c6, 0x36a3eb26, 0x2a3e7f82,
+       0x5b342015, 0x9dc232fc, 0x37a0199e, 0xb8f2ec00, 0x8b3dfa19, 0x78076f41,
+       0xe5c0d3dd, 0x2e469ebd, 0x1978f3ef, 0x61acf7ee, 0x334f17f8, 0xacf41fd7,
+       0x1e9bf2e7, 0xe780c31f, 0x7d3efe79, 0x6ee1f2ee, 0xddbf4e0b, 0x55cc11d0,
+       0x70019dd6, 0x90b3b277, 0x5d5de9d6, 0x04727891, 0x5e2fdef0, 0xc84ae58b,
+       0x86f4b06d, 0x1acb06dd, 0x5ecb8129, 0xbbc3ee23, 0x84d7c62b, 0xa8737afb,
+       0xa3d10c7b, 0x99f432bb, 0x290df10e, 0x94c3c641, 0xf4b1ee41, 0xd0e2325d,
+       0x37ab3449, 0x5a77f09b, 0xac117de7, 0xecfb3700, 0xd9ce3d2e, 0xd7558f15,
+       0xb2c78c00, 0xf1f9e717, 0xad155740, 0x4683720b, 0xfd22e71a, 0x25f1c38c,
+       0xebc2d198, 0x30879840, 0x6c5bc046, 0x37bfe312, 0x9c7031c4, 0xf300b4ee,
+       0x2fc6f741, 0x7af2db86, 0x2f1a3de3, 0x5aa3e1fd, 0x8b7a08ae, 0xb1a59e90,
+       0x7756130e, 0x4697e048, 0xa83f1c21, 0x8e9c7012, 0xe09ea334, 0x82b210d8,
+       0x8efe1e3a, 0x198c8f3b, 0x21e32fc1, 0x32ae5351, 0xafb4d10f, 0xea6ba6b6,
+       0x79b2d23b, 0xaf531bfc, 0x18ebb4d3, 0xf3166a52, 0xb0449c4e, 0x3f5ee8d5,
+       0x2a12e90f, 0x61363933, 0xf1315bfd, 0x30085005, 0x137e3639, 0x8662b7c1,
+       0xe4dda8fb, 0x005217e3, 0xf65939f7, 0x54402a0f, 0xa91b64dd, 0xacc0f71d,
+       0xbbb61b4a, 0xbb4cb725, 0xd026090e, 0x8c736f7e, 0x529f7cd7, 0xbfa6937a,
+       0x22481ccb, 0x6b38d6b4, 0x1b6bdf34, 0x327d033f, 0x05e37940, 0x18068fd0,
+       0x8cd16fe9, 0xab7f7a33, 0x43c8fda6, 0x8f589320, 0x43d8ea3a, 0x5384f8b0,
+       0x39295626, 0x6087b0dd, 0xe181a7d9, 0x82700fb4, 0xf9083acd, 0xf07b914c,
+       0xf2c7a04a, 0x1a5ca558, 0x102535f2, 0xae402e1d, 0x0e57e91e, 0x36321c03,
+       0xebff4a96, 0xb183e20b, 0xe640040a, 0x62157ec0, 0x67473009, 0x483319f1,
+       0xa37ca0ad, 0x7254783e, 0xce11eaa4, 0x54258392, 0x016082ee, 0xd2e75941,
+       0x844d7f13, 0x36546186, 0xe0953b81, 0x67ee891b, 0xa53bff88, 0x5c589360,
+       0xb9f89928, 0xcdef07fa, 0x42f58079, 0xeb84c38c, 0x47eb7dfb, 0x7fad6903,
+       0xf9fc0c0f, 0xbf30b66b, 0x633f5bd7, 0xdae5a93c, 0x7f184fc6, 0x1563b96a,
+       0x92e175cc, 0xb7300d9b, 0xffed6106, 0x2c6b73ca, 0x0d60bfa4, 0x5e16a9d1,
+       0x0bc8ae37, 0xb39687b7, 0x442ef83d, 0x6b4357fd, 0xbda5431a, 0xabf6272e,
+       0x44390831, 0x6271a88e, 0xa5189abf, 0xc5d67dec, 0x7b4a81e5, 0x6e1ab0ef,
+       0xa7d6a69f, 0x7576f689, 0x78c5fbbc, 0x32b2d443, 0xf96a75de, 0x5d3fd10e,
+       0xa2fbef9d, 0x5fea271c, 0x78d595f7, 0x7efac2f3, 0x9fd24dbf, 0x848f75a4,
+       0xd6651791, 0x3f4907ff, 0x17074874, 0xdb7bfd32, 0x62bd6d07, 0x56fee61f,
+       0x090b1af6, 0xfec537ff, 0x45b8e495, 0xdae39202, 0x1f4e0d07, 0xa9267fce,
+       0x25a560a5, 0xf733af8c, 0xaabafc09, 0xb6329ce2, 0xce72fe5f, 0x391be226,
+       0xf9a0d0ee, 0x50d8fdf8, 0x6a97eb1d, 0xa204e2d9, 0xcf4263e7, 0xe1a3fdab,
+       0x34d7c6c2, 0x2f55ebf4, 0xcc1f3c4b, 0xaf9c5fc0, 0x1bc1f1f3, 0x651c251f,
+       0x3709b205, 0x0d7a43ff, 0xba841be7, 0xdf7f14b4, 0x466abd40, 0x8264a73a,
+       0x53ed8753, 0x4c7d415e, 0x60113d34, 0x95f0bbfd, 0x8284bf18, 0x1ec37cb2,
+       0x65f377b6, 0x9fc46a94, 0x221dc727, 0x0b8aecbe, 0x2e9f1364, 0xebc5dc6c,
+       0x855bb34a, 0xf286b31d, 0xbe79f122, 0x5c2ffe37, 0xbe17ff06, 0x04e3fc4d,
+       0xeb7f49c7, 0x7d68c850, 0x797b2d4b, 0xef954bbf, 0xc3d24fac, 0xf72cb8ed,
+       0x39c5772e, 0x1c3e1386, 0xeb8e9d0a, 0xbe0a256c, 0x1c93a506, 0x2764082f,
+       0x0fe1d962, 0x3db3720c, 0x112c5838, 0x80e21bdd, 0x0525dee8, 0x41f48e0a,
+       0x0b4f16ff, 0x9e6de1db, 0xcbdf8656, 0x8ab3c604, 0x5ef4acaf, 0xf9a5cdf8,
+       0x6d5f812e, 0xdf8c37fd, 0xd1a0fac1, 0x8eeafd81, 0x12538f02, 0x08846e38,
+       0x5d2932bd, 0xab4265f0, 0x72d5f5c4, 0x5350425e, 0x94e8271f, 0x7c491ce5,
+       0xc1ea7cba, 0xb0a5478a, 0x858b8c3c, 0xe6249896, 0xd7c2876b, 0x956be20e,
+       0x471f917f, 0x7bcf11eb, 0x3ebf602f, 0x5fe61bf0, 0x3c5479e0, 0xe6bc214d,
+       0xed3af06a, 0xf69d7832, 0xfb75e26d, 0xec841c00, 0xdf188ef5, 0x78def4a6,
+       0xf85d2fbe, 0x57be2a31, 0xabcf065f, 0xaf3c21bf, 0xb8f1b74e, 0xcfeef8d1,
+       0x47d3451e, 0x721f775d, 0x72357c5a, 0xd153383a, 0x33f47a53, 0xfdd37bf3,
+       0xe9e5bd27, 0xeb4bf4c9, 0x37fd6d2b, 0xbc68f74c, 0x095ac345, 0x3e962d5c,
+       0x4eba48f4, 0xc21bfbec, 0x0cd0d8e3, 0xee363f8d, 0x8fe35bbc, 0x4a88c78d,
+       0xa3deb7eb, 0xef5b5729, 0x31bfb4d7, 0xfea69575, 0x4d5adb26, 0x4fb92dfd,
+       0x39b7ca68, 0x95f94436, 0x35f5351b, 0xea6adfce, 0xd6ec3767, 0x3c6dcfd4,
+       0xe79fa9a0, 0xaca69bfd, 0x07a771e2, 0xe5da3e38, 0xd2f12b31, 0xc1158624,
+       0xc1891540, 0xec43a70d, 0x9a06965f, 0x3925d8ab, 0x67fec2da, 0x4555df91,
+       0xfec95461, 0xfd043d86, 0x9f12ab1e, 0xebdc32a5, 0xdf7eb1b1, 0xb865c9e7,
+       0xe250e3df, 0x078652b3, 0x2e254e3d, 0xb68c3173, 0xf74c9e0b, 0xc7a40c80,
+       0xe91697e4, 0xe5301700, 0x3bcaff8f, 0x3a0f8b42, 0xaed71474, 0x49f2f654,
+       0x3e1fe7c5, 0x49f5fc80, 0xe541c983, 0x1b1fddf6, 0xf9bdf96c, 0x1979f665,
+       0x367c119c, 0x066ff1bb, 0x2366b3f2, 0x21f4b7cb, 0x821909a7, 0x00fdc93f,
+       0xcc330bd4, 0x7d414860, 0xe4866330, 0xeefe0268, 0x7e862485, 0xd64fd637,
+       0xe584df83, 0x6fde8b1a, 0xb9a5e78a, 0xdf3fe8cc, 0x26099621, 0x1ea9783d,
+       0x2e399252, 0xda3e9dbf, 0x329c1e50, 0xefdf80dc, 0xfb1bbf20, 0x18b4b4cd,
+       0xb9deeec8, 0x0f9d87ff, 0xec3c3d60, 0x1e78e62d, 0x7f495826, 0x75f7de4b,
+       0x2ff44717, 0x384d482f, 0x09d7c119, 0x8f14c324, 0x93808e4a, 0x0c7bd4e2,
+       0xdeb6cd8e, 0xe4523efd, 0xb12cb269, 0xd57a16ff, 0x8524dbe4, 0xb7f713e5,
+       0xacfb84df, 0x7da01e27, 0x39fc1836, 0xef57e405, 0xbebabf66, 0xd1015574,
+       0x74827ea9, 0x8e1054cc, 0x3f1bea6f, 0x5a3dbf65, 0xcbc3473f, 0x808e3fc5,
+       0x43eff995, 0x17e67ecf, 0xf76a0e35, 0x145cb9f8, 0xc6455574, 0xfdc6b343,
+       0xa738a658, 0xef1153ec, 0x1e705f94, 0x3bee0ef9, 0x5bfc09e8, 0x8f3504f9,
+       0xa215e6a0, 0x1eaa14f3, 0x757f7399, 0x5bf71b82, 0xfa156191, 0x8d3e3cde,
+       0x5017a8e9, 0x1995b7d5, 0xc4f3f4bd, 0x67eb4b8c, 0xac37fd6d, 0xff94af9f,
+       0x5d85536b, 0xa3fbe68d, 0x6818b753, 0x477f2a9d, 0xea2cfff3, 0xaacff383,
+       0xd45e7c97, 0x351633d3, 0xaba5ca1b, 0x96a5f7e7, 0x8e0e2213, 0xd95f0bb6,
+       0x8e98d81e, 0xf1cc9572, 0xc7be4985, 0x950f7941, 0xf467f70e, 0xca1ea7f2,
+       0xa53fb4b8, 0xe3d6ffad, 0xae731380, 0xc6822ece, 0x7bdf589f, 0x665f4fdf,
+       0x9b7f4fdf, 0xd4363efb, 0x80f970c6, 0x4eb239f6, 0xc4f88bd4, 0xdfe43a02,
+       0x71cc9f6e, 0xe6f4e2e9, 0xa0678a78, 0xfa4f1434, 0x0c9b496e, 0xde821fe4,
+       0xfc821fa9, 0xcfe148b9, 0x4bbff00e, 0x8f0758fc, 0xcb84a59d, 0xb7458aa2,
+       0xfc5b9e92, 0x278c21b4, 0xf9c9dffe, 0xdfa53a92, 0x2376cb52, 0xb3e977ed,
+       0x38ea76da, 0xf3682fb5, 0x371575a6, 0x1bb6029e, 0xd5f3ce01, 0xdbf6d76d,
+       0x7297119b, 0x71659632, 0x72fde114, 0xec8bb4fa, 0x7ca221ba, 0x85f9c3c1,
+       0x7fdf1983, 0xa6115bc2, 0xf5bddbcf, 0xd197bbcf, 0x9b7eef3f, 0x8f9a27fa,
+       0x8d67b8e5, 0xcaafcf44, 0xceec5bc7, 0x556eb433, 0x9de8f73f, 0x77ac4cd7,
+       0x226d8bba, 0xefcf7a2f, 0x4f89e29b, 0xb10700be, 0x3f257cc3, 0x8fcd5f3a,
+       0x47e6d1ae, 0x39f875c7, 0x84f6370f, 0xe90e29af, 0xe5eede5e, 0x21d95d3c,
+       0xcb059377, 0x94e839df, 0xb91a3fc9, 0xbad325d7, 0xf546ff55, 0x2c7ac277,
+       0xe71df58b, 0x5caf3359, 0x5176a9df, 0x76d187b5, 0x5cd434b0, 0xcc6ff645,
+       0x043d96f9, 0x7a3caebf, 0x10bbddb4, 0x9744f427, 0x847c5fc1, 0x63578cfc,
+       0xf7a19b1c, 0x853233fa, 0x3bcd319f, 0x47f2c0cf, 0x36f287c2, 0x5b9b9155,
+       0x9919dd93, 0xc534ce38, 0x4ecce85e, 0x6ad1d903, 0xd3e7e3b9, 0x3202af89,
+       0x7def09e7, 0x7f179de8, 0x7e7cbb65, 0x09fadea1, 0xc5fd1ffb, 0x703af519,
+       0xaa317c53, 0xfc9a36ca, 0x28db8a18, 0x11e6a86f, 0xb02fdba3, 0x72651657,
+       0xe022ab9e, 0x17acf5a4, 0x5e8fe9eb, 0x35678df5, 0xe6fecb79, 0xb62b6faf,
+       0x8f908fce, 0xc4f665ef, 0xe693d689, 0x94afbd30, 0xc5bffe2f, 0xf065932f,
+       0xf367684a, 0x7ff09f25, 0xb3c1f841, 0x0e70c020, 0xc1ba1884, 0xf351e7ca,
+       0x6ef0c1c1, 0x9b3c3170, 0x49925ee5, 0x3421ae7e, 0xf3aaf888, 0x88f32fe5,
+       0x286f3a6f, 0xaf832e6f, 0xda293cef, 0x691eebff, 0x77bbf9e3, 0xf898797c,
+       0xc321fbb3, 0xbb8de915, 0xd10f9d93, 0x57cfa37a, 0xf32f1cde, 0xaee40e39,
+       0xb1a8b961, 0x61303e8a, 0x3639b720, 0x27e59d34, 0x6f0737ac, 0x3ce6f554,
+       0x4c7f97ec, 0x960d7ac7, 0x363b3e48, 0x58ea0d6d, 0xa417f2c4, 0x6f2a64fb,
+       0xcbf9f517, 0x96127d13, 0x4462cbf3, 0x3e893dfd, 0x2878a748, 0x173972c8,
+       0x3ce1f580, 0x2ef17a10, 0x313ef270, 0xb090c832, 0xe69d82ff, 0x858f9c51,
+       0xffe91660, 0xfaa38a02, 0xcbdfd388, 0x30bc7a14, 0xc2fbe843, 0xe45e6d4a,
+       0x107d143f, 0x92fcaf6f, 0x72c861f0, 0x261608fa, 0xaa7d1e05, 0x3a41f288,
+       0x75f284d8, 0x3e7eecaa, 0x15fb54df, 0x53372bdb, 0x7012adbb, 0x336de2bc,
+       0x738b36f9, 0xe79141c5, 0xaab36764, 0xb6ed477e, 0x7f4c7e29, 0x1c7ec578,
+       0x2b96f7f7, 0xc53f58af, 0xc79f9c6e, 0x2f3ca50f, 0x7e64f797, 0x85b0f350,
+       0xe4bc10cf, 0xdddb1727, 0x143f493b, 0xb42c011a, 0x1c4467fe, 0x9c30d005,
+       0x7e8ba3f2, 0x9f91d26d, 0x639a1ef1, 0x00f801c8, 0xff826ee3, 0xc133f18d,
+       0x4cfc63bf, 0xcfc618f0, 0xf8c23f04, 0xf382e099, 0x42283123, 0x0f39647a,
+       0xe7173e0b, 0x7debd17d, 0x3ab7c553, 0xe7919b7f, 0x19bbb78f, 0x7ef43dbf,
+       0x0e747c15, 0x743135b3, 0xf825d24d, 0x73edbbad, 0x0fed2f3e, 0x6439ea2f,
+       0x655efd74, 0xf5db051d, 0x5a0bff6c, 0x230bf183, 0x69947dda, 0xefe7ba64,
+       0xe34f1138, 0xf07b5977, 0xcb7094eb, 0xfca27593, 0xc659e651, 0xf9ddbc6f,
+       0xe515e125, 0xa3ed14fc, 0x279df5a0, 0x7c788bcb, 0x75a364ab, 0xdc71d684,
+       0x688fb510, 0xdafba83c, 0x9478189a, 0x91dd6ffa, 0xbd413b41, 0x886e4203,
+       0xf6bea48f, 0x3bd78abb, 0xb22a14c5, 0x5ca67ae2, 0xc2fa1b94, 0x3c7dbc7f,
+       0xca9d79e3, 0xb879ea6f, 0xdd2a5fc2, 0xa3be56ae, 0x8d7203c7, 0x415cefd0,
+       0x7646d4ba, 0xf93c42e9, 0x559e7c85, 0xf59ef246, 0xbbd3ed16, 0x8dbb065f,
+       0x7f2358f9, 0x9d0a5905, 0x66df9814, 0xb6bd1174, 0xbacc9db6, 0xc9f4c2db,
+       0x87ed805a, 0x7935d967, 0x2fb2fccf, 0x0a54f97e, 0x54d2b7b7, 0x6ac6c277,
+       0x5dff8e2b, 0x6837eef3, 0xc7adb34b, 0x3cb113aa, 0x47da5537, 0x7d2d9e70,
+       0x968d9262, 0xdff5e3eb, 0x1f7e3b95, 0x8eadd489, 0xc6e7f61a, 0xb0899293,
+       0x58e6550f, 0x29ec6c3a, 0x35935b57, 0x87531be5, 0x64dfda6a, 0xdfd4d4cb,
+       0x53423b92, 0xab7bceaf, 0x5da6b463, 0x83285261, 0x07dc3ae2, 0x966c05cb,
+       0xf689767d, 0x11e6e87d, 0xdcfc9e58, 0x53720e1d, 0x93f52ab6, 0x88f955b7,
+       0x4f88dd1e, 0xa7543a23, 0x7baed74b, 0x8a8b068a, 0x7edb6a1b, 0xbb69cfb3,
+       0x9fa1b88a, 0x88196178, 0xe2fefb73, 0x0178e886, 0xa493e7f5, 0xbe5f0b3f,
+       0xe384dadd, 0xe2fb2d6e, 0xf3ee1b1a, 0x238c2cb6, 0x7128dec8, 0xd3fc7f44,
+       0x4d922723, 0x1901cff0, 0x3fc1f736, 0xf8543f00, 0x6fc9c051, 0xf7933fa3,
+       0x3fdbf5d5, 0xfe71bf48, 0x8dc8abc0, 0x7df2a302, 0x5bc74685, 0xf53f292b,
+       0x5ce81957, 0x3ae02e1f, 0xfd217eb0, 0x1ef9872d, 0xa3f8deee, 0xddfc2921,
+       0x9d69ae4b, 0x935bff92, 0xb555f8a5, 0xa4347fbb, 0xf70f5c28, 0x87b4d31e,
+       0x3447a507, 0xb5d387e5, 0x3fc6c7e5, 0x3fbfd912, 0xfae16cbf, 0xca374679,
+       0x499fc2e9, 0xfa1f5f4e, 0x293d67a2, 0x5b687e8a, 0xe4f6fac4, 0x5b4625ee,
+       0x75f6ef5c, 0x2de51e38, 0x6f63f617, 0xa7753d55, 0xd57d0d0c, 0x73e753af,
+       0xbdf3bd7c, 0xfb27b887, 0xd8457de6, 0xdc12f7e1, 0xd93e48c6, 0x6fce2598,
+       0xf13c373a, 0x9e7467d0, 0xaf88aafb, 0xfd85133a, 0x4a7ed828, 0x3a3b23a7,
+       0x8157f040, 0xbb23a835, 0xd638bdd4, 0xf567280b, 0xbabce24b, 0x4223f242,
+       0x55919aef, 0xccecfb7e, 0x9fc8cd27, 0x1a74ebef, 0xc14ddcbb, 0x64779616,
+       0x764a9ccd, 0x3dc4f203, 0x9f6bafa4, 0xd840b23b, 0x37a14ad7, 0x29ff10e6,
+       0x65500b76, 0x7a08ffd5, 0x19e918ec, 0xbb950bc2, 0xf6fd9d9f, 0x3fcfc8cf,
+       0xe506f420, 0x7ecbbe15, 0xcda2d381, 0x9cb0b437, 0xc8b6dfe3, 0xac575bfb,
+       0x1b36f63f, 0x1ea35f2d, 0x9b4b2779, 0x5f43e877, 0xd20b7dbc, 0x9955feb3,
+       0xdb9d01ef, 0x08804f69, 0xc78d11fd, 0xcb32f5fa, 0xdaee5ab9, 0xb9224f29,
+       0x3562fba0, 0x0df1bdf9, 0x2bff214e, 0x15be62ac, 0x4a9f3f63, 0x9b457a76,
+       0xe9725c5e, 0x32359e6f, 0xd9e622d8, 0x98b4cbba, 0xfeba9aec, 0x4fa2ab6e,
+       0x3499feda, 0x55c04f3e, 0xf457d87d, 0xe4290c0b, 0x1c48d417, 0x1b6e1ecf,
+       0x3a78495c, 0x36df812c, 0xddb8878a, 0x269beb8c, 0x16efa386, 0x6a428bca,
+       0x51e69eae, 0x9e355ae3, 0x0eeda3bd, 0xefb1f93b, 0x187f9f6e, 0x7b460729,
+       0x1d37cf26, 0x1f77ecbc, 0x51a5744e, 0x72b2649e, 0x6270e1ff, 0xedfc83a8,
+       0x256363c3, 0xe380cfba, 0xabe34c3f, 0x706c3afb, 0xbef035a5, 0xf3a97c94,
+       0xec62f97a, 0xaa89c795, 0x1f96ad9e, 0x9d0b7f1c, 0x2b02cfdf, 0x6453b3c5,
+       0x9fc357e1, 0x7aab3c84, 0x240a5eb5, 0x66cf3ad1, 0x53b54d4d, 0x27f1a53e,
+       0x59b7de4a, 0x4aefef73, 0x389eeafd, 0xf98979fa, 0xe221cea7, 0x338aba8d,
+       0xf38e9f3f, 0x4fbc61d7, 0xd6fcddfe, 0x7f0947dd, 0x4f7df1d1, 0xe66ff57c,
+       0x67c77b7b, 0x62f651ae, 0x727c33ca, 0x8ef43a78, 0x02e27ad3, 0x1cdcbfd5,
+       0xa8d6e7cb, 0x287c8558, 0xaef1fafc, 0xb12b23ec, 0x18bfe3fe, 0x8cf75d98,
+       0xfdd745fd, 0x7377be58, 0xe3f9e32c, 0x1d92f024, 0x8e5378f9, 0x160d8bcf,
+       0x64ed42e9, 0x1c5b60df, 0x7a9cd39f, 0x2f77e726, 0x77f27e50, 0x4843f676,
+       0xc2e86c7e, 0x46fba29c, 0x21a5fdf4, 0x62dc0fdc, 0x5c8a85de, 0x7ff25bca,
+       0x5bf5415a, 0xa13f3992, 0x33f4efd2, 0xd60a4e31, 0x02fe09fe, 0x19deb22b,
+       0xee927bc9, 0xbdd32e29, 0x7c84a1f0, 0x3dc035d9, 0xf4bae88d, 0xb7787f97,
+       0xb553f71c, 0x945fb6e5, 0xbc96fae1, 0x9c681033, 0xf6fb5d30, 0xccedce1b,
+       0xe0aff214, 0x31f3d967, 0xfa1113be, 0xa24b7964, 0x3adf5ca6, 0x422277c4,
+       0x81032d0f, 0xf895a863, 0x9156a09c, 0xfb9338ab, 0x72d75a4e, 0xf4ca8fba,
+       0x474ff713, 0xe11579d1, 0xe31371ff, 0xeecf9a3f, 0xb2f88bb1, 0x24f3cd56,
+       0xe4953983, 0xd7f02dd6, 0x26ce78fd, 0xdad6c78a, 0xcfb95493, 0xc91f9a9e,
+       0xaf75ed9f, 0x24c79e71, 0xf4c639ee, 0x90ffae7d, 0x2fdb913d, 0xc9aa7f34,
+       0x7e35d533, 0xd4ffc9a1, 0x01fb01e5, 0xa36c9aa3, 0x52b841ef, 0x34cccba1,
+       0x6df89797, 0x2f13cb69, 0x3e7c641f, 0x34fbdf7d, 0xd30b7eef, 0xf12a0e0f,
+       0xb5bc5458, 0x91567cd0, 0xff1a8dbf, 0x2386e4fc, 0x38ff9405, 0x014463b9,
+       0xcbe769e5, 0x4abf9381, 0x1f4e7be7, 0xdb70803e, 0x2f39b7fe, 0x5edebd1e,
+       0xa12418f7, 0x1f696a87, 0xc7ff74c9, 0x72ceceb5, 0xf1c3f42e, 0x7f19f347,
+       0xfbba3e6a, 0x41e3bee3, 0xf8ea9d75, 0xf1d4faea, 0xdacf76d5, 0x69d21c45,
+       0xfd90140c, 0x9873a22f, 0xc6757d88, 0x2d120a07, 0xda2addf4, 0x82396125,
+       0xf3ddfedf, 0xa9f3e8aa, 0x2559739e, 0xb754751f, 0xe4467bea, 0xa7968ebf,
+       0xbd48ee0c, 0xa9cf15fb, 0xf7aaf5d4, 0x16ad3b69, 0xb0de6ff6, 0x692be72b,
+       0xb0ed4690, 0xff27e1de, 0x41c99b7b, 0xe4d3bc7e, 0x5072403a, 0xfdf3f46b,
+       0xd39fb535, 0xd1efe6e4, 0x44eef979, 0xe53dd023, 0xf9ca81ee, 0xf5813fef,
+       0xdba1c50a, 0xba558f08, 0xb0966d86, 0x67f5543e, 0x9efc08d1, 0xf546f747,
+       0xf9013f61, 0xdb50a8a6, 0x6d1fbc3e, 0xa0b67179, 0xaeb25163, 0x4bf938cf,
+       0xd04dce85, 0x16790b22, 0xc15cb476, 0x8e48ee3b, 0x14ea6bf4, 0x6f1ddf3d,
+       0x6ec1d2f6, 0x4f714ef9, 0xdfef5cb5, 0x00b5104d, 0x95d12634, 0xaf18bf49,
+       0xc9cfab55, 0xbb62cc86, 0xf2ed823c, 0x8fdc8518, 0x9f7c0d48, 0x35af7c35,
+       0x01bc1320, 0x609d0c42, 0x324413d5, 0x2e009c30, 0x81a11386, 0x666824e1,
+       0x30b43378, 0x0c0215bc, 0x137f7ae1, 0xd0783db0, 0x4dd3feca, 0x9764748b,
+       0xedf7a68b, 0x16cf0f97, 0x7c7faa7a, 0xb92f96a0, 0x544c7c7a, 0x8bf6e1ee,
+       0xccb96197, 0x4c5e2af7, 0x2fd89fc4, 0x04a97c06, 0xc79042c7, 0x9c8c4719,
+       0x8dbaf149, 0x8156f9ef, 0x57d5cb93, 0xa0d28f88, 0xebceef5b, 0x7d552f03,
+       0x828e49f3, 0x81b25797, 0xd7a545f9, 0x17a16c9c, 0x7c61ba54, 0xa0f64a9f,
+       0x38613d37, 0xb628b3ad, 0xaa1b13f2, 0x21ecea8c, 0x6fa8f4d3, 0xae57468b,
+       0xfd321524, 0xd1a7ebb9, 0xf2a2fbbd, 0xa8e897ca, 0x3ceccefe, 0x1cac2e51,
+       0x17a0706d, 0x9b4fe52a, 0x72b76580, 0x468cdc7f, 0xc98dee80, 0xd85ce299,
+       0x3723dcad, 0xe8abe9c9, 0x01e998be, 0x8ee37d60, 0x5fb00801, 0xf246dc8b,
+       0xf9f613e2, 0x5fa0ab5e, 0x5c7bac71, 0xbbdd3176, 0x90dbc7f7, 0xaaaef70e,
+       0xdaf7cc1e, 0x63fc628c, 0x5e236d03, 0x4c997c43, 0xbaab5ee2, 0xc6f7ac5f,
+       0xd9283960, 0x87a63656, 0xe3aea5d7, 0x7c9de60a, 0x1b3f79a9, 0xf5469ee6,
+       0x5c707360, 0xefb15431, 0x3b95b6db, 0x875c2470, 0x8c11d795, 0x88d95ecb,
+       0x5cd29355, 0x777da873, 0x39c3e09c, 0xfee2a744, 0xe76cdae1, 0xbe3eecac,
+       0xfcfaaf77, 0xa5e93f65, 0x7042e07f, 0xeed9159c, 0xbd5da8bb, 0x347c382e,
+       0xb187efd2, 0x6f891a1f, 0x9096be54, 0x0f10b398, 0x19f04e4d, 0xac2a5e59,
+       0x6659fe3d, 0x17ba2e58, 0x9f8878e0, 0x0aab9722, 0x992845dd, 0x6087b0d1,
+       0x0ab9bba9, 0x869e686b, 0xbd4fdc6c, 0x7c485a1c, 0x8ef895d2, 0xb72c1ff1,
+       0x2a7f04c3, 0xd76dacfa, 0x8a860781, 0xe4220ba2, 0x17d77eb2, 0x74807d9f,
+       0x71673faf, 0x9df2f350, 0x7c52561b, 0x7a23caa0, 0xa37d1a87, 0x5698e7ca,
+       0x961c1f13, 0x016ebcef, 0x4efb1fb5, 0xede9267b, 0x26c1ed71, 0xdbbb9f72,
+       0x72150c8e, 0x9ff5faa2, 0x5f63574b, 0x3f91994e, 0x37f9c412, 0xc43b4dc7,
+       0x250af7f9, 0x2f6549df, 0xa1c457ef, 0xfcb9bc6a, 0x6f7c1bc0, 0xd2f18718,
+       0xeb28977e, 0x5df4fc5f, 0x459f12b7, 0xe35223bf, 0xdda57ad0, 0x23df76b2,
+       0x77e88fb4, 0x8714f545, 0xaefff416, 0x2ae9fea8, 0xdfa3438e, 0xad9b3d15,
+       0xbb14ade4, 0xb9ff8a08, 0xfb436948, 0x685c70b3, 0x6f7099f4, 0xe9599e2b,
+       0xcd3952b0, 0xdc3d60e2, 0xdb2201b0, 0xccc9d3c3, 0x2f1caa2b, 0x5fb12359,
+       0xf0b3e2ad, 0xd6939339, 0x60dcf851, 0xcfd197f6, 0x95d1f717, 0x19bd223c,
+       0x5b0577a0, 0x74194313, 0x5b6b74bf, 0xf0fc83ae, 0xf09c7a3f, 0x3ebc2191,
+       0x96a80e35, 0x77a2a85f, 0xc6eee742, 0xeef88af8, 0xcc9a6fc0, 0x96b15e58,
+       0x2a50ff5e, 0xfc813738, 0x32fde2a9, 0xf01c68f8, 0x7941553d, 0xbe4201df,
+       0xb03aa94d, 0xc623e045, 0x7d6c0036, 0x0a4c01e4, 0x937362fd, 0x8e71f534,
+       0x13fd346b, 0xf534334a, 0x5de2314d, 0x819d780c, 0x7bf092bc, 0xf5e74491,
+       0xc4107e9a, 0x77e1257f, 0x27e3ab21, 0x2377e7ee, 0x9f9cc596, 0x4a349e48,
+       0xef24ded3, 0x2baf8994, 0xe86bd53e, 0x70ca1df9, 0x0f4ade23, 0xf3837fa1,
+       0xd6d0e98c, 0x40bd04c7, 0xe90e62fd, 0x9308f935, 0x953e5b4d, 0x8627e4ad,
+       0x7e4d30c1, 0x82ef07a2, 0xd69dcfef, 0x40945f31, 0x8a2a2fd6, 0xf006cf08,
+       0xede37ad9, 0xeb7f081c, 0xc38b30dc, 0xf03aeb4b, 0x30724c92, 0xffc5a5d0,
+       0xfc5a19e0, 0xf16b710f, 0x16b1743d, 0x5a0d69df, 0xa8db5f7c, 0x57ba6bc5,
+       0x35ccb78b, 0xeded3463, 0x729a95cd, 0x359bface, 0x4df3afed, 0x3c4794d5,
+       0x3ed3533f, 0xa6be65bf, 0xa975b0be, 0xb3e55ea6, 0xa460f8fe, 0xbf14457f,
+       0x097740e9, 0xffbd183e, 0xbef99a07, 0xe4e7fa29, 0xa1417a28, 0x4f62a67f,
+       0xfd3f8cde, 0xe4eb8918, 0x29ff5558, 0x030a8679, 0xd96f71c7, 0x48e2ab92,
+       0xce76282f, 0x9839d8a5, 0x5b288cf0, 0x1011d945, 0x1d462af7, 0xdbc55575,
+       0xb8857ee8, 0xba725157, 0xda812ab9, 0x9ab7bd47, 0xce692a52, 0x5fdfa3b9,
+       0x92aef34d, 0x8fba2413, 0x4625ee28, 0xdf507fdf, 0x6338d561, 0xfde3e734,
+       0xf352cbbd, 0x8027184a, 0x9d04e291, 0xf621df99, 0xeb1c83f6, 0xdcd3f665,
+       0x59fdb7ec, 0xe9be7372, 0x38607376, 0x43a7f7f1, 0x883935dd, 0xc39d2eb7,
+       0xf29e7ec6, 0x369bab4e, 0x7e9cefc6, 0x2dde8d3f, 0x4b986375, 0xabd1ccf9,
+       0xbd1a73ff, 0x5be5c24b, 0x9c222583, 0x39399fa6, 0x683999ee, 0xd64b8e77,
+       0xdf634647, 0x199cc737, 0x44cc764e, 0xf8a3fbe7, 0xd5167bdc, 0x0653e4f7,
+       0xdf50fee3, 0x2f367506, 0x40fee39f, 0x0ce4f8e2, 0x2116560d, 0xca0c6bbf,
+       0xaf1151bb, 0xa5f056cd, 0x94b36bc6, 0x10e38ff9, 0xcf9f518b, 0xe333fd6e,
+       0x876a5965, 0x3835e712, 0x5dfe38ac, 0xf8a32cc3, 0xb473979e, 0x6af9c443,
+       0xfe5436fc, 0x72f5f62a, 0xa596aff7, 0xa389ac7e, 0x3ee485e1, 0xf9d194f3,
+       0xc5bef0b0, 0xc6d7c7f8, 0xbe3a1db2, 0x8ef38d36, 0x38bbf1e1, 0x41bb30af,
+       0x6e7baf7b, 0xfe1a7be3, 0xa63de79b, 0x84a60fa9, 0xff71430c, 0x4c8797c1,
+       0xafe22efc, 0x84a98773, 0xdba458e2, 0x757f4413, 0x39e3e0fc, 0xcbbe6813,
+       0xaf0cf3ef, 0x57b95da3, 0x43f3eeab, 0x072e51cf, 0x7ba8c13d, 0xdc4d5e4e,
+       0xebe342ab, 0x73fe4b90, 0xe8e01a48, 0x96938f2b, 0x76c5e22b, 0xbb697de5,
+       0x5db4bef2, 0xaeda0f79, 0x576cffbc, 0xefaa7fde, 0x7025db73, 0x5992bdd2,
+       0x79c5ed92, 0xf73efce9, 0xfd67da45, 0xbd0150d2, 0x0c2fac5f, 0x7e6491ce,
+       0xfa07fb9f, 0xdcfbc7de, 0x41750902, 0xc73ce728, 0x7807a70d, 0x9f62c8bb,
+       0x2889f2de, 0x9c7c851b, 0xcb01f2df, 0xba078fc3, 0xd7fe635f, 0x5be27ec9,
+       0x3e251fef, 0xd067064f, 0xde0af538, 0x11c9eeef, 0x737b33e7, 0x0a8979c4,
+       0x7a11c83f, 0xce413ced, 0xcd963d4b, 0x9bd6adef, 0xce15bdf8, 0xbcdeefc7,
+       0x36be44bb, 0xa8dc5dfa, 0xa4fc993f, 0xcf7cd43f, 0xce711c91, 0x48e5ef4c,
+       0x6a7e52ee, 0x82e5ef12, 0xbef4e181, 0xb93fee8e, 0x04387e28, 0x2efef14e,
+       0x3be45367, 0xca392398, 0x41bbbcfd, 0xf96f3ef3, 0x921fe381, 0xb8e4f13e,
+       0xd53e12cf, 0xe3cb6377, 0xf7bfb377, 0x4f03e635, 0x131c70e5, 0x92aa7e14,
+       0x3f0fec0f, 0xeb020b9d, 0xefc3d2f2, 0xb3de22da, 0xbc553af1, 0x8f0ceba8,
+       0x57fe6973, 0xf96a5af3, 0xd9d586e4, 0x7f884f24, 0xa5946f91, 0xe8fb53b9,
+       0xe82b929f, 0x75cd333c, 0xda5fe691, 0x617ef220, 0xefbe68fe, 0x0787d27d,
+       0xd7de7d2c, 0xef47fb57, 0x03aef973, 0xe7dc0f8c, 0xc45fda1c, 0x2372e33e,
+       0x76d9d9f6, 0xed9e5d64, 0x55f7f7ea, 0x069b91df, 0xd49adc60, 0xad1d1e57,
+       0x65ff844c, 0xd30ffb52, 0xe3a3fb6b, 0x56ea794d, 0x4ff46b92, 0x0d712bb6,
+       0x0be25fd9, 0x376efed5, 0x7a8c1c63, 0x63ee0a4b, 0x12f34ffd, 0x79223fff,
+       0xf9aa0ed9, 0xed09268c, 0xdc0de51c, 0xc82ed92b, 0xc41c5ad7, 0xf791dbbf,
+       0x7af7c402, 0xb1e72c67, 0xbae7e2a3, 0xe1097758, 0x55bfdef1, 0x7af8a60e,
+       0x566e5fdb, 0x976134e2, 0x2cfe158a, 0x1f69f9a6, 0xb7cc0979, 0x4afaca45,
+       0x0fec0dcc, 0x16578197, 0x0f250b79, 0x269f76b2, 0x4d3ffbbe, 0x00a28ebb,
+       0x0000a28e
+};
+
+static const u32 usem_int_table_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x51fbff00, 0x03f0c0cf, 0x0058f78a, 0xc3031db1,
+       0x86067b23, 0x06060770, 0x1c840631, 0x293af0ad, 0x8a4bf4ca, 0x03483030,
+       0xcb102cb1, 0x4179f103, 0x820b8606, 0x542febc4, 0x28d7b041, 0x01143030,
+       0x3a4025f9, 0x06180958, 0x10317640, 0xeff2021f, 0x202bf101, 0xc0cca5de,
+       0xc0c8acc0, 0x5cc408a0, 0x82a25c40, 0x0252fcdf, 0xa8ca2af2, 0xbe3400fc,
+       0xfd7e128d, 0xe5f8cafd, 0xc79012e7, 0x92aa1786, 0x28cf1f1f, 0xf8103bd0,
+       0x5f2a39aa, 0xc1818cd5, 0x63562804, 0x435fe101, 0x8a03ef92, 0xf94199a9,
+       0x07b4c0fa, 0xc7375fe4, 0xa04fee6e, 0x7e5014bc, 0xee690596, 0xe54261b1,
+       0x684071fb, 0x58407700, 0x0003a800, 0x00000000
+};
+
+static const u32 usem_pram_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x7dedff00, 0x5514740d, 0xaeade89a, 0xfa4eeaea,
+       0x84909527, 0x9ab0690a, 0xc5b18480, 0x21080982, 0x6fc24a98, 0x55d18cc8,
+       0x45a88de4, 0x91f91070, 0xce332e80, 0x931d0f71, 0x27190469, 0x47e65cfa,
+       0xfbf34df6, 0xc9e38de0, 0x0871ca30, 0x94180748, 0x4f2f7d9f, 0x99d9bc7d,
+       0x76666b39, 0x04e61b9e, 0x7171946d, 0xefbe7c4f, 0xdd16f7bb, 0x380ea9d5,
+       0xbeebadae, 0x6f7af478, 0xbbf7badd, 0xf7eefddf, 0x496abf7b, 0x2d4a202e,
+       0x1fe31f21, 0x0475ff94, 0xaa6a6421, 0xce6cf50c, 0x24246ed3, 0xbcd1ec78,
+       0x19098beb, 0xe7a5c4b5, 0x6e1fa3c1, 0x8fe53e9c, 0x227e426e, 0x115dc590,
+       0x9d15d442, 0x9415726d, 0x44532bf7, 0xea91908d, 0xbe270986, 0x0999484a,
+       0xfe84bcfd, 0xfeff0c7d, 0x242ce948, 0x0a8b5815, 0xe6a637cd, 0x7ef54ab5,
+       0xd2fb5fe9, 0xe690b7fa, 0x8e0033c9, 0xac4dfc9f, 0xf213f4cc, 0x1e3bce24,
+       0x322e1a9f, 0x7de2e00d, 0x1ff0f5a3, 0x941a3f98, 0x2102ede3, 0x202b4ba2,
+       0x48be2122, 0x997be092, 0x6360fcf3, 0x8dc904eb, 0x35e6b66f, 0x843d6007,
+       0xe872efcc, 0x60c09b37, 0x417aa925, 0x0146a18d, 0x448f8eee, 0x328eeeba,
+       0x3de17a42, 0x810ae922, 0xa4291e72, 0x3fca7b78, 0x3bd6246e, 0x6881fe7a,
+       0x55417e30, 0xc6d34492, 0x1091bcdf, 0xa6c843cd, 0x765a5e8d, 0xa978546c,
+       0x21026d12, 0xd1a8dddf, 0x256363b2, 0x9e84b72d, 0xfc03ade9, 0x052e658b,
+       0xb59b2220, 0x922d15db, 0xd85dcf1a, 0x09d3ade2, 0x631d1599, 0x5fa18494,
+       0x6a908b89, 0xdbd412c0, 0x13c64224, 0xf725c28d, 0xfcf0a02c, 0x33cd6940,
+       0xd176a923, 0xbf5c4c45, 0x88612aaf, 0xae9f4780, 0xaa5a4bd4, 0xd315fe9d,
+       0xc25b9df6, 0x42e62fb8, 0x880fcbc4, 0xbc4517de, 0x07beb29b, 0x75bbb7fa,
+       0x2b8c3d75, 0x845ef0ca, 0xd5f481d1, 0x20779c14, 0xb23e613e, 0x7fb6deb8,
+       0x128e11a3, 0x15bb4f7c, 0xb3afcdf7, 0xfa476b7d, 0x7b97d872, 0x8a1d38f9,
+       0xd27a30a1, 0x893d1389, 0xfc9e9d8a, 0x423d3b11, 0x0df6f28b, 0xfef30ebc,
+       0x353d6850, 0x7d19d607, 0x81efa5d0, 0xa74251b6, 0xe35be380, 0x3a2e22ad,
+       0x5b2f55af, 0x2afa2521, 0xd28bc7d3, 0x6f7b4075, 0xfb68779f, 0x5c14a02c,
+       0x892f2cdf, 0x29080afa, 0xd6e8c4bc, 0x3cf89108, 0x5e48ebc0, 0x0f75059f,
+       0x9243d12c, 0x650fce22, 0x03a04279, 0x7b9f0efd, 0x7dc34788, 0xb43c11e8,
+       0xeb34627f, 0xd64b7f0f, 0x64e7d316, 0xef65868b, 0x6fd0b5f1, 0x7fb625ce,
+       0x7c1371a9, 0x1cffdedc, 0x40bab30e, 0xe1112ecb, 0xd581b283, 0x425fbce3,
+       0x75efa02c, 0xa90a0f1d, 0x043f3876, 0x2da7cfcf, 0xef5e7f3d, 0x39096325,
+       0xc2e942a2, 0xe90475f6, 0x50e23d63, 0xbfdde7a3, 0x10b7ea00, 0x3c85bf56,
+       0xb48244d0, 0x4452909d, 0x759f6b2a, 0x6d242659, 0xa126663f, 0xd20fb69e,
+       0x08a2ec60, 0x33fa79ef, 0x7fbcc9da, 0x9499e366, 0xfed5248e, 0x0b7116bc,
+       0x091f7d67, 0x83edbf14, 0xdc99bfff, 0x0642f48c, 0x8633a901, 0x5a559dd2,
+       0x65d56efb, 0x6226af58, 0x9678a099, 0x5815df11, 0x9add69c6, 0xca52cbff,
+       0x31cec9aa, 0x887bf861, 0xf9e2f734, 0x7b5884f1, 0x9b839e0d, 0xfb241ce0,
+       0x3c740a88, 0xe9d13a73, 0xc4264839, 0x7c50c8be, 0xcaba0776, 0x9ebde19b,
+       0xf1cb070b, 0x83c5f779, 0xbb67c8e5, 0x7115ec2f, 0xf67ebabc, 0x84940d5e,
+       0x9415adf2, 0x56d9aa3e, 0x9503b5a6, 0x7853b465, 0xe9815a92, 0x7e55af30,
+       0x6c36f81f, 0xdf018916, 0xc03bd726, 0x124fcb37, 0x2ea82411, 0x64d2c11f,
+       0x3a70d7f3, 0x0aba4eee, 0xbb3ac367, 0xa33a5dfb, 0x3f7ff26b, 0xe0579eb6,
+       0x9c3e03f3, 0x18e07bbf, 0x7382c785, 0xf7efa726, 0x04cfcd92, 0x2cf13df1,
+       0xf1073e7d, 0x000f7084, 0x33def0fc, 0x1d6b3e1c, 0xe9445fc4, 0xead748b3,
+       0x8237e814, 0x76586de8, 0xae32fc22, 0x88eba147, 0xfac1dc81, 0xea1f7c36,
+       0xd78f4387, 0x651fff21, 0x3ca0f674, 0x4fe3572f, 0xeb52d78e, 0xe9f3f184,
+       0x88e057f8, 0x5d6107b7, 0xdd25d335, 0x946afd03, 0xc1a4a884, 0x4c9e0575,
+       0xafd635b8, 0xc16bcf93, 0x67c39db3, 0x08e305c1, 0x097f1c1e, 0xbc98f1d1,
+       0x60f64c97, 0xeafa3219, 0xd1920380, 0x4de149aa, 0xaf9793ed, 0xfb2fdacb,
+       0xcf6a0b3a, 0x9b1c2396, 0xe97d3b42, 0xbd972dfb, 0x60f6c3e8, 0x24cb1812,
+       0x91765b84, 0x43d3b29b, 0x206a5930, 0x01a9a8df, 0x2d137c2e, 0x5a0291a7,
+       0x6af5e74e, 0x72c1af5e, 0x74d398d3, 0xa68d60be, 0x1ac1f8e3, 0x83f7c75d,
+       0xb7af0635, 0x4978e846, 0x8bf58f25, 0xd0e1fad2, 0x75f5c120, 0x83a7900e,
+       0x897f3a5a, 0xbc11e4db, 0x0f5b6857, 0x7f189669, 0x48697931, 0xd600ef8c,
+       0x2c895d69, 0x69ff2815, 0xf3a7086f, 0xf65e5ea3, 0xf9c932f1, 0xfbc6b115,
+       0x8fb59049, 0x46f2b2f1, 0xd7f93cf6, 0xfdf65a2e, 0x4391549d, 0x11f1633e,
+       0xc50a8cd5, 0x47c05f48, 0x4c3fd434, 0xe2c0fc82, 0x39f9b303, 0xc39f9094,
+       0xa055f8b9, 0x49f94439, 0xec215dc9, 0x45b2abf7, 0x720fe421, 0x5f2cbff1,
+       0x54eafd07, 0xad3a4253, 0xb4c813eb, 0x7ffba1a2, 0xe3f16d52, 0x2ca93f39,
+       0x42be72f3, 0x7e6cf3cf, 0x8ed0639e, 0x5b5311fb, 0x5950f51c, 0x58df9e1d,
+       0x57c4867c, 0x73287953, 0x8f79adf8, 0xa93efa71, 0x0aa27a88, 0x3e7665db,
+       0x1d0e86d4, 0x0fb2f6ca, 0x864a585e, 0xcfcfdb8e, 0xf8f89fdb, 0x947cfc03,
+       0x10ee6f8d, 0xa5bd5e40, 0x327f7c54, 0xfdf51bf2, 0xdb8f2831, 0xb25aee4a,
+       0xf27af00e, 0xf3c74048, 0x7c9836b6, 0xfb385d61, 0x65f1fd78, 0xb8d6bd74,
+       0x46bbbf56, 0x690b4f98, 0xff531af4, 0x4e7ca410, 0xe1f2a629, 0xe514726a,
+       0x56bfa327, 0xc9f930a2, 0xe9ce39e9, 0xad9793b2, 0x7ba2ddbc, 0xd2a37e8b,
+       0x3ace4117, 0x205fc5c8, 0xb8b92dde, 0xc425f890, 0x40889cfb, 0x0a85bbf5,
+       0x94e16de8, 0xf2e4683c, 0x47d256e0, 0x9235f7d7, 0xc899e5a0, 0x69e90532,
+       0x25cfe561, 0x94c2465a, 0xf3f216be, 0xf97e8431, 0xd64615be, 0x1f9d2075,
+       0x0af7fbe5, 0x57481fd8, 0xb74b2323, 0x59ad864e, 0xdf740aa8, 0x2e920c17,
+       0x3579c601, 0x42147660, 0x44b3abfb, 0xef6871fd, 0x7a2dfd19, 0xf1bd5e7e,
+       0xd5ffda01, 0x6f950289, 0x5e9f2af3, 0x6fe01eb2, 0x17f7b08c, 0x5f25755a,
+       0xdaf50f9f, 0xe887b78f, 0x9d38d8f9, 0x4ad4b9d1, 0xd38273f1, 0xf89a82cd,
+       0xf0bfec76, 0x73ce97b2, 0xc3eff38c, 0x79611760, 0xcb4ea368, 0x8bc32185,
+       0x13abea76, 0x02fe5c3d, 0x9cf5853f, 0x0279dc19, 0x72a7b1cf, 0xe01d59f2,
+       0xd489a05a, 0x5cab9d7e, 0xb0066114, 0x502712ef, 0x11effdaf, 0xfa10a3a1,
+       0xde9ed7cd, 0xddfa053a, 0x63ab9e3a, 0xe7cc6f9c, 0xf694eee7, 0xc0014346,
+       0x609f6673, 0xf9f3df93, 0x7c6f9779, 0x96b224e3, 0xb171da33, 0xb339c600,
+       0x7e51d05b, 0x9fb48c2e, 0x55f6866d, 0xee20d1fd, 0x5681eaeb, 0x17bee7aa,
+       0x33cb4759, 0x17176797, 0xe760f251, 0x92cf9adc, 0x762ab7df, 0xd36bf6bd,
+       0xa9fa6c0b, 0xd5b48fa1, 0x0904444f, 0xdad3e9f5, 0x16b73d3f, 0x8dcb05e1,
+       0x7bc3b53d, 0x38ff7b46, 0x25f81385, 0x88977383, 0x7754ccf0, 0x45bef888,
+       0x911d1627, 0x8f8a6ae8, 0xd3be1c85, 0x0f945d91, 0xf976d69d, 0xcae9f9f1,
+       0xbf48485f, 0xc1b1e286, 0xce7de573, 0xb3f91ac7, 0x9ecb9553, 0xa7fcc308,
+       0xf0cea222, 0x54f7a0db, 0xf948bb61, 0x7db17d58, 0x6d3c149c, 0xa9cf38a5,
+       0x2bbe6c71, 0xcb7d73e3, 0x6feacf82, 0xf2f0b9c1, 0xc0a73bb7, 0x8ec886a3,
+       0xae9053ad, 0xe5d28954, 0x3cfb7183, 0xd815f6ab, 0x6ba6bdf0, 0x2a7eada4,
+       0x14daf0d2, 0x29dbb35a, 0xf1bdc647, 0xf89dac57, 0xd9a69417, 0x57b0212b,
+       0x119fbe40, 0x5f04f09a, 0x6c894edd, 0x4253b672, 0xa24ca760, 0xa768e284,
+       0xed1bda64, 0x3da14b68, 0xf7c48a3b, 0xf877c9a4, 0xb0aa94ab, 0x116faf9e,
+       0xd97de352, 0x98570eca, 0xb3e2c3e2, 0x7daafb56, 0xf74e6e0f, 0x5ae9ac03,
+       0x7dafab67, 0x7fcdd1f9, 0x559fdb4c, 0xc08ffbd6, 0x5efd82b9, 0x35911ecd,
+       0x320c6fa4, 0x1a11b68a, 0x721ec3d5, 0xfd6295f5, 0x96dc925d, 0x299e780f,
+       0x5f919791, 0xdf21060a, 0x682ca386, 0x0532590a, 0x7a6267ed, 0x2e0bdfa0,
+       0xbc1761f3, 0xfc9c0c27, 0x0efdc050, 0x58e90419, 0xe8ad206c, 0xf360113f,
+       0x07e9a5d6, 0xfee2e37f, 0xd9b09213, 0xe1df2e2f, 0x7aaf7c72, 0xdd204e40,
+       0xe0697e90, 0x2c61ff8a, 0xf50977fe, 0x21240873, 0x0efe8c7c, 0x26ae57ce,
+       0x3602c56f, 0xcc6df76e, 0x277dd7cf, 0xd774c7f3, 0x1c47f2b1, 0xdcbcfd9e,
+       0xb2fe62e1, 0xe517e05c, 0x6fa46aff, 0x6205ef98, 0xbc51776e, 0x97027f70,
+       0x6fd81ea3, 0x8d43ec37, 0x535dc660, 0x5595f853, 0x6fef5a56, 0xaeddcc13,
+       0x25f7e712, 0xcfbfbe91, 0x7dfd9255, 0x59b867e8, 0xd70d9fbf, 0x13fa224f,
+       0xe3048f08, 0x12b65a12, 0xee0c6826, 0x5df7f90f, 0x9dffc49e, 0x8eaed691,
+       0xd58ee7e0, 0xa4b840dd, 0xa6175ec8, 0xa7138fa4, 0x3fed8cfb, 0xd167eb4e,
+       0x4efdc4a5, 0x580bd658, 0x91563f32, 0xe49ea842, 0x4e293d07, 0xf59f89db,
+       0x0a4ecf23, 0xdc48a963, 0x3f60284f, 0xa63f7de4, 0xa45149ed, 0x581afbfd,
+       0xb17e2bd9, 0x6fc983f7, 0xc212cf09, 0xc77a3519, 0x9f01bd41, 0xa2175868,
+       0x7a9f9c02, 0x290efec2, 0xafcc7cc7, 0xc0b6af51, 0xb96506f3, 0xc5766fcd,
+       0xcfb291ff, 0x9d5c5da9, 0x41145d8c, 0x732b54ce, 0xa3b9bca9, 0x171f2ec9,
+       0x3fd761dd, 0xebb12f16, 0xffb8df1f, 0x5b7c9b3a, 0xad827ab2, 0x3723ef7e,
+       0x63e6ead9, 0x2deadb37, 0xf1b6b51d, 0xcf3adfee, 0xb3f97cf6, 0x2beadab7,
+       0xab65dfb6, 0x5f7ddcaf, 0xcbb45c86, 0x641e4b69, 0xbf7abdf2, 0x64869d7d,
+       0x6832dfaf, 0x97d5b797, 0xc888f5ec, 0xd11a83fd, 0x1af07fa8, 0xfeaa6cf9,
+       0x67d7d379, 0x0c85465d, 0xfdb0eebf, 0x96fb72b7, 0x8f944d88, 0xbf16094a,
+       0x8344f490, 0xd84df501, 0x8fbf0d35, 0x7f3fcc89, 0x530fb58f, 0x0fba54c9,
+       0x66f31935, 0x6fbd678c, 0xdf8577cd, 0x684879f0, 0xb1f655ca, 0x039bce8d,
+       0x277a57b9, 0x5d157c75, 0xbc4cbd93, 0xabd2eeb0, 0x67a03baf, 0xf81991e8,
+       0x364f36ca, 0x5bf6657c, 0x7252fb89, 0x755b70ed, 0xf314f919, 0x15ee2d5b,
+       0x15fff652, 0x626d0efd, 0x98cb6fd4, 0xeb79fb7e, 0x3cb69f9b, 0xd57d3226,
+       0x7d38c7aa, 0x8574967c, 0xb577bffe, 0xd035b9e4, 0xf12f8f7e, 0xfec3b370,
+       0x55cfc1bd, 0xb5baf42e, 0xe59bbfb0, 0xcbf42ac4, 0x7837f71d, 0x7b9e005b,
+       0x533d3a80, 0xc524f052, 0xa7bf36b1, 0x6095f4a4, 0x87fee3bf, 0xfbdf7d29,
+       0x9c321ce8, 0xe2936d5f, 0xf0771f9a, 0xcfc525c7, 0x873d7f5c, 0x9577b6f1,
+       0x87adcef7, 0x9b1e7825, 0xeaed7443, 0xca751270, 0x67cdce55, 0xb82c7fce,
+       0x7b406db7, 0xb936bd42, 0x58b7e966, 0xf5d387d6, 0x504d535e, 0x63e92b7d,
+       0x846f93cf, 0xcbfd29c3, 0xcf52ebd2, 0xd30f457b, 0x69581af7, 0x6f79ec48,
+       0x03d70143, 0x7ded6c0b, 0x9ee3d139, 0xa955cf08, 0x5e3434de, 0xf42bf549,
+       0xcbf1582d, 0x0e7cf0f1, 0x16547baf, 0xf5c39c87, 0x59ea0f31, 0xc34cfa41,
+       0xa678ac71, 0xb48ffe84, 0xd0c9aafd, 0xfb156a37, 0x5f864f73, 0xfed81641,
+       0xf2194ad6, 0xe4ee2330, 0x8d3af8bd, 0xf4b91c4b, 0x10d78d3a, 0x9cd71ed5,
+       0x3f786975, 0xc21facf5, 0xa2755fa0, 0x9cedb883, 0xe9f938c2, 0x4ba448e3,
+       0x55d5fb60, 0xd3a422d7, 0x74f16807, 0xa6434ddf, 0x136f1174, 0x627a76c2,
+       0x8b9f49ed, 0x5608c9d1, 0xad88faf6, 0xd4f4e3ec, 0x5caba367, 0x13d23be9,
+       0xaa80f344, 0x5118ae5b, 0xdbfd4012, 0xbd67e820, 0x538c4a0e, 0xe2cd5a8c,
+       0xa8a1e514, 0xfd8552da, 0xc4076464, 0x26ddde1b, 0x057f9c60, 0x47342321,
+       0xf0f1a2fa, 0xcebcfcd9, 0x3d023a46, 0x03e8d67d, 0x8d2ea83d, 0xcbe7015a,
+       0xe9323e81, 0xbc757cb2, 0x6d5ff68d, 0x3e8b2ba7, 0x1654fd33, 0xfc327a9d,
+       0xa3088755, 0x6748adb3, 0xb3a50c37, 0xf15edc51, 0xc680783e, 0x7d5b9eb5,
+       0xff7ea040, 0x291f3b7e, 0x9d3c3d5f, 0x0df518fd, 0xfe7313f4, 0x03f5cb52,
+       0xfdf894ab, 0x269b280a, 0xd681f8da, 0xd2f4a6e1, 0xf180bc77, 0x272a5e19,
+       0x1c7f8cdc, 0x8ba3fc67, 0xbd79c7b7, 0x66eac135, 0x3e75d582, 0x2571d77e,
+       0x293f5e8d, 0x4226cc5d, 0xe5fe0e42, 0x6b6bb574, 0xc66f953d, 0x718f9274,
+       0x2ba43ac5, 0x4214ebd4, 0xe4f5fefd, 0x53f471e2, 0xbc542bd7, 0xa241ba90,
+       0xeade8027, 0x4c074788, 0xbde1a391, 0x5d338aed, 0xfcd249bd, 0xccbcb396,
+       0x1674056f, 0xfda0a715, 0xb2cce8c3, 0x63f9f09f, 0x7a7b3ed0, 0xbf6c0ef2,
+       0x5bfc1c65, 0x2c6e9434, 0x9af8b3ba, 0x28d51765, 0x63840ceb, 0x6c93ff88,
+       0x10e7f6a2, 0xb320e7ff, 0x3df9b347, 0x93779e87, 0xcb9245d3, 0x956eab13,
+       0x25699c96, 0xa093b976, 0x9f39bcfb, 0xe1c2bf50, 0x69df1222, 0x9c5d4f93,
+       0x1fb4e2ae, 0xc61c7bac, 0xc15ea17b, 0xf9c693f9, 0xf3dfed10, 0x39c74ca1,
+       0x71c5685a, 0x3f51cf92, 0x5b27ea84, 0x727b1f18, 0xbf7d90ac, 0x05b3be61,
+       0x02e861e1, 0x0dc96d71, 0xd6df0a57, 0x037cbabe, 0x2c9ea1cf, 0x5413e515,
+       0xa3a09a71, 0x3890fd17, 0x4f160ce7, 0x14329f2a, 0x0bba4faf, 0xe26eff29,
+       0xbfaef3cf, 0xd1c4e54c, 0x7eecfbc8, 0x93de2003, 0x79e66f36, 0xa2ec1dad,
+       0x8f780171, 0x41a5fdc6, 0xfec1e462, 0xed69a1e5, 0xcab54f10, 0xff4c45cd,
+       0xe65f6ccb, 0x96d9fa66, 0xad4f164a, 0x53a88495, 0xba363e7c, 0x37f7c555,
+       0xc6bfad09, 0x3fd150fb, 0xa7ef04cb, 0xd7f5a911, 0xd5ef014b, 0x5bc9d463,
+       0x04ffaa48, 0x4bd1ee3e, 0x7b8c341b, 0xb508551c, 0x7bf68e2b, 0x910960e3,
+       0xdf991aa3, 0xad4ae345, 0x77c022da, 0xb9ec7aad, 0x889a18a7, 0x544cca50,
+       0xf5c64f7c, 0x9396b9c1, 0x7ee975b1, 0xce1f6b16, 0x6d7dad28, 0x5965ee38,
+       0x27bd428f, 0xf51bb890, 0x17afc46d, 0x9e5f21f0, 0x7d1380f6, 0xcb820237,
+       0xdcf7f9e1, 0xe26def4c, 0x99bf0b75, 0x988510f3, 0x5f6a6972, 0x6fc1d0a4,
+       0x0dc4c309, 0x4512349a, 0x48e01315, 0x771fd184, 0xaf1d1c62, 0x6a7d6149,
+       0xe470fc79, 0xed4bc320, 0x47bd1765, 0x18b37486, 0x341a68e0, 0x1a385f29,
+       0x0750d73e, 0x99fa37f3, 0xd91007a9, 0xc5884bf9, 0x8d071b79, 0xd1cf08f3,
+       0x09559dca, 0x12ab9768, 0x329fc622, 0xbeb07dfd, 0xfe5f5c62, 0x7e944bc4,
+       0x46fb076a, 0x17d1c7a4, 0xccff76ea, 0x28f7c199, 0x1ff2665d, 0x37af6939,
+       0xa9fc992a, 0x76b5e293, 0x7c30ae30, 0xb69dcd12, 0x7f95b5af, 0xad1e21f0,
+       0x7c76bdfd, 0xbde33735, 0x844bdacd, 0xe28699c6, 0x775d24eb, 0xfb195f0a,
+       0x435f0598, 0xcf1d9ff9, 0xe0c19572, 0xa7f09cfe, 0xa71e15b8, 0xf329fb60,
+       0x34647a73, 0x1f239fa3, 0xc89df1ca, 0x0f38247b, 0xb95f1e70, 0xd16faa58,
+       0x1a6278d8, 0xeeaa393f, 0x4b56b5dd, 0xfc7637e7, 0xb137e364, 0xfc6c0fb2,
+       0xcfccba46, 0xd6173f23, 0x76494abe, 0x704be4de, 0x73a9823e, 0x3adf8992,
+       0x353c2bbc, 0x7681feed, 0xeb47c690, 0x4f1eb654, 0x1eebe33f, 0xa6dea3ac,
+       0xf94be280, 0xca478b35, 0xe787286c, 0xf4ef9e2c, 0xef015d1c, 0xfc2b8c85,
+       0x5fef89dc, 0xe3c21fb9, 0xd1c657c6, 0xaef7d2e6, 0xbfe59f36, 0x1ef3a4f9,
+       0x5972fcb2, 0x685f779e, 0x700ff364, 0x74791238, 0xcfc6197c, 0xd12e72a3,
+       0xbfca10ff, 0xf6c2b271, 0x31fefedd, 0x27be9eb5, 0x7dd3d657, 0xbe6f874a,
+       0xb8341c83, 0x6ebbcb1c, 0xc297afee, 0xccbcc778, 0x5a91e00f, 0xcaa58e89,
+       0xee1d52fc, 0xe808bd4e, 0x4ce3f362, 0x784de4be, 0x64d26f0c, 0x86f74395,
+       0xa061b9f4, 0xec4f9d8b, 0x8e51936e, 0xebc744e8, 0x7babe5e7, 0x5b85fe6d,
+       0xf8c2d0d0, 0x7783b8d2, 0x27fc431f, 0x35fea51e, 0x02fff519, 0x6ddebb07,
+       0x475708a8, 0xfa955cd9, 0x96f70b31, 0x43ee7de3, 0x28aae617, 0x6c85a29f,
+       0xbe77ee9e, 0x25f484d2, 0x518bea87, 0xf3bf776e, 0x22c6279d, 0x8fb7431e,
+       0x4f3af543, 0x47289d22, 0x1cfe2565, 0x3c80e7c5, 0x5837ef15, 0x714278f3,
+       0xbeb0fdef, 0x9037e743, 0x0a3c626f, 0x2903e3ea, 0x310e43fb, 0x9237e3fb,
+       0xbf00cb29, 0xc4ae443f, 0x73c03451, 0x507e8540, 0x691e800f, 0xb70f3f40,
+       0x2c2fba67, 0xe9e93af7, 0x4c9c10b1, 0x1f83a73c, 0x75a3bf53, 0xba93695f,
+       0x5c606bde, 0x8efdfce1, 0x86c6a0f7, 0x104f52c8, 0x8fcd77df, 0xebff5847,
+       0xec17d987, 0xc29040ff, 0x80e98b73, 0x1e782bdf, 0x1e5d41bd, 0xe49c6e18,
+       0x7bce1346, 0xb17979f7, 0x97483f93, 0xf7905e99, 0xf71506ee, 0xba09f507,
+       0xf4fde33f, 0xff66787e, 0x7176e3ff, 0x4d7257be, 0xcf4b4e7e, 0xbaf47d81,
+       0xf1a1f4d3, 0x59a71b32, 0xd3966f32, 0xb0a4a8f8, 0x8527e278, 0xf19906e7,
+       0xd664bf2f, 0xc74325c9, 0xfac4f9db, 0x4f65fde1, 0x325f7448, 0xfee4ffdb,
+       0xcc82fdcc, 0xaf7a14ef, 0xbfd719f4, 0xfeb5f3eb, 0xa1af9fff, 0xd73a2dcf,
+       0xb87a7d39, 0x76e1e53d, 0x2fd1d613, 0x3057ca94, 0xde65bfc9, 0x7e4bce41,
+       0x61166a7f, 0xf3c8d6fb, 0xb2431a32, 0x9ea73e4d, 0xfa095d6b, 0x67ef4bdc,
+       0x7bb25635, 0x9dfeed4e, 0x7827ced4, 0x951a6c7b, 0xd1aff48b, 0x489515ec,
+       0x532cdc5a, 0xd057c49f, 0xdbcfc7ef, 0x6f79ff5f, 0x0345cf08, 0x7e999f97,
+       0x99a3d39d, 0xa2f8727d, 0xc6dd206c, 0x81dc8e26, 0xbfdac4e7, 0xef72e7bf,
+       0xeba32170, 0xe3cc9968, 0x3ff68430, 0xddef265d, 0xd151eac2, 0x39e13bf2,
+       0x68f4c4be, 0xaa26e54f, 0x7cf23597, 0x4e351218, 0x96bb3c60, 0x52b237c3,
+       0x9e02e3a0, 0x5b51bda8, 0x1ff994b9, 0x0444135a, 0x79069cbc, 0x52eb651c,
+       0x1e16fdd2, 0xa875e995, 0x52d349ef, 0xe5635efa, 0x5c3c69ef, 0x6f3d724e,
+       0x08e7e806, 0x271ad267, 0xc67e5f03, 0x8c5503c7, 0xfe56364f, 0x7b3faa4f,
+       0xd3c3f432, 0x5f5c0de1, 0x4fc43f5a, 0x596fae97, 0xeb2b9378, 0xc44f3ea8,
+       0x978e3ad5, 0xf4ce5719, 0xf1194af3, 0xece43939, 0xec26a8ff, 0xe896367e,
+       0xdeb8375f, 0xbd33f465, 0x83df9aab, 0xc0f7e6ad, 0x459fd1aa, 0x8bdf854b,
+       0x1e2c8b8d, 0x999559f5, 0xfbe1dff1, 0xefe2b91f, 0x9f837563, 0xcf581a97,
+       0xfed0f0d8, 0x8a229edd, 0x391fcb07, 0xc78f63c6, 0x8a0f84f7, 0xdd846eec,
+       0xf85c75ef, 0xbbeb8f9d, 0xdd6f4fd4, 0xe175989f, 0x9b191f75, 0x0f2b0ba2,
+       0xf99fa663, 0x9625eaa7, 0xe2533487, 0xf80cf2f7, 0xd9fa1a67, 0x23ed5fd8,
+       0x90106f04, 0x0fddaf3a, 0x52490b7b, 0x7e41a2ff, 0xd65bef4f, 0x361dbb12,
+       0xa0967fd4, 0x93f4cbeb, 0x0fac6755, 0x576fc13d, 0x6579eea6, 0xf2243fd7,
+       0x9a7e35b6, 0x8ad6b69f, 0xa2e47c07, 0x329c1476, 0x190e49c9, 0x9fac3c24,
+       0x9ff39db6, 0x193c8cf6, 0xf9a0ca98, 0x16d7fd84, 0x7b73f2cf, 0x7db1a42b,
+       0x1e24abf7, 0x607e630f, 0x10fd40af, 0xa023db40, 0x26b5546e, 0xb29c340a,
+       0x7882d430, 0xf3d1b6d7, 0xe4c83758, 0x684031b0, 0xfe818a5e, 0x110f3c0b,
+       0xf1667dbb, 0xebb0631b, 0x18b1e638, 0xbf7588e3, 0xce7f65d7, 0xc103f7df,
+       0x08e94309, 0x9ff5218e, 0x9f7f79fa, 0x7ea7fcc6, 0x4758274e, 0xfd1fa97f,
+       0xc3e650a4, 0x354f3434, 0x171f7ce3, 0x8bf0a79e, 0xcf3e99a4, 0x83d3b4ab,
+       0x43f767e8, 0x2880f933, 0x37363cb1, 0x9b94739c, 0xbdfdb162, 0x370ec8f7,
+       0xa3075bb5, 0x8bc50b6a, 0xb34bc76c, 0xefc2f0c0, 0x75f2d6e9, 0x3f63377d,
+       0xcfb78313, 0xa1de630f, 0xda0f7edf, 0xa0c49fa2, 0x2e25e58b, 0x493d9816,
+       0xb04f2fde, 0x2584d17e, 0x4efda07f, 0x46f927ee, 0xc1051892, 0x770979ec,
+       0xf11ba891, 0xfe889ff0, 0xf953cc5d, 0xc7176be0, 0x96fea178, 0xfc9be58b,
+       0xdbe482e3, 0xbf98090f, 0x079dfe60, 0xa3fda6e8, 0x0b59de0f, 0xafe5bd43,
+       0x3d29d028, 0xd186307c, 0xae349003, 0x951e70fb, 0x896eb027, 0x7ac6566e,
+       0xd611e933, 0xcefee7e3, 0x73d275cc, 0xba43eb82, 0x7db7fab3, 0xf16fc1f4,
+       0xcf3775de, 0xf0bee897, 0xf3e424c1, 0xd824f343, 0x93c872f9, 0x8b49e838,
+       0x3fc8259b, 0x25e29d05, 0xd44dcf43, 0xc587def1, 0x830b8ef7, 0x0fba1e0d,
+       0xcb773e76, 0xa49d3b25, 0xf890def8, 0xc1f135c0, 0xa860c023, 0x1f833b9f,
+       0xdac1f266, 0xffca3ec1, 0xfc1f2d3e, 0x0f9c97ed, 0x344481de, 0xf813c695,
+       0xc5f3517d, 0xbf3fa39f, 0x90b6564a, 0xef8ef1a1, 0x0679d805, 0x87be273b,
+       0x5b3aa9c6, 0x17e2d996, 0x50941c56, 0xedda43fb, 0xb865b5dd, 0x57e7c2f8,
+       0xafbf717a, 0xa03324c3, 0x9a6c6eeb, 0xafe928c1, 0x84f7f9e0, 0x70cbc5de,
+       0x7cb21f9d, 0xeec0326d, 0x76dd8169, 0x3dff8242, 0xdbdeb971, 0x4f8a1fe7,
+       0x8e513b59, 0x143b21f7, 0x53fc7796, 0x531140e5, 0xeef4ed53, 0x91f2b329,
+       0xd01d7f0d, 0x7dd38445, 0x60e2c924, 0x8bdfe281, 0x43723798, 0x663ea657,
+       0x475de2d8, 0x9f94b384, 0x8fe2aa07, 0xd81b9aa3, 0xe96ba767, 0xe96fbb12,
+       0xbb43fdc7, 0x481e4327, 0x57b8e749, 0xae39d7b5, 0xade2b01f, 0xf540ff53,
+       0xff2e57dd, 0x07f5c581, 0x6eaff7ec, 0xbc7c3cb9, 0x7e71bff5, 0xc7cf3cf5,
+       0xa9f3817c, 0x73879e2e, 0xbd09e780, 0xd038f988, 0xe3e7907e, 0x3cf98cbc,
+       0x668de954, 0xf38ae7dc, 0x7e56ac3c, 0xf3c12baf, 0x5392e2b3, 0xa24c825e,
+       0xcbbf3c7d, 0xebef7e9b, 0x73565a8b, 0x0bd56679, 0xd228cdfb, 0xf46048df,
+       0xe0ed9f18, 0x69f40bf4, 0x88ad838c, 0xa71a4c05, 0xae5b29ea, 0xf9d8f3e2,
+       0x4c894a98, 0xe3b36d5c, 0x0551a8e7, 0x986691c7, 0xfd98655e, 0xbf1e5592,
+       0xda3a8418, 0x03a32a3d, 0x456e5cb1, 0x22e13fbb, 0xded2ba2b, 0xb31e4eff,
+       0x15efbedf, 0xff6f7572, 0xc7d878dc, 0xc1c3841e, 0xe6f7101f, 0x458e0ae5,
+       0xfc54c513, 0x978e132d, 0xc67a3e38, 0x5f21c73a, 0x0672baf2, 0x78150de7,
+       0x6fcac8cf, 0x32acf967, 0xedf94e94, 0xb7a676a9, 0xe43cf75a, 0x3366fe90,
+       0x967eab9e, 0xbcb57d3f, 0x6e5cc3d3, 0xeb72e56d, 0xa39725d0, 0x10156fff,
+       0x1efdfa72, 0xefd3dcab, 0x8e5dffdc, 0x5863c3d7, 0x6fec78be, 0x64703a5d,
+       0x46c6a8d2, 0xd43c7f21, 0x56bae2cf, 0xc713571e, 0x466aa365, 0x8c673d09,
+       0xf97355bf, 0x2fd898dc, 0x51b01fa1, 0xefe84b8a, 0xae5f29ab, 0x6563fae2,
+       0x3a67fc59, 0xf58dd3cb, 0x7e5978b7, 0x29d14ec6, 0x67e16d6e, 0x9e0cb3cf,
+       0xa12e3546, 0xe55e711f, 0x6ff1090e, 0x5637d9e5, 0x2279652e, 0x242713f3,
+       0xc0d3678a, 0x1df5abf1, 0x588f34ed, 0x9c827587, 0x7a226a2e, 0x76f6a35c,
+       0xb6fd429b, 0xfe5087cf, 0xb2c27258, 0xcfe53217, 0xb532d1c9, 0x1749627b,
+       0xd187beff, 0xf314a734, 0x3f9fd943, 0xc4e9eec4, 0x123deb76, 0xea05d3f6,
+       0xc95858c7, 0x95fccdf2, 0x29ab1f4c, 0x654ed9db, 0x63885c51, 0x3f95807e,
+       0xebb118da, 0xeffad55b, 0x564c31db, 0x672ed97d, 0x23bd7166, 0xafe12fd3,
+       0xf1e7a8ca, 0x4c953ffb, 0x61e3dd1e, 0x47e549f7, 0x4f78e984, 0xa111ef25,
+       0x4af9e10c, 0x93eeee5e, 0x2c6504de, 0x7ffa9d3c, 0xafe4f544, 0xf2e7ce31,
+       0x1cf34f3d, 0x81397ec4, 0xb40c1772, 0x90a97c8c, 0xe12ae542, 0x6d72a17a,
+       0x1f5f96f7, 0xcc79f8cd, 0x32a5f2cd, 0xdd7c29fb, 0x75ba38ff, 0xb15f13b1,
+       0x223f579e, 0xe5623950, 0xc4ab57b5, 0x564f3a70, 0x6cbeeb7f, 0x37cb20f5,
+       0x66e9c4db, 0x4ef0d2df, 0xbce153b4, 0xfcf04e18, 0x8f3b1e73, 0xd879e6cf,
+       0xcd2f5cbc, 0x3ca3f7ec, 0x3f6aefc6, 0x8e1d4c7e, 0x406a786f, 0x177ee1ee,
+       0x10e471b3, 0x5896579b, 0x7933e429, 0xcac7ca73, 0x85ccbc09, 0x22b9b9dc,
+       0x0b907477, 0x7941f6ba, 0xf6d0abca, 0x2a1ec086, 0xc781721f, 0xb1e21c8a,
+       0x5374635a, 0xf2e9dbad, 0xf2deb9ef, 0xd19cbc8b, 0x3999a2cf, 0xa0b923e4,
+       0xd72fea9f, 0xe3373879, 0xa53fb5cb, 0x33cf5cb9, 0x23e529b2, 0x4b8fefff,
+       0xf4c1ce2c, 0xd345679a, 0xa3af6f63, 0x43f69071, 0x897bface, 0xc476672f,
+       0xdfa03aa2, 0x9624c7db, 0x13efe939, 0x17c673f3, 0x8e001b4a, 0xe738467b,
+       0xe7e754cd, 0x66db1f0c, 0x644b1c03, 0xbec387c0, 0x1c21cc2c, 0xdf764573,
+       0x2af3c68b, 0x98a3fb5f, 0xdfc08766, 0xbb295738, 0x12ecc8ef, 0xa0e97d13,
+       0x53860b27, 0x7725b87c, 0x51adb8fb, 0x9951e94c, 0xc03d7c70, 0x9c4398e0,
+       0xe56fa8f5, 0xf28bbf0e, 0xc9bbd02a, 0x459ca7ce, 0x9f92db5f, 0x115afd3b,
+       0x5e29e0d3, 0x72649d4a, 0xafa8e093, 0x7397cf6e, 0x0095efa6, 0xe775da9e,
+       0x2cfe7aef, 0x8541fc87, 0x76688a72, 0x246d1f21, 0x4c217771, 0x5d71777d,
+       0x3e7baf14, 0x38dcd855, 0xc3f4f411, 0x4efa5de7, 0x4ef2523a, 0x5d54df1a,
+       0x797ff42e, 0xa2889eb6, 0x942ebebf, 0xfbb0f1ec, 0x6afbec6f, 0xb0f0c4fd,
+       0x7bf4bcfb, 0xb98fd557, 0x747bb0a7, 0xafbcdecc, 0xa7de90b0, 0xb64fe86c,
+       0x62c2f7e3, 0x40ef8d8f, 0xbfaeaebb, 0xfe8dd697, 0x65e76a3e, 0x6a7d9bda,
+       0x3cc7bb2f, 0xb4524c1d, 0xf4bd423f, 0xed5fa39e, 0xeede3035, 0x835d0497,
+       0xcb3f527e, 0x59549157, 0xde0a1837, 0x7cac71c4, 0xcf2f0694, 0x7e59501b,
+       0xe4f4cd53, 0x61f768ed, 0xe017cd3b, 0x255aaff1, 0x0d42e34e, 0xa98bdf19,
+       0xef09124f, 0x0bc6643b, 0x7b33f566, 0x409c4877, 0x46d1fe65, 0x8ccf07ee,
+       0x99739c1b, 0x3e70f97d, 0x283b01ef, 0x63929458, 0x13af7815, 0x124910fd,
+       0x7ca1868f, 0x737e6256, 0x0f8f8845, 0x45c39c63, 0x489331d7, 0x15940964,
+       0xbbf4cd65, 0xa51f884c, 0xf0162f80, 0x30b13152, 0xa2a3bece, 0xfe5a7c52,
+       0xdf5b4d98, 0x5885fea4, 0x3fe3b719, 0x2228e254, 0x7844098d, 0xf95ccbdb,
+       0x25b38f48, 0xf8fbc512, 0x1f7e3cb5, 0x2526cd54, 0x97a6ed48, 0x9f8c0285,
+       0xdf3e3468, 0xa2b3df80, 0x89a8de7e, 0xbcd3ce70, 0x67edfa0a, 0xc43f27aa,
+       0x7f5604fb, 0x6f7fb0c1, 0xb4486c84, 0x05edbc63, 0x80f82997, 0x5fde050e,
+       0xacedbcaa, 0x2fe6e940, 0x4ae4978b, 0x427d113f, 0x5639d3ab, 0x5177c873,
+       0x1f3150df, 0x7fcd2a64, 0x1b2be471, 0xc69e0c02, 0x051a437e, 0x9815a75d,
+       0xe7be2137, 0x81da5eec, 0x36ee8b75, 0xd62bf167, 0xc3db1bfd, 0x939fcefb,
+       0x11defe91, 0xba47aefa, 0x212eb2ba, 0xf4fea419, 0xd14b1771, 0xde7a0d4f,
+       0x67bd1f6c, 0xee309718, 0xfb79c162, 0xbd455318, 0x633f9b26, 0xf7ecee51,
+       0x7662a56d, 0xdc81eb3d, 0x9f949de9, 0xb46fd15f, 0xe9884ed7, 0x94be8cfa,
+       0xe73433ea, 0xc80f8d26, 0xfd5a499a, 0x28eaffd4, 0x0ee63717, 0x942173fe,
+       0x2a95c18b, 0x2fd8d39e, 0x627c77d9, 0xceff60ff, 0x1d3877f2, 0x87730437,
+       0x4e301bd7, 0xc19ab051, 0xb8302795, 0xae0d82dc, 0x6f464191, 0x0ee40d3f,
+       0xdca0d35f, 0xf9f7341b, 0xfb59bde8, 0xfeb900f9, 0x76f6a753, 0x5239426c,
+       0x70fbd029, 0x600e7f20, 0x6dcad9bf, 0x79bbf1b3, 0xe987762b, 0xaae7d277,
+       0xa08a3a3b, 0xa8d152be, 0x605bde5f, 0xde34e4be, 0xb73f9d17, 0x7f72affb,
+       0x53f964d8, 0x02a3ed99, 0xd837c522, 0x9cfa6f9f, 0xedffcfed, 0xd9b297c4,
+       0x73f96f9f, 0x0f668fc7, 0xe47e7f63, 0x6cd2fe63, 0xdca3eafc, 0x8f6a779d,
+       0x2ec597dd, 0x5f10e60c, 0x766c2bf3, 0x8d316ee1, 0x4dc2523f, 0x9bf5578f,
+       0xc5777e84, 0x71a45ec1, 0x5ed9dd1b, 0x0ee7f4ac, 0x38c35faf, 0x1cb3bd66,
+       0x5dcfe19f, 0x2856f07c, 0x38ed0aef, 0x488f0c5e, 0x4d2fe614, 0x9b177dc5,
+       0xf2e76ceb, 0x972751ae, 0xe59f7d39, 0xc1d1dcd6, 0xf9117cb9, 0x70f7f385,
+       0xc4b632ad, 0x149abf59, 0xe75e2990, 0x1c7fd98d, 0xcec4adef, 0x68f90513,
+       0xdbb89c2c, 0x96fe1f69, 0x9b8beddb, 0x45ccbd18, 0xafd69bf9, 0x97e2cfc5,
+       0x32b9738f, 0x7139cb2f, 0xb9f3e7f3, 0x42be7a3f, 0xfd0e038c, 0x7dbb9dbe,
+       0xca12373f, 0xf0cef979, 0xbdd7cfbe, 0xe2bf8b20, 0x7383b97b, 0x939c395b,
+       0x70cef579, 0xd1dc97fe, 0x0031a2dd, 0xe9f522c7, 0xcf776839, 0x5cdcdad7,
+       0x3bf2ef7e, 0xfc46dbc8, 0xd3fa2662, 0x0a6b89e0, 0x910cfefd, 0xbe3950a7,
+       0xdee30fdf, 0x4ca3640b, 0xb3e7d349, 0x7e8b81f0, 0xa1f987e6, 0xcd397664,
+       0xa5ede563, 0x12bdc4f4, 0x119777bb, 0x1f7b47bf, 0x378849f3, 0x679a044e,
+       0xf2c451d2, 0x805e68e9, 0x25deaf15, 0xb10fdf39, 0x5564f5f2, 0x55faa7cf,
+       0x0caefb3f, 0xccf9b1d8, 0x6ff3d58e, 0x88e3c873, 0x97572d95, 0x11df930e,
+       0xd31b9b54, 0xb0c154ed, 0x6f609ddb, 0xda7f0ffe, 0xeecb00fd, 0x7cd957fc,
+       0xeb936fdd, 0xeafc683b, 0xfb27b6f3, 0xa0cf6873, 0xb08fd0fe, 0xaf3cd097,
+       0x307c764b, 0xf9ba00fa, 0x74a0ff97, 0xa6701a53, 0x0380b29b, 0x368ebcdd,
+       0x759fb417, 0x8ff340ff, 0xb0af1a1d, 0x37eb39c6, 0x6d8fa8bd, 0x98bc5b52,
+       0x4d3312f7, 0xf767eeaf, 0xeff3d2b1, 0xebcdbaf6, 0xd597e7d3, 0x022fbd38,
+       0x80c4e8fa, 0x459fbe93, 0x8fadfd1f, 0xfcb7ff9d, 0xc22dcb84, 0x21be17f2,
+       0x2c49efd0, 0xf4ee9d26, 0x337997df, 0xe4bf3b90, 0xff282a57, 0xcf5a706b,
+       0x416ffc30, 0xbff013e0, 0x7efe719f, 0xeeffaf91, 0x9faf4cd5, 0xfd4712a3,
+       0xd9dcfeed, 0x287ea575, 0x1d2f14e7, 0x72c90f5e, 0xfe872c3f, 0x0a8173fe,
+       0x76588f9c, 0x5fb8a3d2, 0x1d527699, 0xf4d923e7, 0x477327fc, 0x03aee757,
+       0x9723ef78, 0x30efe8dc, 0x3b468fc4, 0x373ef7e1, 0xf6871bf0, 0xa2413067,
+       0x195fad24, 0xaadd0a79, 0xfd6742b1, 0xaed06d6e, 0x6f3e65df, 0x537da1c9,
+       0x91f38158, 0xee0def61, 0x597c9dc9, 0x16fcc554, 0x37ce9d47, 0x8e63fb9c,
+       0xec9b0c7c, 0x81538b7e, 0x9c5bf36b, 0x4fe5f3b5, 0xcc38b7e7, 0x589334ee,
+       0x3c4df896, 0xbd1e7677, 0xeaf8097f, 0x30df5a77, 0xc41df27c, 0x27ca5fdb,
+       0xb9edebb3, 0x45a38fe3, 0xc3ed8f9c, 0xc6712cfc, 0x1f70e76f, 0x8f9c44ca,
+       0xaf9d63c1, 0x2dde38fb, 0x39832a78, 0x9b9e7b8b, 0x8efc6224, 0x787e7950,
+       0x70e79322, 0xa70526de, 0x0e3197f2, 0x076236d7, 0xced285c6, 0xb5e0e4dd,
+       0x38e9bb9d, 0xbb9c35ce, 0x7de34e99, 0x4d9773da, 0xfce42c8e, 0xe0212df6,
+       0x38bdcf98, 0x45e2fe77, 0x55afd1e3, 0x83e70ce4, 0xfdf1dcc1, 0x5c9f1509,
+       0x2cf7599e, 0x7df8cd5f, 0xfe3967c3, 0xa339fc5a, 0x3162d2e3, 0xc9b2b725,
+       0xd1ca5cd9, 0x3a393482, 0xcc1f0b37, 0x69253c25, 0x10efa9f8, 0x0a2539e8,
+       0xcce1f1a1, 0xa5fff8ef, 0xa2fc03df, 0xc3046f95, 0x5937efb6, 0xa0b92b79,
+       0x6bc51bc7, 0xce182788, 0x0fedefdf, 0xcbd339ca, 0xdcc7ff91, 0xb5844adf,
+       0x7eca70ec, 0xf279e093, 0xed04ada8, 0x3ac74f4d, 0xd3c63f7a, 0xfe812eb4,
+       0xd021d24b, 0xe51090ef, 0x4b7f3a75, 0xe42bfa28, 0x74f9430f, 0xbf72672c,
+       0x1af7e90a, 0xff1228fd, 0x9bcf931d, 0x52af3f5e, 0x2efbf2ca, 0x0407f7d6,
+       0xcbaefd85, 0x2f532e0b, 0xd64f3b48, 0x35ae7777, 0x3d0af79f, 0xf7d6fbc1,
+       0x50815bd0, 0x14b121f6, 0x9e7fbea7, 0x56befdfa, 0x46bd0f8b, 0xe0336fbf,
+       0x9b17bfa2, 0xfd33fdfa, 0xb45549b5, 0xa68fe69d, 0x53ad2f7e, 0xd17be993,
+       0xbdf12b51, 0xbc64f2dd, 0xbee30447, 0x5bf7a416, 0x5efbfa4c, 0x7efd1ef0,
+       0x779faa62, 0xd8871f32, 0x8ebaf4f3, 0x8973e907, 0xf36cfff7, 0x3016d6ef,
+       0x102d55be, 0xecfdefdb, 0xe69073df, 0x740fd63f, 0x99bc3cd1, 0xefe8bafb,
+       0x301cce4e, 0xcf8e1baf, 0x6b915fc0, 0x4289163a, 0x952e0a5e, 0xfac05bae,
+       0xfbb4be10, 0xcc369f45, 0xba073378, 0xf787b414, 0xea3af1ef, 0x980a874f,
+       0x9f77935c, 0x196aa048, 0x3fa8ead0, 0x23e377d4, 0x53187e36, 0xf8f5d00f,
+       0xdf341207, 0xebc8c9e8, 0x33073bf4, 0x82f7d8ab, 0x1dc40e67, 0x0d369ff3,
+       0x0933381c, 0x3a2145e9, 0x6c679efe, 0x77e9e580, 0xe377ea47, 0x7beb20fd,
+       0xa35df847, 0xe1d2466f, 0x1fba2cee, 0x01ca66fd, 0xfc61b8df, 0xec3eb825,
+       0x517211d7, 0xdc8eecba, 0x861047b1, 0x246ffdd2, 0x128299f3, 0x6fde7bdb,
+       0xb39d71fa, 0x1dfbe587, 0xdc8e39c4, 0xa5f4c055, 0x8bc36efd, 0x7fb627bf,
+       0xc9c3a48f, 0x7df6ccf9, 0x54f301b6, 0x5136fde1, 0x49eb438f, 0x3c4259b9,
+       0x48152c9e, 0x577f1867, 0x386f80f4, 0x074592bf, 0xcf59664f, 0x9f1602da,
+       0xf1ddd8e9, 0xdc7f9a0d, 0x27c8ec5f, 0xe6851824, 0xf13e71cb, 0x523cc781,
+       0xdf143250, 0x5176c79b, 0xbfe9163f, 0xfd7c2ae3, 0xa61df671, 0x3cdfceae,
+       0xfbf9b504, 0x6be44f5a, 0x0fe74ed7, 0xa63847e3, 0xbbe75d0e, 0x29b7c9f5,
+       0xd6e83a9f, 0x385d1f30, 0xb7e0481a, 0x10eece3b, 0xe25b5e68, 0xc3a51f15,
+       0xa36fdb0b, 0x99ec51df, 0xffb031ec, 0xb475dd85, 0xffd2f0de, 0xf05e620a,
+       0xfa44979a, 0x2bd7015d, 0x0f9883e7, 0xfbd3d6bb, 0xf27cd214, 0xfbd09125,
+       0xf485d193, 0x736f487b, 0xb32e4899, 0x563cf2fa, 0xe7a3b35d, 0xc5771c5e,
+       0x07921ecb, 0xe5f9ace3, 0x099f5f03, 0x735e07f5, 0xc96937e3, 0xf26d3d9a,
+       0x3dfc62a8, 0xeb0ba138, 0x5bf2bf8f, 0xf5bbcf3a, 0xbf166f2c, 0xc7bf80db,
+       0xb7b06efe, 0x5f684ef4, 0x5cf9ff19, 0x79f2bfec, 0x5a6dc741, 0x77e7bdb9,
+       0x17cafe38, 0xbbf0e3dd, 0xf9f6ab17, 0x8f269688, 0xe6fa5e1b, 0x35de11d7,
+       0x47d4dca7, 0x61f062bf, 0xa963f299, 0x5afdc653, 0x1969e7b3, 0xb4ff19f3,
+       0x8f3a35f1, 0xfb35c785, 0xef781e61, 0x1d0417a1, 0x8b90f697, 0x3bfabefd,
+       0xbc5bccbf, 0x6aeb8fcb, 0xf7c7af93, 0xc649b97f, 0x97c40f7e, 0x10d3cc1e,
+       0x5cf21dbe, 0x0efb7384, 0x7eda7979, 0x8677daad, 0x00fff5c2, 0xdd70bcab,
+       0x00008000, 0x00088b1f, 0x00000000, 0x7de5ff00, 0xd5547809, 0x73b9f0d9,
+       0x993ac967, 0x49327bec, 0x07014100, 0x3a0b6188, 0xe8251b59, 0x88a8a820,
+       0xb2108113, 0xab07d48b, 0x490067fd, 0xa8a35141, 0xc0758ac5, 0x0d45a360,
+       0x03ac6d10, 0xa8a0481d, 0x820b06d0, 0x2009db55, 0x710c819b, 0x77ea96c3,
+       0x3b9cf7de, 0x6266f7b9, 0xbffbf5a2, 0x1f1fff7e, 0x9cf7393c, 0x7f77967b,
+       0x13def3df, 0x96f90842, 0x3eb93bfe, 0x9a3ede2b, 0xd73f0efe, 0x3acf2ff4,
+       0xfa1b3108, 0x588495ea, 0x8be8c25b, 0xe67e975a, 0x3be7be98, 0xb9092322,
+       0x66aa908a, 0x08839891, 0xff8b7cfe, 0x4b121277, 0xfe987fff, 0x1dcb431a,
+       0x19cdaee1, 0x86ba78f0, 0xc4b210e4, 0xd3377f44, 0xbd59177f, 0x25dec4d7,
+       0x7c8e5f5a, 0xd47ca97c, 0x69eb8411, 0x7cb09874, 0xe58091c2, 0x31330e93,
+       0xd3c8465f, 0xae58918e, 0xf9f05877, 0xb0931caf, 0x62b0e0dc, 0x09476bf9,
+       0x0d872e96, 0xcc726dfb, 0x61c9b2c1, 0x3a2fe7c7, 0x766cb02a, 0x97f3e3d4,
+       0xdcb0cb1d, 0xf3e270e2, 0xb1ab1d57, 0x6234716c, 0x1eb1cdb9, 0x0b8756cb,
+       0x68e1bdfb, 0xd1cdb2c6, 0xef7fcf82, 0xedd2c368, 0xd3b960f0, 0x8f4b0fb1,
+       0xddcb13a3, 0x7658a38e, 0xdef8bc38, 0x2c69c75e, 0x1bb872d7, 0x969e4973,
+       0x2568cdc2, 0x25828126, 0xa79ad4aa, 0x1b28f5a3, 0x75cdc7ab, 0x3d69e9e6,
+       0x14eb4ece, 0x9ed5498e, 0x27ad033c, 0xb4f6b3d5, 0x107e4807, 0x5939a7ad,
+       0x6b5ae67b, 0x67ad307e, 0x11f6b236, 0x21f99c1b, 0xc5c23eb4, 0xe2df2fda,
+       0xf5a50fc9, 0xfb585bcb, 0x08293758, 0x1eb1f5a3, 0xdfbf1f56, 0xeb4e105a,
+       0x3d593be3, 0x816723e7, 0xbc73d691, 0xdd29fdec, 0x5a08829e, 0xed63e29f,
+       0x85225f57, 0x9abf5a26, 0x0fcf5808, 0xa48c2bcb, 0xab137cf5, 0x6994a717,
+       0x6fe801cd, 0x9f3bcea7, 0xdbb85a50, 0x4da25d94, 0xf7bd75a4, 0x6421621e,
+       0x895a69a5, 0x9f853276, 0xf6802c8e, 0xd8c54ca7, 0xa593d1ee, 0xd31bfed0,
+       0x5bbed80d, 0x37f6c667, 0x5d58734d, 0x77f6c66f, 0xef58654d, 0xfdb159d0,
+       0xab255363, 0xded8adeb, 0xeb07ba63, 0x6c76757b, 0xc01f2217, 0xedeaf7f1,
+       0x7684fed8, 0xad214955, 0x57b4882f, 0xaf5d2899, 0x2415ec14, 0x25b5e80b,
+       0xb5e946c1, 0x80732041, 0xcc99663f, 0x890d0fc8, 0xa6c92b7a, 0xce57ffeb,
+       0x69c0a20b, 0xe5ea063b, 0x81943e2f, 0xd1352ce3, 0x74752b7e, 0x71f0711c,
+       0x9266feae, 0xbfab9c62, 0xf9c690a9, 0x3c138e39, 0x7e7671b4, 0x9eb94533,
+       0x71a52a6f, 0xe15f701a, 0xd5d7db43, 0xd72ae6df, 0x34b56df3, 0x4e3863ce,
+       0xe3d6d0e4, 0x8c544dd1, 0x922dd1e3, 0xe38f59c6, 0x3d6d0ec4, 0xc564fd56,
+       0x62fd5638, 0x388d9c69, 0xc6d0e24e, 0x2aa7e8f1, 0x92afa3d7, 0xe11979c6,
+       0x7db43a9c, 0x94d30d59, 0x48d431eb, 0xf5c76ce3, 0x9c6d0c64, 0xf84ae1dd,
+       0xc3f70eec, 0x0ce38dc7, 0xf2beda1f, 0xe4f84a8d, 0xd9f0fd1b, 0x351afb83,
+       0x1b7671b4, 0x6dd9f095, 0x4fe7c3f4, 0x43319eb8, 0x847e57db, 0x11f93e12,
+       0xc11cf87e, 0xda1b8cf5, 0x95623a7a, 0xf588e9f0, 0xeb8bc7c3, 0xeb686ab9,
+       0xc2538c29, 0x0fce30a7, 0xce38339f, 0xd38da1e4, 0x4f84a711, 0x3e1f9c47,
+       0xb4ce38bd, 0x30abeda1, 0xc29f095e, 0xfe7c3f78, 0xd9e4e389, 0x843d719b,
+       0xf03e138e, 0x95537b38, 0xea9bd9f0, 0x12368f87, 0xc7445ce0, 0x9c7c1ac9,
+       0x7c2534e2, 0xf0fcd38a, 0xae71c709, 0x7b38da1d, 0xd9f094d3, 0x4f87e69b,
+       0x63338e1c, 0x4e2afb68, 0x38a7c257, 0x1ae7c19d, 0x33d438ed, 0x445a7754,
+       0x524fcafa, 0xed02acf2, 0x5d589a2f, 0xd8085934, 0xcf64a23d, 0x48ab4e90,
+       0x896d87fb, 0x9110ff1c, 0x23f935db, 0xc39c2922, 0x5d851a2d, 0x84293113,
+       0xd5f64798, 0x8a51ad23, 0x9249747a, 0x2dac7fa2, 0x3f1ed153, 0x7b4572e7,
+       0xa2bc7da2, 0x45315c9e, 0x3eb53fd1, 0x5f4f515f, 0x7fa29d76, 0x4546f386,
+       0x6df56b3d, 0x1bc3fe8a, 0x5fb452ef, 0xd152beb6, 0x44b5ca3e, 0xf9a2bf51,
+       0x63fe8a67, 0xda28565a, 0x487b6caf, 0xf3ce3ed1, 0x613ea284, 0xfd14afdf,
+       0xa4dceaaf, 0xf4789f68, 0x64fb4565, 0x7d4536ef, 0x2bdfe9ea, 0xedf34ffa,
+       0xb9afd456, 0x7fa28ef8, 0xa28bf91e, 0xa1f4105e, 0xe9917fa2, 0x27fda2b8,
+       0xecaa9f09, 0xc9d330d4, 0x045d782b, 0x50bfa2be, 0xea26717a, 0x84f55ed1,
+       0x4faeb1eb, 0x6819730a, 0xb978577d, 0x1fa504f9, 0xe6f9eefd, 0x403f4a18,
+       0x05da8433, 0x97154979, 0x7bf3e979, 0x332fd8a7, 0xeaf7e7d1, 0x029a57ed,
+       0xde9437d8, 0xa5009204, 0xbaa50359, 0x463a17fd, 0x97c9f9ef, 0xf7d17446,
+       0x11be34eb, 0x4dfeb491, 0xc07dde54, 0x0d488e1f, 0x488841f2, 0x885fa1ea,
+       0xfe815881, 0xf391917f, 0x0fc65382, 0x9da953ab, 0xbb8df421, 0x404f675a,
+       0xf7722a3b, 0x1a6bb06a, 0x92bee952, 0xf1f07908, 0xc39cfb5d, 0xe5a9fbe8,
+       0x9e3a7609, 0x8aec4f41, 0xfe74f5f9, 0x1aff38d1, 0x01b1ff98, 0x4e6437e6,
+       0x941fcc52, 0x3f98a156, 0x37e74f48, 0xf22eb211, 0x453f3e1d, 0xbf6a14c2,
+       0xce36fe3f, 0xc0ab486f, 0x27a17ff9, 0x43f98a15, 0x033ff3fc, 0xcc3cf8fc,
+       0xff601b1f, 0xfb945399, 0xee54ab4f, 0xfff6cf5f, 0x7c7be442, 0x7fdc10fe,
+       0xd907e3d3, 0xd92ad3fe, 0x5c6c0dfe, 0x3f46fcff, 0xf9825ffc, 0x7e601b5f,
+       0x72ae5643, 0xcad5e9ff, 0xfcd81bfd, 0xcaff23db, 0xf9c30fe7, 0x80ff1f5b,
+       0x1abd3fed, 0xec1bd7e7, 0x7d1fa016, 0x8bbd4872, 0xa8524fce, 0xe40f1497,
+       0x7281e742, 0x1a651464, 0x33236a42, 0x86f71d71, 0x32fb7a30, 0xca1bd284,
+       0x273e2733, 0xa9392a2e, 0x69cb555f, 0x9e4b6abd, 0xb61ee41e, 0x90b211c7,
+       0x9b41752f, 0x9e4df488, 0xd386b834, 0x136f9ef5, 0xf05f509d, 0xc81734e4,
+       0xb9033ad7, 0x69ef06d3, 0x7f9e0789, 0x4d98d4f2, 0xcba97df2, 0x93ba8d85,
+       0xf9bf195e, 0x327cc0fd, 0xcfae9eb2, 0xea293268, 0x471fa8c7, 0x11f3bfa8,
+       0xf5087bf5, 0xd8eb8e7f, 0xfea37f7c, 0xd4bdd41e, 0x427683df, 0x11dd2396,
+       0x30f0f5a7, 0x911b7eba, 0xcfb8ac7e, 0xe8a5905b, 0xbfc65a78, 0x2e0ad6c7,
+       0xcb9dc7c0, 0xfbf02942, 0x8ce653d6, 0x0cebd456, 0x5aefbfac, 0xc049b5c1,
+       0x9f00ec31, 0x023c7c99, 0x73eb4b44, 0x239dec4c, 0x15ec673b, 0x5fcc848c,
+       0xd1714c9d, 0x622cce37, 0xf7d3c5d5, 0xa65a5a6f, 0x72e01a23, 0xd0097521,
+       0xf11d7ccf, 0x8cecdfa0, 0x7139a325, 0x66def5d0, 0xb4cfe362, 0x65784eea,
+       0x0ba399eb, 0x7ae8dab2, 0xb88994e6, 0xca2559fe, 0x0ceebff6, 0xd2c66ab5,
+       0x9c3af572, 0xb29b26e7, 0xca3996fd, 0x6576adfa, 0x1d55ea9d, 0x2bdbd5e8,
+       0x5829cfd4, 0xfae73ee8, 0x4a174ae1, 0x870779d7, 0x3af51dc3, 0xd4af02a7,
+       0xed4bd6ed, 0x6a141d74, 0x5f7c2fb8, 0xceffdfec, 0x997aca65, 0xbf9f5953,
+       0xa73e355a, 0xff1c939b, 0x683e80c7, 0x83e80a79, 0xa704f3c2, 0xaab93e8f,
+       0xfd9b8fa4, 0x21f460db, 0x96a4e3ed, 0x06e4e0a1, 0x1b0b1f46, 0x43d30343,
+       0xac1e9f99, 0xe892fa72, 0x87a71e61, 0x2c3d398f, 0xaba4af5a, 0x556b895b,
+       0xf6ff7d02, 0x4f10bbb5, 0x8c650bef, 0xe897ee1e, 0x07a0abc1, 0x3507a73b,
+       0x7a71e6fe, 0xa31f7798, 0xbd3e3507, 0xebbc1e9c, 0xcc91d33f, 0x78a578fe,
+       0x1e29d450, 0xe9377854, 0x3e281e81, 0x5dc3d202, 0x8dd37dfe, 0xde7cfad3,
+       0x9c5f0fd6, 0x133db01e, 0x4e104ec0, 0xff567ef8, 0x284e54fe, 0x07d68bea,
+       0xdb5d7fc6, 0x6427b5c6, 0x5e5a6bcf, 0xb6427b5a, 0xade6aace, 0xd762fa8a,
+       0x8bfe8a9b, 0xd452efd6, 0xadbe3617, 0xf57f3fe8, 0xccbd4541, 0xffa281f9,
+       0x14bacb9d, 0x9fd477ed, 0x5edfb451, 0xbf514171, 0xa2b5fed5, 0x84732dff,
+       0x9bf5e447, 0xc88fc16c, 0x892acffb, 0x5a67d454, 0x35fd1513, 0x00dd473b,
+       0xb0ffb8f4, 0xf8fec048, 0xd1ea72c2, 0xea50d9a9, 0x84e7d02c, 0x707c8cc3,
+       0xcb1231d2, 0xf20b0ed3, 0x24c759c9, 0xb5b7cf2c, 0xa15e8187, 0x449cb47a,
+       0x44f73d52, 0xb9d59ade, 0xea09d7a0, 0xf89f87df, 0x0a671ac9, 0x99444f21,
+       0xd74a7f91, 0x026789eb, 0x27280221, 0x289f2ebe, 0xd20ef76b, 0x8a2a9ebe,
+       0xa5edfee8, 0xebcfc0de, 0x074b289e, 0x3e9035bd, 0x60c93fa1, 0x3f70f527,
+       0x2d5edd40, 0x39fc9b10, 0x1d702b21, 0x5d3d71ef, 0xa2f267ad, 0x3e625b7a,
+       0x33dd4231, 0xe6bbfea2, 0x164ca16b, 0xa592740f, 0xeb45e7e0, 0x7bc850af,
+       0xf8e13642, 0x14135d8b, 0xa79aabcf, 0xdeebde2a, 0x6bbae225, 0xbd509641,
+       0xb6c2207d, 0xb3f40a2d, 0xd66d3da7, 0x75a75818, 0xadc8147b, 0x23b458b6,
+       0x6bcd1dbb, 0x7f00e84f, 0x769e582d, 0xd27961b4, 0x627b59e1, 0x1f7be038,
+       0x9d1cc796, 0x471d7a58, 0xc39bfcb1, 0x8e47e58b, 0xd5fe58d3, 0xa8f2c3e1,
+       0xef9622e3, 0x3023c83b, 0x104721ce, 0x4c39ef96, 0x123a7658, 0x70ef3cb0,
+       0xdf123ce1, 0xa777460d, 0x0b3edeb9, 0xce8017f4, 0xac55470e, 0x47d29d59,
+       0x513c1f67, 0xc126748b, 0x81bd74b9, 0x829c43d3, 0xbcd4bc1e, 0xbd4bf981,
+       0xd7afb483, 0xe81c3a71, 0x75edc0fd, 0xe87bfe9b, 0xd98a2e2d, 0xde943fc5,
+       0x5929e8fa, 0x83594f45, 0x3925d3d1, 0x9945c53d, 0xf4e41e98, 0x23ec30f4,
+       0x2a321f80, 0x55f2605a, 0xd7acefb2, 0x4b54006a, 0x29ff0982, 0x9f2f7ac1,
+       0xdbed257b, 0x6ba07689, 0xdeade824, 0x9118ff91, 0xf7a1e944, 0xc67e4528,
+       0xd353fbc0, 0xb770c0c9, 0xee543fa2, 0xee8f48a2, 0xc21c1edf, 0x21ac1ae0,
+       0x213c6425, 0x68bf866b, 0xd6346bb9, 0x4e7004b5, 0xe199965c, 0xb6a5c601,
+       0x3077c035, 0xff0caeb8, 0x778c2c72, 0xccff57f2, 0x8a2e3281, 0xed21d7d9,
+       0xc4f9da22, 0xe00582f3, 0x064bd7eb, 0xe7c4024b, 0x26f5c37d, 0x74c813b4,
+       0xd79cfc25, 0x86b7e029, 0xf513a8c2, 0xc202637e, 0x2397d86f, 0xbf008712,
+       0x60fbe4c1, 0xf60bbcf0, 0xcf00dffd, 0x60e3e4c1, 0xcd589172, 0xfdd1b6af,
+       0x331cecf7, 0xc83321fe, 0x57e64cc1, 0x9eef000e, 0x0617ea7c, 0xd105e3a0,
+       0xc745efda, 0x1d12713d, 0x3a11a677, 0x17e01ecf, 0xeb6f7efa, 0x17801165,
+       0xe08338ff, 0xc7c3f853, 0x9fefe069, 0x778e50cb, 0xdebc6ab3, 0xc1182f7d,
+       0x30925aef, 0x0089cd7f, 0x9aca9078, 0xc26be596, 0x9b6876e4, 0x28dbdeb2,
+       0xbae0b494, 0xc7b311cc, 0x5fa89e80, 0x32f6e4c3, 0x9671a52c, 0x3ce39424,
+       0x22b39b67, 0x62e7bf98, 0x244b60f2, 0x8eb38bca, 0x63ffec0a, 0x71a067af,
+       0x4f50f5a4, 0x020f1c97, 0xb2db4c79, 0x203fee06, 0xd73f6b3d, 0xb894bc43,
+       0x9d825f75, 0x7dff4418, 0xd1077e0b, 0xb71a5d62, 0x1a7445ae, 0x5be784ae,
+       0xf7d1f314, 0xf5a527cc, 0xdf177e67, 0x8949c968, 0x78bea96e, 0x0b1ed611,
+       0x8d78bbf4, 0x69ab2edc, 0xaf515bb9, 0x8d6fbb6b, 0x82ab8edc, 0x25fca85f,
+       0xe81682f5, 0x51939aa6, 0xb56c368f, 0x3cb7d740, 0xa9788cda, 0x9abf5813,
+       0x4edeaf20, 0x656b9d1f, 0x7d681b78, 0x19411d67, 0x8abf8a5a, 0xf83d46a0,
+       0xa32d1559, 0x9ccf410a, 0x07195d6b, 0xec4ab7fa, 0xe016d7bd, 0x79723ffd,
+       0xf3a5d8bf, 0x4e7ced29, 0x2b8e841f, 0x09fd37db, 0xd68bc3f3, 0x2e2c35bb,
+       0x28f71ea3, 0xe0d57b8c, 0x72dda9f0, 0xb9aa78b0, 0xdb6a9c3f, 0x28ede82e,
+       0x397fe917, 0xe092707d, 0x76da3cb7, 0x5f8e9a34, 0xf185dcd9, 0xe73ad38b,
+       0x43bffb88, 0x5fdff65e, 0x50c9c258, 0xa49cbed9, 0x6bb9e613, 0x98889f12,
+       0xca90f96f, 0xeaef33f1, 0x7221c808, 0xad92f689, 0x4d5b9c03, 0x73df9f4e,
+       0x29556b57, 0x1bccfbc0, 0x5befd1d3, 0xc4466c40, 0x01cc6903, 0xd11ce73f,
+       0xce9c0094, 0x138cf791, 0x14b87864, 0x53f847ad, 0x7c98e83f, 0x520fd47d,
+       0xa41fa9d4, 0x1b9397a8, 0x4e54b4e3, 0x23a93f96, 0xa7f7012e, 0x368eef68,
+       0x488bb8e1, 0x35d8037d, 0x2ef0fc52, 0x5326d113, 0xbbf35eb9, 0x20ca72e7,
+       0xecc31dde, 0x7f5ce961, 0x89f19531, 0x65b2bdb4, 0xdb4adea3, 0xb84eb78f,
+       0xfa684a99, 0x0921abbe, 0x175febce, 0xfdcd9b2c, 0xd77dfbe1, 0x64af5eaf,
+       0x2fcbf52f, 0x69a8ebe0, 0x00aeac16, 0xc3191674, 0x07d257e8, 0x45263119,
+       0xaa8c691c, 0x2f55593e, 0x7d55fa82, 0xcfcc1ff5, 0xcfc14431, 0x63eda3cb,
+       0xff196262, 0x682c9f82, 0x3fcf487d, 0x7e84fc78, 0x51fe4fe3, 0xf2514fc7,
+       0x28bf1d19, 0x711faae6, 0xd6fd61fc, 0xf8d0333f, 0xe57bbf35, 0xe795270d,
+       0x653daf95, 0x38ced424, 0xb38c6da3, 0x6f57fc50, 0x3a04655e, 0x1a75ad38,
+       0xb8cf9e81, 0x005712c4, 0x4fdab679, 0x0130d60f, 0x2bf09ce2, 0xcbecff1d,
+       0x7e0f5f0f, 0x759b97cb, 0x365f8c26, 0xca063c1b, 0x8badb5a7, 0xac58c94b,
+       0x2ffab177, 0x6f50882e, 0xe567d253, 0x338a9e6f, 0x259d2387, 0xef4e306b,
+       0xb6a07f41, 0xd06293e9, 0x87c475ef, 0x0f7ea67c, 0x8518bfe6, 0x1f4ca7fa,
+       0x031dbfd1, 0x3ef07122, 0x7d6ba9fb, 0x846882f8, 0x2053daf2, 0x82e7a84f,
+       0x7bf51871, 0xbfcedc15, 0x063c262f, 0x3244d8e5, 0x0498e411, 0x7662e217,
+       0x7e97cafe, 0xae8bb639, 0x5de9bbab, 0x978320a3, 0x2dbd6fc4, 0xbdff9ff3,
+       0x79b96079, 0xdca3f29e, 0x82f4949e, 0x27fb8db9, 0xeb56566e, 0x54a9c63c,
+       0xd46f543e, 0x71f49c59, 0xbc2f2bf5, 0x1f882bf8, 0x0cb0607f, 0xbd57e3a7,
+       0x29fde7b2, 0x55b55eb4, 0xb6ca5317, 0xf5c42611, 0xfe8ea7e1, 0x0fbe365b,
+       0xf7db951f, 0xd863cde8, 0xfaa207f3, 0x75b552f0, 0xe98c9e97, 0x96828f0f,
+       0x586f7a5d, 0x74b4fc00, 0xb5bd8315, 0xf4afa5f2, 0xb33b5210, 0x19f12053,
+       0x71b9e001, 0x0063da0f, 0xc727c427, 0xaa7f1f97, 0x2f1475fe, 0xf8d5d720,
+       0x8dbbf752, 0x17181bcb, 0x7d285af2, 0xba7bfabf, 0x1abf8a8e, 0x8a87002c,
+       0xc231ef57, 0xeb694e7e, 0xb73f9d19, 0xe74ace2a, 0xe339d0af, 0xe7b2584c,
+       0x29febf15, 0x83a2dfd2, 0xf1638d3f, 0x06a26b41, 0x11339575, 0xc370b9f6,
+       0x72cfb84d, 0xac3a4762, 0x81b44e78, 0x4b42fcbc, 0xe006b64a, 0xf4cb1213,
+       0x144da9f3, 0xa79f74b9, 0xf9071fc0, 0xdae89efe, 0xddcb7e8c, 0x29fc7f18,
+       0xd8b50bdf, 0x1045feb0, 0x31fbd7c3, 0x501f6e1a, 0xbf4e5deb, 0x04e8bf4d,
+       0xb54d9d3c, 0x5739c3c6, 0x393ad11d, 0xe96f843c, 0xa2c1e2b8, 0x62278678,
+       0xf7f0e6d6, 0x0055dda8, 0xa77fa1cf, 0x563c1ace, 0x36f91ef1, 0xa5fe6fa3,
+       0xeeba7e7c, 0x4e97b010, 0xffb605c5, 0xd1fdf0c7, 0xa3224e9f, 0x33bf1933,
+       0xc35a6ffe, 0x7fe25df8, 0x6812ccd7, 0xe310fcff, 0xf40f7823, 0x27975d25,
+       0xcd77db1e, 0x183e5016, 0x9f102788, 0x9f38e937, 0xf4d5db2b, 0x15afd742,
+       0x03746422, 0x1e2144f3, 0x7f2a9ed0, 0x932fbe92, 0xaf3075a3, 0x12b8ffb1,
+       0xf2e22f1f, 0x792a9fe0, 0x39303640, 0xeb5db030, 0x9d30f164, 0x015fc5eb,
+       0x757e52ff, 0x757f819a, 0xa7ffd836, 0xbfdfda5b, 0xa7edf28d, 0x2adf122d,
+       0x6f9aaae5, 0x94fdb62b, 0xf9aa9d00, 0x7a94d3f6, 0xe96f9012, 0x9b7c80f3,
+       0x911ffde2, 0x871c12ab, 0x28e12ac5, 0xe081c9c9, 0x7f9396a9, 0x94073188,
+       0x10e7f493, 0x8f4fe9c9, 0xf44a1d12, 0x9adbf957, 0x7e479074, 0xd0e8953a,
+       0x1d12a74f, 0x84adf7aa, 0x9bbdbaa3, 0x6df018e2, 0xe787537b, 0xc16ed519,
+       0x777e4065, 0x46ce4dee, 0xcd515978, 0xc9bdc691, 0x4bbaf231, 0xf5516f55,
+       0x36eaaab7, 0xaabb7f55, 0x5fe8af5e, 0x27aed6dd, 0x451e0748, 0xb3d9713f,
+       0x4084f8e4, 0x7e62eb74, 0xbd05eb52, 0xcc23e813, 0x56ebef87, 0x23e42710,
+       0x788876fa, 0x6143d34e, 0x84f100dc, 0x272e192d, 0x82ab2395, 0x8bef1f99,
+       0xdc8037d5, 0x8cf931eb, 0x660f5051, 0xcd8f71f6, 0xd9948c67, 0x116e5d99,
+       0x45d7b6e5, 0x39f9024a, 0x3c20b354, 0x76a064bd, 0x13d4fe76, 0xf30b1c62,
+       0x69618915, 0xd3be20cb, 0x48e05a28, 0x5bf2c169, 0xd40e708c, 0x61bacee3,
+       0xf0be7d0e, 0xb9a5916d, 0x44daad38, 0x9a717f99, 0x15ce9f38, 0x2d76df20,
+       0x377cc9d2, 0xac1637f3, 0x95f74c0d, 0xb0f2bdfc, 0xaf907aa5, 0x26384fd4,
+       0xc691473f, 0x7aa0d8a9, 0xf9ce9eee, 0xeafd11a3, 0xbb6526ca, 0xaba5fb9d,
+       0x4718fe25, 0x90bf71c6, 0x7cb845c5, 0xdf47122e, 0xa1e28730, 0x0c489f67,
+       0x16ebdeb4, 0x5bbd0f11, 0xb5c41704, 0x9d963388, 0xca1f1357, 0xdd5e0945,
+       0x0d9747c0, 0x5fbaaf2c, 0x7ee738ff, 0x3e3797a0, 0xd02cfb1c, 0x8c1f1bf3,
+       0xbfea0b78, 0x21f6923b, 0x60bfdfe9, 0xc39e3067, 0x470cecf7, 0x71d9ef3a,
+       0xa87eed20, 0xc0b069bf, 0x7e767b3a, 0xa6e81635, 0x02a18567, 0x2a4f5de4,
+       0xdcae8b8b, 0x2f58d5f1, 0x1107d9ea, 0xf563db7f, 0xff725ecc, 0x0c426ff3,
+       0x60577494, 0x450cec47, 0x7dfbaa3e, 0xf8e08bb0, 0xc3d8e55f, 0xd4fdbc7e,
+       0x9e8bbcf2, 0x1b673270, 0xe5922fac, 0x35bdd415, 0x74e585f9, 0x5dd69afe,
+       0xbdb4f9fa, 0x1aff0fe0, 0x67b4720b, 0xce8fb31b, 0x86bfbceb, 0x4f9d82bc,
+       0x47487fed, 0x981e75f1, 0x23da8929, 0x074f874f, 0x970fe97e, 0x6a9c617f,
+       0xfc38f0a8, 0x821e06bf, 0x70b9c995, 0xfb009057, 0x1f6ffafe, 0x80d17c62,
+       0xf7ed2974, 0x68e596d3, 0xefb60cb7, 0xdb9fffcf, 0xca19e0b7, 0xfee3a3be,
+       0x4cfdf7b3, 0xa7d719ac, 0x74fe83e6, 0xac5ee3be, 0xc16e12bf, 0xde910ef5,
+       0x38b1c427, 0xfeea7fcd, 0xb7de37bf, 0x071bbc51, 0xff8df7df, 0xf6fef16b,
+       0x13778e3c, 0xfdd6539c, 0xbeb85fe1, 0x96e72bef, 0x7de387fc, 0x764bfda0,
+       0xeb6341bd, 0x9beba3cc, 0xc1c31a43, 0xb635b8b0, 0x32a43f77, 0x8f3f521a,
+       0x54eaf581, 0xf95296e7, 0x9ff31c42, 0xfd068274, 0xc0937242, 0x4fe642fd,
+       0x8bedcf5d, 0xd1ca53eb, 0xcadebd7e, 0xb5a27cec, 0x21b2f2d9, 0x05816f6f,
+       0xfc64a6e3, 0x6fd43b51, 0x4aebc69a, 0x024ff2bf, 0x8ed40ab1, 0x64ad3ebf,
+       0x37b3d81f, 0x063d68a4, 0x79417656, 0x4f9fc8d8, 0xb73dfa52, 0x5bf595da,
+       0x37eb28e6, 0x066ef1f1, 0x7fce8ae3, 0x41704db3, 0xfa97549c, 0x4dc42c64,
+       0x44750b75, 0xa77f2010, 0x17f8157e, 0xef94d937, 0x991ee83b, 0x98e0c8ff,
+       0x40256612, 0x8f6e3a17, 0x58598616, 0xd846c53d, 0xfb0b90b9, 0xc4ac636b,
+       0x9f2fba39, 0x59507178, 0x04739c15, 0x8e10148d, 0x5115ac37, 0x168d050e,
+       0x49b65d70, 0xfd1fcc3a, 0x01cb6344, 0x984e94fc, 0xb633fb58, 0x69c00b0c,
+       0x39738731, 0x893b47a9, 0xdbf6fa5c, 0x2b881cdc, 0x16b3b413, 0x4199095b,
+       0x5cf282fd, 0xf90213c1, 0x8ce25a46, 0x56f10f18, 0xc4531c81, 0xf875955b,
+       0x6fae3ab9, 0x0ffac19c, 0x763fc744, 0x37ca77f9, 0xd26ba8c7, 0x9c70e505,
+       0xe3f72b5e, 0x383374ee, 0xae0b55d6, 0x8f47a44c, 0x673b26ce, 0xf1678b4a,
+       0x303fbfbf, 0xef31f901, 0xcc1131b1, 0xefc6ccbf, 0x7db8eac9, 0x4734ebda,
+       0xd7a55c40, 0xe3cfc59d, 0x00f68c0a, 0xfb90707c, 0xbc817f75, 0x14f65a32,
+       0xf8228d0a, 0xf187c40d, 0x30616744, 0xef201cd9, 0x0d389bf1, 0xa3d6438f,
+       0x623f099f, 0xfd91e00e, 0x46afa22c, 0xb6f0c944, 0xed19c676, 0x8078fed8,
+       0xf3b2639f, 0xbe177f97, 0x5c0247e0, 0x8b7b060f, 0x6bf6016d, 0x5f7c678a,
+       0x3d6bfbba, 0xba37f1f8, 0x97007433, 0xc5450b1b, 0x3c506d39, 0x9027ffb7,
+       0xd2aeb009, 0x271ad7dd, 0x89f65e03, 0xdf0a6096, 0xbd05f73a, 0x9ff9c03d,
+       0x3e309e1a, 0x2ce8339e, 0xe3cf00e5, 0xf013048f, 0x73f00ed3, 0x8f90d1a5,
+       0x07431a3f, 0x25638856, 0x53b8b3c6, 0xcb09bc6d, 0xba79a559, 0xe8ef3a58,
+       0xc838d356, 0xfde24fe3, 0xd8cde36b, 0x93dfcc9e, 0xb35525fa, 0x537a5d7e,
+       0xbffda06d, 0x73f02098, 0x93bdcb13, 0xbc3cff84, 0xee163de5, 0x543d07c9,
+       0x6aedf928, 0x1fc826ba, 0x0b8225bd, 0x5df804f4, 0x50152f58, 0xb0d01d4f,
+       0x4c8de776, 0xaf744b9e, 0x87317386, 0x797f34b3, 0xe9e7a33c, 0x3824bf9c,
+       0xaf55f04b, 0xe54fea57, 0x78f235d5, 0xe36d0dc7, 0x5a3d055e, 0x1a4c16eb,
+       0xd6ad543a, 0xac3e07ab, 0x075c7b6b, 0xcd5bfef1, 0x47aa5c6c, 0x8fcfcac6,
+       0xb8b5e36b, 0x53f1f69e, 0x7c9d01e7, 0x33da96b6, 0x82eb7df4, 0xc390460b,
+       0x3f963407, 0xf3921e43, 0xfcd9224f, 0x43eaf21d, 0x50b2a987, 0x03371f27,
+       0x3aab39d7, 0x99e1074f, 0xe977abdb, 0x54f465e2, 0xed851f1b, 0x6aa4f3d2,
+       0x4e7878f3, 0x3875c3e7, 0xf810351f, 0x4b74601e, 0x79277e27, 0xa3247d7b,
+       0x5d968ac3, 0x6067ac7a, 0x693e697f, 0xcd3f351e, 0x9be6552e, 0xa6f02fce,
+       0x0d4a5c00, 0x0096a59e, 0x20991a74, 0x4f7c739d, 0x74a5613d, 0x23fff63b,
+       0xd254b13d, 0x6fcc5e13, 0x80ffde96, 0x9e9939cb, 0x27a40f88, 0xc7372c96,
+       0xec961e03, 0x26078ac8, 0x5176f259, 0x713d205c, 0x2dcec1d8, 0x91eff08f,
+       0x3d53667b, 0x4f4ca571, 0x3a460ecc, 0x1ed7bf51, 0x213d443f, 0xb2ffede1,
+       0x7a0c39bc, 0xbf7f0022, 0x3713d2af, 0x4f50cbbb, 0x545b3cdc, 0x6073577c,
+       0x17913d50, 0x75d62b77, 0xf400d096, 0xd1db9873, 0x375e7847, 0x22fa03cc,
+       0x7084c12c, 0x818deb53, 0xa1b6fae4, 0x21fff5ca, 0x7d724b38, 0x0db3b509,
+       0x90e88119, 0xb92f3d20, 0x0175ca95, 0xf5c991e8, 0x78f07725, 0xdace4a9a,
+       0xcb66ce40, 0xbf7b2ce5, 0x42f4ced6, 0x2fc65b5d, 0xdbf6d2e7, 0x2096751a,
+       0x3eb6ffda, 0x97239bb9, 0x2c0961bb, 0xdc9faa8f, 0xf77260ad, 0xb404f733,
+       0xdfda069f, 0x52de5cc7, 0x12cc3679, 0xcce63e80, 0x777c550d, 0x1fdc7c75,
+       0x7e076f47, 0xb9e22039, 0x0edc27e1, 0x8fee3fd8, 0x574f60d9, 0x70e4f5f2,
+       0x90779e7c, 0xbf0a42ca, 0x9ecc0582, 0x2222d9ae, 0x195b6afc, 0x0b36d7ff,
+       0x17ad332e, 0xcf1aff8f, 0xb076aaff, 0x83ba3ff3, 0xfe193cd2, 0x1b780eab,
+       0xb55cee20, 0x4bf3c051, 0x78075bc8, 0x2cf0e22e, 0x9fa154b7, 0x5863cea3,
+       0x44dc6213, 0x30f1c4ae, 0xfbc35aee, 0x187c1a97, 0x8dfd2ec7, 0xfa48d960,
+       0x0cd43be7, 0xf80ceebb, 0xaacd5527, 0x783596e7, 0x185f014e, 0xd35b5d83,
+       0x25bf6ca2, 0x42ddf181, 0x3b7a33d1, 0x167f65f8, 0x9df4812d, 0x9f0fcfd4,
+       0x3e137f8a, 0xb27c2907, 0x2cf83c7f, 0xb8c2ef76, 0x8b85f7f4, 0x26b71e1a,
+       0xdf02f950, 0xd9278de9, 0x689f8fc0, 0x9c5f28ac, 0xa79888ef, 0xe1f1e0b2,
+       0x162cfb8a, 0xd01cb871, 0xa1121bd8, 0x67cb2d5f, 0xeb61b459, 0x9f5a389e,
+       0x41c642db, 0x7ad17b38, 0xebf63ea5, 0xea3356ff, 0x5bf5b9f7, 0x5c8bc805,
+       0xaaf7bfc8, 0x0c5e3d70, 0x2c7731f9, 0xf69efaa3, 0x60de3f9f, 0x83d7f387,
+       0x9f943ec1, 0xcd3efd12, 0xbe49f7e9, 0xbe49e38e, 0x6d53d442, 0xd2f90982,
+       0x16f4cc13, 0xad3053c5, 0xaafe4fb7, 0xc585e398, 0x1e18da31, 0x80de28eb,
+       0xbcdd8baf, 0xc1ecc2de, 0xd817dddb, 0x977b99b9, 0xa0abde0e, 0xde51a3fd,
+       0x96efd059, 0xe39c23f4, 0xf0c9c5e5, 0xd18ba3bb, 0x82c166ff, 0xbff45c0f,
+       0x03bf077f, 0x67b255e0, 0x095f8a86, 0xf0ab4f4e, 0xb3b8307c, 0xf39e0274,
+       0xd04d9608, 0xe7891dd9, 0xd91a2712, 0xfc4d25fd, 0x805f353d, 0xc59661ff,
+       0xc2c26665, 0x24b5af21, 0x7102f318, 0x9f664cde, 0xff94e5c9, 0x7e5e39fb,
+       0x3a983cdf, 0x597689d2, 0x3d9afe5f, 0x2bc61e33, 0xbccab411, 0xfdf21f32,
+       0xc7fe308f, 0x493e35df, 0x72fd4208, 0x6d3d898f, 0x2713d54f, 0x3ad5f7c8,
+       0x345ba3a4, 0x4173f7e6, 0x23a43cbe, 0xed9f1fc0, 0xdcc8eabf, 0x91176818,
+       0x4c0eca3e, 0x4ad085a8, 0x227dcb19, 0xbd31f765, 0xffcf9c74, 0xadafaa57,
+       0xc129f197, 0xba44760e, 0xd9c0fbe0, 0x66455d96, 0x1f64b788, 0x6ae7055c,
+       0xef4c0ab3, 0x5c780fbf, 0x3ba64223, 0x00bab639, 0xee7bb4fd, 0x8ecf9016,
+       0x38c17c52, 0x78cecd37, 0xbeba7dff, 0xe2c7563b, 0x6b5cd8f9, 0x5e70cdec,
+       0x68bf7736, 0xf37ed331, 0x830f086f, 0x23e9b5f3, 0xc1976245, 0x89d20ee5,
+       0xf5b99df1, 0x7c04df77, 0xa1f54152, 0xc1e50198, 0x6fa878a2, 0x3afdf010,
+       0x260f5da7, 0x0bfae74d, 0x7f3a6cfa, 0xe007ed39, 0xfac0dbae, 0x160935d5,
+       0x772df948, 0xb2728e3f, 0x0bc049bc, 0xfda93a4d, 0x75c6c41b, 0x3b71d105,
+       0x69f7d037, 0x0fbc117d, 0xde4536e3, 0x7560e70c, 0xfef89d74, 0xee78e5a4,
+       0xa3df4e59, 0xe9b3a4cd, 0xf16f1c6e, 0xc9008106, 0x78ca4c56, 0xb78c1274,
+       0xf681675f, 0xd19ebb23, 0xd1e7bac3, 0xf8e912f9, 0x116f45f3, 0x17eee3c6,
+       0xce6f784c, 0x77c80596, 0x48ef9c3d, 0xee767cfd, 0xfbe9102d, 0xff3cad2c,
+       0x9644eae1, 0x6cbe5d4f, 0xcbec0379, 0xd0cd8ceb, 0xd05d3d20, 0x413f1e83,
+       0xf6a76de1, 0xcb3d71eb, 0x1e7768ab, 0xf2657bd7, 0x2cc4f6f3, 0x6d05ffa4,
+       0x16672879, 0xcf9e1b12, 0x7b3397db, 0xb0556ba4, 0x4c3b004b, 0xe7834a67,
+       0xf80cabed, 0x4c2bfcfc, 0xf54f9cef, 0xd4f51c62, 0xef811d06, 0xc86e56d6,
+       0x78f01a7a, 0x02ce8b6a, 0x39f169f1, 0xe8bd2e76, 0x6b271615, 0x3dc6c0df,
+       0x5be4ccd5, 0x153773c1, 0x445edc83, 0xf70194e5, 0xe56394a7, 0x53944ae6,
+       0xb93305cf, 0x6a5796a4, 0xb8d15539, 0x5a1eb031, 0x0f581c5a, 0x38b034a5,
+       0xb9fa00e7, 0x7b31848e, 0x0f193c77, 0x35652b79, 0x03d6f3a9, 0x12c1df3d,
+       0x6f3d3bc6, 0xe814f17e, 0x0270eadd, 0xa6b56a4f, 0x1f4605a7, 0x5cffe404,
+       0x802fd6f7, 0x06e62a1f, 0x272f005b, 0x47c01f01, 0xbcf1a36b, 0x8655dcb4,
+       0x3af29770, 0xd257ad17, 0xbc8714bb, 0xab122ed5, 0x84557f5c, 0xdfacab12,
+       0xba539f91, 0xd9dcf3a5, 0x0582b826, 0xfded77a8, 0x4dd63669, 0xdc65aeb8,
+       0x8e1b583e, 0xbee47d74, 0x6e80ab0b, 0x10203de7, 0xd389dbb0, 0xb0fa00de,
+       0x8660bd76, 0x07a2eeb8, 0xe88bfbd8, 0x23eeb0fb, 0xa2fa30cf, 0x3e066e74,
+       0xf8f0dda8, 0x24dfec5e, 0x23fc6198, 0x9ed0cb1b, 0x048a70a8, 0xd0ba9bdb,
+       0x0afaa08f, 0x9dda9bf3, 0x41f01c62, 0x130683ed, 0xf44b939c, 0x1767d124,
+       0x412567cf, 0xe8b3b196, 0xe689417b, 0xce297480, 0x14fafc11, 0xc9cea7e8,
+       0x15ebade8, 0x6458059d, 0xdf64fa70, 0x27f44b41, 0xf765fd02, 0x86fb5fd1,
+       0xe3d03d02, 0xe7809729, 0xbf4005f9, 0x492f9f40, 0x261219f1, 0xa306a3b7,
+       0xf61d354f, 0xd9b83fa3, 0x3e8fab28, 0xd3547a25, 0xb92d31e1, 0xcf7dd619,
+       0x47dc60aa, 0x379bc341, 0x867c632f, 0x0d0540e7, 0x5f01c5f7, 0x5e596b97,
+       0x1ad70489, 0xea43cb2d, 0x9727aeb7, 0xb28713eb, 0xae3ad53e, 0xe3ef0c48,
+       0xc9e59107, 0x7f3ce878, 0xe602f2dc, 0xb97b9deb, 0x6fb47aeb, 0x0074a2de,
+       0x4e12dff0, 0xb887e83c, 0xb6551e50, 0x67cc568a, 0x66727ad4, 0x2977fcc9,
+       0xb5eaa2ef, 0xe5778470, 0x94ab8336, 0xc6f95fbe, 0xfe78b1f1, 0xdfd982bd,
+       0xb40597ce, 0x3bd3898f, 0xa91bbe16, 0x0ffcb2d4, 0x62f05db5, 0x75778b22,
+       0x073a19bf, 0x79a136ec, 0x551f9e17, 0x33a2dcb6, 0xcfbbe2c8, 0x7ea4ea25,
+       0xa4e31e78, 0xe3ef8678, 0xfbf27d61, 0x8fbca4c9, 0xfd1897ee, 0xd0e9b655,
+       0xde6cab9e, 0xfff21e7a, 0xd01a8f2a, 0xbe6baddf, 0x05cdf980, 0x0462bdaf,
+       0x89b5d478, 0x7eafbc8a, 0x22cd56f9, 0xb6d48f9e, 0x07fe60d6, 0x4939e3ad,
+       0x6fcf0b6d, 0x40f99efa, 0x78edaf55, 0x584149c3, 0x4637fdb5, 0x9db3bfe0,
+       0xbdf88d9b, 0xe777f34b, 0xafcbf63f, 0xf3c3596a, 0x229c66ab, 0xe7031f28,
+       0x5f859d57, 0x26752128, 0xca4e7b72, 0xf2666b53, 0xc733ae8d, 0xec6e2016,
+       0xf95ebbb7, 0x1f90d7e2, 0xd3edbddc, 0xabbac35f, 0xd7ecf9bf, 0x7641cf90,
+       0x4ec09b06, 0x30f97ba9, 0xef4a53e6, 0x7ee44d9d, 0xc1bf4be2, 0x1ff3d47c,
+       0xda302c18, 0xd2a71df9, 0xbf38fec0, 0xc838ebf5, 0xa3ba5d33, 0x4b3be308,
+       0x27882f5f, 0x5207e201, 0x1aebf409, 0x1aac3e42, 0xedaded6f, 0x8e727798,
+       0x84e41de2, 0xa5ae6f3f, 0x9a23e586, 0x96dcbe79, 0xfdc7f9c0, 0x675ae3f2,
+       0xe40d30dd, 0x13b32b63, 0x3b93cd06, 0xe579f144, 0x85b8f010, 0xccb643e7,
+       0xb93ccef8, 0xc50bf073, 0x32927057, 0xd68bee4f, 0x0affcf85, 0x07a35ada,
+       0x0cf393cc, 0x7e527e01, 0x6b44e1f3, 0xd1f0124c, 0x7e62dfb6, 0xd4afe022,
+       0x8bfaf20c, 0x9f178834, 0x2e30f9d6, 0xc061dbe1, 0x772aedef, 0x3a7e411c,
+       0xcc41faff, 0xcf3c261f, 0xfff13cf8, 0x1e507cb0, 0x0a6baa03, 0x1c75f967,
+       0x677f900f, 0x9e73e236, 0x5ae8c767, 0x281bbfca, 0x8934aeef, 0xde5255d9,
+       0x87d34d75, 0x0fad9f3c, 0xc024c26f, 0xe677d757, 0x30704a35, 0xca261c01,
+       0xe7034af3, 0x4af3fa39, 0x7c037855, 0xe7f71c82, 0x0a7ad28d, 0x84ba0fe4,
+       0x94f28123, 0xf9646fcf, 0x8175e7a8, 0xf2956fbf, 0xc2a27f4c, 0x81dfb4b7,
+       0xdbe245f8, 0x7df1f6c1, 0xc93134e1, 0xe1aae38c, 0xb0297dd5, 0x124caf7c,
+       0xd23df486, 0x542fdf80, 0x23efea0b, 0xd65d0316, 0xf1e976b4, 0xafc90b9e,
+       0xe6edfbe2, 0x97eeb6f1, 0x6c3bcc45, 0xf9476968, 0xb51f96ae, 0xbd451cfc,
+       0x989207de, 0x636daadc, 0x5b7ba3fa, 0x8e8c2bb8, 0x4dfbbdd3, 0x2ddaeba4,
+       0xb8f7985d, 0xdebb79b7, 0x067f3b2b, 0xad92e1fd, 0x5dd5fbbf, 0xf39e5163,
+       0xf3d4ad7b, 0xa9e7c43c, 0xa79e0773, 0xc505cb6e, 0x16ce553c, 0xf06c29bd,
+       0xad6acef9, 0x6778c0b7, 0x751d993b, 0x092c45b6, 0x4d4efdf4, 0xb39f8e92,
+       0xea92b237, 0x2bdfbc51, 0x25e7dd9c, 0x2ed0431a, 0xe93e1a5b, 0xb923dc28,
+       0xf98f5c34, 0xf3972b17, 0x5b9f8d7c, 0x2bdf0012, 0xb023afc3, 0x5f0055de,
+       0x33af7f99, 0x73d809d9, 0xb65b04ba, 0x5a461cfc, 0x43463ebf, 0x2ffc325c,
+       0x07892f0d, 0x9d6894ff, 0xeb8eb029, 0x82d2bf33, 0xb074ec5e, 0x74b93ef8,
+       0xef3c187c, 0x44f69ad4, 0x0b3b71d3, 0x66840b05, 0x4bbdd3fb, 0x69987f11,
+       0x0a83de55, 0xbfb0fe39, 0xed068b5e, 0xc78d70c4, 0xf090bb44, 0x7404cee0,
+       0xacc4cd70, 0x7cd4c38d, 0xc87f8fcc, 0xbe0c3411, 0x6a1233ef, 0x8b3f42b6,
+       0x462f7156, 0xeaad24c4, 0x68720c9e, 0x30d7a518, 0xbc52af4e, 0x4efd9c2e,
+       0xfde2f5c7, 0xc9a3911b, 0xb5df2072, 0x27b476e1, 0xf8ad19d6, 0x19fd1afd,
+       0x51127909, 0xbf22c424, 0xabce87d7, 0xce840fb8, 0x5a47a8ab, 0x12e8f595,
+       0xfa4089ed, 0xa3af9a26, 0x38430c58, 0xb8691644, 0x1d2d6cbd, 0xeeb7d71e,
+       0xf16258c8, 0x308cfb40, 0xeca74bcc, 0x23ef94e5, 0x6eb94c2c, 0x9c853eba,
+       0x75ed1888, 0x153ad86a, 0x2cc44dcf, 0xcaadfee0, 0x8abd74e7, 0xdc4927fa,
+       0x2d12d14e, 0xa0b0bbc8, 0xdfe1c24e, 0x83f780ab, 0x1c545b5a, 0xd6132a61,
+       0xdf099749, 0x7df04437, 0xfd15f9d0, 0x603d104d, 0x21c72bf3, 0x77f92629,
+       0x3d725789, 0xedb26af8, 0x3937904b, 0x2098f5e9, 0x58209b9c, 0x6da04c4f,
+       0x4f9418ee, 0x300acb99, 0x6468452f, 0x2d6c3574, 0xe619be41, 0xe42ff963,
+       0x53b410c1, 0x19c4410d, 0xb7be1e3c, 0x78dd4e22, 0xf9c5c598, 0x4342bccf,
+       0xa6aed287, 0x73df46b4, 0x0b35f2fb, 0xa05a1229, 0x59ff8e89, 0x4c975592,
+       0xb4cc35fb, 0xc1c66827, 0xd23cd6f6, 0x3b5c8291, 0x9a86220a, 0xec0fabe5,
+       0x8552c69b, 0xe2075ee0, 0xf4007d5c, 0xa754a370, 0xfbbe1d82, 0xd7f10c6e,
+       0xde5441ad, 0x7ab26637, 0x1fabb3f4, 0x5e47fb81, 0xc345b74b, 0x74c8243c,
+       0x79879e39, 0x83ff70a2, 0x9d6917e9, 0xc5bc9b23, 0x9e2cd921, 0x0ecff70a,
+       0x877ff70f, 0x7378fa8d, 0xa0f75498, 0x3d6b617f, 0xa6ad7288, 0x6bb620e5,
+       0xf4cb4ea0, 0x72716f68, 0x925b7524, 0x3091999f, 0xb2daec0a, 0xe7dd0d04,
+       0x0e67e4d4, 0x70e56368, 0x07014e78, 0x0f678aed, 0xc3954bec, 0xc003d9e1,
+       0xc38543eb, 0x7d9f67d4, 0x18c7ee04, 0x5d29beea, 0x7386494c, 0xde0d3cf9,
+       0x68f135c3, 0xe85fc618, 0x23ea304f, 0x01c6ce3e, 0xfc95d3be, 0x3e4e3a14,
+       0x97d1238c, 0x57449ef4, 0x164dd103, 0xeece5d31, 0xcfd25477, 0xe9d6c93d,
+       0x64d2c780, 0xab94c5eb, 0x5df8ff70, 0x997b74f8, 0x8fba30ad, 0x7d9849ae,
+       0x30e18dc2, 0x61b35dff, 0xd35d697e, 0x998896f3, 0x264c2710, 0xb83c77d2,
+       0xce65d89f, 0x9f7411e0, 0xe60d56b1, 0x6c9abf6f, 0x33de0dbf, 0xa879f1ce,
+       0x8026a478, 0xf620827d, 0x47f123cd, 0xc7e60ec3, 0x5c699437, 0xb079d82b,
+       0xd1f5e300, 0x1f455787, 0x6d1f463e, 0xb51f485d, 0x1f462eee, 0x43f3cb6d,
+       0xf81ab9f8, 0x37c48dd1, 0x9f5ef00e, 0x4b4336dc, 0xea1e9ef1, 0x74a6486b,
+       0x3ebe73a1, 0xc21474a3, 0xd0e016b5, 0x5d7c3f0f, 0xc206bed2, 0xccbee36f,
+       0x9f834787, 0xe7835fb9, 0xa4dc1261, 0xb3254f7e, 0x54a2ccfc, 0x8700fdfb,
+       0xbdde49ba, 0xfb6dbe80, 0x0ebcc3de, 0x771bfee3, 0xd9c6fbc1, 0xbee64314,
+       0xaff71b79, 0x1b9e7bc0, 0xe5deecdd, 0x8273e208, 0x1e181f5e, 0xf0fc7f8c,
+       0x3467bb00, 0xf90ba3c0, 0xddfe65e5, 0xfc3be512, 0x943d374e, 0x68f123dd,
+       0xdedf3b32, 0x92f22c94, 0xfbb161d9, 0x7fe0f57b, 0xc1a83dd5, 0x8e50b1fe,
+       0x41ffef96, 0x5929b7ec, 0x93c3c8ab, 0x13d12af0, 0x70a1a495, 0x8675451f,
+       0xfd2559fd, 0xca668544, 0x7bde93c6, 0x0b6c41d4, 0xec4ca128, 0xd01eebb8,
+       0x967e94ab, 0xa31bde29, 0xf9b8060b, 0x67d287e9, 0xf7d0fc20, 0x177c625e,
+       0xc2f60a15, 0x22258ed6, 0x4430abde, 0x7dc0e6bc, 0x4e7fb482, 0x46dfa928,
+       0xa089cfdf, 0x79a3d425, 0x93d79e3d, 0x91f59959, 0xe7d02345, 0x765c791b,
+       0xfeff3257, 0xfcba6b4e, 0x675031c6, 0x084dcd70, 0xf120bd45, 0x0f8296ad,
+       0xfcb5b5ce, 0x97d33b7c, 0x49bc01a9, 0x69f5ac7c, 0x6954e13c, 0x1acd6a65,
+       0xc77873c8, 0x79c1b761, 0xe77240e1, 0xbbec51ba, 0xc3f3f542, 0xd83f3d7c,
+       0xdfbcfebe, 0x8187c7f7, 0xbc826a6f, 0xeb48de8f, 0xc33ea3b5, 0xd08aed38,
+       0x75dfa9da, 0xfd7a820f, 0x653a5cef, 0xfcf0fb04, 0x20494345, 0x85383b3b,
+       0x639f6dc1, 0xc397be0e, 0xf12379ef, 0xecabbe52, 0xe36845fb, 0x32a21976,
+       0x9da39f13, 0x408a3575, 0x1b53a7c0, 0x6687ef05, 0x35e2b9e0, 0xa518efaa,
+       0x3dabb2f3, 0x13980e2c, 0xf9c52ae1, 0x3cc2c8ae, 0xd9917242, 0x3ff4414b,
+       0xe22a8738, 0xa3d666e7, 0x87500ea6, 0x858dd139, 0x06447e38, 0x88f2b5c6,
+       0x9cb67ef2, 0x0356a778, 0x381959ed, 0xaa90415e, 0xdc608b3d, 0x39765c8a,
+       0xc888afee, 0x1bd433ec, 0xc790168d, 0xfa5247d3, 0xa33fcfe7, 0xe40dd2ff,
+       0x3f3299ce, 0xadf35ae3, 0xdd8542b6, 0xc2f788d2, 0xf12ffbbc, 0x17f940ce,
+       0x3f30a577, 0x66c39f63, 0x35007c83, 0xc2cdf31c, 0xfee6e183, 0x4fc356f0,
+       0x8e096f0d, 0x7de5b86a, 0xab842964, 0x51f0d4c7, 0xfcefa3c3, 0xf016b5d2,
+       0x44523450, 0xbdc125fd, 0xbe187c3f, 0xfb451dde, 0x142f4009, 0x2ccf00de,
+       0x247bf301, 0xaf88b6fb, 0x68b7da8f, 0x86c416bf, 0x0d47dc63, 0xb470fed7,
+       0xf5c51696, 0xc02f6fed, 0x09ca386b, 0x59119746, 0x089cb788, 0x2fc821cb,
+       0x19c31123, 0x21ae78dd, 0xd78ffcf2, 0x811cbe20, 0x0a7bc1cb, 0xf85361af,
+       0x45cd75e1, 0xe45b9da5, 0xf6033e2e, 0x7d744e73, 0x63cc2447, 0xcc5bf460,
+       0x106b4ffd, 0xf0a41fcb, 0x37a4a63c, 0xe89d8cc2, 0xb7a7170c, 0x6f49df63,
+       0xcfdfb526, 0x070d4de8, 0x835ede89, 0xc3fb9307, 0x5bb7a24d, 0x223c7853,
+       0xbd80a489, 0xeccdf63c, 0xc4df9008, 0x2e30151d, 0xcda8f131, 0x1f9f0e3f,
+       0x762059e9, 0xd65373ff, 0xf6c721bf, 0x93292d53, 0xf6d1b563, 0x720094da,
+       0x6993a24c, 0x88d35f1c, 0x99c41773, 0xe7ed11a6, 0xa3207f7e, 0xa6f7ff6f,
+       0x99243f70, 0xdf3ec324, 0xf933364f, 0xdfe9f7cf, 0x612f3537, 0x7f3e5cfe,
+       0x7e18506e, 0xda7c41e7, 0x33dc3f6e, 0xa71bfef1, 0x1d6faa3e, 0xa49fde3a,
+       0xcf6613d5, 0x8ffbc5cd, 0xb7c85c29, 0x78eb7da1, 0xe2d04538, 0x1d7c383d,
+       0x9c839ae7, 0x1ad6e790, 0x052c7f6d, 0xfec21ee2, 0xad3fb8b1, 0x3fe80467,
+       0x6d67fb75, 0x4ed0b51d, 0x3f6395fb, 0x912afebe, 0x876f99d1, 0x6329b5c1,
+       0xb2953b60, 0x8909ea37, 0xbbe1723f, 0xdf812bca, 0xdbac227c, 0x7655cfcd,
+       0xbf40a85e, 0x0f4c4ad0, 0xdbc7415e, 0xdf8c5bd3, 0xb1501403, 0xf4d4fd03,
+       0x356ba6af, 0xdf12171d, 0x3faf783c, 0x507f3afd, 0xc764803e, 0x90e6e9f9,
+       0xf4fc6e92, 0x037f6d12, 0xfb27a7e8, 0xecc1a793, 0x59fd903e, 0xc93fe81c,
+       0x47b3ef4e, 0xbf426fac, 0xc975ec81, 0x629bdf4e, 0x2d3f40f7, 0x9fbe87ec,
+       0x81acd239, 0x4f3ff4ef, 0xfc02eeb1, 0x60cbf648, 0xd0e9077e, 0xbd749192,
+       0x5a1e38f3, 0x07ef0434, 0xf0112e76, 0x883bec7e, 0xddf3074f, 0xf853af51,
+       0x7d82f3b7, 0xce1fbb7f, 0x865f9711, 0xf8764479, 0xf7c4546a, 0x03725e59,
+       0x7d23bbd7, 0xbbffc023, 0x7df29973, 0xdc566612, 0xda37fab3, 0xc60a3137,
+       0x77c2c6f5, 0x654e65bc, 0xd2fcf57f, 0xaae3d43e, 0xb0d3abdf, 0x9ee06fef,
+       0x6ecc8b6b, 0xecc29638, 0xdf7aff1c, 0x5025f7e1, 0xedde8378, 0x3d728f75,
+       0xa57e8014, 0x6c941ed2, 0xd7eecad5, 0xcc30eef2, 0x898f7409, 0xef048f34,
+       0x8253a4b9, 0xd1023fe7, 0xc59dae5f, 0x7a4f3403, 0x52f5e714, 0x8857cc39,
+       0x16b0df76, 0xeaeced01, 0x7ccd3c96, 0xfccfbd85, 0x3ef67ee1, 0xfd01abdc,
+       0x7b31775b, 0xfa3965bf, 0xccadd50d, 0xf708d9ff, 0x85f12446, 0xc03f468c,
+       0xfe42d7ef, 0x63dc0d54, 0x5a3ddac8, 0x91ab3fda, 0xdcf11ff5, 0xc335c623,
+       0x27b52fc0, 0x2391cdc0, 0x1a3dd752, 0x86a7fd44, 0xa84c120c, 0x752c34ff,
+       0x276bf5dd, 0x651ce951, 0x48dee015, 0x6c347f5a, 0xe8fdd0f2, 0x3c4fa911,
+       0xea04f10a, 0xcaa6a57f, 0xf881dafc, 0x8cd52223, 0x9fc81c70, 0x36dd2d7d,
+       0x97165522, 0x37bfe350, 0xf4011cc8, 0xd9fb86b7, 0x8f9b2dd7, 0x65f043fe,
+       0x4f20d297, 0x7de3972c, 0xb78f2a42, 0xc1efb286, 0x5cd342eb, 0x896ea720,
+       0xf1804fb6, 0x1a5f767b, 0x77e4f101, 0xff471e46, 0x9befcdcd, 0xb0a8efdc,
+       0xafd6f3c9, 0x71f4654e, 0x2376a8dd, 0xae331ff8, 0xa77e0bfa, 0xeecb4e7e,
+       0xa49eeb5f, 0xcdbbd857, 0xc3574529, 0xc14952f8, 0xce7c8227, 0x0a38eecd,
+       0x3d207f7a, 0xac07a7d1, 0x7201e802, 0x9e1c60e9, 0x31eeb507, 0x9ba35c42,
+       0xae7ef77f, 0x2eee3db5, 0xfd6cd65a, 0xaefc118b, 0x5d99521b, 0x89db4e7d,
+       0xbf54f5f7, 0x127de22e, 0xdbb8de74, 0x3adcce21, 0x3621e73f, 0x0f5c904d,
+       0x7b57ff8e, 0xff058db2, 0xc9107ef0, 0xe4169c3e, 0xdcfac174, 0xfb8c45cb,
+       0x78fe234e, 0x722bde27, 0x0d68ab4d, 0x17b7f636, 0xf14aa617, 0x3be63365,
+       0x79b1352d, 0xdccfe206, 0x25c4d18b, 0x57206fbb, 0xfd6111eb, 0xf0e317b9,
+       0x997db9f9, 0xef014aeb, 0x0e196744, 0x07496ac3, 0x3cfca3da, 0xc074fe89,
+       0x793bd33d, 0x9fad0fe5, 0xc48a9acd, 0x0090f54a, 0x863d97f6, 0xbc990905,
+       0x6bc4ec97, 0xa4e32a2e, 0xd255bb6a, 0x71eef96b, 0xa448420f, 0xe167989b,
+       0xb4fb0ef7, 0xb6a59f98, 0xc57c8b6b, 0x8fafd803, 0x6b6dfd23, 0x7a050acd,
+       0x87ba0229, 0x67eb7e38, 0x2d4c7f78, 0xf70cdcf1, 0x8ab6d4f8, 0xbc810f26,
+       0x802beca2, 0x2ffd246f, 0x52eda5c1, 0x8858d07b, 0x9a29bdb3, 0xf73f4056,
+       0x13874817, 0xf5097cfe, 0x0eb779d3, 0xdba94fef, 0xbe7189f1, 0xef381fcc,
+       0xf4aaf766, 0x9f2b8fb8, 0x015f45b7, 0x30d56def, 0xef63b6ff, 0xee41423f,
+       0x6f52e1fc, 0x92d5fa34, 0x5f6feffe, 0x105c5da3, 0xc7e3fa2e, 0x8899fb72,
+       0x3f2087b9, 0x474228ab, 0xfb606144, 0xf223ef37, 0x6fe93860, 0x4ee1f807,
+       0x83805aac, 0xc3f02eda, 0x6c176559, 0x5af6e549, 0xf70f192a, 0x8a5db60c,
+       0x51efc2ae, 0x15a6a1dd, 0x7661ff18, 0xd9c74f4f, 0xf3c3a627, 0x8fbb22fd,
+       0xfc8892e0, 0x55677bb4, 0x1f0657ba, 0x6f11192a, 0x385e265f, 0xffed16ff,
+       0x16109ee5, 0xae5ad70f, 0xd0d77f90, 0xe1c5dfd7, 0xe76249e5, 0xb824ce6a,
+       0xdb07e82f, 0xfcfdddb5, 0xae41b7f3, 0x8af904d6, 0xd88fbc41, 0xfc07a5d0,
+       0xdedaa517, 0x25a5f265, 0x938be414, 0x3a1327e4, 0xc908456f, 0x2df2ba07,
+       0xf3c82627, 0x469f7d7b, 0xdec97803, 0x3879819c, 0xc773f32f, 0xfa8d2dc5,
+       0x5adc990c, 0x4eadcfcc, 0x51699ceb, 0xd333e7b2, 0xbd397c98, 0x9479f2a7,
+       0xc8181fc3, 0x777a00f0, 0x93931a5c, 0xe9cef5db, 0x31dfa05b, 0xd41f7e0d,
+       0x7bf7f7b1, 0xc5da9ee1, 0x40e3cd47, 0x31a6858f, 0xffdb683e, 0xd773de32,
+       0x216811f6, 0xca9a37aa, 0xf79d0d44, 0x7166622d, 0xf41a43b8, 0x4bf1fdbb,
+       0x7d868d62, 0xbcf5f106, 0x38a34fb5, 0xdf8b7ae7, 0x9735faa7, 0x2ca93d43,
+       0x5f6db60e, 0xc85df47e, 0x805ef67f, 0x6f09dd57, 0x17dcd183, 0xb0ec93b7,
+       0x4db687c9, 0x9d7f431f, 0xbf81addc, 0x87cc4374, 0x5fb08936, 0x224269f3,
+       0x2ecfd205, 0x025de3a3, 0xbde348bc, 0xa3c6cdd5, 0xfc0dd8eb, 0x6a9fc12a,
+       0xd34787f6, 0xda9d5bfa, 0x92dfc828, 0x43ed2fe0, 0x42dcdf9a, 0x90c31bac,
+       0xbedbac95, 0xdd2c7e23, 0x44c13f7f, 0x91f0fba4, 0x5aa6572e, 0x1d98d2c3,
+       0xd3f50693, 0xded0427b, 0x24f5ced9, 0x074b2849, 0x1a7849f8, 0x85e2c693,
+       0x9a067ad2, 0xd31a647f, 0x7df952a3, 0x9d65fae9, 0xc37489d9, 0x3b3433ef,
+       0x9059413d, 0x8596d627, 0x96480f7f, 0x0d323b47, 0xcad3ddec, 0xbcdaebfb,
+       0xef7c0d1a, 0x8843bb55, 0x864febc4, 0xe9fb3768, 0xf482db4c, 0x209476d7,
+       0xdf36571f, 0xc487e2cd, 0xf5efcc93, 0xe070f3c2, 0x9e2e7e1f, 0xb272d028,
+       0x64cae37b, 0x08c7af84, 0x2707d57c, 0xd65037ca, 0x5e81ea37, 0xe5652f17,
+       0xbcbe7e22, 0xf91dbd78, 0xcb037cb3, 0xcb4fcc1f, 0xd399fa60, 0x2484d12b,
+       0x8ec95e41, 0x697f0654, 0xba736fdd, 0xaebad33d, 0xf4a5e61d, 0x98f00255,
+       0xd3f8f6d2, 0x5e895cb0, 0x70e934cf, 0xe5108a9c, 0x8e0cfbf9, 0x310fd7cf,
+       0xa4dc9f7a, 0xa4fb87cb, 0x09893b26, 0x356fd1e2, 0x7e41166d, 0x9cf405bf,
+       0xf41cf8c1, 0x0f3de9ed, 0xf40cfe85, 0x4086975b, 0x9ebb7bdc, 0xf1956c54,
+       0xdfc6c745, 0xb2b7f829, 0x8c74f979, 0x04a37baf, 0xdf12f390, 0xaedf704a,
+       0xfc8b5cb7, 0xff8abd7f, 0x2bfbd90b, 0xdfb42f00, 0xebffce3a, 0xd3ff284a,
+       0x914d9147, 0x5db38c02, 0xb19ef81f, 0xfe903fa5, 0xdbd572fc, 0x4d2eae4f,
+       0x35eab943, 0x6bf9d166, 0xb8b2f467, 0x4e3eb4a7, 0x250aeb37, 0x0010c9ba,
+       0x83148dfe, 0x145e00c3, 0xd4cf40ae, 0xc6f3be2e, 0xfb95c8d1, 0xc35e78b4,
+       0x1e7883cf, 0x8c947207, 0x99e4fb5f, 0x55f6b7c4, 0x8539b7c0, 0x6ec12bf5,
+       0x22752e8f, 0xec119e7d, 0x9f5451e9, 0x0e3e019d, 0x70160f20, 0xcea5f1f9,
+       0xea7dd83e, 0x15cf4049, 0xfd8403d4, 0x09820d90, 0x9bb522f0, 0x653f3037,
+       0x7a4f1f13, 0x307fd52e, 0xeefd7dbc, 0x8694dca1, 0x1e9f19f1, 0xb84750f2,
+       0x42231e98, 0xd103f23e, 0x7c04975c, 0xafea98b6, 0xebfa64db, 0xe911ae8c,
+       0x16c38254, 0x465fe74e, 0xe5cf7db2, 0x1a50f174, 0x64d3be91, 0x5ab417f0,
+       0x28b3f181, 0x61173e30, 0xa67b33fc, 0x3ef48b5c, 0x9bbd3023, 0x828a7fc0,
+       0x11b3d7bf, 0xc4b233e9, 0xaca9df84, 0x23825ad3, 0x0b91f615, 0xbfcd8ecb,
+       0xe80dbf44, 0x207df817, 0xfa00affa, 0xdee80127, 0x865ee945, 0x280e893f,
+       0x934bec5d, 0x174d43e1, 0x04a1b9d2, 0x73aaed97, 0x0674e8c7, 0xf7972f27,
+       0x5ff201e6, 0x60fcfda4, 0x87ee9f3c, 0x3c33bfe7, 0xe015f1f7, 0x1d0f925b,
+       0xc40f2e5c, 0x26e9f95f, 0x3ee677f6, 0x26f98f9e, 0xa9fcfc8d, 0xad27cf85,
+       0xcfa702fb, 0x5e8fce81, 0xd2fbb64d, 0xe69ce754, 0x51f47dd1, 0x25d9edc4,
+       0x7e780d9b, 0x005a15bf, 0x2e211d6f, 0x26a3f7f9, 0x2148352d, 0x819e977e,
+       0xc3e897eb, 0x864f4cbc, 0xccbf79d1, 0x3c80eb28, 0x3a749f9e, 0x7dd0c74b,
+       0x673bd56c, 0xdffb40cf, 0x7f8c2d72, 0x04c6a96d, 0xab48ebf1, 0x06f88049,
+       0xe1f02892, 0x84cf367e, 0xe815cb2c, 0x132d9b07, 0xa4841e40, 0xc70478f3,
+       0x818704af, 0x7840dcf4, 0xe7e74fcd, 0x2d5dbc7f, 0xbe704e47, 0x8e590f71,
+       0x27e04538, 0x10afb123, 0x4cb9fd61, 0x48e5f9fe, 0xc5f3c12e, 0x7295d22b,
+       0x88ffaa44, 0x748ae472, 0xe4991cb9, 0xe847280d, 0x8ffe404f, 0x76885a6d,
+       0xd81a392c, 0xce9a9d8e, 0xe82c70f4, 0xd62fda4f, 0x6e9efec9, 0xca59ba48,
+       0xc83cc29f, 0x9e0326c6, 0xc872484b, 0xc3e49b38, 0x823607df, 0xb35e85be,
+       0xc1a747ed, 0xde826fb9, 0x67d0e70c, 0xfbc43e74, 0x3780ea19, 0x04d87d22,
+       0x790077c0, 0xe21e2044, 0x8b0a6bfc, 0xe46e8be3, 0x04452593, 0xe6c767f5,
+       0x15574889, 0xd00299a5, 0xa473656d, 0x8551ed00, 0x29c80d26, 0x97131f69,
+       0x949f4889, 0xcba6660f, 0xb3a260f8, 0xa578045e, 0x7413db47, 0xd3d88491,
+       0xc7906e5b, 0x75a0ee83, 0xd6883c79, 0xf13efb1f, 0xaff3fb20, 0xa0f1063e,
+       0x79d66965, 0xc9abef30, 0x2be03b36, 0xe31ebe27, 0xb7cd43c6, 0x52f4a1f8,
+       0xa44ee3c7, 0x38e34a93, 0x5e779c45, 0xbce319b3, 0x6a7ac0f7, 0x0d3e4e93,
+       0x19fde1c3, 0xb66ded01, 0x172e188e, 0xf10447c8, 0x17ab6311, 0xc922fe21,
+       0x947a471d, 0x700b2fe4, 0x1bf122be, 0xa3b02dc8, 0x880afca5, 0x39e38583,
+       0x43fb0b80, 0x2f66423d, 0x04d52dac, 0xa9f967bc, 0xcf7fb0f4, 0x67c951ee,
+       0x1be7fee2, 0x4fbe933f, 0x9e9f9114, 0xebc9974a, 0xe2c7a575, 0xbb06f9d8,
+       0x3e1ef067, 0x2c2bf3c7, 0xa62cbe7f, 0x7187deef, 0xf213bd06, 0x98958958,
+       0x66bcb24d, 0xc2782dc1, 0x1ff63f21, 0x3c52b102, 0xc443fcf4, 0x63fff9f2,
+       0x3b00c92b, 0x81634dbe, 0xff2d4638, 0x4e92d29e, 0x1697bbf0, 0x5e636f7e,
+       0x9755987b, 0x25ff7f0d, 0x6d9f7f88, 0x4c9b9e55, 0xa16da5f2, 0x06dd2bed,
+       0x3d8fdbfc, 0xf5dfd279, 0xd1f7e0b0, 0x1ec77c12, 0xf3123758, 0x168db545,
+       0xc14db3e0, 0xc14dfc6c, 0x29b80e2c, 0x1ccf7a58, 0xa07b7a01, 0x65dcfc73,
+       0x944f1859, 0x3eb997e2, 0xc9f0088f, 0x2c3599f4, 0xa7cd8e79, 0xb7dc11f5,
+       0xc2dfbe74, 0xdf7dbfe1, 0x79f41136, 0x4ae3614e, 0xa44e77f0, 0x2f81dbda,
+       0xed2ae4a6, 0xbea16cbd, 0x24d3ee1d, 0x93f412d7, 0xf6893e24, 0xc6105d92,
+       0xb5ea3c8a, 0xe5399f82, 0xf81775b4, 0x22361193, 0xbcb278c0, 0xb8c13fa2,
+       0xcc2ac624, 0xfce4e3a0, 0x4c6dff9d, 0x7df6ce3e, 0x7df002f9, 0x60a1674c,
+       0xce9fdd1e, 0x9ddf83d7, 0x005ff2cd, 0x983f92bf, 0xf1cbdbfe, 0xfd481bef,
+       0x3e7971cf, 0x802f6ed5, 0xcfdd3410, 0xe4ef30c7, 0x1d76ae39, 0x0ac4cf5d,
+       0x2cdebb67, 0x8262cfdb, 0x9d7b25e3, 0xa3c48fb8, 0x2f283cf6, 0x38e244a6,
+       0x307b4e53, 0x9ebe266f, 0x49113a40, 0x76843ced, 0xa77d6a54, 0xbedcf800,
+       0x37ae376f, 0x9583b3a5, 0x71b6bf9c, 0xd75a40bb, 0xef6614c5, 0xdfe7e45c,
+       0xde98e70d, 0xc76e90bc, 0x1f6928bc, 0x84f6790d, 0x7afe3a7a, 0x1ec9f7c8,
+       0x9887df38, 0xff9f92f5, 0xdd47f035, 0xa05eef1c, 0x20dc7541, 0xc431ff6e,
+       0xe632dc47, 0xbfdfaf8e, 0xb1790044, 0xb8e06e7e, 0xcf017fc1, 0x00fdf3f7,
+       0x0000fdf3, 0x00088b1f, 0x00000000, 0x3dedff00, 0xd5547c79, 0x96cee7b9,
+       0x80593ec9, 0x66e42484, 0x430b2125, 0x39f6aac2, 0xa6c30109, 0xb641a6c3,
+       0x64900f61, 0xefa5a0a2, 0x693066d9, 0x0bebc80c, 0xa96d2d16, 0x967d540e,
+       0xd5241b42, 0x613a0750, 0xc1d82a2b, 0x1a55a2a5, 0x48541514, 0x8b62d420,
+       0x77df7df5, 0xbdcccdce, 0xec450899, 0xfc3dfd1f, 0xf7393bf9, 0x77ce7b9e,
+       0xdf3befbe, 0x4999ce7a, 0xb2f6058e, 0x3336c638, 0xc112de56, 0x7c259fe0,
+       0x5563246a, 0xdc930e69, 0xf12fb18f, 0x4d8caddf, 0x9e1b105a, 0x1750111e,
+       0xc7563ddf, 0x8c8d8bec, 0x70b83a8d, 0xec674b37, 0xcf8e4957, 0xb4044752,
+       0xa87ef82b, 0x86b19f23, 0x0c945b64, 0x56253bcf, 0xc76ce381, 0x376f9e12,
+       0x64e5faf2, 0x5e30631d, 0x79512c85, 0xe5ea7521, 0x7f532864, 0x52cca439,
+       0x7942ed08, 0xa55fa53b, 0xeff32c9c, 0x9c3f2664, 0xf7c01c3f, 0x314face9,
+       0x817b0f3e, 0xf6315dbf, 0x6cdfe30b, 0xc0358c73, 0x8e29d3db, 0x98df9c74,
+       0x7a03eed1, 0x772fe019, 0x9940301d, 0x440f6ac2, 0x728343c6, 0x75c4fd46,
+       0x2828f6b0, 0xc0744e63, 0x912b1804, 0x9bbc6963, 0x073174ce, 0x625c33c0,
+       0x16879c76, 0x170811ae, 0x2bef178c, 0xe2045895, 0xc7143ec5, 0xab54991b,
+       0xf1280237, 0x658932cc, 0x4cb230c0, 0xdb478aed, 0x6a11e80e, 0xfd8f5d9b,
+       0xd0b24c4e, 0x4734c6f3, 0x7eff2d42, 0xe2cf7e34, 0x8014d26d, 0x199fe46f,
+       0xd6d50f5b, 0x9c92a523, 0xf194e38f, 0xe21b3192, 0x67a459e9, 0x02055c00,
+       0x8781729e, 0xc63bfdde, 0x3ef1ff61, 0x4e824d9d, 0x70889d46, 0x6a3a6833,
+       0xe11ead75, 0x893e678f, 0x95b18001, 0x8c131296, 0x9565549b, 0x9393ae90,
+       0xea6493ec, 0xfe021e07, 0xee744b1b, 0xc3eef87a, 0xc9cbb641, 0x33e57cf0,
+       0x369dd7cb, 0x97d84113, 0xcb757ff0, 0xb3baaa3d, 0x4eeb3bed, 0x2bebf8e7,
+       0xf8448ff1, 0xb33320ff, 0xfc87c091, 0xe71b5b15, 0xaaf840a8, 0x583f1dcd,
+       0x5f9af500, 0x3a62667c, 0x17cc3ba4, 0x48f678e0, 0x00c2f851, 0x37a7b8fe,
+       0xe8c11dbd, 0xf4125c3d, 0x96f4009e, 0x72fbd37b, 0x73f50c72, 0x3b5b19d3,
+       0x9db457f2, 0xe03df849, 0x9bce056b, 0x918a3bc5, 0xab7de2cf, 0xd8e00cf5,
+       0xb888f48d, 0x7e143d3a, 0xf9cc9cbf, 0xaac3a15d, 0xec2adb24, 0xa33272f7,
+       0x2ca55d71, 0x986f9f07, 0x07772bac, 0x7087b3e1, 0x035f7eb0, 0x819867cf,
+       0x99e3f7f5, 0xdcfefe79, 0x9dde027f, 0xf09eb7f8, 0x03c210fe, 0x80ca8f78,
+       0xf270ff79, 0x3f91fd7b, 0x17aee675, 0xb547c025, 0x61eb2f47, 0xc40ff50a,
+       0x4ffe90da, 0x10d648b4, 0xa3c07768, 0xa2787e27, 0x921dcc31, 0xfcf787e6,
+       0xd90ba26f, 0xfac52850, 0xbf010767, 0x4633be30, 0x7f00df8c, 0x169df8c0,
+       0x754fad5e, 0x900e48fc, 0xfe784f27, 0xce788a12, 0xa76c904b, 0x8d85b18b,
+       0x9eb237be, 0xbe09167f, 0x24bfc10f, 0x26b0ebc4, 0x3bac2e3d, 0xf443bb1d,
+       0xc8adb744, 0xc758a307, 0x5c00b7ab, 0xaa51dcbf, 0x4df00473, 0x79a5db77,
+       0x677e01fb, 0x8b215478, 0x9b9072c6, 0xee744301, 0xfc8d92bf, 0x22cd7136,
+       0xc5777b92, 0xca07b639, 0xde7297c7, 0xfc90728f, 0x30f9639c, 0x49b6870f,
+       0x0a03865f, 0x0639cca3, 0x1f5583c0, 0x78c3d566, 0xdfbc612d, 0xa8b40392,
+       0xe0167d58, 0x1ed7f107, 0xcfabf846, 0x46977582, 0xf38f3e70, 0x6269183e,
+       0x1bbcf089, 0x53b623d6, 0x780ebee0, 0x4de1c1bd, 0x2e187cb6, 0x87ef42f8,
+       0x482e87af, 0x1f5fe807, 0x7479a069, 0xd22b30b2, 0x6364c5b3, 0x49d77f48,
+       0xba146ebe, 0xeb9e08d5, 0xe1388cf4, 0x713df980, 0xdf8ad922, 0x8775b677,
+       0x47bc60ea, 0x71c71d53, 0xae94fa5e, 0xf23e7b28, 0x476e7749, 0xd7b7c93e,
+       0xa3eebe10, 0xf23ac7ef, 0xef7e6baf, 0x5f49f204, 0x221a73f3, 0x6268a49a,
+       0x9fd2d91b, 0xa7e68458, 0xd3c923e5, 0x4854b9fe, 0x3ca18feb, 0xee620d74,
+       0x6377987a, 0x19a7e081, 0xaf75c64c, 0xaa7d77a5, 0x603953fd, 0x6a9fdedd,
+       0xc2f38f3f, 0x688a9271, 0xbef85d9e, 0x62a2d8f0, 0x57e70ea3, 0xa66f50c6,
+       0xdecb19af, 0x33cff62f, 0xa15cccc4, 0x49f9fe45, 0x1632e606, 0xeb3fcc05,
+       0x4651e14a, 0x7a42bef3, 0xea0fc981, 0x28274e00, 0x8169f585, 0x5d12f7f3,
+       0xab3cc5aa, 0x3d5e11cd, 0x1ab58bcc, 0xe450ed3f, 0x79ef7a41, 0xd2429d00,
+       0x13d61e68, 0xdbf3a40e, 0xc47ad611, 0xb167c193, 0x42bcd247, 0xbd1b3df1,
+       0xf0f10120, 0x765b24ab, 0x7db1c00a, 0xeebe232d, 0xdbdcc9dc, 0x0ebbd260,
+       0xb66f88ea, 0xffc421b2, 0xe7177443, 0x5d6823d9, 0xfb41a5c7, 0x1d66bee1,
+       0xb72cdfca, 0x9ab943ac, 0xe9d16beb, 0xfd1c1f88, 0xba9e38d3, 0xde5f000d,
+       0x75fd5a8e, 0xda6a45f2, 0xa053ac35, 0x53b6065b, 0xede0a6e8, 0xb70fc116,
+       0x3150de20, 0xed3e1974, 0x06f1fb30, 0xb1496174, 0xac63fbbd, 0xa9e21063,
+       0xd947cf7d, 0xcd5fd01d, 0x21e68fbe, 0x1b7e6a5e, 0xf650cc42, 0xe468dcdb,
+       0xc125f3fb, 0xeb4f9aed, 0x6006ed6a, 0x74b4fcc6, 0xcc55ef92, 0x017b4267,
+       0x10ddbae4, 0x6201d720, 0xe8d47f7a, 0x1ffd8c9b, 0x6b67a11d, 0xd6ddcf01,
+       0x10580351, 0xaf94a17d, 0x0596dda0, 0x0f691c72, 0x19ee17df, 0xf1784d1e,
+       0xd05e92c4, 0x575a3fb6, 0xf6332f69, 0x61d1dfdd, 0xf86e15a1, 0x1ec6b27e,
+       0xf5c69b9a, 0xb8d3b7f0, 0x6cc1039e, 0x3dcf3843, 0xc176e917, 0x6f4573a3,
+       0xd3c03144, 0x8ad7d6b9, 0xe747c05d, 0x0bd56f98, 0x452edeb8, 0x26bfb430,
+       0x78a37b0f, 0x7d7fa46d, 0x9f346b7e, 0x3f9eb7fb, 0xfb432516, 0xc40ebbc9,
+       0xf7f002bb, 0xd4b8662d, 0x3869d7c3, 0x99f1a32e, 0xe91b23a1, 0xdb385ec1,
+       0xf272865f, 0x9cf1439e, 0x0230c00f, 0x7216af3a, 0x68f8d7ee, 0xb97d804c,
+       0x565ec6a6, 0x5f57afec, 0xc0ee650e, 0xb267c1ba, 0x08f3e044, 0x16925e7a,
+       0xc07c8f19, 0x2881b206, 0xd7c4fa6f, 0xfb53e235, 0xd1e7c15c, 0xa1076761,
+       0x0fbe717d, 0x8169f8bb, 0xafbe1eef, 0xb2cbd873, 0xbf97f5fc, 0x07b7cfd0,
+       0xe8bd6ef9, 0x663adbbf, 0x937dda00, 0x4b4cde4d, 0xb98c7690, 0x4f169da9,
+       0x16595d2f, 0x773efd8e, 0x183ca439, 0xdc69f55c, 0x7b6ebd0e, 0x154028e5,
+       0xc4d61760, 0x269a7e39, 0x5869c2ec, 0x8f1eedcf, 0x5f87bfeb, 0x16fbdc84,
+       0xfae3b573, 0x4287f2d5, 0x742b9fef, 0x4849624b, 0x9934aab7, 0x0f58abf3,
+       0xe2d0faca, 0x324e5b51, 0x7f304731, 0xbc1e81e0, 0xc8173286, 0x8d5b55c3,
+       0x5d8fe7a4, 0x31467379, 0x5b47fbf0, 0x6107968c, 0x1d9fcac8, 0xbc21fe48,
+       0x62161caf, 0x91fea091, 0x75c4cdec, 0x7a67ecbf, 0x47c3f23b, 0x5ff5565b,
+       0xb027e504, 0x8e00ab7e, 0xf48d5b65, 0x7deb72bc, 0x58acfcf4, 0xd67ecbd7,
+       0xe5e50f2f, 0xfbeb83b1, 0xbf2b1d23, 0xa44ee878, 0x25932ecb, 0x5594186f,
+       0x597b243b, 0x3c57be00, 0xefaaaa19, 0x9c4ab1d2, 0x26574287, 0xcbde7a39,
+       0x69ebcf00, 0x7767afba, 0x2776d57a, 0x0baf99d8, 0x1d3ede3a, 0xa2335de6,
+       0x03fbec9b, 0x9f48c387, 0x4f422efc, 0xd877a476, 0x0a1e5f5f, 0x185fb1f5,
+       0x09e364ac, 0x74138f3a, 0xe4872c66, 0xaf3352f6, 0x2063dd8f, 0xa46c743b,
+       0x05edf09e, 0x4a465ab9, 0x0e3116de, 0xf287fdda, 0x4d96fe9d, 0xb8dda063,
+       0x3d432368, 0x15de1ff4, 0xc9e81993, 0xde1b2f5b, 0x4f9808eb, 0xd019b329,
+       0x46612e2e, 0x6175f3d5, 0xaed0db51, 0xa80cce85, 0xd59ac70f, 0x4e65c7ef,
+       0xc4f68b3c, 0xb9fa8b38, 0x1add7fc2, 0xf0e071b9, 0x824c8fc7, 0xaa3d2e79,
+       0x6afa7b27, 0x9c15f972, 0xfbd21657, 0xe03b39a5, 0x3b0263bb, 0xd47caec7,
+       0x35fc8890, 0x420f625a, 0xc12ba3fd, 0x4518e5d7, 0x73a0333e, 0x53ce9f8e,
+       0xea7bcbac, 0x18efecb8, 0x1d4f4f7d, 0x7976bfe1, 0xeaf2d5f6, 0x1a266957,
+       0xb43fab5f, 0xd29be7eb, 0x1d87931f, 0xa48ae41a, 0x3f2c69f2, 0xafe5c5dd,
+       0xf5685e56, 0x16970285, 0x7acbeade, 0x00789e95, 0x4088c9e5, 0xf7a2617d,
+       0xbe3fd037, 0x7f883d25, 0xe10cf60c, 0x40d235cb, 0x5dd8397e, 0x4700e925,
+       0x571c847e, 0x58352002, 0xae51c3d2, 0xca3b2435, 0x05bc45d2, 0x1dbca8ed,
+       0x1f943acd, 0xa31af13d, 0xf8a36e3a, 0x39d293af, 0x79d358df, 0xf257fc1d,
+       0x567b15fb, 0xfb1563b1, 0x42ffe955, 0x35da83aa, 0x371e3096, 0x75f6e188,
+       0xb3ac8e7a, 0xeaebff40, 0x81a76c12, 0x93ae1f9f, 0x393964a9, 0x2adfa43a,
+       0xcbb41b81, 0xfed73bf1, 0x07d79a30, 0xd710bd92, 0x38293ae5, 0x174c6d7f,
+       0x64ecc3fc, 0x97cf2807, 0xd7970694, 0xd0374ddf, 0x9b1e4a7c, 0xb4ed0835,
+       0x1eefda0f, 0x03f47284, 0x7687d780, 0xfd1ac183, 0x46d5f655, 0x5bff1eb1,
+       0x11188be8, 0x5c1ff807, 0xd5875027, 0xf345db6c, 0x79bad3b4, 0xca82aeb8,
+       0xa1add61f, 0xd3d3f3f7, 0xc94b5e08, 0xa00cf6ab, 0x7a0de9df, 0x4c4b07d2,
+       0xf818ecf6, 0x4759b4ee, 0x6bf784f1, 0x235bca23, 0xff2339f0, 0x9363c971,
+       0xa175c29e, 0xcc5f31c0, 0x6e79afa3, 0x7d3ebf4c, 0xa23acd5c, 0xf0f52f50,
+       0x7a5e89e3, 0x67c807f9, 0x3fa3ac9d, 0xbe4a73b6, 0x6ce41dec, 0x8c0a0d75,
+       0xb64e1dcb, 0x6bbe446d, 0x5c3cb131, 0x5c612d17, 0xfce168ef, 0x75b3e0b1,
+       0x2f823975, 0x80d3b6ac, 0x7ed1bbaf, 0x403e7185, 0xee84157d, 0x5fba0b8f,
+       0x9e3db64a, 0x208ff44e, 0x01e69d3b, 0x9066b2fc, 0x073e2b6d, 0x08e7ecbf,
+       0x3c01c8c7, 0xd939773e, 0x4da1e422, 0xfd8dfee2, 0x135efa19, 0xde2beb7f,
+       0x34a385a3, 0x1b59e383, 0x254a5207, 0xd85bb40e, 0x2dd313e3, 0xdc9cf8aa,
+       0xe2c16cc2, 0x130c963f, 0xd9b04bb5, 0xdf72e1f4, 0xe3b86eeb, 0xe31e973d,
+       0x8acc155c, 0x2dc069cb, 0xff18ed2d, 0xaf732c4a, 0x6358f8c5, 0xba1d768c,
+       0x4b2fd142, 0xbbfae877, 0x9f7f5da0, 0x7004c4a3, 0x9fda96bc, 0x6ac01be0,
+       0x86bd22d7, 0xe934743b, 0xdcc307e1, 0x434ce292, 0x1f216293, 0xe2868561,
+       0x714fab7a, 0x237f10f8, 0x9bd6d717, 0xba1f8c64, 0x2b3b9fc8, 0x81635239,
+       0x0a1ece3f, 0x9eef6a0b, 0x52677412, 0x009640e9, 0x24693ce3, 0xf27f0c3c,
+       0xef0879d1, 0x336f27f0, 0x90f10148, 0xd48dd22f, 0x15a1ecfe, 0x789f14a9,
+       0xa565842b, 0x2ff7eef5, 0x0437dfa2, 0x829b77be, 0xc105ddf3, 0xa72dd73f,
+       0x51cec03b, 0xe90be9cb, 0x9ab4f101, 0xa7248bea, 0xfd73a58f, 0xcb4353f0,
+       0xcf8081e1, 0x56662e9f, 0x678afbc4, 0x759c52b6, 0xc265a9b7, 0x8d4f9c0e,
+       0xe5bc618e, 0x1edfe1e0, 0xe276881e, 0xda187962, 0x1fdf3d07, 0xcf88dedd,
+       0x86c95a7f, 0xdd13fe21, 0xbb8c251b, 0x4cda167c, 0xa9ecfaf8, 0xa616b610,
+       0xcb78fcb4, 0xfa84ff84, 0x431d2ae6, 0x379da2b9, 0x25d4648c, 0xea35e960,
+       0xa3fa7346, 0x0ee853fc, 0x7a42658c, 0xfc437428, 0xe0f282ed, 0xfc13cf53,
+       0xa5af5c0a, 0x15df84ca, 0x809aeccf, 0x2ab0327c, 0x8038c256, 0xd5d7d702,
+       0x7f503713, 0xb88c6666, 0x9b99fd26, 0x6a7f4411, 0xb24366f5, 0x5ddb1f2d,
+       0x46fe7f4d, 0x908257f0, 0x8c793d0f, 0xab8a3aa3, 0x3bb2e969, 0xfb5c57bd,
+       0x9fe71c66, 0x953f6b8d, 0xae341b1e, 0xe5c4ddbd, 0x9b2c7368, 0x7ac8353f,
+       0xa3758b70, 0x4265d4db, 0x91ef18bd, 0xcba5ca82, 0x812e5cc9, 0xe11dbcdc,
+       0x5a1ef253, 0xbf041ab9, 0x7de03333, 0x7eef0eee, 0x9314556c, 0xd7668e19,
+       0x5fc12f90, 0xdcce320d, 0xbc8f0e0c, 0x7285a81a, 0x3c9196b2, 0x079bba82,
+       0xca12bcf7, 0x3cc7a01f, 0xc8fa3d15, 0x2d4ded3f, 0x9293bca1, 0x552d7a6f,
+       0x67d747ed, 0x956ced28, 0x1f4a5fd8, 0xc056bef2, 0x6277f305, 0x4cd5f8bb,
+       0xf2515795, 0x2eb5f129, 0xd51c34c9, 0x6938a30a, 0xad639c6a, 0x8d75da11,
+       0x506dd661, 0x29639e8f, 0x5b197941, 0xbcc76d69, 0x1e39e34b, 0x87bc6f57,
+       0x7ea41fb9, 0x23997cf8, 0x1a54fddd, 0x5fa05ba7, 0x6515e8af, 0xeaefa07e,
+       0x6b5c3832, 0xe87d2e89, 0xaeb81bbb, 0xdae327fe, 0x084dd2ec, 0x7dd2b5cf,
+       0x075f064b, 0x247ba357, 0x51e44ee0, 0x0b6de3b4, 0xc9f01e36, 0xabde11cf,
+       0x22bdc9f1, 0x79ad74bf, 0x5f4989ca, 0xc6f48f53, 0xe1836feb, 0x5d64c375,
+       0xc9e7018e, 0xf4c1acc2, 0x888cb1de, 0xd5c707af, 0x04c745f3, 0x117caa5c,
+       0xefd953fc, 0xfd683c4f, 0xf38460c3, 0x69f93d15, 0xc3af7c4f, 0xf2567484,
+       0xcebc0a0f, 0x06cc49bf, 0x6ff3a1fa, 0xe7952a7a, 0x18a91e35, 0x0392befd,
+       0xef3ec857, 0xd91bff6c, 0xfb1a9de7, 0x5ef7195c, 0x5f5c6f60, 0xb411f4e3,
+       0xe16e2e7e, 0x933d04f1, 0xc60b747f, 0x99188fcd, 0x27fe265b, 0x0be685fb,
+       0xdae08bf5, 0x8efdb178, 0xcbc7d248, 0x78445c5e, 0x63ad1e8e, 0x62be0072,
+       0x0e4c616c, 0x795c57c0, 0xcfdeaaac, 0x7ed5503e, 0xeaba4540, 0x8863a27d,
+       0x65527dea, 0x529eaa91, 0x7daa937b, 0x55529aea, 0x5135cd3d, 0x69a33ed5,
+       0xd59eaa9a, 0xfdaab77c, 0x6da8d0f6, 0xd971e794, 0xdf30997c, 0x83be62c5,
+       0x7d542f37, 0x8bc8cb07, 0x8225b4f9, 0x1f6c9fdc, 0x4502447f, 0x47c458b2,
+       0x542bdd72, 0x56692efd, 0xac0c37c7, 0xe01270eb, 0x592dc6af, 0xb65f50bd,
+       0x797efd59, 0xe7c256db, 0xf9fab772, 0xf5d467ca, 0xf3d363c2, 0xb067ae28,
+       0x4ebae317, 0xa78c8ccc, 0x97888ebc, 0xaece955c, 0xe745d7c1, 0x9d350490,
+       0x9d356543, 0xcf0bf8b5, 0x87bcd589, 0x7f02beff, 0x5f355691, 0xbbf8537c,
+       0x5f1d5335, 0xa39255fa, 0xe61fb334, 0x31eb5651, 0x79cac4ff, 0xedbbbb1e,
+       0x3951e152, 0xab255e48, 0x62655e57, 0x597c6066, 0x313a55e4, 0x5d9436bf,
+       0xc0ed7e43, 0x108788e7, 0xb0465cd0, 0xab68d9ff, 0x169f27b9, 0x68a3cfea,
+       0x1e8f57e5, 0xc6cc754e, 0xfea55df1, 0x7c3d643c, 0x8ffa323d, 0xc9538476,
+       0x54fb2947, 0x63202286, 0x3e08ffe0, 0xc01fa54f, 0x67ec22c3, 0x386c4952,
+       0x0ebb71fa, 0x097e4bde, 0x7973c4f3, 0x6c0f2407, 0x931f601f, 0x3fc1681e,
+       0xaeaf4913, 0xb57ae4c8, 0x8fc0332a, 0x3e58de64, 0x7dabd0ae, 0x9de4a3f5,
+       0xfda52afa, 0x75a3ca7a, 0x6dd66149, 0x637ae441, 0x2fd4d7e6, 0x63c57a67,
+       0xfd03331b, 0x0fbafb94, 0xbc077ca3, 0x45f9c3af, 0x94de8246, 0x47f37afc,
+       0xdeb451e1, 0xbbd45eba, 0x8b83c307, 0x363a3966, 0xd31f9fdf, 0x398b7bc2,
+       0xf38866c9, 0xb89a3dd7, 0xb711634d, 0xe4cb1e63, 0x8477cbf6, 0xe629ddde,
+       0x0df8d4e9, 0x1fee26ce, 0xf4a86ac3, 0x3b0bd804, 0xbda92333, 0x2764a93e,
+       0xc455bdc2, 0x24d31a17, 0x9251af1a, 0x492fbf48, 0xf389dd2d, 0xb259939d,
+       0xc4a7cb03, 0x19333bb8, 0x1ce9cd95, 0x37ec591e, 0xc4affa51, 0x2cb0fdf6,
+       0xa66772a5, 0x2c99c445, 0x0d3d6843, 0x26b8d1b4, 0xcb7cf07d, 0x5e7c99b3,
+       0xf24860d1, 0x78aa6cef, 0xc72178f6, 0x421d7e30, 0x7936c98b, 0xdc557f5c,
+       0xbc5375fa, 0xf44b5b88, 0xcde50db9, 0x7d8e82ad, 0x396db1c5, 0x4e288396,
+       0x0dec71b5, 0xad8e3ca1, 0xc57bb9c4, 0x83e3adb1, 0x0e91b1c6, 0xf5feb1e1,
+       0x9f2fcc70, 0xb4de5193, 0xe8f51c99, 0x06fd748f, 0x9c785aec, 0xf8a0eee3,
+       0x0cd1c176, 0x8d1dfa2b, 0x247f6c69, 0xc65acff2, 0xeb6deed0, 0x0a183dd0,
+       0x98b837ef, 0xd98fdf05, 0x6599fdc2, 0x4e2b659b, 0xe7d75953, 0xcc9c7933,
+       0x64637e08, 0xad377e11, 0x1bdde31d, 0x5458b066, 0x79accd0b, 0x19da146c,
+       0x7f50585b, 0xa7e0acea, 0xf5fb2549, 0x0ba695b4, 0x9d0828f8, 0x14ea66ce,
+       0xd20ce67f, 0xa3975473, 0xb899e79b, 0x8711207c, 0x1d41db7e, 0xefdae1d9,
+       0xf6341c3f, 0x8155f23c, 0x271c783b, 0x5bf3853a, 0x12fd9242, 0xdad05ff6,
+       0xb4394261, 0x8ba7914c, 0x7400cc75, 0x3ae82e9f, 0x9fdf0b7d, 0xf97caec0,
+       0xbfb15ea5, 0x50cff518, 0x119b2c4e, 0xc8b8c6e9, 0x8b9a4f32, 0x144bb2e0,
+       0x8e7a71f7, 0x6cbeb1db, 0xfa0b70f8, 0x99b7b6e1, 0x990e61f4, 0x23cb8c6e,
+       0x9150fb03, 0xe357a40f, 0x4d329f29, 0x8a745bf0, 0xdc82704c, 0xf80e10de,
+       0xed65b65e, 0xf29fdc7e, 0xe519cfc6, 0xbbe84e4d, 0x33676246, 0x8a6b3901,
+       0x39b034b0, 0x0271f845, 0xf44333f5, 0x8c1bfae3, 0x3b8ff66b, 0xcd22f3d3,
+       0xb99184e7, 0x9d47c0cc, 0xd192ef7b, 0x67ec6d8e, 0x8b5f12b6, 0xbd49e37c,
+       0x54a4fbe3, 0x08355d0c, 0xb84f2cda, 0x743bf705, 0x05337dee, 0x7eefffe3,
+       0xed123bb7, 0xba1b3fc2, 0xbf80ad22, 0x16bc0f33, 0xbe7a0369, 0xf69e80fb,
+       0x7a13cd4f, 0x7e7bc140, 0xdafbc716, 0x16467b2c, 0xbeebf394, 0x1fb81918,
+       0x47e9ad88, 0xaddcbcfc, 0x8f52d4a7, 0x98067cdc, 0xe367255b, 0xae457554,
+       0xfb821b57, 0xf8b30b87, 0x63be5fba, 0xc64929ab, 0xb2231df1, 0x0c677e60,
+       0xb4ce8f9c, 0x9a576e4a, 0x3b859e1f, 0xe0929986, 0x213d9fd5, 0xc9fa8bcc,
+       0x08b233e0, 0xe0240f2e, 0xbfa0870b, 0xfbc3ce16, 0x25bfa9c2, 0xb1f9728f,
+       0x035ac600, 0x967875f8, 0xced05c93, 0xf2bbc963, 0xd78001f8, 0x8624eb25,
+       0x7fb61076, 0x58e7e800, 0xcc05d0f3, 0xb9e76a9f, 0x0396a5c0, 0x265afc8a,
+       0x49a8bce8, 0xe7997efd, 0x3167ea61, 0x067ed073, 0xccb3bdad, 0xb423e133,
+       0xce76b437, 0x66c523c5, 0x59150f5c, 0xc9198ec2, 0xdf097d46, 0x47a447d7,
+       0x27ac823b, 0xceb4fca5, 0x71facc42, 0x33ca999d, 0x8cca8c75, 0x55c7ce2c,
+       0xd1e3e39e, 0xdb69a9fe, 0x9fedeb45, 0xce7b838e, 0xfccddd46, 0xce26b47a,
+       0x64748351, 0x1e3a9295, 0x44dbb5be, 0xcfc09676, 0x0e7cf11c, 0x30e803e2,
+       0x6e9b599b, 0xa9ccfa01, 0x4df3fa32, 0xcafdfff0, 0x7cc1477c, 0x5f3ed7f5,
+       0x42d59e65, 0xd7f3295f, 0xe0867df2, 0x4e4fc5c3, 0x28081c6d, 0xd1fbdfa9,
+       0xafee0ea0, 0x2bf08ebd, 0xd98cb57c, 0xe10627c7, 0x3d9e851f, 0x6ff9e27c,
+       0xc7428f9a, 0xc40bcdc5, 0x22095dbc, 0xf180989e, 0x68df2d44, 0x17cb44f9,
+       0x831d8de7, 0xf96b3d70, 0xd847d942, 0x4acc3ecb, 0x58b17927, 0x38c78db6,
+       0x6f6612e1, 0x6825b8a4, 0xaceb4604, 0xe17ff0f9, 0xf3927b3a, 0x7189bd79,
+       0x661759bf, 0x253df945, 0x7180c3a2, 0x977c6351, 0x6efdf101, 0x1813d716,
+       0x4238a03b, 0x5e72463f, 0x72e3a49f, 0x3aa6553f, 0x37e754cb, 0x82fc0bf6,
+       0xcf8c9a57, 0xbabf84a7, 0x9e82b65a, 0x9a677aca, 0x94d0e401, 0xa75757e8,
+       0xac85fd41, 0x8019a777, 0xbd24a67f, 0x480d297a, 0x24eb37b8, 0x7abde7af,
+       0xbf015309, 0xaf33facb, 0xa750ccdf, 0x8eacf6b2, 0xec7cae69, 0x7feaa2df,
+       0x924f2c2d, 0xea59d767, 0xc1b57443, 0x59cbd5e4, 0x19987e4a, 0xe7bb1c71,
+       0x7ed027f7, 0xa2fb2bb7, 0xbed5466c, 0x80af8628, 0xfe0927cf, 0x1451f161,
+       0x7f889f07, 0x19275e03, 0xbdf8edbc, 0xfc25ecce, 0x160d660e, 0xad803bd4,
+       0xf7165f4d, 0xfd5adfcd, 0x3f38d924, 0xf485b24a, 0xe61afd4c, 0x95a0cd08,
+       0xd2c7eca5, 0xcc58fdf1, 0xf02be38e, 0x82f7e328, 0x886b480b, 0x0b6b840d,
+       0xd5c0a3f5, 0x85c42c39, 0xcbb158fa, 0xa53ab815, 0x9019c7ae, 0xa7dba7e2,
+       0x76ba44cc, 0x920d7646, 0xa7a3fea0, 0x7aa74d27, 0x25c7aebf, 0xc8dd406b,
+       0xeb2178e9, 0x7f9869f3, 0xdb38dffe, 0x213fd405, 0xb13fbe26, 0x3020e309,
+       0x1cfdc3ce, 0x00b7dc2e, 0x22f5677c, 0xc898a5df, 0xae1b298e, 0x5dfebb8e,
+       0x365d59f0, 0x3485c72f, 0xbe071ed7, 0x6c4ab674, 0x5e77b42d, 0xfda136e9,
+       0xca73c539, 0xa6b0fa84, 0xed0994f5, 0x43ac1a9d, 0x4c5b353f, 0x879eed41,
+       0xdd0af5b3, 0xa1f5fe55, 0xc7efec94, 0xc5b67ee3, 0xb834ed12, 0x38cc4f77,
+       0x00bbdfac, 0xddd8c967, 0x871aecb7, 0xb7b5cd9f, 0xf9cb1f7f, 0x3c50e3ac,
+       0x872cd0b0, 0xceefe55e, 0xf9570cae, 0xe36b73cb, 0xcdf9f554, 0x27901d40,
+       0xa924d7f3, 0x85a812e3, 0xcc599e00, 0xa3ed0fff, 0x59c7410a, 0x287c1b09,
+       0x8c396687, 0x3a7940ae, 0x10d6b3c5, 0x4ad7708b, 0x5cdf3256, 0x66efc64c,
+       0x694219f3, 0xfbe60570, 0x20f1b5c7, 0x8f154d6b, 0x3ac1cc23, 0xa54e75e0,
+       0xe010c6e4, 0xbd1314a1, 0xf449b677, 0xb1b6d9de, 0xbef1162c, 0x6e78a25a,
+       0xce2281ff, 0x7cfee422, 0x61d82b01, 0xf667ec46, 0x438b127d, 0x08e221b9,
+       0x2bf3fc0a, 0x7f12cfca, 0x3281f88a, 0xec190acf, 0x3f3e7879, 0xca2343f5,
+       0xe9df9855, 0xd53e150e, 0xeab5b9f5, 0xea35fcfa, 0xb0b6697a, 0x1e58f3d3,
+       0xb2dba7ae, 0x2fad0325, 0xe534ff51, 0x0178af8f, 0xfb38d69e, 0x97d46cc4,
+       0xd9e52f26, 0xc7ffc15b, 0x9e1ef2ba, 0x775a30d7, 0x3ad067e0, 0xd67d6896,
+       0x12966d1b, 0x25abcff4, 0x2cd9dbe2, 0xf3490fc0, 0xbebaa7b7, 0xd9bbfd77,
+       0xda86ee42, 0x7fbe5357, 0x0a7964af, 0x6c19951e, 0xeb2ff406, 0x7ff7c8fb,
+       0xebdb9b2f, 0x7c8eb0af, 0x991b2b84, 0x3d94e814, 0xaaec9a3d, 0x702ddfec,
+       0xbb20dc61, 0xc640f818, 0xd5edcf75, 0xbd5ec249, 0xf430ec1d, 0x2df5b32b,
+       0x87df2415, 0xdf242c9a, 0xc8ab1d85, 0xd42fdb0b, 0xe4a4ec76, 0xb8d71423,
+       0xd206f37d, 0xb619998b, 0xdf008da2, 0xfc7ca1c3, 0x6e48f787, 0x93599fdc,
+       0xe7e4987f, 0x1c0b6000, 0xc84126b7, 0xbef536d1, 0xd72801dc, 0xe4e97f70,
+       0xd1371a7c, 0x8dbb70ac, 0x2de4a0e4, 0xf2097dd5, 0x37188069, 0x79a640b7,
+       0x22d15ff7, 0x9853bce1, 0x01fa2d6b, 0xef8cd9d5, 0x75e5113f, 0x24ca09c7,
+       0xeff33e6d, 0x13aab728, 0xef9e843a, 0xfcad7d32, 0x8dfeef41, 0xf77a23d9,
+       0x7da7d30f, 0xdf78fe38, 0x038c2895, 0xe337bbdf, 0xeabdf72b, 0x9e78eacd,
+       0xe78ea2d1, 0xcb51ca4d, 0xb556299f, 0x7463b9dc, 0x54fdea86, 0xfdea9e5b,
+       0x5562f2f4, 0x66fda67d, 0x2abbfb55, 0x21eaaac6, 0xf1351309, 0x36dc7545,
+       0xb71d473c, 0xe3aab48d, 0xfe2f21b3, 0xbc0242a6, 0x0eaecc98, 0x09a1e007,
+       0x58e8c6d6, 0x8bc91ebf, 0x8650c682, 0x60468715, 0xc42c34d9, 0x34d27c8b,
+       0x7f33ec50, 0x2f04bef1, 0xde8e63f4, 0xeb14c661, 0x6977252f, 0x6801f41c,
+       0x4322fda2, 0xabfb501e, 0xebe10db7, 0xce5f294a, 0x1833bc76, 0x8cff9fe8,
+       0x61fdc49c, 0xcc3dc51f, 0x45db8c61, 0x2ec999cf, 0x4a6fe252, 0x2505793f,
+       0xfe6ba43e, 0x0bca3603, 0xc16636b3, 0x9336c57c, 0x673cd3c8, 0xdbf2efa2,
+       0x80b6743a, 0xcc18edf5, 0xed4790ed, 0xffb013a5, 0x59680f1a, 0xdf9b4f5c,
+       0x8bfee133, 0x147b4f1a, 0xfb42b3ea, 0x8ff4267b, 0x9e85cffc, 0xa1857433,
+       0x16ebf83d, 0x34f3d07d, 0xde7983d1, 0xeb90b0f2, 0xc7f3ef73, 0xfa464a5d,
+       0x5ddcf3e5, 0x8c3d5e5d, 0x9ae4173f, 0x83933f8b, 0xcf9069c9, 0xd1f57b2a,
+       0xa09f6544, 0xee0fa54d, 0x9235ed1e, 0xb754a9fe, 0xc7833f9f, 0xab8e405b,
+       0x9237279f, 0xc3ac617c, 0x9070f188, 0x5ff7aaeb, 0x21bf0b64, 0x9fa3e58f,
+       0xfc1ec274, 0x21f4d0fc, 0x09ef9a06, 0xc3a258c7, 0xf44f80a3, 0x85ed1fb7,
+       0xabd78e3f, 0xf2276de1, 0xb4fd0040, 0xe10fe6ed, 0x1f677cf2, 0xa0a97b72,
+       0x57c936ef, 0x69d54284, 0x9dfe230f, 0x12b05e6d, 0x4e1cfbcf, 0xf311acf9,
+       0x237f73a8, 0x7fb7d431, 0xf6917f6a, 0x1d769b73, 0x8b7e8fea, 0x7f50e5b3,
+       0x6557fc06, 0x3da2d794, 0x4561fc0f, 0xcda6a7fb, 0xb757f04b, 0xf3e3b714,
+       0x8ac936ea, 0x7ad9d922, 0x93cd3c61, 0xb07f9075, 0xf2b80fad, 0x6abb7306,
+       0x4a9960e4, 0x44c603a7, 0xe21adfbd, 0x0fc84b76, 0xae109f20, 0x866b123d,
+       0xe675b6fa, 0x5659fba0, 0xb1fbe10e, 0x5133ae0e, 0xbe0aa69c, 0x4e1c79c7,
+       0x23326c39, 0x7982ed3f, 0xe38f3849, 0xffb1c333, 0x768646d5, 0xb9df0286,
+       0x9c49df14, 0x8d8b5bff, 0xd579f70c, 0xbe13d62f, 0xf22d5adf, 0x683e4b1c,
+       0x48b8c24c, 0xb58738b5, 0x07f29bb8, 0x3b72556f, 0x2312ec6d, 0xf759cbad,
+       0xcb457b70, 0xfedf0ad7, 0x96a9f044, 0xdb7cb57f, 0xaf2b5f8b, 0x0fa75f8f,
+       0x42d7e1ee, 0xff40fbd4, 0x70871871, 0xc39f877d, 0xc072b8ac, 0x4ee00038,
+       0x7158b46f, 0xde816b1f, 0x28fefdfd, 0xf7f00e37, 0x4ab6aac3, 0x77c8fe5c,
+       0x9a92fce3, 0x84bd6c4c, 0xb6e9c4fc, 0x664dd054, 0xc538525d, 0x28e97c8f,
+       0xf394d2a7, 0xb1564679, 0x5c2ae28b, 0x9f3c14fe, 0x007d75b0, 0xbe0bc6ff,
+       0x9e62e454, 0x51763989, 0xe065b19e, 0xa767e854, 0x83a1fb91, 0x19597f44,
+       0x42a7e35d, 0xbf1890f9, 0x97973076, 0x887ebd4a, 0xfc4ea7f0, 0xc539f08c,
+       0x713ff1cc, 0xce0e778d, 0x1dfd97e3, 0x9d5ca3f7, 0x558fe83c, 0xd29af7a8,
+       0xbca7ca5f, 0x1d92b304, 0x0efbc4ae, 0xcb68f98c, 0x686f982a, 0x37d1186e,
+       0x0b46ef74, 0xd66873f2, 0x208e01f0, 0xce94a7fc, 0x01cc69cb, 0xe5cd5f3e,
+       0xfa952a0c, 0x4d67fdd4, 0x73c55e74, 0x97ad3c61, 0x5cf489cb, 0x62dbeef9,
+       0x7d8816fd, 0x049e4aee, 0x7461b6e4, 0x829dbf91, 0x8ebb8607, 0x4f3c2047,
+       0xdd56bd12, 0x74f186c3, 0xff9a46dd, 0xd2e3aaec, 0x2ee7e802, 0x0118cda3,
+       0x7463fef8, 0xdfdc4ac5, 0xc81d52f7, 0x57dc10fa, 0x8f99066c, 0x542d9bfb,
+       0x5025d5f7, 0x993ad5fd, 0xf6097dca, 0xfe860c9f, 0xcdac1e67, 0x29e2fda2,
+       0x614bd98f, 0x46a3ce9c, 0x4cda03b1, 0x77928276, 0x99e8f6ee, 0xb777de19,
+       0x809f7c4a, 0xe5de7f80, 0xf900e624, 0x878e36f2, 0xaf359371, 0x56b3dc91,
+       0x7e8f185e, 0x53aab0d2, 0xae77588d, 0xb478cbf9, 0x3e824e2f, 0xbb033e41,
+       0x2848259f, 0x709b8e4f, 0xcb9cf13f, 0x4ecfd471, 0x5c78d75d, 0x127dae77,
+       0xb64fb7e5, 0xe00d305d, 0x67c28afa, 0x367e605b, 0x834fff80, 0xc33e7863,
+       0xe9c74c33, 0x35db9c3b, 0x87da1f82, 0xe90a2dfc, 0xff235e61, 0xfefc66e1,
+       0xbae19e88, 0x15da5f5e, 0x87220965, 0xcfb8884f, 0x8f789adb, 0x5c985652,
+       0xa9471859, 0x0fdf05d0, 0x9ee0e6fa, 0x53ad0578, 0xc40527fc, 0x94c2e6ab,
+       0x0fc963a2, 0x7ac186f2, 0x7b19eb9e, 0xad6580d6, 0xfb53dec4, 0x00bdec67,
+       0x3e2fbe3b, 0x06b2d6bc, 0xd7f2cbfb, 0x8c0c8fd1, 0x191fa273, 0x921afe2c,
+       0xabe03992, 0x0ece65e2, 0x5e80efb0, 0xc9386035, 0x79efc871, 0xf3df9e54,
+       0xc7eb8c90, 0x18f5d61c, 0xad960bea, 0xdaa3bf23, 0x5e87b6a5, 0xf8ebe5ce,
+       0xb78e5ce5, 0xff6ac1ce, 0x8ba4fc09, 0x27e09fc8, 0x9346e145, 0xfb49ff00,
+       0x3327fc9c, 0x37182bae, 0x6cf3e80f, 0x96e4fa30, 0x1bbf15fe, 0xcf899ac4,
+       0xf239f019, 0xba9e7697, 0x1327911c, 0xae167aeb, 0x36dfe46b, 0xfdb5aebe,
+       0xa25b97be, 0xebf681cb, 0xbd003dc4, 0xf7972af8, 0x2259bd57, 0xc737397c,
+       0xb1ce9e11, 0xe052f6cd, 0x070073cb, 0xed3a6de6, 0xcc18f0f6, 0xe1ec3b03,
+       0x397e11b1, 0x9c39b350, 0x39975bbe, 0xd4016e2d, 0xbe70e407, 0xd636df3f,
+       0xb79e788c, 0x653faf99, 0x59de93bc, 0x469eb871, 0x564cbb18, 0x39ec9f78,
+       0xe0768515, 0xe3d33d88, 0x05f61d70, 0x47a0b867, 0x2b559af5, 0x7e71c74f,
+       0x9288fcc0, 0xe83e77e7, 0x57fe2135, 0xbfc461ae, 0xa9fdcfed, 0x79f1d706,
+       0xf505b84f, 0xe1bdb9e1, 0xb8bf3a2e, 0x93adc42f, 0x45710fc8, 0x673b5c83,
+       0xec9db8ec, 0x0b7a3dcd, 0x7dce8ffa, 0xeb863c9f, 0x085cf9d1, 0xa56c7e5a,
+       0xa80ba1e7, 0x133caaf7, 0xe90a1ace, 0x74bfcd7c, 0xb9af543d, 0xd4abe69f,
+       0xcb33a93f, 0x1bcf4728, 0xd9589cb8, 0xdfec9bb6, 0x0bba5795, 0xb9cd9f71,
+       0x891f7fbd, 0xbbf9cd72, 0xcf2891ee, 0x8f742f9c, 0xe7cef7c4, 0xd9836bc3,
+       0x4433ff2d, 0xf452f44f, 0x06ebda65, 0x73e8bc55, 0x0d691fc1, 0x80e9e5cd,
+       0x67c711bf, 0x794f5e50, 0x474b223f, 0xbc4694e7, 0x24b71651, 0x9f06bbe0,
+       0x0f9f1ca1, 0xbe165e3f, 0xcf2f8038, 0xb8951ae7, 0x79c575d3, 0x6461adf0,
+       0xa7c75c40, 0xbb4285b3, 0x3f033e75, 0xb9295037, 0xfb00dfd1, 0x3f1dfb45,
+       0xce3cbabf, 0x04ec9ebd, 0xe182a4fb, 0xaeb2cf58, 0x98ac5197, 0xd806650f,
+       0x3a7cb34b, 0x51f0086f, 0x4bc42785, 0x70cfbef6, 0x8ec2ea8a, 0xa3e1779a,
+       0x482934c8, 0xd5e7269c, 0xb5c72871, 0x17f81af1, 0xf62b7089, 0x79131fd5,
+       0xd6b928fc, 0xe77dc3a2, 0x3e781a73, 0xa75c57b4, 0x178a36e2, 0xb23be369,
+       0xbf19936f, 0x16753393, 0x4bb15784, 0x41ad8e91, 0xd05e80e4, 0x0d5f5951,
+       0xa7d11d3e, 0xce6a57c1, 0x0e4af284, 0x16ad5f5f, 0x6b639d1d, 0x0a7f4cf0,
+       0x570d0be3, 0x802f0aee, 0x9f5e1a71, 0x5b1cf0c6, 0x9cd4a5a7, 0xb95ddf85,
+       0xdf333ccd, 0xf1da37cf, 0x76e1ce5e, 0x085edf91, 0x423cffae, 0xf4abfd9e,
+       0xbfce5b60, 0xff041e87, 0xdc3977fc, 0xe3cd9f3f, 0xd73fdc27, 0x2e450fea,
+       0x0976fd2b, 0xcb96f73a, 0x01cec967, 0x72e49a3f, 0xed4c8e57, 0xe3533d92,
+       0x7d7ebfc8, 0xd11c9c46, 0x830cffbb, 0xdf9b1755, 0x9ec57fbb, 0x876cba73,
+       0xd8f7e8cc, 0xe756fef8, 0x13ce890c, 0xd39ff628, 0xee5d912e, 0x6374639c,
+       0xdf2e053b, 0x9d8f1e0c, 0x43ba3369, 0xa89dbf25, 0xef3d91d8, 0x57bd12ad,
+       0x7ec54aec, 0x7c79d9f4, 0xfe70c677, 0xe3825f7e, 0x2783d423, 0x7cf4a1bd,
+       0x9cfe18c4, 0xf421fb31, 0x53baeeab, 0x84072462, 0xa9f0a95d, 0xe8bceed6,
+       0xf3caf8c9, 0x7f045b41, 0x906ceb2a, 0x7a287d66, 0x53c0806c, 0x62f1ea0d,
+       0xab9fe3d4, 0xbf6d73ec, 0x8effc7a0, 0x9e400ff0, 0x1bf87280, 0x7f307b06,
+       0xbf45bffd, 0x7e82b9e1, 0x082583be, 0xd1f30a6f, 0xf4befefe, 0x9d843feb,
+       0x01fbd7d3, 0x6d5cdd62, 0xfdcc8f3d, 0xa2e7aed7, 0xf58f7fdc, 0xf61f63dc,
+       0xcdf8ce71, 0x739b92dc, 0xfa619e61, 0xae095f5a, 0x418d97bf, 0x0984bdf7,
+       0x5dfc0e3f, 0xa50e7d15, 0x1fe87498, 0xfc792b39, 0xfe4629a0, 0x2f31f903,
+       0xc9dce9ea, 0xd107f04a, 0x39715b8e, 0xb42aca86, 0xfd9ca197, 0x47ca71cc,
+       0xc354aecc, 0x5d3184df, 0x349efefc, 0x73cfda37, 0x99c51959, 0x2c627ae6,
+       0xa9a38e78, 0x5c61cb5f, 0xf4a7ae57, 0xed8153f2, 0xcded2b97, 0x26b70e3c,
+       0x336df691, 0xb7303d8d, 0xabf76b56, 0x459b83ed, 0x3b2fa8dc, 0x50f685e1,
+       0xe88e572e, 0x60d79d69, 0x632869bc, 0x0b970f26, 0x4e3c35ce, 0x4b59e352,
+       0xc5ab4ce7, 0x1f0633fb, 0xbf28a1c5, 0x7acf4d06, 0xf5c7f636, 0x7cea6cc8,
+       0x6f93f552, 0xe6d4bc90, 0xb95b6295, 0xe956725c, 0xa4691e45, 0xf06af584,
+       0x7da00727, 0x2077cb29, 0xd52e01de, 0x2ec5557e, 0x4af226d8, 0x4fbc8f17,
+       0x3dece87e, 0x9a91e47d, 0x923cf226, 0x3bd617d8, 0x10f8748f, 0x5ab93fee,
+       0xeda6a91e, 0x8bfd11b8, 0x3693e5ab, 0x8ee3aae4, 0xdf1e06a9, 0x1648f54d,
+       0x7aa5578c, 0xad47bcf8, 0x7afb230b, 0xe38bbbfc, 0x74281e50, 0xe3953f3a,
+       0x975bfcf7, 0xd1eb684a, 0x284b06bb, 0xb785ebcc, 0xc496bf56, 0xc659b2eb,
+       0xd38756ef, 0xdeef19fd, 0x7df88e1b, 0xcfa44a01, 0xc10c27f3, 0x78fe93e3,
+       0x8a5cd6f5, 0xb5788b3b, 0xa461f401, 0xfda3ae3f, 0xd77c50ae, 0xc50aee04,
+       0xbcf0f735, 0x63a2537f, 0x9c7fd522, 0x3b229ece, 0xe8f146d1, 0x18d7c0dd,
+       0xc983ca37, 0x57fa5e62, 0xf301ac61, 0x1cfd4d48, 0xfa3ad12f, 0x75c64eb1,
+       0xfe53df04, 0x264bb5c9, 0xc32888fd, 0x09a14f3c, 0x52fda160, 0x10d5df7c,
+       0xf044c741, 0x04cf3167, 0x3cc0ccd0, 0xf7c89e74, 0x03318614, 0xd1b0fff6,
+       0xf3173eb1, 0xeb06ed4b, 0xd6045a5a, 0x4dc7bc38, 0x6c92779b, 0xe4ae5f3c,
+       0x79bc949f, 0x0927f95f, 0xfce429c7, 0xb126f947, 0x33c9572f, 0x94ed3bb1,
+       0x5d1faafc, 0xcd7fd0cb, 0xbf4cdcc2, 0xf9ff9a1b, 0xfc907078, 0x33075fcf,
+       0xf9d5cf21, 0xcf39f5c6, 0xb3fe9f12, 0xb991c679, 0x8e6e1a37, 0xc3dc2d1f,
+       0x27f62e63, 0xbf8bebbf, 0xf59e9146, 0xec3e9374, 0x3e610aec, 0xf0763f8a,
+       0x9f87bbb8, 0xff04ec73, 0x9e805fad, 0xfbc3919d, 0x4b19efdd, 0x2beadffc,
+       0xdff6c70b, 0xbad87613, 0x474c67d7, 0x33e5df7b, 0xc63f7ed0, 0xead63fb8,
+       0xbb408c33, 0x25d206e5, 0xde483724, 0xf5c61ccf, 0x791d7693, 0x20f5fe84,
+       0xb1fe019e, 0xcc3f716f, 0x57e79ab9, 0x382e422c, 0xfd5e796b, 0x497f4a70,
+       0x080fa789, 0xd3d97f96, 0xee637a45, 0xebf68972, 0xe5fe6b5f, 0xf9e0c491,
+       0xa76dd9f8, 0xca5fe782, 0xecfc93c7, 0x8dad9e2b, 0x110fe763, 0xc780aff2,
+       0xb5cf1fb1, 0x6b63bcd0, 0x600c9587, 0x40dff9fe, 0x4869fc3a, 0x81bb3e10,
+       0xf7917ffd, 0x247ff6cd, 0x1fcd9bfb, 0xc7e4c14b, 0x7a3fec0d, 0xff0b37f0,
+       0xfe186fd0, 0xf861be87, 0xf861bf6b, 0xfffce7c7, 0xba9e80fe, 0xddafff36,
+       0x07dda02f, 0x12e2f210, 0x487bbe17, 0x85e5d0da, 0x5cf51cd2, 0xd0720485,
+       0xed24f310, 0x863c9db7, 0x95d6c3e7, 0x255bdd99, 0x0501beff, 0xdcf99d5f,
+       0x5fe4b48f, 0x1bcaa170, 0xc595f364, 0x0c6cbc61, 0x33b83f23, 0x68f3dc54,
+       0xa54e24b0, 0xc4963df3, 0x34976069, 0xf24e71f5, 0x2fc2f9c7, 0xe48f43ec,
+       0x39bc9415, 0x9cd3c704, 0xa1ca50c3, 0x6966af22, 0x99f8fbe3, 0x469c4e41,
+       0x6889cae3, 0xe41f450f, 0xccbca3cf, 0x92e095b6, 0x3f91a6d3, 0x7c21a728,
+       0x6ffc888f, 0x34ecc4ec, 0x82c74b8c, 0xc179885d, 0x241f988d, 0xed42d67f,
+       0xe796f194, 0x311ef1f1, 0xb9f30932, 0xcfbe5cae, 0x25f91d89, 0x5e4a6fd9,
+       0x7bd1a8ef, 0x7944817a, 0xaf288bbd, 0xf9bce98f, 0x1304d2db, 0x5bf37e03,
+       0x7c6f942d, 0xe6ffcc65, 0x3c92f3f0, 0xc2cab7cf, 0xbf401c9b, 0xb558e019,
+       0x77f898b7, 0x6f31fef6, 0x23ff41ce, 0xd483df93, 0xf114afcb, 0xde221382,
+       0x940bc4a1, 0x223bd6fc, 0xe312724e, 0x6076502f, 0xe8ca043c, 0xb68ddd3c,
+       0x82f3a2df, 0x244797c8, 0x1d721f1e, 0x62a1f1e3, 0x70233593, 0x1e72653f,
+       0x5e0583e7, 0xe250bf9e, 0x7cc5db3d, 0xf7a3bf8a, 0x5a5d8086, 0x426058dc,
+       0x98dc5f3d, 0xa1658612, 0x0febadcd, 0x78b59ef8, 0x5fa14e97, 0xceca3e30,
+       0xbafd76e3, 0xdf945d23, 0xfbc9addb, 0xfbe3cf2f, 0xfc13de19, 0x3a751cb8,
+       0x0cb2ab94, 0x463e68f5, 0xdd5162df, 0x7394a847, 0x38462fc1, 0xb8713417,
+       0xf5cf7c15, 0x9c7163ca, 0x1aba8753, 0x4caa2cb1, 0xf7714b1b, 0x688d0baa,
+       0x74af39bf, 0xe295be1f, 0xfd192665, 0xea1d7989, 0xc0549bb8, 0x96ee61f7,
+       0xd77239f8, 0xc7f90304, 0xc40c13c5, 0x4373b13f, 0x358d7fc9, 0xd6047d32,
+       0xa8bb72a7, 0x2c7e3ca8, 0x188cd9d6, 0x8e8b07b2, 0xf24b31c8, 0xd8b071fd,
+       0x21fbab09, 0x6796ae9e, 0xfb69e255, 0x21b76c12, 0x3cd9ff3d, 0xd7d1f56b,
+       0x32a9bf69, 0x4a2f052f, 0x3cafb4be, 0xc1efb2ab, 0xb5497e59, 0xe869c34f,
+       0xc7f18f1a, 0x4ca7bde2, 0x25a5ff62, 0x879fcd21, 0x8173de2d, 0xbe4aaff2,
+       0x817b59d5, 0x8ef86aec, 0xad6a5fee, 0xe7d7f9e3, 0xdb2c0e00, 0x8036de60,
+       0x6f30b7e7, 0x6f303d2c, 0x2eafbe7c, 0x9d6f4a87, 0x75fdca95, 0x062ca9a3,
+       0xc58c49f6, 0xca05edbc, 0xf5e4d6db, 0x794937da, 0xfb38d6bd, 0x80af883d,
+       0xb5d51fbc, 0x187d3f79, 0x8f38d78f, 0x947ce918, 0xe499a8f3, 0x41678977,
+       0x9f07fa2a, 0x22a4771d, 0x779835dc, 0xf38be00b, 0xde286b36, 0x6ede7407,
+       0x5b7cc50d, 0x1359fb71, 0x31a987ee, 0x0f184cf8, 0x7093c803, 0xf5b3a2cb,
+       0xebf7df02, 0xfc450929, 0xd63f355e, 0xb1f9fff6, 0x163f267f, 0x249f5fe9,
+       0x3aec8a47, 0x8f2c56db, 0x049742d8, 0x767589c8, 0x97594f9e, 0x70eb4e99,
+       0x663d3d93, 0x0d7f4071, 0x117e3ce5, 0x3433213b, 0xc0a3b9f0, 0x1627f248,
+       0x320b47ef, 0x2f1be1fe, 0x93070fb7, 0x998fe7db, 0xfb5a3ce9, 0x1da9659e,
+       0x07e17cf9, 0x95d6e3c6, 0x73c54e2f, 0x2113ae7a, 0xebc78b2c, 0xa638f154,
+       0x15f5cbc9, 0xae5d9b97, 0x7ed285b3, 0xa841aea1, 0x33f1b5b7, 0xc41ae866,
+       0x892dbaf5, 0x25712b9f, 0x57acd1b1, 0xe66dee7e, 0x088f037e, 0x91d72ace,
+       0x74f250be, 0x5606e545, 0xb459fc07, 0xfca6e8c6, 0x14e1b95c, 0x637e17bd,
+       0x0928a583, 0x51e4fcf9, 0x6ae30593, 0xb598f8da, 0x74a6c9fc, 0x255adef8,
+       0x575a7159, 0xfb29e3cb, 0xb5b6e7c0, 0xdb78c38f, 0x54dcd630, 0xcb0fdf06,
+       0xff7059d4, 0x1e7cef74, 0x245dffdf, 0x9c6d1cec, 0xee8cf90d, 0xe1c4d30f,
+       0xed7a10bf, 0x6f3fa10b, 0x08d200c6, 0x77ca3f7f, 0x2699fe5a, 0xe2beb8ec,
+       0x0f42a5fa, 0xad179436, 0x4efa44cb, 0x27d431d6, 0xe6a5e50d, 0x2cfe80cc,
+       0xdb7f7cf9, 0x8c1f9823, 0xf20fcc0f, 0x2f36a03c, 0xe2b9c8a8, 0x23c7cff6,
+       0xbc8137be, 0x4ce63d46, 0xe283f9e0, 0x5047257d, 0xe4e1f86e, 0xa129be7c,
+       0x18879ee7, 0x70c5e7c6, 0xaf6b9cff, 0xa2b9f144, 0x87f697c9, 0x41d99d43,
+       0x3b5ca1ef, 0x811f599a, 0x61b268f2, 0x71eb9e04, 0x3c9ea5da, 0xa693e613,
+       0x2272a1ff, 0x9e28339e, 0xd238ec39, 0x231ce665, 0xf4540fed, 0x543ff4de,
+       0xb7efe78c, 0xef86183e, 0xa86b2473, 0x4bcbcf8c, 0x1da4f9f1, 0xb3a48c5e,
+       0xc81d0829, 0xd3d1df73, 0xfb375c06, 0x7cd61c12, 0xaa78b780, 0xe1cd33c8,
+       0x67a67a7a, 0xa7bf38aa, 0x52079bd6, 0x5078a33e, 0xf298a7b7, 0xffb87147,
+       0x6fafdf21, 0x1e82f78a, 0x7a71bc8b, 0x85be5a6c, 0xf41439f0, 0x3b13c218,
+       0xb5e9e795, 0xfe08b7f4, 0xf52f4be8, 0xff518725, 0x5c2f79e0, 0x6f42529f,
+       0xdc632e3d, 0xebda1467, 0xd52e5e12, 0x09d5ff27, 0xc3e98ebe, 0xf017ab9e,
+       0xaa7fb9f5, 0x67935fed, 0x37ffcbaa, 0xff0933c9, 0x2937c94b, 0x023bdafe,
+       0xaef94acf, 0xfb5f0b90, 0xd72a037c, 0x621be7a0, 0x986f9f83, 0x27f742d7,
+       0x0e1be729, 0xaec95899, 0x2b4fdc78, 0xa7b93bce, 0xe8749d92, 0xfe376f27,
+       0x3bcf1e22, 0x47541649, 0x49c72dd5, 0x70f72bcf, 0xe13e78d6, 0xbe16d6f1,
+       0x2dbabc3f, 0x89567df8, 0xd997bf42, 0x6a8dc918, 0x7c76dfb1, 0xf513c8ab,
+       0x37ef2dc4, 0x9d2dc604, 0xb29fafb2, 0xfe4dd78f, 0xd98e3a9e, 0x46b2dc57,
+       0x52a3f7b9, 0xb87ea2b2, 0x66dc3eda, 0xcfb75fb1, 0xabeda638, 0xe36ae5f7,
+       0x7bf28798, 0x1e5105ce, 0x5c21b5e7, 0x2438544e, 0xacce8fba, 0xbed157b3,
+       0x25927dfd, 0x3fef3ed8, 0x3af5f3e5, 0x9e41e449, 0x78fe7136, 0xae7e26fa,
+       0x21e1cf19, 0xc7de9fdd, 0x5d3ce1cf, 0x28e1cfc4, 0x7ce50f79, 0xef3fae4d,
+       0x94efe741, 0x39ca3973, 0xf85ce51b, 0x7461cdd4, 0xc6c3fdaf, 0xf76e0496,
+       0xc33eb8ba, 0x587de1bf, 0xb60dab08, 0x5f9f7f5e, 0xfd1f2eb2, 0x6e1bfcc0,
+       0x0fcf9d3f, 0x42ca9712, 0xb9c6123f, 0x82fe0f94, 0x17f30599, 0xf6af9afe,
+       0xf5aea817, 0xde546e17, 0xdd9f21a3, 0x0c8f79e8, 0xc0de3766, 0xc37fb7fe,
+       0x8c1d3ffd, 0xc1a1f56e, 0x2caf19cf, 0xcd747910, 0x5eb04cef, 0x5eb925e7,
+       0x37e4926f, 0xba7ca66f, 0x8ae9f291, 0xe48a6d5c, 0xc054dffd, 0xce52aae5,
+       0x31936514, 0x21ccbc78, 0x9c6fffde, 0x94014c6d, 0xe3a8cf79, 0xea2d0597,
+       0x36d0e5f8, 0xc344fdf5, 0x87fbeabc, 0xefa88f8a, 0x53e11aa5, 0xea354bdf,
+       0xaa5efa84, 0x7bea1d31, 0xa33e6ea9, 0x5bea97be, 0xe5f8ea5d, 0x69a797ad,
+       0x09ba71ce, 0xb9c0257f, 0x358ddf81, 0x87dcd22f, 0x87dcd3a5, 0x0fb9a615,
+       0x92ef734b, 0x35cd37e8, 0x962f7350, 0x98b17e7a, 0xfebfcb8f, 0x7973dc7c,
+       0x65c7c8b2, 0x8f77e284, 0xefd26794, 0xa9e728d3, 0xccf82cff, 0x2da8e057,
+       0x078e7680, 0x5f20d427, 0x190dac75, 0xc7177184, 0x78fa8983, 0x0fc707e0,
+       0xa38fba24, 0xda44c1f4, 0x61a8b3df, 0x4549d918, 0xd27646cc, 0xf41638dc,
+       0x171f98fe, 0xb0b5b970, 0xd14cc8d6, 0xc26c9838, 0xd73901df, 0x80efd124,
+       0x53e73de0, 0x192b0f80, 0x75eac3e7, 0xef28a3c7, 0x72cef42d, 0x59560a8e,
+       0xf3ce8cbb, 0x5291ef6b, 0xb4538cf4, 0xa62d62ab, 0xc577e844, 0x1f5a7686,
+       0x9ca67bda, 0xff9d036c, 0x3cd16eaf, 0xee8dbdaf, 0x9b998003, 0xb6722ed0,
+       0xb0ffdfa9, 0xaccde440, 0xc7eb8acc, 0x19a47f71, 0x8152cced, 0x241b059f,
+       0x1709e60b, 0xbbf7b435, 0x8e8bea0b, 0x52efc9e8, 0xdd7ac3f0, 0xbf4f95ff,
+       0x48f171af, 0x17d1d916, 0xb6007965, 0xbf714473, 0x46383241, 0x71b9f3e1,
+       0xff78518e, 0x915bd762, 0x9d87f678, 0xbb27acba, 0x42a16c01, 0xac2cdfb2,
+       0xbbde3030, 0x8fe968c0, 0xbb1716f1, 0x4dfc8137, 0xf82affe1, 0x9fc19a71,
+       0xf83ac28d, 0xd27e7cab, 0x8fd11297, 0xd8175b54, 0xd80e3847, 0x9acfe441,
+       0xda2d7999, 0xe6e56741, 0xdb0268fe, 0xfb246fbf, 0x188ee162, 0x36162fb2,
+       0xfde1358c, 0x635b0b2a, 0x732d3f68, 0xff475ed9, 0xa9e7a156, 0x09c3e286,
+       0x96c2efd0, 0x4d5eab34, 0x455fd3c7, 0xa74d15c7, 0xee9dfa14, 0x83a77e83,
+       0xa6e80fd1, 0x8692fe7a, 0x3881ec6e, 0xe737e73a, 0x1859439e, 0x1b58bbff,
+       0xd2fbbf4a, 0x71702fdb, 0x4df1793b, 0x7ca7ff2a, 0x475f8f60, 0xbdd05bbf,
+       0x4fd10461, 0x7ff2b74b, 0xe7851a2c, 0x91dbd8af, 0xb98fed0c, 0x34fe6c19,
+       0xbe2593f4, 0x4fd6e6de, 0xe77b4728, 0xff9f217d, 0xe3a4fc20, 0x5d8127e8,
+       0x49fa1aff, 0xf8437f50, 0x9fa26f49, 0xe85be504, 0x5a794127, 0xacaa83dc,
+       0xe204603b, 0xdc05b3db, 0x23db39ae, 0x602757f7, 0x1ffcad7c, 0x01d08daf,
+       0xfd73f5ef, 0xdf71cee5, 0x9b0eec62, 0x98aebeda, 0x3bafb6a1, 0x09f1968c,
+       0xf1d607a8, 0xfb42c17c, 0xccf6aacd, 0xee309b20, 0xfd8a72c1, 0xc91f49cf,
+       0xcc7b8c26, 0x6aa71c9a, 0x9253677f, 0xca152eaa, 0xcf2a2edc, 0x7bbf3d50,
+       0xbeaa9e4e, 0x661832e0, 0x68f2efc8, 0x85ab3f5a, 0x68d8c4df, 0x6f0b174e,
+       0xd476a97b, 0xbc036f80, 0xe91a8e97, 0x0a1e96bd, 0xd66f175d, 0xd1773c53,
+       0x00b98966, 0x8bcdd3c4, 0x727d7d68, 0xa7ee9222, 0xfc51dc6a, 0x9fa868ca,
+       0xfda461da, 0xe21aa765, 0xf6f7807e, 0x2fd1da9c, 0x39edcf0a, 0x7ee2f51a,
+       0x5dc90b1b, 0x0db1dfa5, 0x73f7e96b, 0xac43b816, 0x41cd8f74, 0x1d4ae3d7,
+       0x32da6eed, 0x75e4eb83, 0x112bdbbd, 0xdf846cfd, 0x2714a1ed, 0x2e64633f,
+       0x8b9bd80b, 0x675c383a, 0xf580d624, 0x64efa1b3, 0x38e01b7f, 0xa979a537,
+       0xfd2aed0e, 0x3f247ed1, 0xe433d59f, 0x18f739db, 0xe5f55ee9, 0x62b7e86f,
+       0x4945499d, 0xfa7ade9c, 0x3db6285d, 0x5d67fa84, 0x6ed021c0, 0xb6422ff5,
+       0x2f7117ad, 0xc0a6ffaa, 0x27f05ebd, 0x1899d1f2, 0x60218b66, 0xe3e1fc79,
+       0xef28fde3, 0xbba7c7e3, 0x33bde710, 0x10a23ede, 0x4bc7c7d6, 0xdf2485dd,
+       0xeb47e81e, 0xd3f78b4a, 0x5cbf2e26, 0xbf240eb8, 0x33aff4dc, 0x916afe7e,
+       0x4adfdad1, 0x22786b72, 0x1bd3adca, 0x6467148c, 0xcf145b06, 0x7c4b3dcb,
+       0xda738cac, 0xf8478f20, 0xd1a5374e, 0x1b85c339, 0x90ffa4f4, 0x377b78ff,
+       0x7a8dffe7, 0xaeeffa07, 0xfe81c926, 0x566f96bb, 0x7e8a33dd, 0xef7b4647,
+       0x4f9e5292, 0xa50879e4, 0xff2f62be, 0xbc36139d, 0x20a330c3, 0x7c0d1e70,
+       0xd568c73c, 0xa5542fef, 0x8464feff, 0x467ce50e, 0x39d39e34, 0xf89ebafb,
+       0xf37a6cec, 0xe7a004c8, 0x23fdbaa7, 0x4ff50dbf, 0x343eb8a6, 0xa0763d40,
+       0xee216163, 0x186dd0bf, 0x3ba6e784, 0xe0ffef3d, 0xe3eef866, 0x2d2b469d,
+       0xd3df7173, 0x53cbed8a, 0x10dceabf, 0x3c81de63, 0x944b68ee, 0xe52b9f00,
+       0x333dcd16, 0x0ef23f1c, 0x6cb0d71e, 0xf78e71e2, 0x47ae4447, 0x26916d3f,
+       0x38bef18e, 0x215f783f, 0xdd8a2b97, 0xb72142f0, 0x38e916ef, 0xc5bf837f,
+       0x95318df9, 0xf6e4501e, 0x289dfc4a, 0x280f5fbd, 0x358abb72, 0x4dfd7dd3,
+       0x9f3ce985, 0xfee9b925, 0x79bc1aa5, 0xb52fda1f, 0xeab63f70, 0xf9371099,
+       0xbe6832a9, 0x65e0fb00, 0x98564f21, 0xec863e76, 0xf8f98cbb, 0x3eed353c,
+       0xfa97ba36, 0x9feb7ad2, 0x0dad96a5, 0xd1bfd4b1, 0x9719fb8a, 0xdd5af589,
+       0x3cbdb92c, 0x747a4a0f, 0x8967e889, 0xfd5aa3d0, 0x692f4bd4, 0x8d12d1f4,
+       0x6acd65de, 0x46f00b3d, 0xbc0a38e0, 0xe1ed385a, 0x15878491, 0xe7df7ccd,
+       0xf0fb8752, 0x64b704ed, 0x82f68a05, 0x97b31967, 0x9e3ce0c5, 0x16ba7ee1,
+       0x7abced3e, 0xa9e62bc1, 0xf5a97b85, 0xaf2f9d02, 0xbe1121da, 0xe850f3b4,
+       0x14e3b5a1, 0x71752cba, 0x48f52efc, 0x7a0fcf44, 0xfb4643ec, 0x61be1543,
+       0xc05ff02d, 0xc11f0af7, 0xf9476ebc, 0xc8136cb6, 0xfcdeb4e3, 0x44b582b4,
+       0x30d4df21, 0x0bde236f, 0x72dbd675, 0xbc3498e7, 0xdd38ee0f, 0xd62735a3,
+       0x018ba59b, 0xfe96ba54, 0xcfc53ca8, 0x5f7c5ae7, 0x8bd7be8d, 0x0cf2263f,
+       0x6be01df4, 0x3a7a93c9, 0x4ed013ff, 0x5a2ec7f8, 0x972e955f, 0x95cff309,
+       0xe55f7e06, 0x1a74e0d5, 0x5df9eff8, 0xcf815e15, 0xe7f70d1b, 0x5dd97d85,
+       0x07ef4159, 0x8ef9e653, 0xd5573390, 0x5deb06f7, 0x3f7df48c, 0x7d35e309,
+       0x42a5efc9, 0xbd412fcf, 0x9b87e50f, 0xb03dd377, 0x4dda6c1f, 0x769b3ef7,
+       0x0b7da12e, 0xf45e6e1f, 0x9d5dfc03, 0x222c770f, 0x27ecbf3d, 0x98779e8a,
+       0xb187ed02, 0xf13c179b, 0x67dbe45d, 0xbcaf2942, 0xf843a0f4, 0xa1572041,
+       0xcb99bc9d, 0xcb89b651, 0x0fa865d5, 0x0e1f49f3, 0x2ff776c6, 0xfe460c75,
+       0x7a4e780f, 0x8e45fef2, 0x7e85ef5f, 0xb865ffef, 0xb65345d5, 0xda5c7978,
+       0x587d45e2, 0x279bef7d, 0x410677f1, 0x1df1bfff, 0x7543ff45, 0xf063bc6a,
+       0x42675c50, 0xb7eb57ef, 0x9da0b20e, 0xbfc4f420, 0x110bdf1a, 0x715f64df,
+       0xc4d7bf7c, 0x06fefcf1, 0x1dc6f78e, 0xbebfe419, 0x764194d7, 0xb23b7bd5,
+       0xd78bdf08, 0xaec9be03, 0x5576d596, 0xfd1be013, 0xc037c407, 0x2ca0f0b5,
+       0xf8e56df0, 0x6678e26e, 0xb8b9781b, 0xf45d5e17, 0xfff712bb, 0x768ac43c,
+       0x2f5099c2, 0x76674fd9, 0x34aee9e9, 0xec52eec5, 0xe6b0bf9e, 0x533ed1c7,
+       0xdb3cbdf0, 0x65f28857, 0x47dfc6ce, 0xef97de21, 0x5e93c1e2, 0x01b666f8,
+       0xc7fb7f68, 0xee93b1ef, 0xd8f4fa46, 0x9748d749, 0xfda7661a, 0x8f7835ca,
+       0xbec06159, 0x31f7e568, 0x65a0fbb5, 0x610caf1e, 0xe119b356, 0xfefed649,
+       0xbee183a7, 0x2eb2cfe8, 0xd697bbcc, 0x77ea9771, 0x5e676e86, 0xc067de23,
+       0xefda245a, 0x24babd52, 0x7de184aa, 0xc704b5c8, 0xea92a1a6, 0xf5aa0677,
+       0xab17b23a, 0x546edc4c, 0xafffa3ee, 0xf83edca1, 0x0fdca1af, 0x85a86079,
+       0xf8c63b9f, 0x8abbee3b, 0x1dfc5134, 0x1c04a7fc, 0x8437b5df, 0x611276e8,
+       0x4debfc02, 0x71513ee2, 0x61e51a1f, 0x23b36e61, 0xc76a7894, 0x8b79f8cf,
+       0xb1d92b10, 0x2f74d1f1, 0x9e42ddf0, 0xb4688ecd, 0x1b981ea3, 0x0961b261,
+       0xc7f0bafd, 0x30a58c8c, 0x1c6f8c3c, 0xe7dfa268, 0xd8ee6398, 0xfcef2e89,
+       0x33eff784, 0x7f4b70eb, 0x71c44583, 0xeb8cbf5b, 0x7d3f174d, 0x39bbf7d4,
+       0x3dc782c3, 0x25f0267e, 0x5f946cd9, 0xc3be8108, 0x50f70e00, 0xeca2f099,
+       0x805b676b, 0xefbd914e, 0x339e5389, 0xba77bf17, 0x3767e00a, 0xa320ce31,
+       0x7aaaff09, 0x7fbf8995, 0xddafd7fe, 0xb19929b5, 0x805c9957, 0x9942ab74,
+       0x82fd7e81, 0xe7ee3768, 0x91ef03ba, 0x40d2c58a, 0xc0cd32fc, 0x365e3a5c,
+       0x439e6045, 0xbb751fdc, 0xd1cce7c0, 0x780d1bcc, 0xbea8bef7, 0xaf2ef587,
+       0xf0183bce, 0x53de077b, 0xd1f78857, 0x8c0b46c9, 0x8a972f63, 0x7aa90fd0,
+       0x7de0daf0, 0xef27d7e9, 0xd40b74da, 0xe70e3a75, 0x61fc7877, 0x01e5c636,
+       0xec0cf30f, 0xf388bea0, 0x19c5e201, 0x8efed32b, 0xda247bae, 0xe3c4a287,
+       0xf30ffa15, 0x8e89e3c7, 0xd07c05b3, 0x7e14534f, 0xaf4e0a6f, 0xf2550e3f,
+       0x47e42d73, 0x6eeb14af, 0x76deb2a5, 0x67dbd7a8, 0xeed11d0a, 0x16cdbc05,
+       0xa2eb5f65, 0x6e8bac5b, 0x0d4e2eb1, 0x6bf3fc55, 0xf0458f1b, 0xf5951b7b,
+       0xfbc21d52, 0x43bfc657, 0xc6861794, 0x3c0abf52, 0xe9fc38da, 0x7fb27ae6,
+       0x38c9ff2a, 0xa11c807c, 0xea64977c, 0x97a88c5a, 0x8ad423fe, 0xa9b67472,
+       0xa236ab25, 0x1ee53b77, 0x67cc39c2, 0x110179e4, 0x667a1307, 0xee823e9c,
+       0xf1239cb5, 0x2cee6ddf, 0xc0e97489, 0x94277c0e, 0x3ffce3ef, 0x73ff310d,
+       0x00008000, 0x00088b1f, 0x00000000, 0x7de5ff00, 0xd5547c7b, 0x733ef0b5,
+       0xcc923cce, 0xccd79324, 0x90984204, 0x4c794107, 0x6010849e, 0x080200f2,
+       0xc1210f0e, 0x0f0c1320, 0x84432121, 0x33bd1f16, 0x52811e10, 0x5042d41b,
+       0xa50503a0, 0xd4546d56, 0x40135168, 0xa34bd41b, 0xad7a16d5, 0xa28a3c37,
+       0xfdb91122, 0xbe557bd1, 0x273ed6b5, 0x08993399, 0x7dfbdef6, 0xfbf37c7f,
+       0x6759dbf1, 0x6b1fb3ef, 0xfb5ef7af, 0x65a3c570, 0xcab18e2c, 0x4b3f04fb,
+       0xd4416c66, 0x91b0668f, 0x24ea4700, 0x4b0a3f2c, 0xc648b3f2, 0x534eb216,
+       0xae57d432, 0x0f728b4a, 0x91536c67, 0xc600d8c8, 0xdcaa2f98, 0x18437009,
+       0x6766e053, 0xa64e6322, 0x9ca771c0, 0x7ce6c646, 0x75fafd73, 0x9dcbe382,
+       0x7e5d8c51, 0x1667ae53, 0x46f2ff7a, 0xeb00b3f8, 0xfb639407, 0xea50bfcb,
+       0x2dfaf307, 0xaf0a7d4a, 0xbfd299ff, 0xaa0f6f0c, 0xbf54175f, 0x2da9c38b,
+       0x803ee529, 0x5f198b2b, 0x6fe08177, 0x1f2d7580, 0x172c6765, 0x696df5e0,
+       0x1cd7ac1e, 0x6b3165e5, 0xb8dce4d3, 0x5ae1cb9d, 0x319e2a3e, 0xe4de74d1,
+       0x2caef806, 0xd051f2e7, 0xf748ea6e, 0xcb940728, 0xdd3e0a67, 0x03f31828,
+       0xc4cbba7f, 0x51400cd8, 0x8ebbb40b, 0xe5bd09bf, 0xea1a51f2, 0xef26667f,
+       0xf437c14f, 0xf4cfff93, 0xaf38eff3, 0x453f555c, 0xde1ff88e, 0xe77db3cf,
+       0x999ff533, 0x7a965c4f, 0xf009773e, 0x9ec618ee, 0xc62e76cb, 0xb1d2b179,
+       0xd8c7961a, 0xbf4606bd, 0x88e2ff15, 0x9fe031fa, 0x41d9149d, 0xf58afd40,
+       0xd0d9492d, 0x5f678aff, 0xef025a49, 0x52f0b5b3, 0xaf2b6302, 0xcb19cc89,
+       0x8135dd58, 0x4fdbcfca, 0x9f30eceb, 0x75db8795, 0x1d5da093, 0xf3012594,
+       0xc9e791aa, 0xcb349758, 0x074f3014, 0xc1e713cc, 0xe2b953b6, 0xee128bd9,
+       0xcb4d0ae7, 0x90e2c785, 0xce0704c6, 0xb37d7823, 0x1f7d7c1c, 0x32d65633,
+       0xc7bd6fbc, 0xbefd5021, 0xe21d675c, 0x5183a66d, 0xe20d25ff, 0x7c085742,
+       0x57f722bd, 0xfea8ce19, 0xc1933cee, 0xfdce780e, 0x8260ddc0, 0x9dd92c79,
+       0x3cc2259c, 0xbe2c8e56, 0xd563fb0f, 0x95bc2a05, 0xe277ad01, 0x0b6ea4fa,
+       0x23ebf283, 0xe60c51b9, 0xb9d31955, 0x7632659a, 0x6cd251d8, 0xb4d8c718,
+       0x019f0a9d, 0x65bbc2cb, 0x5f9e057a, 0x5c7c0a5e, 0xf3e71df6, 0x9bb32d9d,
+       0x703a6f91, 0x82cfd03e, 0x51c223d1, 0x4725743e, 0xcfc0cc68, 0x0eaa2335,
+       0x182dfee3, 0x3e126e3d, 0xd29bd22f, 0x8cbf08ab, 0x8466a2e8, 0x8f58e7eb,
+       0xc3ac19ed, 0x9f8b6bad, 0xbf70eb07, 0xb07c3a2d, 0x08c8f70e, 0xde043fb7,
+       0xc7ef267e, 0xca998761, 0x33cc0d0e, 0xca1e77ab, 0x57998cf8, 0xe77f4277,
+       0x6e6427d7, 0x473afe85, 0x7840bd14, 0x1cefc791, 0x8e07f6e1, 0xd2c35e7f,
+       0x9f9b859b, 0x3f791ec7, 0xcdf7905e, 0x26f40855, 0xfc3afae3, 0xa11a559b,
+       0x16dce782, 0xbd199ccb, 0x0339dcf0, 0x65797055, 0xfcfdaa8a, 0xf5555bea,
+       0x399df5d3, 0xfa145728, 0x528f9e0e, 0xf9a38082, 0xe14c99d4, 0xafebac02,
+       0x4fe3fe47, 0x5cbf0277, 0x043a203e, 0xaf3dcf58, 0x58d3fc1d, 0xf6057568,
+       0xdb0b3637, 0x5824a3db, 0x221d67ef, 0x27bc8adb, 0x16e9a539, 0x155196c6,
+       0xe7589763, 0x5e78428e, 0x257db6c7, 0xf32e3ec2, 0xf70dbd2c, 0xf6bf1ef3,
+       0x7cc0576c, 0xb05bc249, 0xe6a7cc9d, 0x28063ae3, 0xdd48715a, 0xb6a7e94e,
+       0x67b9e825, 0x57a827f2, 0xb8744760, 0xeaad753f, 0xa61d0ffa, 0xf0110bb8,
+       0xbacb1647, 0xc578240e, 0x309261f3, 0xc8dde804, 0x95e979d7, 0xe23b3a33,
+       0xd00af507, 0x517c64fd, 0xc107fe44, 0xd25ffc0f, 0x05d7467a, 0x761dabf5,
+       0xc4cacfc2, 0x047d9255, 0xfa8943d4, 0xadc81264, 0xce9ba028, 0x30e23676,
+       0x6c97c3e0, 0x2e841c72, 0x66cdaf6a, 0xcbe91b2c, 0x780d1a55, 0x3b44b0ec,
+       0x34ee501a, 0x2be7a14e, 0xff5045af, 0x273b107f, 0xbdf0fea1, 0xa083b02c,
+       0x5c0fa617, 0xd3d71eb0, 0x7e1bee11, 0xfd3b8c2f, 0x10cb93b7, 0x0b0f2b6f,
+       0xe9a7a44e, 0xab39fbe2, 0x9a69aca0, 0x174fef42, 0xc3108759, 0x3bb5d458,
+       0x19805fa9, 0x33cc5803, 0x2f30656d, 0xfe96d751, 0x9d1bca38, 0xdd4de489,
+       0x6f7a30b5, 0xa7c9895a, 0x64effa81, 0xe2eda279, 0x6d789af3, 0x742bd526,
+       0xa10e6521, 0xc6d6057a, 0x1916901f, 0xed40bdb1, 0x95bb5ea7, 0x6fbd654a,
+       0x0e2afc67, 0xfe369ce5, 0xb081a4ea, 0x04e3b7ee, 0x58294e33, 0x19ed7f1e,
+       0xc842c51d, 0x50719eab, 0x7a7f430e, 0x1a50c394, 0x32039db3, 0x1e33ff01,
+       0xb80c92ec, 0x8cc1a31e, 0x9f919af8, 0xc0125f69, 0x0ad1e267, 0xf68fee1d,
+       0xa874f7d1, 0x9650f5af, 0xa2d7d404, 0x57de1ebc, 0x1533db5e, 0xd68ebd79,
+       0x761fe8ab, 0xcfa235e8, 0x8132ccbb, 0x92647cca, 0x77ef2bdb, 0x3ee00f22,
+       0x1ff7a8be, 0xb2d3bf84, 0xd099d9dd, 0x2b11674f, 0x67e49e7f, 0xd34cd267,
+       0x61fcdcff, 0xefb80d9f, 0x8e270eb0, 0xaedf233b, 0xe5fd0ad9, 0xf383acf7,
+       0x91d68df3, 0x83ffb726, 0xbf62d6c8, 0xa130987f, 0xb5fd09d3, 0x8d9d903f,
+       0x7719417a, 0xf08ea64a, 0xdfddccc2, 0xbad7d830, 0xc8ec23d7, 0x5681d3f7,
+       0x4d7eee10, 0x4c9fdfef, 0x871099cf, 0x80bf7ea5, 0x9dd91ffc, 0xe4a77a8e,
+       0xa436b08d, 0xc237f6e3, 0x1f1fd424, 0xe0a7bae6, 0x31bc967e, 0x7a0054b4,
+       0x4bd11e77, 0xe71fec8c, 0xdfde7c54, 0xbf246f7c, 0xe14ce982, 0xe723774f,
+       0x4e992a97, 0xe7fcc917, 0x6be8f996, 0xf0f8958f, 0xd26107eb, 0x0f458eb0,
+       0xa30e230a, 0x393760bd, 0x7cbdecd2, 0xd0d45d39, 0x1adfa77a, 0xa6806fed,
+       0x55a2d735, 0x2d7b587c, 0x58efe659, 0xdbf0ae7a, 0xf44f9922, 0x2d517db2,
+       0xb762b5d3, 0x38b8fc28, 0xd23f7ddb, 0xe006f4cd, 0xbdcf187b, 0xf907213e,
+       0x746e97a9, 0xa02fa466, 0x0092db1b, 0xaf6869fe, 0xe8a76860, 0x37445ce3,
+       0xda0650d5, 0xec7b8b29, 0x0b24f314, 0x86c67fcc, 0xd656cd64, 0x81fdef5b,
+       0xc9935ff4, 0x6322d8f5, 0xb5da1a5b, 0x63984f5a, 0x4aebcc3d, 0xe2127d9c,
+       0xc70b7ea7, 0x55d6bd63, 0xfd467682, 0x3b01c12e, 0xca07f644, 0x1e53bca5,
+       0xae803b9d, 0x648dae2b, 0xecc7c076, 0xae54a96b, 0x19fee91c, 0xdaeaa1e2,
+       0x46bf795c, 0xf9ecc952, 0x6acf9c1a, 0x4033d703, 0xe5bf7cf1, 0x8cf55df9,
+       0x779da2b6, 0xd52d5df5, 0xec902a7f, 0xdf4eb967, 0xd6979c5e, 0x83ec77af,
+       0x65aa7d79, 0xd7ec333e, 0xf322cddd, 0x50d5bf41, 0x43cca1ba, 0xf4ed0485,
+       0x76fe881f, 0x9ccd176c, 0x578859d1, 0x5e806f58, 0xa67428bd, 0x2fea18ff,
+       0xa25a6f4d, 0xf19d4149, 0xc3ea3c6e, 0x4c8bcf4b, 0xacf7e784, 0x6282d37a,
+       0x97dc56a6, 0xd5fa8664, 0x0b5d3f82, 0x3899f082, 0xefa421f7, 0xfcb7e6cf,
+       0x9dda1f29, 0xd2217a6f, 0x5b9fa01d, 0xec34b6a4, 0xe9f005a7, 0x6cb7b983,
+       0xdcfccb13, 0x399889fe, 0x15ce97a2, 0xf7a60eba, 0x0852d7e5, 0xf47b5f4f,
+       0x06be8fa4, 0xfa0165fa, 0x8a3fd148, 0x90f457bc, 0x12b5df42, 0xc6b56397,
+       0x392fbf28, 0x74ccff50, 0x65fd2115, 0x16348e08, 0x3ff67fa8, 0x70fc8054,
+       0xc0d1ce39, 0xc287f57a, 0x6d7b2f0f, 0xfd5ebc80, 0x2283f0a4, 0xaf3915d7,
+       0xbfa2bfd0, 0x5ff37f8a, 0xfe05fc2f, 0xfdcb297c, 0x54c1d211, 0xa9b1eb89,
+       0x68e88992, 0x094cdc62, 0xe5e6e7e9, 0x9e5919e9, 0xd3c9519e, 0x83e8fd95,
+       0xdf7d3233, 0x41fc3f2c, 0x2f760f6e, 0xef2893d9, 0xcb4bfb03, 0xfb8abe2e,
+       0xae4c8ffe, 0xe6a7ff6f, 0xf81e9fdd, 0x6ffccf47, 0xb85c0f4e, 0xcc603d49,
+       0x60bb51d2, 0x3fa0cfb9, 0x5f97fb94, 0xbd47e61b, 0x3d0331f0, 0x48f0fa81,
+       0xaca0fd84, 0x846f4817, 0x4fbff947, 0xbdcbec2f, 0x1b9598db, 0xb2982f52,
+       0x417a1bfe, 0x6f852fa1, 0xf8513e14, 0x148f9822, 0x53f698be, 0x9f711bf0,
+       0xd7643100, 0x71a7be49, 0x88f6b51d, 0x1ecfe44c, 0x40b0ee7b, 0x5f47d6fc,
+       0xcbd3fcc8, 0xa1fd6a2f, 0x2fc287f0, 0xcad4ff0a, 0xe658b1fc, 0x8e2f850f,
+       0x148f2d89, 0xb2bb7bc0, 0x1f11e3dc, 0x3cd49f0a, 0xfa27ac1f, 0x74862ba5,
+       0xc3ce38b5, 0xa16aae90, 0x7d2ba40c, 0x9250fc3f, 0x43f4c3f5, 0xd1cdd666,
+       0x7dffdcd3, 0x0fdb9a7a, 0xeffbcd3d, 0x7b5f53d0, 0x7639cff6, 0x39d7cf98,
+       0x7b936f20, 0x3bda6de9, 0x2911db8c, 0x7f002fdc, 0xa1dde693, 0xa071441b,
+       0x0799d769, 0x05d8a8f1, 0x83b8e58b, 0xd9cda742, 0xfe7007ee, 0x5fa3feca,
+       0xe4e6eab0, 0x3eb3ed1e, 0x7e8753ae, 0x032862ca, 0xecfe81ed, 0xdc0fdf60,
+       0xb93795e7, 0xfeb3dbcf, 0xedc7edc7, 0xc7eda159, 0xfb3bff87, 0xc984bd3a,
+       0x2a3bbef1, 0x3fb0859c, 0x5661973f, 0x9c788151, 0xcfd4af9b, 0x454ce5dd,
+       0xbc78c0f9, 0xfc7b8e50, 0xdf619441, 0xd0a5d3bc, 0x3d23da7e, 0x9fac3ef5,
+       0x13d51858, 0x6f581127, 0x9f9ee7fb, 0xed1b7a73, 0x93c71347, 0x8d724bbb,
+       0x00738008, 0xf9c00536, 0xde6ef041, 0x62ea523e, 0xfc17b266, 0x46e91cf4,
+       0xecfbe2c8, 0x601fb00a, 0xa35fe3f8, 0x0c0b30be, 0x71751ce3, 0x1afcdefb,
+       0xc0ab5ae5, 0xc1efdfd0, 0x60577303, 0x11e5761c, 0x4fab8641, 0x9846c13b,
+       0xa7c3987f, 0xf2ed96b2, 0x16bf7249, 0x4fd1878a, 0x453822db, 0x5f26afe8,
+       0xee490ff0, 0x5953ef8b, 0x3f84fd6a, 0xd33efd49, 0xf7b0fdc5, 0xfde91f91,
+       0x9b7ef421, 0x3f8c07fe, 0xfd3990af, 0x2fd1fc21, 0x39a576e5, 0xffeb2151,
+       0xf1f2259e, 0x8d01f8e5, 0xb7668f0f, 0xb83d7f70, 0xbf3277fd, 0x32346a74,
+       0x42ec373e, 0x14ea76fc, 0x42ec377c, 0x98c89bba, 0xe3069e2a, 0xdd961c13,
+       0xf128d150, 0xf0833ae5, 0xfdeb7df5, 0x7baf87a8, 0xda0be5f1, 0xe0f7fd2f,
+       0xfbc42bbb, 0x6dfbf576, 0x175fb7df, 0xd32fbcfa, 0x8e8532ed, 0x8f7a2a9d,
+       0x9f445c92, 0x19827151, 0x5d2b69e3, 0x6fd0db61, 0x87cfe5e8, 0x953b3f88,
+       0xfc3e82f3, 0x528af3f7, 0x7249d923, 0x90bbedfb, 0x9e9a5d7f, 0x7b1f9cf6,
+       0x33399ae8, 0x0214af00, 0x5e53f784, 0x1be5da68, 0xf541744e, 0xf3014b04,
+       0x96c7e60e, 0x8830b820, 0x23fe657f, 0x00fa81f9, 0xf28694f0, 0xce8cee2d,
+       0xc527401e, 0x974f1cd9, 0xf28e5604, 0xdb98b3b4, 0x78439d93, 0xdb9b28b9,
+       0x39b3538f, 0xcb92ce5d, 0x3c00f0ce, 0xa7e8aa24, 0x8096fd0d, 0x2a9e1375,
+       0x3f7594e2, 0xac1b7157, 0xd78633ab, 0xb33f6657, 0x0bd857cb, 0x5777f707,
+       0x181573f6, 0xffededbf, 0x8ed1a7b7, 0xb6f190a8, 0xb4e5bb28, 0xb3ef28cf,
+       0xf90cf485, 0x3e1f4061, 0x48b50794, 0xfa5f421f, 0x0fbb25b8, 0xde82fb3f,
+       0xe7bf6a77, 0x1f76477d, 0xbd0674fa, 0x3f71b4cf, 0xdf797de4, 0xd7da0b6e,
+       0x2d7da0b2, 0x152b820d, 0xbf92afd8, 0xd45e5c8a, 0x25a37dba, 0x209be30e,
+       0x3d205967, 0x767241bf, 0xdfa15985, 0xaf48d3b6, 0x4edcf4bd, 0x22d59e78,
+       0xe8ef9bef, 0x33c3942e, 0xf4170e51, 0x0e51b3c2, 0x02ac7c11, 0xf57ac7cf,
+       0x9faa71d5, 0x7fb4a8d7, 0xfcd7f493, 0x6f7f4a0d, 0x23ecac11, 0xf49efdf3,
+       0x772c855d, 0x34e3af98, 0xc23f2fd6, 0x0bc5ffdf, 0x2f7f4e27, 0xe105343f,
+       0xec107765, 0xe8ff6a0b, 0x86dbf40d, 0x0c1ff7a0, 0x0416dfaa, 0x8dc10737,
+       0xaaabf7ea, 0x2ac3e205, 0x88dc07a0, 0xa60cbe60, 0x3dd9838f, 0x3e8f4e76,
+       0xdf648c17, 0x5a6af8a9, 0xfb7f8703, 0x1a2a9fc2, 0xf670018d, 0xe91f0aa9,
+       0xe80d1877, 0x0ff8cb52, 0x044fae64, 0x23f6d07a, 0xe1f4f737, 0x193d790b,
+       0xd79efac1, 0x99fe3bff, 0x2a47e740, 0xa898e4bb, 0x6545db86, 0xaf4e17de,
+       0xb39c0636, 0xa055bfb2, 0x79ffdd5f, 0x3c0ab9ce, 0x8bb1e9cf, 0x9c2b677c,
+       0xda54eb01, 0xbaf6fa4f, 0x99bde388, 0x00e2b67d, 0xcb15179e, 0xbc319ce7,
+       0xa2297d04, 0xe393aebe, 0x135e9338, 0x2b2fa85d, 0xead2dbc3, 0xd620ed03,
+       0x6ceb8e92, 0xfda4407f, 0xfec035f1, 0x98aa9e00, 0xf67a875d, 0x31d4e66e,
+       0xa3dae570, 0x013ed6a2, 0x407b1def, 0xfa7a8b5c, 0x16b1b5e3, 0x735287f4,
+       0x2c717fb8, 0x3165b06a, 0x0b11edc0, 0x6fb6de49, 0x51e5489e, 0xdba9b9d1,
+       0xecf9d8cc, 0x61c6152b, 0x78451f58, 0x52e17aea, 0xf7a03ac5, 0x9a76d973,
+       0x6cc63b87, 0x7b7b4569, 0x0fce96ab, 0x3c506241, 0xfa67eaa9, 0xabb7f44c,
+       0xe74addd6, 0x317e8b63, 0xb4025273, 0x4b51b45b, 0x1a5d26e7, 0xcfce1273,
+       0x0ea275bd, 0xc837abeb, 0x95326fa5, 0xabf77c6f, 0xdf684886, 0xec7047bd,
+       0xaee3f687, 0x1233bcb6, 0x298da5e0, 0xd7a2dc0e, 0x199869af, 0x3cdb39c6,
+       0x5d022fd4, 0xbcf30b9e, 0x67b78335, 0x37e97ed8, 0x723393f6, 0x5e68bdb0,
+       0xcf09bb8f, 0xb0be7ed1, 0xe02fdc45, 0xe14d22bc, 0xc2e92c02, 0x3ae28cb7,
+       0xfdea3617, 0x6b3ba718, 0x8cd5df74, 0xd16b34e3, 0x041767d2, 0x7800a47b,
+       0xf9b30e10, 0xae7c04b6, 0x0d97f797, 0xaf3e02a8, 0x0fd0f4d2, 0xd12593e9,
+       0xd872161c, 0x8eb083fc, 0x5286bb0b, 0x1cfeeb1c, 0xed0726a7, 0xff305cf2,
+       0x5cbe71e2, 0x1df1bd6f, 0xddfc9f3f, 0x482c8b17, 0xce1ca65f, 0x5b5faf4f,
+       0x60145964, 0x24b92d57, 0xa1bc1d11, 0xf9c6afb3, 0x483e11be, 0xe81b3f40,
+       0xe7e31620, 0x02dfb2d5, 0x85f6bcf4, 0x27d5f610, 0x57ed22d9, 0x0be34ffb,
+       0xe97b7f71, 0x482fea3a, 0x006fe4a7, 0xe238749c, 0xe773d431, 0x39d96bf5,
+       0x6307c664, 0x8ecb0e29, 0xb49e1185, 0xc3f9874f, 0xea8e3192, 0x31ef849c,
+       0x2cfa4b5b, 0xca1f0053, 0x33eaffed, 0x42bffb51, 0xfefbf47b, 0x5337fbea,
+       0xd286b9e0, 0xc9a4697e, 0x27c5c687, 0xfb849326, 0xbde4b1f1, 0xbf9e1f70,
+       0x1e92d1ee, 0xfe27b258, 0x3f946ec1, 0x5f183740, 0x4d575e0b, 0x31c7968e,
+       0x5f4be3fa, 0x9552fce2, 0xff3892bf, 0xff32f8fb, 0x07f9c0f0, 0xe5f3fd8c,
+       0x4f973352, 0x5d68f693, 0x734b4fc8, 0x779e124d, 0xf379ef16, 0xd2fdd220,
+       0x7a596155, 0x3dd2f898, 0x2eafda7a, 0x8667c993, 0x49a4777a, 0x9272868a,
+       0xe4f7bfbc, 0x1129fe70, 0xa2c86499, 0x5dc60372, 0x8bc47395, 0x31d91f6b,
+       0x8cf9c61a, 0x068ee7f9, 0x72715dfc, 0x5872bd3a, 0xf063f8a4, 0x89ed62b9,
+       0xec457417, 0xec57389f, 0x86b13ce7, 0xe8fc9175, 0xf8315cef, 0x4e61713c,
+       0x36a279f0, 0x972bcf1d, 0x2589e7ca, 0xff9a05bb, 0x5fa2b5d2, 0x892ff30f,
+       0xf3e3f1e5, 0xa183a05e, 0x199f7eb4, 0x728fa5e0, 0x0994b3fd, 0x39fc037e,
+       0x8a2af779, 0xcb287e67, 0xb9812a9b, 0x85cfce90, 0xdfd09239, 0x8c27b25f,
+       0xef74bcf0, 0x05da7f3d, 0x9bad75ef, 0x5fe8171e, 0xe0fa41af, 0x98866678,
+       0x593e7ede, 0xe42493f7, 0x825f9283, 0x5deb0c9f, 0xad9ecd1a, 0x4b7dc648,
+       0x4f73c248, 0xf5d2dda5, 0x76f3a40f, 0xbac367e0, 0xb488b6ab, 0x9ea2f60e,
+       0xbcf021f4, 0x8cb5e48d, 0x270deacf, 0xcfae3a74, 0xb64f2d98, 0xcf28edb3,
+       0xf08a75b7, 0x17a859fe, 0x5f3f848d, 0x7cdc4057, 0x4095f621, 0xeb8dc4f2,
+       0x0b08d4ab, 0xdd3f5167, 0x7f6fe43a, 0x776fb70e, 0x53f40962, 0x8bb8e495,
+       0xe90fd1e2, 0x7993eb1d, 0x0f32a23f, 0x356af3f0, 0x7ce84b9d, 0xc53d25f3,
+       0x8436ea57, 0x7922c339, 0xd0f3c65e, 0x24c49d6f, 0xcbf60c5d, 0xe76359d7,
+       0x9f9e03f2, 0xc6bcf092, 0x6d63e5c4, 0xc8dbe034, 0xfd034709, 0x52bfc65f,
+       0x23097f78, 0x19efdf7b, 0x1fade85f, 0x15f11236, 0xe71cb73b, 0xfc488cf1,
+       0x2878c80b, 0x67bced1f, 0xaff46cc4, 0x9b1cb6ab, 0xc576f284, 0x7c669973,
+       0x3fd9eab5, 0x2158be92, 0xda1773ef, 0x003fa8fb, 0x57ca0e7e, 0x8b71fe64,
+       0x8af43e3c, 0xbf650f8c, 0x2ddafa95, 0x07af1e5a, 0xa4828eb9, 0xa99fdd76,
+       0xa7535adf, 0xed6de505, 0x943cda8b, 0xfe7047cb, 0xbad17ed0, 0x80a78541,
+       0xa369167e, 0x6a9fa8cc, 0x0875d37c, 0x040934d7, 0x9f17bef7, 0xf9f8f484,
+       0x91239786, 0xb585ce4e, 0xea1ea1a5, 0xd8e6155e, 0xf3300b8f, 0x1be7dcf8,
+       0x1c63f6d2, 0x69dcdaa7, 0xaac05d02, 0xa0c4a757, 0xdcd8febc, 0x8ffac3a6,
+       0x0835925b, 0x42e6cd3b, 0x28d29d84, 0xf3973f82, 0xf487e85b, 0xacfdf023,
+       0x6e98fa79, 0x25d78c08, 0x33d2f7af, 0x78c74c7f, 0x67526d4f, 0xd811ea3a,
+       0x8881f4ef, 0xd204a7e7, 0x169f2bc3, 0x7b23619d, 0xee257bf7, 0x72d7f037,
+       0x1e579f79, 0x48c7f97e, 0xbf712bf7, 0x0bd2fab3, 0x7a71edd0, 0x49befcfe,
+       0x1c7fbf8c, 0x5bd142e9, 0x62d06f00, 0xe1c74ddc, 0xc01d3233, 0xdcfe52f3,
+       0x66e49c37, 0x8a81fe6f, 0xdfdbfbde, 0x5bfde4ef, 0xf24f4eb4, 0xbd793bf5,
+       0x8c5e5b5d, 0xf4bbfdc4, 0xf0b7b1cc, 0x79f6a55c, 0x10f6cad0, 0xa3e32f74,
+       0x491fd70e, 0xa27b27f3, 0xd91bd70e, 0x3a1efebb, 0x8eadf997, 0xeb29f5f1,
+       0xf5e493ad, 0xfbf2f52b, 0x617e15d7, 0x0f0ebe32, 0xf325fce5, 0xda2bf213,
+       0xdcfaca65, 0x857dfc31, 0xb972d33e, 0x97291add, 0x4912dccc, 0xbfb03bf9,
+       0x7e806728, 0x6e453a9c, 0xcf4b9340, 0xf603fcc1, 0x6e7f994b, 0x905ba72e,
+       0x98e8ce6b, 0xd2ec7dde, 0xf2a165b0, 0x397292c3, 0xb46ccf1e, 0xfe02b526,
+       0x8b3f073e, 0x5e800ff2, 0x14f180a5, 0x2bc651ba, 0xa9cccdf9, 0xbfe86eb8,
+       0xc657fb0d, 0x2117d8fd, 0x331f3f61, 0xfcca1fce, 0x692cbe15, 0x33353058,
+       0x325ddb12, 0x75c70ca5, 0x9b95f973, 0x9df7a66b, 0xfbc01f68, 0xe28156ce,
+       0xbf6467d4, 0x97c6ccfe, 0xef0d1723, 0x796cf7a5, 0x38c3f8de, 0x153cf058,
+       0x67a00bfa, 0xe6c9679a, 0x56115379, 0x974c1be6, 0xfa14de0a, 0x93c60f64,
+       0xa74c12dd, 0xbe8a6344, 0xe7a7fb14, 0x9433c4ba, 0x79e7d39f, 0xddb27f70,
+       0x33e30e73, 0x2d7e3728, 0x6c6e49fa, 0x0d4f1db0, 0x33f0e7d0, 0x7595ea06,
+       0x8b9b26ab, 0x69f69cf0, 0x8da681c1, 0xb7e02fa2, 0x33d00a4d, 0x95dfde8a,
+       0xea53f3cb, 0x71179ce2, 0xed3e6aff, 0xef69149c, 0x5dc737b5, 0x30a3136d,
+       0xe798752e, 0x53d8f5b9, 0xfa271c5f, 0x9b9d65af, 0xdaaa7fd0, 0xa3e9c7f2,
+       0xad7fce91, 0xaa9bf3a5, 0x6875138d, 0xf073dfc7, 0xc7443cee, 0x9214c6d9,
+       0xe40f17e7, 0x987a1366, 0xe81732d9, 0x23c0fabf, 0xf3c3e773, 0x41d156ea,
+       0x41fa1d72, 0x935aadbe, 0x73d4714d, 0x0bd35d61, 0x4fbf5ed0, 0x3ebda334,
+       0x83ee60f6, 0x69ac7ed8, 0xc3ae3470, 0x60962079, 0x7a4514a7, 0x956fb141,
+       0x2d06bffc, 0x9906f7df, 0x29efee8f, 0x34959d39, 0xf9e3a434, 0x903ef77b,
+       0x2b1fa0cb, 0x3696f675, 0x2b35ef1c, 0xe07513f9, 0xe862d8fe, 0xafec9c1c,
+       0x48663a65, 0x86e7a2c8, 0x427e7804, 0xf506b9db, 0xa63589c7, 0x013875cc,
+       0x45bc9bf1, 0xe7e66edc, 0x7c7cb18b, 0x3cca6f05, 0x1af4cbd6, 0x7ef29fdc,
+       0x280bfa07, 0x5ff9e547, 0xb9ebf0dc, 0x1e2effa8, 0x75c18b4a, 0x585af27f,
+       0x9f4bda23, 0x545cb968, 0xee3b07fa, 0x05bda07c, 0x060a9b76, 0x03054d3b,
+       0xdb579ddd, 0x7e69eb7d, 0xedaae68f, 0x95ee8534, 0xb960d17c, 0xa7d763d1,
+       0xa53cb0fe, 0x2880bc2f, 0x9472d420, 0x697ef071, 0x602fb7c4, 0x2692e0fe,
+       0xeb0f59bd, 0x8ff48f3c, 0x8a2f56e7, 0x41a73c7e, 0xe1f91c1b, 0x7ed98bfc,
+       0x7c971bf4, 0x2d25e1c4, 0x280edf82, 0xb37dbe3d, 0x8317ed88, 0x0215691d,
+       0xb747e4ec, 0xb83645cf, 0x4a6f70e2, 0x0e57f680, 0xa80a7cf1, 0xc7d90636,
+       0xffd8256f, 0x4ac5dbef, 0xe218e1dc, 0xdbf856fd, 0x77881cc1, 0xbf8adf05,
+       0x45d006f4, 0x7c40567e, 0xec8cbbdd, 0x6ebc2fe2, 0x670b2f2a, 0xf48b1a1e,
+       0xec728a6c, 0xd77ed787, 0x103888fa, 0xe670fdf7, 0x16f7e837, 0xc8cca318,
+       0xd77a5fc7, 0x17e561d2, 0xca950f5e, 0xb7712bbe, 0xe9db8771, 0xb35b2fbd,
+       0xf7858c8f, 0x7146375e, 0xf9e4e6b1, 0x1bfbc123, 0xef72479c, 0x7c56d1aa,
+       0xb3ebacae, 0x2b3ef8fb, 0xd0ecfef3, 0xaeb891dd, 0x8f63c7f6, 0x8dfdc18c,
+       0xdda33288, 0x23ce54b7, 0xedccd0b9, 0x510d4fe7, 0xfb06dc4f, 0xd9eee9fc,
+       0x74f20616, 0xb99cfb71, 0x6bc97cf8, 0x7eed1982, 0x23336bc7, 0x37f6ce31,
+       0x8cd22ba9, 0x86d7bc25, 0x22fc91f3, 0x3282a7ca, 0x17db1b36, 0x9ecc49b4,
+       0x44c3474c, 0x90be632f, 0x7f006dfc, 0x2e29cf0e, 0xc5384df2, 0x8b17e045,
+       0x5f8b2279, 0x1e94f1e1, 0xebf656bf, 0x4eebcac6, 0xf8e18bcd, 0xe4979f92,
+       0xec9fe7f3, 0xf606617e, 0xd680f177, 0xf2fef38c, 0x5ffa9680, 0x0698fe0e,
+       0x21e9fbe6, 0x8c20dfee, 0x43c5f1fe, 0xde598fdc, 0xda98fdc2, 0x2ea75a55,
+       0x965d2faa, 0xbf43b404, 0x71d99e11, 0x3a647bdc, 0xb975e854, 0x396faf93,
+       0xef5c4be8, 0x9a37e88d, 0xbc426cb5, 0xd17cd0fd, 0x901dfa60, 0x3d1796a7,
+       0xbd1fdb74, 0xfe4578c8, 0xe855ba47, 0x3f337962, 0xc9698faf, 0x53fa422c,
+       0x2f9144e8, 0x819662be, 0xc741b97a, 0xc7cf3032, 0xa07709a7, 0xb469985c,
+       0xcc5f516b, 0x452aeb8e, 0xe3cc6cf4, 0xd12c5df2, 0x97a83538, 0x3f24f41a,
+       0x764fe582, 0x5f23b71e, 0x79625c05, 0xe7999e7b, 0xf90f3273, 0xfa094a27,
+       0xf3ea106a, 0xff311199, 0xce268761, 0x94ee9297, 0xc733fe60, 0x7149acc6,
+       0x2979b280, 0xe8094ef5, 0xcc76667c, 0x9e00438b, 0xebc2979a, 0x6ae4c547,
+       0x2eb75e01, 0x8052ceed, 0xc739e697, 0x738c05e7, 0x1075a0f1, 0x179e0fae,
+       0x9e1c01e5, 0xfac52ee6, 0xe4919d3a, 0x7ba165fb, 0xdee4dae4, 0x66bdeff6,
+       0xf677f8fa, 0xcb4bb85e, 0x11c31c92, 0xba1fe656, 0x39cf287c, 0xf3c42f3d,
+       0xca2a8045, 0xfefdf3d7, 0xf041da14, 0xbf601973, 0x6ee9976e, 0x86d8c191,
+       0xb51ac074, 0x27d8f45f, 0x47303260, 0x3afb8494, 0xdba3a643, 0x7c76b6a5,
+       0x60db187f, 0xd32060be, 0xd8f5f76b, 0x303ee5fe, 0xf4a0bb28, 0x5972f407,
+       0xba05eb0b, 0xd73c8017, 0x80096b02, 0x73904ae4, 0xffdf91c2, 0xf06dfb03,
+       0xda30aeb1, 0xca334a87, 0x35b98147, 0x8daca1d7, 0x71891c88, 0xa6cbe715,
+       0x73ec2336, 0xc41133fd, 0x7628f71f, 0xe89f3b8f, 0xaf99b57d, 0x880bb987,
+       0xf4c8d71e, 0x799789f8, 0x6f98b552, 0x094bf47d, 0x04b3f1e6, 0x87dc1af7,
+       0x49bbcd1a, 0xe7e476f5, 0x3fb44886, 0x3a2b3d2e, 0x35f6836e, 0x0ecaddb2,
+       0x4172cbc4, 0xf5009b6c, 0xf6c3c91d, 0xe6f23ea3, 0x45fefd71, 0x03d25b72,
+       0xb9925728, 0xeeed049f, 0x5b2cbe42, 0xdb1e393f, 0xe6dcf17d, 0x6fb0c5d4,
+       0x913f107a, 0xd029ceb0, 0x5bac3e67, 0xe748b00b, 0x07ea7ecd, 0xf0917dea,
+       0x23f2537c, 0x990e9c49, 0xd95ef90b, 0x7def051f, 0x468603f6, 0x606356fb,
+       0x875ff45a, 0xe466ddb1, 0x3e5f654f, 0x00de0031, 0xc83113df, 0x7faaf300,
+       0xea5bc791, 0x5303d605, 0x7e8fa8fc, 0x57ec937c, 0x4a9f4760, 0xfbbeecfe,
+       0xfe65f4e6, 0xf10e1d3e, 0xeee6f583, 0xe7729092, 0xbeb279d7, 0xd79964cc,
+       0xfb4961b9, 0x336e54bb, 0x4bb4ac51, 0x83789eb8, 0x7ea2e903, 0x25e90a4f,
+       0xfc9a7396, 0xdb1da566, 0xb2f44b1d, 0x7da45929, 0xa055a7b8, 0xade9ca3c,
+       0xaa1d9903, 0xa58d6b6e, 0x025af232, 0xc4f8bf3d, 0x2e5c393b, 0xfe9a7df1,
+       0xf298b5a4, 0x5a1c9e95, 0xf9e9f3cc, 0xba65ea3c, 0xc57cf053, 0xf92cf1c5,
+       0xc42ced86, 0x96876938, 0xa764edf9, 0x0239faf0, 0xc74afde1, 0xc4f50939,
+       0x8b02719c, 0xe70c5805, 0x69b7ae74, 0x7e043d98, 0x84fef2f5, 0x3d99c3d9,
+       0x08688fc0, 0xef8fdc8b, 0x13b39f31, 0x727986fd, 0x188c88bb, 0x3f653b55,
+       0x98e8cae7, 0x1b765c67, 0xe47363ae, 0x2fa40ea4, 0x6a806393, 0xd468bd5c,
+       0xadcc1d22, 0x9cc7ef54, 0x5b586a39, 0x63c915f8, 0xb9faa16d, 0xcf86a9de,
+       0x8c38fb2a, 0xc7dc0b0d, 0xd139fc00, 0xd4e2bf4e, 0xfb31fc73, 0xe78042ce,
+       0xf30fe006, 0x4a24ae66, 0x61cdbf84, 0xb7805f1c, 0x51e748fd, 0x45bc6af9,
+       0x8a78d53b, 0x23e3532d, 0xaf5ea5de, 0xaa887cb5, 0x8b7dc13e, 0xb2e07eaa,
+       0xc83c152c, 0x3f6aa053, 0x0ab16d78, 0x554df64e, 0x9c694fb5, 0x9ad382a5,
+       0x0fdaabe6, 0xaaa45e6d, 0xae5fe61f, 0x50f5bfaa, 0xd11e0abd, 0xfdaabf72,
+       0xaaf5d6a8, 0xadb6ccfa, 0x8eecfaaa, 0x6e705587, 0xf6aa63e7, 0x57ed4fa3,
+       0x7ae98fd5, 0xf63f554a, 0xf055e7d3, 0x5557eeb8, 0x3b5c27ed, 0xd88b82aa,
+       0x25f6aa3b, 0xe0aa3f86, 0x537fe689, 0x3b6c9fb5, 0x629faaa7, 0x3f555cff,
+       0x156be32d, 0x5ff1dd3c, 0x580ff6aa, 0x68d18edc, 0x105f89af, 0xe02c355f,
+       0x63a5757c, 0x38f901b6, 0xfe9ab46b, 0xcafd6532, 0xc6125952, 0x858a2669,
+       0xad9fc46d, 0xfbdb57e0, 0x73e92bea, 0x77e31397, 0x2f7e65ec, 0x8ed40a2d,
+       0xb47e3014, 0x640e00d3, 0x665b1c2f, 0x2ef1c156, 0xb5bdaa9b, 0x4faaaedc,
+       0xeaa86770, 0xa8732e07, 0x7c9e41e0, 0x6bc1fb55, 0xd9382a9d, 0x9f6aa657,
+       0xc152e8d2, 0xaae54d69, 0xdd9b43f6, 0xfe61faaa, 0x5bfaaa65, 0xf054790f,
+       0xaab59688, 0x7d5aa3f6, 0xb6ccfaaa, 0x767d5546, 0xce0a9347, 0xb5566ced,
+       0xafca7d1f, 0x75d31faa, 0xf63f5548, 0x3c1516d3, 0xd555bbae, 0x36b5c27e,
+       0x4ec45c15, 0x1897daa8, 0x13c153de, 0xed55a7cd, 0xa8cedb27, 0x2fd8a7ea,
+       0xfb15eaaa, 0x57c65a64, 0xbdb2e7ea, 0x0ff1dd32, 0x62befbd5, 0x31f59e27,
+       0xdd02f3df, 0x3d1a6a63, 0x902fec84, 0x22615ddb, 0x8a2e37da, 0xe260c51b,
+       0x9465d020, 0x42ba204f, 0xe292a057, 0xafa4714f, 0x31d8b548, 0x3ef407bf,
+       0xe49a3100, 0x2387b464, 0xc4aeed7a, 0x6f37d9eb, 0xc3c5ed77, 0x37f3a023,
+       0x411fbb47, 0xf2de58fe, 0xbbb424dc, 0x4dbe61ef, 0xe2898f38, 0xe02ea8f0,
+       0xea61938f, 0x4e528638, 0x025e0031, 0xd6113bc6, 0x3df59894, 0xc314fefe,
+       0xa7bed417, 0x21be395f, 0x03eafac0, 0xfc087ffa, 0xb2ec0902, 0x0df02f26,
+       0x7b0f8638, 0xea3f04cd, 0xc3bc11b5, 0xd9b2a76b, 0x63e5419b, 0xefd5075e,
+       0xbc13e6f6, 0xd824ebd7, 0x72a32def, 0xcf45d7bf, 0x09cb780f, 0x65fc027e,
+       0xff810f2c, 0xe053e58c, 0xd3fd6307, 0xfc2317e0, 0x6547d7ac, 0x9e91b78b,
+       0x226def3f, 0x99b7b0f8, 0x7ebc97e0, 0x87bd5b2a, 0xdbd57ca8, 0xbc47f542,
+       0xeebf04ad, 0xcdb8236d, 0x51f041db, 0xc7c1276f, 0x7e08a7bd, 0x6545dbcb,
+       0x2a53f787, 0x5376f6df, 0x6bdebbfd, 0x97eef704, 0xb265deda, 0xa654b7fd,
+       0xedc71603, 0x4b7c25be, 0x5c7267d9, 0x874ca977, 0x2b3062da, 0x20381e30,
+       0xcbe63f7d, 0x649d22e6, 0xfbbc9d10, 0x60f3ec43, 0xe9294bff, 0xf5d239fe,
+       0x67c7812a, 0xe72dbd14, 0x4f762825, 0xb7ee1ae5, 0x167b002e, 0x0a3e17cf,
+       0x15e7f6e3, 0xed03368f, 0xdc214ab3, 0x572fe781, 0xbb237f3c, 0x3939e182,
+       0x23c2fc90, 0x035b7dfa, 0x784ab6fc, 0x2fef035f, 0xf34c951c, 0x5a1d64a9,
+       0x98957f3a, 0xfba18c53, 0x868c5fd0, 0x6907cbe7, 0x1b47e47c, 0x95e87df9,
+       0xf197dd23, 0xe2cf15f9, 0xa5f3b0b7, 0x3b9d0766, 0xc5b7d74e, 0xc978c3cf,
+       0x7de29109, 0x4ea3e1fd, 0xb7ef3fce, 0x898bf5fe, 0x7d976768, 0xff11ba27,
+       0x72a6b527, 0xf2681f8c, 0x934f9c79, 0xdf9551af, 0xf90b748d, 0xe4ddfe50,
+       0x28034bb9, 0x55f8fbfc, 0xdc9bdc4f, 0x8edf37eb, 0xc1d827ae, 0x4b5d9933,
+       0xf9cc90f9, 0x75743266, 0x3c137307, 0xaca8f98f, 0xc70ee119, 0x9f982a7e,
+       0x3e817760, 0x82bad429, 0xcf2f15e7, 0x8f9e5e2b, 0xe51f0e52, 0x72f3e38e,
+       0x8e4ebcd2, 0xeb8e9c99, 0x2355e652, 0xc19fbbdf, 0xfce2f7ba, 0x57dafefe,
+       0xbe948417, 0x40bff1f4, 0x2f0c4617, 0xe7863b42, 0x2bc00d27, 0x7dc37ef8,
+       0x0a007bfc, 0x8062545d, 0x507bdf10, 0xbd01fba0, 0x81f40274, 0x375c557e,
+       0x3a0423dd, 0x2e75c4c9, 0xbdd2231f, 0x7f1a93f9, 0xd1e740ba, 0x4718758b,
+       0xf4071a58, 0x3a7fa431, 0x5bdf2958, 0x7d039e50, 0xbefec58d, 0x0674657c,
+       0xf5eeabe2, 0x57c47631, 0x6bdf8683, 0x3a2dbdf6, 0x170bde78, 0x11d8e2e5,
+       0x9264bf14, 0xa6f181c3, 0xf2d0fae9, 0x9f794ef5, 0x65b4da4e, 0x7d4fea7e,
+       0x9f3b336e, 0xf3b39bfb, 0x7ea3bc79, 0x223527d5, 0xd1e4fbcc, 0xa5ff748b,
+       0xfed7fccf, 0x01a947f4, 0x7ad75c74, 0x8233f286, 0x1e48fddb, 0x511ba157,
+       0x33ef7267, 0x87abce06, 0xc3e7e78e, 0x068f7fb8, 0x3a214e3a, 0x93e780be,
+       0xa8f6f433, 0x01765079, 0x74a0da4a, 0x7e4cd2ff, 0xa0e622dd, 0xa8b99ab2,
+       0x8edb0a5c, 0x6df2eb74, 0x97be21d7, 0xbe7a16b3, 0x0b6eff32, 0x8d12f1d2,
+       0x1adefc9b, 0xf3c5f0cc, 0x6a5dd662, 0xd1ddbc03, 0x1b4deeb8, 0xd3766fa0,
+       0xaf1889f6, 0x7aafe59d, 0x0799cb13, 0xef980b84, 0x8b517c0a, 0x3c12eaf3,
+       0xf8c0071b, 0xda2e9ff3, 0xcf9e1038, 0xb07ef910, 0x287ef877, 0xdd782372,
+       0xf86b07c0, 0x2eb49cba, 0xc54cb231, 0x99eb9507, 0xcdeb8853, 0x8be1efbb,
+       0x3eff15fc, 0xd497e510, 0x75eee74d, 0x7063ebaf, 0xae33979f, 0x12a705df,
+       0x3af450df, 0xc15f3a23, 0xeed81dc2, 0x3fae9933, 0xae88c41b, 0xdd18133f,
+       0x4dec57b3, 0x65b6e496, 0xe7eaf4a5, 0x23d3cd3a, 0xbfa04f11, 0x9f3d11b7,
+       0x9994d96b, 0x9fdf728c, 0xf686f684, 0x21a3bd29, 0xd847a559, 0xb8de88f5,
+       0x1e5a43d6, 0x979e0a67, 0x3fd6ff90, 0xebd0bed0, 0x3dcf0f98, 0x1e59af80,
+       0x1d00f3f2, 0xa20355f1, 0xc563e316, 0xbf3f3b2e, 0x527ff755, 0xb7c76f9e,
+       0x83eb8e3c, 0xcbbde0f5, 0x3d70e3be, 0x1def0fa5, 0x8586e487, 0xc9bf38d1,
+       0x33d5a527, 0x2576331e, 0x7fbe3da2, 0x5c29fb80, 0x51cf12af, 0xe48ec4fc,
+       0x5ee9524f, 0x4516c15b, 0xc4bcf31e, 0x9d0e5cf1, 0x087ddad4, 0xa64a2c9f,
+       0x5f22bff8, 0xf1e7cf6f, 0x7895dbaf, 0xbc506157, 0xc2ee282b, 0xbfc7430a,
+       0x71687318, 0x47d8c37e, 0xde283e0a, 0x3ec5c8a2, 0xf941b67a, 0xe29d843e,
+       0x97f13d12, 0x2fe27b0f, 0xc9d75714, 0x4f319372, 0xbee02b86, 0x5c1cb589,
+       0x609f9514, 0x3f2aa960, 0x0782acc1, 0xf6aa6c79, 0x55dad783, 0x0cbec9f5,
+       0xa34a7d55, 0x35a70543, 0x0fdaabe5, 0xe0aa766d, 0x5532fe61, 0xb90f5bfb,
+       0x9688f054, 0x51fb5572, 0x7d556ead, 0x5532db66, 0x4787767d, 0xae76e705,
+       0x7d1fb555, 0x1faaa7ca, 0xaaa8d5d3, 0x9369fb1f, 0xddd71e0a, 0xe13f6aac,
+       0x5f555f9a, 0xaaad7ec4, 0xa73c312f, 0xc7297f82, 0x5f9a2615, 0xd937bd51,
+       0xf782aed6, 0xcbb8f386, 0xf509fb14, 0xfafef2fb, 0x1f89c22a, 0xa7bc65a6,
+       0xffbf6faa, 0xc0959d96, 0x35fbfe2f, 0x28ee67e4, 0x9589fae3, 0x083a7317,
+       0x3ba76de3, 0x4bc6ab4e, 0x9193bb12, 0x79a2ed8e, 0x6a75f200, 0x78a3ccfe,
+       0x5cee91d6, 0x2ee28c55, 0x51fb6ca3, 0x3d716f2c, 0x336c8c57, 0xa3bdfcbc,
+       0x7f748e58, 0xcc640c55, 0x8fa2cb1c, 0xc9e59961, 0x14e2b12c, 0x863cced7,
+       0x556f9e65, 0x3059ca09, 0x0a5b3f07, 0xdf0ffef3, 0x25df742d, 0x826bbf12,
+       0x49c92ff1, 0x413abb74, 0xbabe7c43, 0x7c7948c2, 0x0946b196, 0x5e9d959d,
+       0x20e3d0cf, 0x588f2cd3, 0xb07c6036, 0xff79ec11, 0xc00fb050, 0x1772c7be,
+       0x707eefd8, 0x7d82b682, 0xb036e58f, 0xe3f9f1ef, 0x6c23df60, 0x11ab2479,
+       0xdefd5bdf, 0xd021b2e2, 0x1235e0ff, 0xb3610f7d, 0x28eab35d, 0x46b6c7cc,
+       0xba057947, 0x30c347e4, 0xad5066cf, 0x174f27a6, 0x46abbd51, 0x0bdfc9ea,
+       0x55b67683, 0x8cdc151a, 0xf1ac117f, 0x41877de1, 0x1c67b623, 0xbd1d0070,
+       0x3b50b712, 0xd299d60c, 0x1a2fb159, 0x39cc31e0, 0x82c9f607, 0x27fd017b,
+       0xc4ac1c17, 0xf860e47c, 0xd8d74295, 0x90371831, 0x9f21865a, 0x947e879a,
+       0x52daf380, 0x634399fc, 0x57f671c6, 0xec75871e, 0xe7970f89, 0x48b2bfb9,
+       0x9d7e99ba, 0xd3c4c713, 0xbca84f73, 0xb863a98d, 0xd02e4ffe, 0x66107928,
+       0x4e564f94, 0xf60acc22, 0xdbc81451, 0x9ed6639d, 0x3241df41, 0x37ba04fb,
+       0x21bbdf2d, 0x3c10a414, 0x4e4f3c21, 0xfcfc0019, 0x1cbb9c78, 0x337563d7,
+       0xfe303676, 0xef0d4cb5, 0xab3cfd84, 0x768f9ded, 0xc127c6a1, 0x72bfb41a,
+       0xce301c39, 0x5eb005ee, 0xd4ea7780, 0xcc50ce76, 0x57fa819b, 0x2e79c8c7,
+       0xa076ccdf, 0xbcaaf67d, 0x19bcc79e, 0xe8b5e759, 0xceb239e7, 0x60345f83,
+       0x83704799, 0xba56b57c, 0xa21a981c, 0x3b42febd, 0x0b619bde, 0x73ea0b59,
+       0xc02ebe7c, 0xf72959ee, 0x122ebdab, 0x2e0db4de, 0xf8c04c47, 0x84f0515a,
+       0x4fd04efa, 0x478448c6, 0x7aa3036d, 0x04fbb1ed, 0x80c03efc, 0x98b0bf4a,
+       0x7808f1fa, 0xe36d62ee, 0xb65607cf, 0xff00d508, 0xf55d8c66, 0xcb818fbd,
+       0x7801fe60, 0x013e49b2, 0x0f6c25f3, 0x83c404fa, 0xe072eccd, 0xbbb326b9,
+       0xb6e6e754, 0xe75979b5, 0x2ede7163, 0x6861e607, 0xe6fc29a7, 0xa6b9e331,
+       0x0fe39cf6, 0xdca1e798, 0xeedafdab, 0xb10b8a88, 0x77d4a50e, 0xfd91fbf1,
+       0xdd2647d5, 0x393d21ef, 0x73c768df, 0x18565fd0, 0xa085f7cb, 0xfbc8dfb3,
+       0xbbe7b9b2, 0x163e7c46, 0xd149e391, 0x399b5f57, 0xeb7228fd, 0x2b0e68de,
+       0x283bdcfd, 0x797dfac7, 0x30e6d601, 0xef980ee6, 0xcf07184e, 0xaedff529,
+       0xf4de2332, 0xc814de72, 0xfba79225, 0x9f9064f6, 0x7d3f4c18, 0x6f4400f8,
+       0x65d21654, 0xe801bf97, 0x4740bf46, 0xfeb21bdf, 0xe50126cb, 0x44d600c8,
+       0x41d64f09, 0xea121da5, 0xcc3dc973, 0xbe8ec215, 0xfb283f11, 0x7d25d8a9,
+       0x67fecff7, 0x3bc01efa, 0x3ebe1f3c, 0xfdc56ed9, 0xfeb4e853, 0x604c7c44,
+       0x31a9c59e, 0x59f3af9c, 0x5a7c8893, 0x2ca85ac0, 0x8e549d64, 0x3a54dd67,
+       0xb2c25999, 0x2ca83998, 0x272a2e65, 0x65950f31, 0xa9ca89ac, 0xdbca85ac,
+       0xe0952758, 0x62e951cf, 0x673bf266, 0xe5831d81, 0x72a2e61c, 0xf950f32e,
+       0xe5df4c99, 0xf9e089ac, 0x56ca85ac, 0x50fb7fe0, 0xa818838c, 0x1cf2023c,
+       0x9e41d7cb, 0xf206d963, 0x38c7aedc, 0xc7950648, 0xdf2a0ebd, 0xd953e6f2,
+       0xbb5275e1, 0x5465bdb7, 0x5175ebbe, 0x4e5bd279, 0x4dd7a765, 0x2ef7deed,
+       0xaf03f2a3, 0x793fca87, 0xca7952d7, 0x2ff2a3eb, 0x872a46de, 0x1d3e78ea,
+       0xc4cae8cb, 0x73a4f3bc, 0xf41da73a, 0x1f2c9e51, 0xbf35398f, 0xfb839618,
+       0x13b3a1a8, 0x02bde96b, 0x4335a3d2, 0xb714f743, 0x770bd466, 0x24f9b943,
+       0x56f563b7, 0xd6c9d913, 0xe602d5e6, 0x5d0ab5af, 0xadec0462, 0x605840b1,
+       0x74513d00, 0x70886d84, 0x63dbac20, 0xa7dc3a00, 0x83ef74f5, 0xe2abfd7a,
+       0xece80302, 0x9ffbd302, 0xaa61c53f, 0x359c731f, 0x298e0198, 0x5783db08,
+       0x281e70c9, 0x8d5f1384, 0x26f78058, 0x34ec0af2, 0xc19327cf, 0x27fca6b1,
+       0x9919f923, 0xf13367cd, 0x5acc7b3c, 0xc5fa1663, 0x3e28ed01, 0xe0bb5fdd,
+       0xddbde57a, 0x880d2cab, 0xc017cd87, 0x4947813d, 0x18995d29, 0x57ec0b87,
+       0x33e37373, 0x0fc67bf1, 0x4f7c276c, 0xe71e3f7f, 0xfb90521c, 0x83ce9eff,
+       0xfd7b5be9, 0x9e1a73dc, 0x7a831908, 0x973440fd, 0xc283dd3b, 0x40ef2f29,
+       0x496f0c8c, 0x466d75a5, 0x79b5d618, 0xe3b210eb, 0xeab9840f, 0xcffd604f,
+       0x73979434, 0x75bddc20, 0x14a9c118, 0xe31cd99f, 0x94bd40c9, 0xe3f5c114,
+       0xc3fbc48e, 0xce35ef02, 0xe97ee028, 0x9dabc2ce, 0x6a9fd0fb, 0xb3cc30d4,
+       0x68b8dfdb, 0xf3f4064b, 0xe5126dab, 0xab8d44f5, 0xf50692de, 0xf268b643,
+       0xe1e65944, 0xadb57e3c, 0x33cc09fa, 0x4b7891de, 0x9bf43a4c, 0xa4cfcb22,
+       0xfc4caed8, 0x5d0ed64e, 0x3bd07ce8, 0x86a97e64, 0xfe82ce6e, 0x14e3924d,
+       0x0f3cb4fb, 0xa6b76953, 0x47dbcb80, 0x3b52f1c6, 0xf4efc781, 0x98fdc383,
+       0x98345e77, 0x1b2c7bc7, 0xb1ef140c, 0x7be7fe24, 0xb2dea193, 0x9340e35b,
+       0xacd6b256, 0xf589fbc3, 0xf905ac15, 0xdfc09f71, 0x76e20df7, 0x432c1832,
+       0x3df80666, 0xa5646f60, 0x6d49c406, 0xe3013ee5, 0x6b834518, 0x5b2b8c04,
+       0x180b9712, 0xbb94b0ff, 0xfd09b705, 0xffd50f24, 0x557b9c76, 0x56c7ac01,
+       0xceabef09, 0xb809dd51, 0x3ce4fbaf, 0x592bd063, 0x1dede381, 0x51b0f1c7,
+       0x1b7df462, 0xcd1d06df, 0xf75f182b, 0x1fbe2f8f, 0x31f657fb, 0x58dc7eb8,
+       0xd6078fbe, 0x07c810c3, 0xe0fc7863, 0x6401c1e4, 0x11d8cf2f, 0xf23f44ee,
+       0x4a5bf6e4, 0xc0b87e09, 0xc9eff689, 0x3df40583, 0x4f0f19bf, 0x052776a5,
+       0x817181d6, 0xa7cf0f19, 0xa52683ef, 0x497efa30, 0xd11d19f7, 0x97878ce3,
+       0x5fdfefcb, 0x1af9f58a, 0x9fd06fdf, 0x2a786fce, 0x0505e302, 0x6207e7a6,
+       0xb5d35279, 0x73d3bf1a, 0x2bfd99bb, 0x96d76baa, 0xc1959fb8, 0x0fb7331f,
+       0xc63c62d1, 0x43f3c05f, 0x96a73367, 0xc8b81fe7, 0xd43c2dbf, 0xccaf0c79,
+       0x2ee96f8e, 0x671fb4c1, 0x9638f9ab, 0x340e6dc5, 0x876959a3, 0x939638eb,
+       0x68a53d3a, 0x6a9d94de, 0x54658e3a, 0xfc8fdb91, 0xccbfe4fd, 0x8049fe7d,
+       0xb564ff07, 0xad99ee99, 0x9fb29aef, 0xba5a95e2, 0xdf2bb597, 0x012224d3,
+       0x50c29a1b, 0xd62c243e, 0xf45977d0, 0x08d14dc9, 0x52a717eb, 0xe881fc1e,
+       0xeeb465a6, 0x788670b4, 0x10f41b7c, 0x732ec5d2, 0x13f21853, 0xc3ed25f0,
+       0xea7d32b3, 0x68e63da3, 0x679f2e7c, 0xbf93b4f4, 0xe6587863, 0x53747d33,
+       0xc4e340b4, 0xcca7f7c9, 0x956ece74, 0xa04ef9f5, 0x2c13b417, 0x8c3ef726,
+       0x7272ed6f, 0x3919f7fe, 0x4df3605d, 0x77c9ffa0, 0x9ada1402, 0x3f70d33c,
+       0x3a92952c, 0x20d417cf, 0x17be8bf6, 0x8741bdc5, 0x43b0dda0, 0x19c830e0,
+       0x461c3dfe, 0xcd98c577, 0x7c87d968, 0xe2dfccac, 0xeb87f756, 0x7dec6598,
+       0xd3bba14f, 0x943ffaf2, 0xde6e5dcb, 0xbfdf329f, 0x3ce5d814, 0x58d76673,
+       0xf3e39ec8, 0x02687581, 0x8ed013e6, 0x6f33d7d6, 0xfbf1b0e6, 0xdf816ea1,
+       0x2976651b, 0x12d5fd70, 0x8cdbd9e5, 0x75fe512f, 0x4f7f9ea4, 0x63ede7f3,
+       0x41a7c40c, 0x40b2f8eb, 0x6048fb8e, 0xa9bb4367, 0xf3016e95, 0x9f801afc,
+       0xc8b29fd1, 0x225125b0, 0x2e316d7d, 0xeb01b412, 0x935624b5, 0xee5a9e9e,
+       0x96f7875e, 0xe047e6a7, 0x34d90817, 0xccc1b2d6, 0x6a78fbf9, 0x299ea51e,
+       0xa6a3ca3f, 0x03c340f5, 0x17efc5d5, 0x58839fc1, 0xd430d15b, 0x42593f9f,
+       0xee3b2df9, 0x10f94a9f, 0xb5f63303, 0x7d7788a3, 0x2d9df7c5, 0xd4adf1e0,
+       0xc0f9d2dd, 0x96ae2475, 0x03b5f954, 0xd030d46a, 0xe8560a83, 0x8b2c2aca,
+       0x26a3b8c6, 0x74d4f862, 0x1a919b94, 0xe6401dfe, 0xfa98e613, 0x743e95ca,
+       0xd95fe325, 0xa9b1f89f, 0x518b4f84, 0xbac0fb43, 0x4c3b861d, 0x7d95caf2,
+       0x604873c2, 0x6ef7cc73, 0x78fd1528, 0xed86d1ff, 0x66ee0ed1, 0xc1afb8f1,
+       0x6b4fb4fb, 0x728e9a9f, 0x4cc6bb7a, 0x78414e79, 0x21f33d05, 0xe3db29f9,
+       0x4b9e1ea8, 0x427b8a06, 0xc5baca3f, 0x3f7ab050, 0x0f7ed46e, 0x9e999ceb,
+       0xc0f9f7dc, 0x875339c4, 0x7a06fcc1, 0x707fed18, 0xd507d0fd, 0x707e4afb,
+       0xcc79fa0e, 0xec4ff6df, 0x03c4d4e7, 0x050fe4a5, 0x7742abed, 0xf5a1b149,
+       0x3963dbc2, 0x3845265f, 0xbb232fde, 0xc13b2242, 0x0f8a4835, 0x8fa693f4,
+       0x84ecfee5, 0x87a48d97, 0xdd0339d8, 0x75b4732f, 0x59d714fe, 0x7943557c,
+       0x7bbe6fba, 0x50a991f4, 0x0fd7fc4e, 0x7681dfea, 0x5235bf13, 0xacabfdde,
+       0x82060a6b, 0xf25a1d7c, 0x7a5dd71b, 0x440309a2, 0xee8c950d, 0xd4e3280b,
+       0x4efce3c8, 0x7c9177eb, 0xba31261d, 0x0211807f, 0xbc785f65, 0x2d5ff280,
+       0x2ab98ebc, 0xb48fc89b, 0x98670ea6, 0x5ac0d3a7, 0xf8b924ee, 0xcfbe8e85,
+       0xaedcab39, 0xcff5822d, 0xab6bb4aa, 0x9e259f90, 0xdcbb3fa7, 0x5767cf41,
+       0x0373f83a, 0xdca73e7f, 0x54e7cf49, 0x2373f93a, 0xdc7c073c, 0xf4efee51,
+       0x1877bf42, 0x3c1aec63, 0xf174a80f, 0xaa7a6bfa, 0x01fc177f, 0x0f0bebcc,
+       0x6fbc93f3, 0xcfc354fa, 0x89c26a8b, 0xaca6f5ae, 0x10defc0e, 0x7dd0d2ab,
+       0x8920fd05, 0x973709ee, 0xfdf8fcbb, 0x5358c7b9, 0x55efae02, 0xf919bd77,
+       0xc944d5ef, 0x157beb8c, 0x33cc5bdc, 0x94932df2, 0xafb2617c, 0xa44ead5e,
+       0x727d9cf3, 0xd8b7defc, 0xb066f140, 0xccde2875, 0xed900f16, 0x1fa7ae18,
+       0xdf47145f, 0x3bd48a65, 0xfc40cede, 0xfdfbe41e, 0x7f7e76f3, 0x086072d6,
+       0x2c2707e5, 0x8657a00b, 0x88a8b7fc, 0x325615ee, 0x5b7f8e33, 0xda2a6ba5,
+       0x99bb0d91, 0xf030c503, 0xfb0fbd37, 0x766ceb49, 0x8b1a5fbf, 0x21c39370,
+       0xc9500672, 0xfaf70685, 0x4f5c7613, 0xaff2868d, 0xfbf2dd9b, 0xc407c535,
+       0xbe7e5ee4, 0x4543e645, 0x3795f47e, 0xc7ec0e8e, 0xc0ec5156, 0xe02de0f8,
+       0xff3c6397, 0xf0839d71, 0x512f9bec, 0x6e2de41e, 0xd91ccda9, 0x7289dfcb,
+       0x1f20b7bf, 0xd487bf62, 0x80f436fc, 0xcb768f9a, 0x6b38fa7c, 0xdfb16293,
+       0xa6fd4666, 0xf7414b36, 0xd4053a18, 0xfafcc147, 0x894138e4, 0xd0f0a98f,
+       0xa135cf07, 0xaebbd9d7, 0xb4e91396, 0x175f0d2e, 0xd243f7e3, 0x409fcf8d,
+       0x2e5e9879, 0x6549bc91, 0xfae3ef4d, 0x60480f53, 0xb97ec2d0, 0xbdf1c2b3,
+       0x4869b6db, 0x9d674dac, 0xb46e1724, 0x11de256e, 0xf5e0cebc, 0xd22b1f4d,
+       0xc1ec7afa, 0x07b2068d, 0x8407dc77, 0x56f64511, 0x7e15c638, 0x73b8ae3b,
+       0x50fbb42c, 0xd7b547b6, 0x1a4f2e45, 0x5aa7448c, 0x811983eb, 0x8b1787f1,
+       0x4b1c3f8a, 0x956762ed, 0xc845b8f1, 0x277f6fef, 0x4ba637f7, 0xf6376f9d,
+       0xfca0f0d3, 0xddbe7530, 0x82036b84, 0x8252c3f2, 0x556ec3f2, 0x67344fd5,
+       0x8d87e507, 0x2b0fca0d, 0x32d3c151, 0x87e505a6, 0xb7c156cd, 0x6aa9dfe7,
+       0xb779d33f, 0xd9767eaa, 0x1dfd550a, 0xf0557bae, 0x5407f2bc, 0x0ddc2bed,
+       0x973bfaaa, 0x1f5554fd, 0xa5293fec, 0xddcb90a1, 0x7bcf369d, 0xed96c014,
+       0xbefa10a9, 0x23df703b, 0xefc85823, 0xe4294f97, 0xf297e57a, 0xb3e639bd,
+       0xcc71e2a9, 0xebc55369, 0x0c0a0ada, 0x5d8fd05d, 0xf233f8e7, 0xf0e82633,
+       0xea9b6b73, 0x3d7dad9c, 0xeafe83b4, 0xa8ac434d, 0xebfe30ef, 0xe0dee506,
+       0x8579d0d7, 0x80b571b5, 0x56dbadcf, 0x35cab8f3, 0x7af3c51d, 0xa8cac1e6,
+       0x73e5afbf, 0xbb9e652d, 0x63d238e5, 0x85424718, 0xefc29ce4, 0x76f1840f,
+       0xb894590f, 0x4dfa9ba3, 0x28f9d7c8, 0x23daaf0f, 0xc1b81c60, 0x10dee8cd,
+       0xfe3883da, 0xfa0ee5d7, 0x717f7ade, 0x1b5e1dc6, 0xb678c273, 0x3a75bed5,
+       0x614e5b58, 0xf05ddee2, 0xc8c3cdbe, 0x26167018, 0x4c78c5ed, 0xe89da169,
+       0x78e2413a, 0xabe57c7e, 0xf1809f17, 0xd0b02c76, 0xfae0b8bd, 0xbe477581,
+       0xea7beb7a, 0xe97daf1f, 0x7bef92f4, 0x99eb657f, 0xfdf5014d, 0x07cb49c6,
+       0x0e5fbea8, 0x3e790b38, 0xaba64730, 0xc51d02ba, 0xbac5e6b1, 0x78c21667,
+       0x33fe0b97, 0xf7bc10ef, 0x5deafda5, 0xf9e10728, 0xed0e7c1c, 0xa65faf08,
+       0x927ca15e, 0xbec15ba4, 0x2fffd237, 0x1b6e9211, 0x6b25fee4, 0x81c63765,
+       0x3b3a4dea, 0x0d03f9fa, 0xb3e759c9, 0xba0d6b19, 0xeff8a6a7, 0xdbf8f78f,
+       0xff7fe42d, 0xd9fb90b8, 0x44fee42b, 0x199f7f33, 0x93af747c, 0xf810b3ec,
+       0x059b2310, 0xaa035794, 0x7c810ba5, 0x51d26ed1, 0x9462c11c, 0x65c60ee3,
+       0x1280b8aa, 0x2d376837, 0x2dee9011, 0x3c50f76d, 0x9405e31f, 0x92fb81bf,
+       0x305e37db, 0xf34a90d0, 0xd67fbfea, 0x08423cf3, 0x3cd04e31, 0xf044f894,
+       0x27b47e38, 0x86d73f50, 0xf2bfbc87, 0x2351614a, 0xd75d97ee, 0x9464defd,
+       0x496befdf, 0x2f47f51f, 0x0fee1f98, 0x21477fe8, 0x1f31eff7, 0xe639f03c,
+       0xfa55fb7b, 0x0fee913d, 0x662a0c10, 0xcb6baeb0, 0x6def1c50, 0xad49de3e,
+       0x20f646c3, 0xbbd43da8, 0x1eb90bbb, 0x544e8358, 0xf719f23c, 0xaf819bcb,
+       0x6bcc7cb1, 0x376cfb26, 0x7bc21ff0, 0xfd2a76bd, 0xf72a0cde, 0x7f541d7b,
+       0xf04f9bc0, 0xc1275e13, 0x5465bc87, 0xd175e53e, 0xe5bda7f3, 0x75eb3f04,
+       0x5de2d953, 0xf79fcf46, 0xec3e087a, 0x4bf04b5d, 0x61a60f68, 0xca91ba9c,
+       0x544dbd57, 0x4cdbc47f, 0x3f5eebf0, 0x43de6d95, 0xb7a8fcf4, 0xdee3e085,
+       0xf2df8256, 0xe1dc11b6, 0x6df2a0ed, 0x7f3d276f, 0xe08a7bd7, 0x3a4eb80d,
+       0xf4ec686f, 0x2d7fa1c6, 0x7719f7d1, 0x68cdabb9, 0x34aadb5f, 0xec153f74,
+       0xce307bab, 0x9f92bbb1, 0x2479e263, 0x62d881c6, 0xb693d90d, 0x4c4f47aa,
+       0x5439faa4, 0xc12b9f8f, 0x2aeb38c3, 0x5ab2bf6e, 0x62b3b51d, 0xb7bc1422,
+       0xec92a6bb, 0x70f4a6d5, 0x92aeb7aa, 0x5c7beec8, 0xbf2689e3, 0xe4892eec,
+       0xedcb55b7, 0xde0e8507, 0xbde7f793, 0x35ce7e42, 0x7f9f3c6c, 0x3d684a64,
+       0x3950b172, 0xc0ec694f, 0xc016d9f5, 0x0bbe70fa, 0x5cf01b56, 0x4358bad6,
+       0xaabbb0e7, 0x626cb9f9, 0x6157f715, 0x6617143e, 0x29f91255, 0x681b05d6,
+       0xb355895e, 0xf43cdea8, 0xd3f468c1, 0x67ab3d9b, 0x252b7cd2, 0xbb366b8a,
+       0x39e3468f, 0xbe72e3db, 0x9c3e3593, 0xcf05e3ee, 0x3fce22e7, 0xbbfe77b7,
+       0x89bf7be5, 0x820277f2, 0x977ca1d7, 0xe3933773, 0x421a0f78, 0x1c98f1c6,
+       0x38144cc7, 0x1235b1ff, 0xd65edff1, 0xff748616, 0xf944a558, 0x9f8b0323,
+       0x2af1855a, 0x37f738e7, 0x8f7ed085, 0x04a8e73d, 0xef194c70, 0xe96ac87f,
+       0x10eefc09, 0x4dc5f7ec, 0xf2cb7cf0, 0x8df42e6d, 0xd7d9b763, 0x5735bb21,
+       0xf18094bd, 0xbd4144af, 0x29194a3f, 0x9d7babdb, 0x56c7bfbc, 0xd60dfbf3,
+       0x8f938755, 0xc7c371f3, 0xa180fd41, 0x9a61851f, 0xbb1cca4a, 0xe2464506,
+       0x1c2be902, 0xb6c56c2f, 0x7e2f1c32, 0x2f19539b, 0x59bbc713, 0x49fe0d3c,
+       0x7dd435a9, 0xc9e4fedf, 0xe0c8e48d, 0xfd9e7271, 0xe5103640, 0x2e5ae3c8,
+       0x71ef7cb7, 0x8292927b, 0x471df4c6, 0xf25017c9, 0x05f38207, 0x35fbca46,
+       0x9e42cf50, 0xb1ee8ee7, 0x3e327dfb, 0xcf28bab7, 0x24c25926, 0x65af561d,
+       0xd73ee0f7, 0xd79b8517, 0xa507a085, 0x18e5187c, 0x38d87820, 0x9d7b6f4e,
+       0x3f78cadb, 0x38cfde1a, 0x22e08ab6, 0x4217d9a3, 0xa3e52b5e, 0xc6233f72,
+       0x7038f971, 0xde5bd3f9, 0x5b7dfdc2, 0x8f51b94b, 0xc85bfc69, 0x922938bf,
+       0xb6201d7c, 0x60227bec, 0xf5e4335e, 0x0ff3a63e, 0x66e873c3, 0xca386fe8,
+       0xe197e455, 0x3e040798, 0x95de0046, 0xe38f26f7, 0x37cf757a, 0xfce9a39b,
+       0x3086c179, 0x999a8fb4, 0xaac1e881, 0x066744f5, 0xe05583d0, 0x9e0975df,
+       0x4e9c67bf, 0x16355f39, 0x0cb9e1e5, 0x2825cbd7, 0xafde6097, 0x3e924755,
+       0x60faa92c, 0x0b8028da, 0xcf944aaf, 0xcf0d58f2, 0x37f31ccf, 0xbc89e50d,
+       0xf7ee13fe, 0x2951ff8d, 0x720975f9, 0xf3f64bb9, 0x03991b0a, 0x5617e3ef,
+       0x1a9fc91b, 0x1b3a4d77, 0x485127e8, 0x0bfd073a, 0xdb19af1e, 0x15eea92d,
+       0xdd54f98d, 0xa22a301e, 0xa5d0919d, 0x705b6e7e, 0x1844ccf8, 0xbf86b9a7,
+       0x9fcdfcdc, 0x5bec204f, 0x8938a1ad, 0x9e0bcf72, 0x539c5024, 0xde6025f2,
+       0x230316e6, 0x32ad6e79, 0xb41e5198, 0xfe49c25b, 0xc9185735, 0x5a9cdd0e,
+       0xb276861f, 0x68eac17e, 0x7ceb072c, 0xba7630fb, 0x77a3b5f9, 0xbc90c6d9,
+       0x6dbefded, 0x7703d83e, 0x51efe4eb, 0x513bdb1d, 0xf3c97942, 0x76bcb659,
+       0x152faf74, 0x3cd1359b, 0x80361aec, 0x9e07be2f, 0x5c86e3cf, 0x5075d85f,
+       0x22b6f00f, 0xa0e343f7, 0xd7ce213e, 0x8d3b558e, 0x5e292b67, 0x3046498b,
+       0xc3dab6be, 0x3ba9d3f0, 0x810cb32b, 0xc9f0ae7c, 0xf9ffe50f, 0x0ddf39f2,
+       0xfa0dc0e5, 0xafbf11bd, 0xd37ce029, 0xefad3f9f, 0xfe2a9e47, 0xf963dbf1,
+       0xa4b6c8fb, 0x42eacf57, 0xf1fa57da, 0xebe46e5c, 0x8cca9e78, 0x3df449f2,
+       0x2ebe19f2, 0x2ef9f309, 0xcd42e7cb, 0x139d1316, 0x6d610f37, 0x5be06e78,
+       0x9ef1e1a4, 0xb9affe38, 0x87c50872, 0x689e0876, 0xd7c60a5f, 0x7fb8c9dd,
+       0x96fc06cd, 0xe24f3c1b, 0x3df99d72, 0x86af3c66, 0xce05967e, 0x977c443f,
+       0x6bca61ec, 0xecf78910, 0x867880ba, 0x190a5135, 0xadd718bf, 0x535c2786,
+       0xfd4c45c3, 0x8312921d, 0x56689e1a, 0xebc91fc3, 0x3f536c9f, 0xc357629f,
+       0x878e8389, 0x7f5e7869, 0x7d975c50, 0x41a5f180, 0x8f369af2, 0x06f5f7e4,
+       0xb8f0d575, 0x81c8126c, 0x8e71bec8, 0x202fcc81, 0xafe382fe, 0x28eb1909,
+       0x0eab6f2e, 0x2879078e, 0x971c141e, 0x023dc74d, 0x2472783e, 0x2a8f3bcf,
+       0x7e455f72, 0xe7c51b49, 0x7aeee4f1, 0xf8629f3a, 0xa2048df1, 0x79287717,
+       0xf0819a08, 0x7c87f4a0, 0x3f580be1, 0x7c2043f2, 0x19adc8b0, 0xc2f9cb9f,
+       0x873fa817, 0x5ee96977, 0x7f5e3ca9, 0x67f0a1fc, 0xa28e7cbe, 0x955cdde4,
+       0x6ef252fb, 0x82f9cb56, 0x3af941ad, 0xe94b1357, 0xced5fe1e, 0xf143c37b,
+       0x4f9df221, 0xcb10f9cf, 0x0dfe722d, 0x286fa1f2, 0xae7c43e7, 0x2b9576ff,
+       0x5878bd94, 0x0e2b33d6, 0x7ce5b3dd, 0x5b6afac0, 0xbae0a956, 0x04b6fbd6,
+       0xc0ad47e6, 0xacf9303f, 0xdf814991, 0xe674bec3, 0x40344f2f, 0x9dd62eb9,
+       0x4dab7881, 0xe2f94b3b, 0x0e9477ca, 0xb2347acb, 0x3afdb424, 0x9663e656,
+       0x638aa311, 0xfa88f128, 0x0c6b76ed, 0xae1517bc, 0x0c38e9e4, 0xc72b8f94,
+       0x07dbfa37, 0xba08b5fd, 0x4b03dc0f, 0xa89efa1e, 0x3d245afe, 0x62f389bf,
+       0xbfa7ae27, 0x78c55078, 0x36cdc78e, 0x83c6274f, 0x33dd32b4, 0x0f27e003,
+       0x94ff80f9, 0x44dac1fb, 0x8b485c75, 0xfed04cf9, 0xe232d371, 0xb03ee527,
+       0x0245d1ed, 0x788d89ca, 0x2fb237bf, 0x8ff3051f, 0x0f17ce55, 0x4f181fe6,
+       0xc7dfd705, 0xe0834bf5, 0x0a5ca370, 0x2fffcf5e, 0x94c6a07e, 0xe4f649d3,
+       0xfebb70a0, 0x1dc0ec7b, 0xbe265f5e, 0xb3dc39b7, 0x1f7ecf0c, 0x783c5f1e,
+       0x5def0da3, 0xfc03b233, 0xc42de7e3, 0x321dcffc, 0xd38c6e9d, 0xe6593d10,
+       0x0189f65b, 0xb9d164f4, 0xb40ed193, 0xa321dfc8, 0x368fc61f, 0x0d6ff65a,
+       0xcf62be31, 0xe579d8f4, 0xb8c08f30, 0xf6476c80, 0x80e7778c, 0x3f40627d,
+       0x933bbd16, 0xfbc9ebc6, 0xf4dbc793, 0x53b78dcf, 0xe329038e, 0xaf52ef59,
+       0xd0f3aacf, 0xfcb2acfa, 0x89dbc655, 0xbfe50beb, 0xd93c68dd, 0x6f19ecaf,
+       0x567d7aa1, 0x67d687bd, 0xa0f7be55, 0x9fe9b78c, 0xf32b4f1b, 0x7ef946e7,
+       0xc93c3693, 0xdfd8fc8f, 0x9e8680bd, 0x19976afc, 0x2546d0e5, 0xf9cb264e,
+       0xbe72412b, 0xcaf3965e, 0x52e257fb, 0xa579ee29, 0x9439b663, 0xceb9477c,
+       0xc98afb64, 0xed9315f6, 0x9467842b, 0x0f1d599c, 0xf197f8f4, 0x3bf10bb5,
+       0x9c563326, 0xf80249c9, 0x73dff8ca, 0x8733c9f8, 0xe52bc207, 0xf873d613,
+       0x13573391, 0x9fdca81d, 0x39df885e, 0x72e58c89, 0x32b79958, 0xb9e327ee,
+       0x36b752df, 0x40f5c785, 0x6efca25e, 0xffd0f248, 0xb13975bf, 0xbfff123b,
+       0xdd41baca, 0x06daefaa, 0xd36b7597, 0xfd68fbf9, 0x171e61e4, 0x94b3e797,
+       0xea651bfb, 0x91911bfb, 0x0a2ec95b, 0xca337e63, 0x938308b1, 0x9f2e19ee,
+       0x70bd2760, 0x73947307, 0xc69eda7b, 0x7df818f3, 0x72f9d98f, 0x17c2e6bf,
+       0x8d0efeb1, 0x79fa2373, 0x10598e1f, 0x92a3668f, 0xef6b762f, 0x3f03cabd,
+       0x8cedfee4, 0x11b70273, 0x621c78a3, 0xf09d914d, 0x434f1813, 0x7c3fb07b,
+       0xc6084fc6, 0x33e393a7, 0x69f1c9c6, 0x075c8eee, 0xdd175ffb, 0x7c4f596d,
+       0x5f1216da, 0x841af07d, 0x981341bf, 0xa888ffe2, 0x6f846f3f, 0x5e4aaf05,
+       0x4f60835d, 0x4a901fe3, 0x32c5e550, 0x3a87b0e6, 0xe5ecd8df, 0x7a3d00e7,
+       0xd0cdd135, 0x1cd9d30e, 0xddf79819, 0x32189df0, 0x8135cd5f, 0x9175f9eb,
+       0xd8ef94e1, 0x3f23a910, 0x2a723db4, 0x64abb8c3, 0x2978449c, 0x3ca32c8d,
+       0xb5963144, 0x9c169fa0, 0x2d462d7f, 0x7118fca7, 0x89697d20, 0xbbf93d89,
+       0x95f2034e, 0x9511ce78, 0x9370048c, 0x8dd2d7f9, 0xa663aff2, 0x48ebfcf2,
+       0x64e31d9d, 0x90ba4d1b, 0x1369d7f9, 0x8ed03db8, 0xf5c38beb, 0x30f7f8e8,
+       0x664975e4, 0xcf8cde7e, 0xd9fcf023, 0xa7ffa1ec, 0xda7f5948, 0x4a5f4e04,
+       0x515af47b, 0x873a883e, 0x5116ed1d, 0x21a50efe, 0x0232c351, 0xbe3297e4,
+       0xf096827d, 0x999158fb, 0x703567df, 0x1fc6757b, 0x57d1e742, 0x86e2504d,
+       0x3faee9a1, 0xe1a599ba, 0x5f0a66f9, 0x28ea31ce, 0xd18e6e0f, 0x9957df46,
+       0x69f88403, 0xf1fb404c, 0x61bdf8f3, 0x7a4361c9, 0x09d8e3fa, 0x6191fe2f,
+       0xedcb9c38, 0xe968a7f7, 0x02fbdd3e, 0xfa623a73, 0x5cba79e6, 0x3cd113d1,
+       0x33b6fdbc, 0xd31d901b, 0x93b23146, 0xa8fcb49e, 0xc0008f09, 0x04f1f82f,
+       0xf71cc758, 0xbbe889cc, 0x7ccf2acc, 0x45d7db13, 0x9cae7970, 0xf045d4ab,
+       0x5e7ba7ff, 0xd827fbac, 0x67c172fe, 0x5f48c591, 0x7d127752, 0x3db7b20f,
+       0xb404af9d, 0x4f10986f, 0xebf067ed, 0xddf4dd66, 0xe7712b89, 0xda33723f,
+       0x7b285b1f, 0x160cfd0a, 0xfc8a4fb0, 0xf0237f40, 0x8119fa39, 0x609effff,
+       0x8576b7c9, 0x694a2790, 0xbd31fdb1, 0x2580e41a, 0x952a3de1, 0x629c3be7,
+       0x3ec43f99, 0xeef9941f, 0x9bf7b69f, 0xbd79b661, 0xf9d83ef6, 0x971f1107,
+       0xe0b7dfca, 0x965754a7, 0xbef6457e, 0xa1f0a756, 0x5e97fc9d, 0xb7ce7d58,
+       0x8e94dbd3, 0xe219e9f7, 0xcad5fa01, 0xaf5946f2, 0x8ccbbb76, 0xf195bef6,
+       0xd9a99fff, 0x9a5e9ddb, 0x07fefbd6, 0x2f987af2, 0xbe57de9d, 0x744b63af,
+       0xa1cb496f, 0x9f3928bc, 0x6792acc8, 0x27a34b33, 0x741da1c6, 0xed187317,
+       0x75a6b4b8, 0x503b57c8, 0x771da15e, 0x3be23ef4, 0xf047a26b, 0x91c60319,
+       0xff2b47ef, 0xb8d5e32f, 0x8ecf5a52, 0xc3c47f1e, 0x744b5fc8, 0xbadca275,
+       0x5e96a8fa, 0xaeac51da, 0xdcba25b7, 0x4b7e60eb, 0x377cf30e, 0xffd8256b,
+       0x2bd85f18, 0xe61b2c50, 0xbe017941, 0x888fee24, 0xfffa46cd, 0xdd62bb1b,
+       0x4edf0847, 0x4a348ffb, 0xabb430e2, 0x7b23ac1d, 0x9ee0a36e, 0x69adefc2,
+       0xc938a858, 0x71e04dbf, 0x98268f80, 0xed999e79, 0x6c7e9c4f, 0xc757a41f,
+       0x5fff3cde, 0x3ff8e391, 0xbdd3b28d, 0xda3ec51f, 0x347f8fd6, 0x1bdf29cd,
+       0x8c8af452, 0x1b73033f, 0xc1445f90, 0x878483c5, 0x29ea7a9e, 0x2a9fe30b,
+       0xc8b67184, 0x4fd28ff6, 0x2a9faa78, 0x924e1dc3, 0xc9d98297, 0x63d985f5,
+       0x6e1f01f3, 0x390c56fe, 0xd653827e, 0x647e8337, 0x76a5f6c3, 0xc1960677,
+       0x25363ff7, 0xfdc0c92d, 0xed5534dc, 0x6b3a6e5f, 0x87e633ff, 0x917d1ffc,
+       0x80005820, 0x00008000, 0x00088b1f, 0x00000000, 0x5795ff00, 0x7794487f,
+       0xf7be7f18, 0x9ef777be, 0xaf35de9e, 0xbdb4d3bb, 0xb484ba67, 0xc589975d,
+       0x819cf7c2, 0x116ba8b1, 0x9bdb205d, 0xa6ab9593, 0xe3054159, 0x9532cb7d,
+       0x6c23fad8, 0x98b7618c, 0xfd4ff85b, 0x18c481b1, 0x21152126, 0x06d8c46e,
+       0x6a44e61b, 0x04124904, 0xf9e7b96b, 0xef79efbe, 0xfde8ea6b, 0xf79ee7c3,
+       0x3cfcfcfb, 0xfaafde3f, 0xc9f4271d, 0xde8a3700, 0x012a3908, 0xa29cb7bc,
+       0xd0cc019b, 0x7532f353, 0xaf20098d, 0x0ddce45d, 0x01ca27ef, 0x4bd6863a,
+       0x6f520572, 0x100e546c, 0xc004c40d, 0x270d1bc7, 0x5ef2322a, 0x39c830ef,
+       0x21061af4, 0x952bbc40, 0xa8c5fe8d, 0xc5394a02, 0xde630c35, 0x0d74dc8c,
+       0xe494bb06, 0x3b454107, 0x2e79e89e, 0xc5098927, 0x0052fa81, 0x91ba3aa2,
+       0x435ca0fc, 0x0712acbd, 0x9fc06548, 0x7df8c819, 0x76e4e354, 0xa363ca3a,
+       0x513e3cb5, 0x4779e076, 0xd1d61638, 0x42bffb4f, 0xf3dbf492, 0x3ed14601,
+       0xa403e406, 0x7ae30ae5, 0x37ed3b69, 0x3bdf3c8c, 0x43af44b6, 0x89e2fa5c,
+       0x7aec8562, 0xf51d251b, 0x45ca9c85, 0xbd9155ed, 0xbbd9f375, 0x57b4da71,
+       0x3b23acae, 0xc3d93f31, 0x735e79a8, 0xed33af71, 0x6c48fe08, 0xa0012d62,
+       0x28041883, 0x97e5c4a0, 0xcfdc85e5, 0x0bfe8a99, 0x31c9c49a, 0x220f8329,
+       0x655c9feb, 0x8360bcf2, 0xa5cd7ab6, 0xf0c4a95e, 0xff6f4737, 0x09aee695,
+       0xd783dd8b, 0x96f8d90e, 0x135de381, 0xa7ecba96, 0x9c0d881f, 0xee301106,
+       0x9c11c603, 0x117753cc, 0xc7cb079e, 0x9bf96b87, 0xd3c51729, 0x0d5dc9eb,
+       0x0715e23e, 0x4d040154, 0xca0cbddb, 0x9d63ec44, 0x22fb4565, 0x6b5922f8,
+       0x38ec7b9c, 0xebd816e4, 0xeac49d30, 0x074c1f63, 0x1e110520, 0x936bd70c,
+       0xbbe9bd0c, 0xbc212d7f, 0x1a1dfad2, 0x7403767a, 0xdda7126a, 0x4adc361a,
+       0x985a7380, 0x0e783df3, 0x7f4ae148, 0x13e63f7f, 0x22e89324, 0x7b3f9494,
+       0x7b73e30b, 0xda07511d, 0xbcad8565, 0x6385ddbf, 0x5af31d11, 0xe75042fe,
+       0xb375efab, 0x0789d8ef, 0xa38c3191, 0x4f95302e, 0x8c27207a, 0x9c46fd38,
+       0xcb3f8e97, 0x6d2e7ca7, 0x5ce8fcc6, 0xbf9c3d54, 0x252c5f2f, 0xf31b6e5c,
+       0x439116de, 0x6d3e4b01, 0x512e9fb7, 0x30077e2d, 0xb9f3197e, 0xfd11f98e,
+       0xfa23f301, 0x3447e623, 0x30fbbc77, 0x74683da0, 0xda18a5c9, 0x8c8326a0,
+       0x65690ef9, 0xa2d4de9c, 0xd56b0e9c, 0x14d2de9c, 0xab4777ae, 0x96aef4e7,
+       0x4b4474e0, 0xa9aa3a72, 0x6d67ee5c, 0xb4f7a71f, 0xd17f4e56, 0xabfa718e,
+       0xbbfa73a6, 0xef69c9d6, 0x2bf2571e, 0x4180778c, 0x8f259af2, 0x681db0ef,
+       0xf39aae0e, 0x02267a10, 0xdd5e7f60, 0x8e68a6a8, 0x11bf987a, 0xc7ce2056,
+       0x3d51648f, 0xf2393edb, 0xf33cef60, 0xfd5c7df1, 0x65ccb146, 0xef8ba775,
+       0xb16f76bd, 0x7307dacf, 0x6f75c2e9, 0x5d2a7be5, 0x8909f8ef, 0xeaa0bbef,
+       0x4423b94a, 0xdfb4643f, 0xa9954982, 0x299e5c39, 0x521dc88b, 0x5a5f9e64,
+       0x69f64dde, 0x55df78bf, 0x504f2ea8, 0x9c084047, 0x89e707b4, 0xd50d3f77,
+       0x291f0352, 0xd439eb0f, 0xcebb21ec, 0x3cf82b63, 0x68ae12f7, 0x26324cef,
+       0xe77d1629, 0x6b5498ee, 0x807693e9, 0xf5faf9fa, 0xd8afd985, 0xe9fd4019,
+       0x29d9e734, 0x5c850779, 0x1f1011fc, 0x629deecd, 0x20ef5bfa, 0xe6670eb0,
+       0x6507fb98, 0x9cdef1b3, 0xf6834fdf, 0xc64e9ebe, 0x4f7c807c, 0x6f674bb5,
+       0x3648bee2, 0xf6f84ebe, 0x10a5ea88, 0x9bf530e2, 0x28632e1b, 0x3a739a7f,
+       0x42e9ce66, 0x0861d3f5, 0x0a700c20, 0xa9d1626e, 0x347d2a4f, 0x8e25ed17,
+       0x793cd4fa, 0xd9e663fe, 0xa3ec6d92, 0x4eae0d96, 0x7b25a38a, 0xcf300a79,
+       0x63ea795d, 0x1bc7a3ea, 0x95adcefe, 0xe5a9ee29, 0xbc9b1c89, 0xf9367cce,
+       0x941a54a7, 0xec6c5adf, 0xefb4e5bb, 0x2816723c, 0x5d997d96, 0xcf8d9af6,
+       0x62801689, 0xe347afd9, 0xb08c7f46, 0x1dfa9268, 0x764c9cf7, 0xc0f29c46,
+       0xb232e218, 0x476d17d1, 0xdcecd291, 0x08c714cb, 0x031a2503, 0xfdedf6d8,
+       0xbdfdc012, 0xa24ec995, 0x9271403b, 0x212a4efe, 0xeab8bef2, 0xeddda389,
+       0x97bfdad0, 0x13f239f1, 0xaa30f83e, 0xf9d5ffd3, 0x5e380527, 0x3f3f585d,
+       0xf9e7afd6, 0x7989cd9e, 0xd3c78d70, 0x329f83fd, 0xd9821bb4, 0x39f7cc27,
+       0x6c10fd18, 0x0b31f510, 0x764ef80e, 0x0ee66555, 0x95620a0b, 0x2cbc2fa9,
+       0x69daadbf, 0x339ebbe3, 0x37701dfe, 0xfe14ea43, 0xcfd8aedc, 0x79dbd477,
+       0xa095ee7c, 0xb83322fd, 0xdce7099d, 0xb78a7478, 0xe8b78cd0, 0x50b68fcb,
+       0x8915379d, 0x90839f86, 0xe156fba2, 0xfac27111, 0x19af761d, 0xcf3c0455,
+       0x4654424f, 0xf60382bd, 0xd1950073, 0x0092879c, 0xb07ea05f, 0x7e2dcf09,
+       0x3cb61743, 0x3b89ab64, 0xc27e4f5f, 0xc6ea0f78, 0xed5211fd, 0x8e201c72,
+       0x4b41c2b3, 0xc049bce3, 0xe0fda0a2, 0x0f8f076e, 0xbe7e1af4, 0x8a0cb66c,
+       0xe4cc1e37, 0xb3043c1d, 0x9f973af2, 0x3d8bef3f, 0x5c516e5b, 0x6bad9505,
+       0x5968f106, 0xcb0e3814, 0x4725209a, 0x36e30e38, 0xe6be8a1c, 0x07d93e79,
+       0x0e38c790, 0xfc7cf3b6, 0x627f53d2, 0xfcb6e3fe, 0xf34f3b55, 0x9a3d1603,
+       0xf34f2b1f, 0xbf566503, 0x79ee8b25, 0x4ac3fefa, 0x944ffbe3, 0xf7b4ffbe,
+       0x3c4ffbe9, 0xc03d6cc7, 0xc09cf1c7, 0xaefe3664, 0x17ba0a80, 0xe05f7705,
+       0xf58278f5, 0x519ee810, 0x9ef7e018, 0xa1cff6b9, 0xa114b17d, 0xe39f0389,
+       0xa4e06676, 0x8faa4117, 0x4ca22b7e, 0x46d560f5, 0xc12f2ccc, 0x22771bfb,
+       0x1677739f, 0x33ce1248, 0x0856e0db, 0x791bb777, 0x40b9994c, 0x82f7c7ca,
+       0xe33df803, 0x78910324, 0xd22547f0, 0xf7e06803, 0xa0d78638, 0xfd85ec99,
+       0x90f52ad0, 0x4bd0dd3f, 0xabe8c9fb, 0x8b55998e, 0x64563beb, 0xebf466fc,
+       0x196593fc, 0x8fe10bff, 0xba64c0e8, 0x8fa6425e, 0xdefb78ff, 0xa8efbe3a,
+       0x436fd0f3, 0xbf395fa6, 0xd247ecc7, 0x41f0bda7, 0x5a3c38fa, 0x8c3fff41,
+       0x768ecd1f, 0xfa1e4b33, 0xe3cf023b, 0xc6cded15, 0xbef99611, 0xb4cbcd9f,
+       0xf179aaf7, 0xced7b2c7, 0x6f3e065e, 0x4a40379f, 0xda82f7e7, 0xed2e6287,
+       0xb6c1cc37, 0xd8b79027, 0xf60a7b3b, 0x6a2fdd51, 0xec09b165, 0xcd43b3af,
+       0xf7413efc, 0x3a5e338d, 0xfb145957, 0xbc68383e, 0x7675270f, 0xb226f91a,
+       0x52564a53, 0xc257ffb6, 0xe2c7680d, 0x67593fef, 0x0e50717f, 0x00000e50
+};
+
+static const u32 csem_int_table_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0xe4b3ff00, 0x51f86066, 0xb97bc10f, 0x726e1818,
+       0x0143f821, 0xd08667cf, 0x0c0c2c6a, 0xc6cc401a, 0xcec0c0c4, 0x717ebc44,
+       0x1d7b044e, 0x4cc30307, 0x31c8de20, 0x481afef0, 0x7e87957c, 0x42f2a976,
+       0x81c16968, 0x970837f7, 0xd430310b, 0x04303309, 0x4ff84088, 0x2be55045,
+       0x366c1084, 0x12ecca49, 0x0007ea02, 0x0fb3beda, 0x00000380
+};
+
+static const u32 csem_pram_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x7de5ff00, 0xd554780b, 0x733ef0b5, 0x7993331e,
+       0x0f20f264, 0x0084f102, 0x021c42a2, 0x27888784, 0x01a0c421, 0x54bc8083,
+       0x490c7786, 0x4fed0226, 0x099def5b, 0x6d6b4441, 0x2f06d8b4, 0x1a080ef5,
+       0xd1a07515, 0x01d09c06, 0x6bdab114, 0xeada5454, 0x8088a0ed, 0xc5978490,
+       0xd7bfca96, 0x7324e7da, 0x6a24264e, 0xffffdffb, 0x6df9f8fe, 0xece7d9f6,
+       0xed7af6bd, 0x7b5ed6b5, 0x93c5208f, 0xb908abc4, 0x11377f0c, 0x2109e112,
+       0xb6cb3a7d, 0x2463f682, 0x2bff1099, 0x238dbca2, 0x239dfb84, 0x4248d37c,
+       0x05ccdede, 0xde1eb4cc, 0xd6842363, 0x169a6f4f, 0xb2116730, 0x8159b877,
+       0xcd6f4ff7, 0x97c4fac7, 0xb40a703f, 0x5e65f2bd, 0xcf69ba80, 0x4ec46709,
+       0xf2dcd788, 0x79f40dc8, 0xd93ccbfb, 0xfe228742, 0x42922689, 0x610b31c8,
+       0x7d59177f, 0x2b5595a9, 0x1bbdef37, 0x326b2dfa, 0xa7ed2b13, 0xa9b2d772,
+       0xb2fad037, 0x57812283, 0x48d5b72a, 0x9efd697d, 0xfa841700, 0xc67f3d9a,
+       0x480ada71, 0x21287059, 0x22167d27, 0xceeb4d5f, 0xf4999496, 0x47607979,
+       0xbe5fbc11, 0xe89b739d, 0xf69be5fb, 0x97fd0c7e, 0x79038a37, 0x06f2ffda,
+       0xb087911b, 0x98132fb1, 0x00a992c7, 0x229be56f, 0xd97ad331, 0x011295a5,
+       0x5275091c, 0x7fc603a9, 0x301d9254, 0x471c41ce, 0xb3e567c3, 0x5dfa1c74,
+       0x1b9c8bd5, 0x226556a6, 0x75a7801e, 0x53f67597, 0x8d579876, 0xdfbe1834,
+       0xef0480f5, 0x782c0b2d, 0x7c032ac5, 0x8022a59b, 0x6966d373, 0xfeced0e9,
+       0xa5bc3796, 0x7d58eb83, 0xaa27aa76, 0xf49e58dd, 0x3b9b2211, 0x2884e5eb,
+       0x1dc03b41, 0xeb0da690, 0x4b9e7e7c, 0xf4146420, 0xd2d913cf, 0x0c253fd9,
+       0x03ff81f2, 0x83e04ffa, 0x5b604766, 0x56bd2756, 0xe5bfe8b8, 0x759d7a4e,
+       0xda13f4a9, 0xd7fba2f3, 0x0e8047ca, 0x9f3a9e14, 0x7cc7cb0b, 0xf06e5869,
+       0x5fb788c9, 0x596086fa, 0xf3e373ef, 0xb0637c27, 0xb053e4dc, 0x8c57d27c,
+       0x8a57c065, 0xcdf16def, 0xcfab72c6, 0xf69fcf83, 0xe0d96195, 0xcfe7c6ab,
+       0xb96356f9, 0xe7c7e7dd, 0x63d6fa2f, 0x61d5f419, 0x8f57d3b9, 0x802fa365,
+       0x6be2bdef, 0x17c9b2c0, 0x7dbbe7c4, 0x7c86584d, 0x00f72c61, 0xf619697d,
+       0xcfb960b5, 0xd7cb1877, 0xeefc117c, 0x9638ef80, 0x7778ab0f, 0x02f9278e,
+       0x21539bc5, 0x242e2a2e, 0x17c944b1, 0x94b13d69, 0xf4ee53d5, 0x9eb44be7,
+       0x8a75a1e2, 0xe115bec7, 0xf7ad337c, 0x99ed66ad, 0x0b0291f7, 0x59fa67ad,
+       0x958780fb, 0x0fad2b02, 0x83ed63a8, 0xe20bf937, 0x80707d68, 0x3dbb5fb5,
+       0xf5a3605c, 0x3dac836b, 0xda264427, 0xcc273d69, 0x2b6fb9ea, 0x9eb41d13,
+       0x79eac2db, 0x3a27fb1f, 0xc22f3d69, 0x2a771fbe, 0xd69e313c, 0xf6b3b5c7,
+       0xa1489709, 0x1027d68b, 0xf605eb0e, 0x5a04c2fc, 0x7ab1702f, 0x8205bf51,
+       0xf6ff831c, 0x84459188, 0xff8342f2, 0xa7484536, 0x92b22975, 0xfd3e29b8,
+       0x161eb1b3, 0x7f6862c9, 0x1140bfdb, 0x44bad2c6, 0x7ffb4156, 0x7db1cbfb,
+       0x7b63289f, 0xb6257fbb, 0x6c6493ef, 0x87dcd537, 0x0544d7f5, 0xee6b93db,
+       0x935ff7c7, 0x5c1f6c14, 0x0fd608f3, 0x1f6c1e88, 0x7c2bf353, 0xc1e480ff,
+       0x06d6c7f6, 0xff5a4294, 0x05b3ce0f, 0xf396baf8, 0xe06c9194, 0x295a60d7,
+       0x1c75d7e5, 0xf1f20d99, 0x95353010, 0x92e97587, 0xcf6dfa02, 0xe29ef23f,
+       0x93b79539, 0xe9f4bea1, 0x9fb0b287, 0x911fb1e7, 0xdcf7c3f6, 0xc66f84cf,
+       0xf099fae8, 0x4fd6994d, 0x6b57bc23, 0x7b3f5ded, 0x87a719be, 0xad729be7,
+       0xc7ec669f, 0x4d79bbd1, 0x0f5e3cb8, 0xad0ae5cf, 0x4fd8039f, 0x09e0ef42,
+       0xfd75a38b, 0x5a65c584, 0x3f60ef3f, 0x8f077a7d, 0xf5d58d22, 0x68f748a3,
+       0x7ec61cfd, 0x4fd77bd2, 0x0f41ba58, 0xeb5cb48f, 0xd3f608e7, 0x52f377bf,
+       0xe1ea37cc, 0xfd6a5731, 0x67ba449c, 0x7d9faef5, 0xf67e3d0e, 0x73f03a39,
+       0xd419e10e, 0x381579bb, 0x7029f8f5, 0x12e7e076, 0xef4d73f6, 0xd4e7d9fa,
+       0xb39f67e3, 0x07223f03, 0xbbd61af3, 0xebc41579, 0xdf1053f1, 0x07271f81,
+       0x1def0cf0, 0xd1f5af3c, 0x3eb5e7e3, 0x4549f81d, 0x0ef54678, 0x3d14c29e,
+       0x3a530a7e, 0x3c2323f0, 0xcfd77b63, 0xfc7a296b, 0x81d296bc, 0x9fb06b9f,
+       0xaf377b1b, 0x7e3d54c2, 0xf03b530a, 0xe4fd8b93, 0x1e101a7b, 0x7471fb42,
+       0xfe81cfdf, 0xe81cfc7a, 0x1b9f81df, 0xb4499fb0, 0xfb9eec9f, 0xe3d4ca29,
+       0x03b328a7, 0xe788853f, 0xe7ebbdc9, 0x3f1ea640, 0xf03b3207, 0x99fb0533,
+       0x1579bbd2, 0x4fc7a55d, 0x3f0c55d1, 0x71c30937, 0xa76ba19d, 0xdc9fa79b,
+       0xe15f2fdc, 0x8bbcfbe8, 0x9b9779d5, 0x6bc3dd80, 0x51690cf6, 0x7dbefa78,
+       0x43ee427b, 0x29aeda24, 0xe3f00bb8, 0xb45e56a0, 0x263f135d, 0x2547674e,
+       0x7aba8928, 0xdd5f7152, 0x074a7dfb, 0x6753dae8, 0x4f6bab5f, 0xeaeae4f7,
+       0x74e36519, 0x2eaff7ef, 0x5aafd5d0, 0xfdee8b7d, 0xbaedff2c, 0xb9faf67a,
+       0xd507f7ba, 0x5fb5d42d, 0x6bae5f5d, 0x42b026bf, 0xe1aebf57, 0x87f7bac7,
+       0xdae8d705, 0x487a6faf, 0xfc3c3ed7, 0xe23eae98, 0xf7ba13e0, 0xd16cb547,
+       0xfc3e8fb5, 0x6c7dae9c, 0x7eaea764, 0xbaddf1c3, 0xdf6c6ff7, 0x74dfaba7,
+       0xf7baf7f1, 0x7afbc9f3, 0x67f2db7b, 0x5c93fbdd, 0x6fdae99f, 0x60d2fb4e,
+       0xc75ddaa7, 0x3ceb53ae, 0xbf4115c8, 0xa12e9fc4, 0x48761abd, 0xdafa9758,
+       0x58e29f99, 0xfca51f2a, 0x245bed23, 0xd25f2327, 0xe4376a3f, 0x3abb2df7,
+       0x70ff9f42, 0x176ae79c, 0xc943fe7d, 0x862bbd73, 0x8df9437d, 0xca506923,
+       0xed8d2826, 0xdf8c880f, 0x0d2e320b, 0xf7bf423e, 0x2707da9a, 0x7cf5fad0,
+       0xe3e4107e, 0x7684ce15, 0xaa4f1c75, 0x3338bde1, 0x81e9bf41, 0xfca7bcac,
+       0xbeb0f251, 0xb833b53f, 0x8bd77ece, 0xa3b4349e, 0x83f13e6a, 0x3faeb39d,
+       0x425f579d, 0x093ee55e, 0xefd207fb, 0xf34d2ffb, 0x12ccfed0, 0xc7a233f5,
+       0x43f8e897, 0xc830fc71, 0x7f1801c3, 0xcdf1d754, 0xc6e8c603, 0xe99664b7,
+       0x7448b7c6, 0xbf21177c, 0x1d5cf9af, 0x1c61129f, 0x9f716f21, 0xcce6f8e3,
+       0x01ff1c32, 0xd15dfa89, 0x8c75c7e3, 0xfff302df, 0x0ff9bbb0, 0x7f9fa718,
+       0xfe7eb966, 0x9fff9b12, 0xe3ab4e6a, 0xfffce1c7, 0xf3669dcc, 0xf3672ccf,
+       0x3b7eb337, 0xe07677c6, 0x1fe3023f, 0x737c66eb, 0xfcfd78f6, 0xcfd0aaaf,
+       0x3fc6ccdf, 0x1d417359, 0x7fe38edf, 0xf3605dc9, 0xc702aabf, 0x371ecc97,
+       0x11948ff0, 0xe3a01d57, 0xf1547e93, 0xd0bb02a5, 0x921ca071, 0x90868548,
+       0x8400dc6d, 0x8c7187e3, 0xa38abedf, 0xccfa86fc, 0x8049cf8f, 0xea3cce6a,
+       0xbebcaa37, 0x04be7b7c, 0xa9db0f7a, 0x0544b5bf, 0x8f137175, 0x98364dfc,
+       0xbc288303, 0x1fbc4dad, 0xdc378bea, 0xeafd0018, 0xa5f99335, 0xc2409df0,
+       0xc7f3fcf0, 0x9e896d87, 0x525cb197, 0x448b1e27, 0x1f875bc9, 0x54864058,
+       0x0126f853, 0xacea8c13, 0x38fd4a7f, 0xa63f8c70, 0xfea10f7e, 0x1b2267cf,
+       0xbfa9bfef, 0xf508f507, 0x2671d0f7, 0xed1df835, 0x851a50ee, 0xff8554bf,
+       0xebc98153, 0x017277a7, 0xafcf953f, 0xfd1c347e, 0x6dabf9eb, 0x709de914,
+       0xe927f02c, 0x7e5e74ea, 0x2efb53a0, 0x870b6073, 0x5f0195f8, 0x093450d3,
+       0x833eb459, 0xfdf3bae2, 0x394cf68f, 0xb90939c0, 0x2a622883, 0x55aeff7d,
+       0x1d177f5c, 0xce62a677, 0x9290eb65, 0x26b94261, 0x8431a619, 0x5c38dedc,
+       0x69903da4, 0x2469f88a, 0xc5e9dc6a, 0x52ccfafa, 0x5455bd7d, 0xab851344,
+       0x36471a75, 0xcd677ed3, 0xe36bb7d6, 0x3225340c, 0x95e3ab3a, 0xd3a49c52,
+       0xcca0b347, 0xa42ec785, 0xfb176cf3, 0xbbc78356, 0xf4612448, 0x087dfde3,
+       0x8c9fd5d0, 0xb175cdef, 0x9de11b79, 0x52945a2d, 0x0bd9cf3a, 0xb7f000f8,
+       0xed3ffe11, 0x1ca629b1, 0x85ffae5a, 0xe75d4c48, 0x8e7f8463, 0xa09f38c7,
+       0xbcfceb08, 0xc673e332, 0xfa54c737, 0x41fc0a7f, 0x3f802fcb, 0x5547fc28,
+       0xabd4e8fe, 0x66bc3f8c, 0x87e054cf, 0x413c8df6, 0x72fcaaba, 0x4b2fca87,
+       0x417cf4ea, 0x3a044788, 0xe5cd9b2e, 0x07c5143e, 0x583e54b3, 0x9be7af56,
+       0x4c5f88bb, 0x3997418f, 0x9fdf361b, 0xdf9d7726, 0xccdf2a27, 0xe22f787b,
+       0x193ceba7, 0xe956ee9d, 0xbeb55774, 0xae950efd, 0x9d74a977, 0xebe8ff5d,
+       0xb9907d54, 0x79044072, 0xa344fef7, 0x4f474467, 0x234f4a8f, 0xf4ab779c,
+       0x8c47fbbc, 0x2378469e, 0xf5233d2a, 0xa03244e7, 0xf846bc2b, 0x32eeafe6,
+       0x2d6b8c1f, 0xa7a6c7f0, 0xe57f29b7, 0x95e7a8d1, 0x8f2bc9c1, 0xf2d9c946,
+       0xfaba6986, 0xba39813d, 0x2fd597f7, 0xa92fb5d0, 0xbed747bb, 0xbabdfd68,
+       0x8fff02fa, 0x5fcfef74, 0xbf6ba35d, 0x5d41faab, 0x47b2bcfb, 0x9e39f575,
+       0x67f7ba8d, 0x6bacdecd, 0xacfa599f, 0xf17a7dae, 0x9a7d5d0e, 0xbef74bb2,
+       0xb735cf69, 0xfdbe7f01, 0x9ec04f01, 0x02fee0b8, 0xdc1799e3, 0x39de1ba2,
+       0xaf9193ea, 0x6086f98f, 0x46e7dc79, 0x1be93fbe, 0xd36b6583, 0x13ac3b7e,
+       0x4a5c5d74, 0x32690812, 0xdf59adcd, 0x8269d60f, 0xe4c869eb, 0xfad3f1a9,
+       0xf28c937e, 0x912f5250, 0x384208f0, 0x38546c58, 0xf6a8f9da, 0xf5ed0f48,
+       0x7527f154, 0xc4892f6d, 0x6c7dee7e, 0x97c055c1, 0xf40faddd, 0x9eec032f,
+       0x37aed536, 0xa47057b6, 0x2139fa34, 0xab0e106b, 0x151dd989, 0x8aff9312,
+       0xc405e99d, 0xe0f0f509, 0x178d2bea, 0x0a9e4ca4, 0x93ad927c, 0xd7f565e3,
+       0x813bf4e9, 0xe01f7268, 0xe7ba11b7, 0xd06e1bcb, 0x2f6a777d, 0x8157708f,
+       0xcb0b18ae, 0x2667e962, 0xfde1c3d0, 0x0187d399, 0xac51ca9c, 0xbb41f537,
+       0x78af94f0, 0x4041d1e5, 0x8f2c52bf, 0x796366fb, 0xf2c1e7cc, 0xcb0cafa8,
+       0x58d57d4f, 0xb1ab7c46, 0x1f9f6ffc, 0xeb7d8fcb, 0xaf93fcb1, 0xbec3cb0e,
+       0xf43f2c7a, 0xe43cb005, 0x3df2c06b, 0x16cb105f, 0xad96135f, 0x4d4b053e,
+       0xbbe27aee, 0x7c3aeae3, 0x062ff812, 0xfeb5499f, 0x3be3f59a, 0x7f8e2cf9,
+       0xc34cf900, 0x59bd4973, 0x1d1487e5, 0x2f80243f, 0x43d67c87, 0xf2a8bd7b,
+       0xc7df7761, 0xf96ef76e, 0x94dbf0d7, 0x9d6fc9ef, 0xe06194fc, 0xf89eeca7,
+       0xc51f1869, 0x2e4c534f, 0xfca8f766, 0x479853f4, 0x2e62bf0c, 0xa27d2118,
+       0xdf2535ec, 0x0ad8eb04, 0x3e841f75, 0x7559fac0, 0x6efa5aec, 0x8175da0b,
+       0x9c6eb021, 0xc1b7f21d, 0xf6708fb0, 0x567e2530, 0xf233f3f7, 0x5778f749,
+       0x1a59bfd0, 0xea4f44a0, 0x638d6eda, 0x489ab578, 0xdaeba131, 0x769e8383,
+       0x758a1c2f, 0xf7c22481, 0x4734f701, 0xada97e8c, 0x09edf80c, 0xaf8eb5af,
+       0x63bfa072, 0x0f3dfc4f, 0x662629ca, 0xe7edc72f, 0xe1276ed1, 0xdf80dca7,
+       0xecc9758e, 0x7b78834e, 0x85c920fb, 0xa8990376, 0x40bf9fc7, 0x2907bf87,
+       0xdd705a8e, 0xfc434bad, 0x706afc0d, 0xd7f02f7a, 0x09ef7e93, 0xde610b9f,
+       0xf67c02ff, 0xd27b1fa4, 0x5f91448b, 0x6ff3a26c, 0xf72c33db, 0xbdc61921,
+       0xfdb5be32, 0x8f3c2335, 0x6e3e4b7f, 0xb8f8d14b, 0x1f809325, 0xd9cbcaa4,
+       0x81e3abc6, 0xf4fd1d2e, 0x77ee4f40, 0xff82649f, 0xdf4b3a7e, 0xfec603df,
+       0x5dc225e2, 0x4875c74f, 0x7ea78912, 0xc6d9ef25, 0x8ee33fa3, 0xb06e21f8,
+       0x95aee6c7, 0xf93c6fc1, 0x7a19615f, 0xce17c7d6, 0x09ca7c1e, 0x348ad87e,
+       0x0c68fabe, 0x65656a3a, 0x1edaab30, 0xe934afed, 0xb8eb67eb, 0x4bce20e2,
+       0x0c319f8e, 0xf55719d6, 0x7ef41151, 0x3f5a961a, 0x1c24d22b, 0x764364e7,
+       0x02fff33c, 0x4f6c9f4c, 0xd2737d40, 0xfff7c167, 0xd774f0d9, 0x210f068f,
+       0x0b33e48d, 0x96da73e8, 0xddfbfddd, 0x5e7083ca, 0x0929f882, 0xbf815f89,
+       0x5fffa569, 0x0afd001e, 0xf5fad758, 0xf9bf7906, 0x5dbe787a, 0x4efd1e37,
+       0xe18cf6d6, 0x4ee5eebb, 0xbe34c720, 0x8bfbf4a7, 0xbcbdbfba, 0xb7ad5ac1,
+       0x75741363, 0xb57a536f, 0x7f85aece, 0xcd5ee180, 0x5584b009, 0x26d86ca8,
+       0x3f03d7d8, 0x24e086ed, 0x7b1c2ff8, 0x9112d2af, 0x4b8a323c, 0xc2e9f00b,
+       0xcbff1a31, 0xf54cfeb3, 0x44b789d4, 0x2e467202, 0x3af2a851, 0x3d2ba3fb,
+       0x22fad131, 0x71b0b6b5, 0x5bac0979, 0x15b95e27, 0xa4c590fd, 0x71fe09d4,
+       0x83cba919, 0x6269ed78, 0x3cf9062a, 0x8e73de4d, 0xab479288, 0x173ce120,
+       0xf1dbd7ad, 0xd5d7bfd4, 0xebebd597, 0x29edc94b, 0x74bf6fb0, 0x1c024883,
+       0xfb7d0de8, 0xfb0bbcd7, 0xd7aa465d, 0x41bdbac1, 0x42d9eb64, 0xa8321117,
+       0xedfcaade, 0xd016f3af, 0x71604bba, 0xfa1f6d16, 0xffe6449e, 0x4b370794,
+       0xacff6d0a, 0x541dc471, 0x03efd103, 0xf2dd60eb, 0xb7b9ccbf, 0xf7e95dc9,
+       0xc237e16d, 0x5d03d9ab, 0x3855c3f6, 0x25381b2a, 0xc81ec310, 0x67263814,
+       0x102bbeaa, 0xc7b8ba5c, 0x3bfd4354, 0xd13253f3, 0xde6ed3f1, 0x628c2793,
+       0x1ffe03fc, 0x9e4bb427, 0x5a7fd3ef, 0xfe0bfe97, 0xa3f7fda9, 0xfae9e7fd,
+       0xed4ffa9f, 0xf817607f, 0xbfeac6e7, 0xbc2fb7f2, 0xa4faa7e2, 0x9dc7a5fc,
+       0x2793ae84, 0x3714ba84, 0xb6c56fa5, 0xe7409dfb, 0x09df82e3, 0xc0227afc,
+       0xac620717, 0x9c0a8f5b, 0xec518f1a, 0xe0ddc41c, 0x93ffb49f, 0xe314fdcf,
+       0x136d5f11, 0x6b4f185d, 0x54cd8730, 0xef1aab0e, 0x58392129, 0x0feac23f,
+       0xdea1e19c, 0xf2bfe7a4, 0x814f1e67, 0x29ca10fc, 0x8c297c6a, 0xd6d56cf6,
+       0x7d608bcf, 0x947692f2, 0x3077e323, 0xd444c5fe, 0xf8a40b7f, 0x4e14edae,
+       0x5578138c, 0x7f1b78bc, 0x4277867a, 0xd00bf939, 0x4113d417, 0x5df8de3f,
+       0xaea76a99, 0xc7c91c11, 0xa3dff46c, 0x8bd068c9, 0x80485e1a, 0xcfb5a9d9,
+       0x08e72afe, 0xd6d4eb85, 0x145c9cb7, 0x3a7934be, 0x9ff45c1b, 0xf5eee5bb,
+       0xb7952b6e, 0x5b487b68, 0xd526e4b7, 0xb2b10ebe, 0x213b0c42, 0xb362a79f,
+       0xc7d3f6e8, 0xf53c2f15, 0xcf1013f4, 0x3dd9a3fc, 0xfcbff688, 0x1c3fd785,
+       0x77cbeb47, 0x6c25c988, 0xa52e761a, 0xfa5e3e93, 0x4edceaff, 0xe6ff947a,
+       0xc61e4975, 0xd897df9e, 0x3be59749, 0x58644af6, 0x0c4c7c57, 0xf62295ee,
+       0x1e09f418, 0xa17b0229, 0x4abfd9f6, 0xb13c6710, 0x59a92387, 0xf9b9f031,
+       0x0007b475, 0x954f484f, 0x33f41d5e, 0x74a5efbc, 0xa46dbd01, 0x45bdf197,
+       0x7e817eaa, 0xf282cf21, 0x21bb8bf7, 0x664fea0f, 0xeca1e037, 0x984e95c5,
+       0x354217cf, 0xdf5ff3e3, 0xf1d0a29f, 0x8a7f44cb, 0xbcf64b0b, 0x201fc9ec,
+       0xf77b2dff, 0x5f182907, 0x09ba4a22, 0x3a7f22d7, 0xa6c973cc, 0xa5cf3899,
+       0x587c83c4, 0x14be6bf6, 0x8105e1f4, 0x2188ef14, 0xc9915627, 0x285b17c9,
+       0xbf3ce971, 0xf2127f00, 0x03e3de83, 0xbeeed0db, 0xf83e8097, 0x6a173a81,
+       0x82fd6031, 0x2febd185, 0xc040baea, 0xdfe68cfa, 0x00b40fad, 0x57f64e9d,
+       0xc5df6152, 0x8abf044b, 0xed32ee0f, 0x52777f97, 0x9113a32a, 0x3bf53c85,
+       0x844feeba, 0x8b7ef0e7, 0x747358a8, 0x59cb91df, 0x52afe39d, 0xc770a7c7,
+       0x45fd7ac1, 0x35fb6c4a, 0x00f4d44f, 0xf8a3b75d, 0x99de4a2c, 0x907d6ffc,
+       0xff26bbc9, 0xd0c56981, 0x9310fe7e, 0xd60ef823, 0x38570a43, 0xcef7db15,
+       0x503f50e0, 0x9c963a3f, 0x3955156f, 0xf91bb7d7, 0x702fc285, 0x037c51f1,
+       0x1d2224e3, 0xe965df70, 0x947dfa06, 0xb8c2f51e, 0x6afdaece, 0xf34cbc72,
+       0x3ebd455b, 0x1e989b20, 0xf2aedee8, 0xc42a9e23, 0x804fd3c0, 0xf57952fc,
+       0x62bf20cb, 0xcbffcc29, 0x9c3ffbed, 0xcbf6e54b, 0x7ab726a0, 0xdb946abd,
+       0x48a39db2, 0xd2fdb92c, 0xe53126ee, 0x298f3e96, 0xf208f6b7, 0xbd69fff3,
+       0x1871e1aa, 0x4ebaf1e0, 0xb27a6a3c, 0xf51a7c3b, 0x464141e4, 0x24f51abc,
+       0xf2443bfd, 0xc6a3f2ba, 0x95ff1a87, 0x15795f3f, 0x3e0ea3e8, 0x83b0f8d5,
+       0xec3e354f, 0xe1d5df12, 0x017ed8d1, 0x5c2869f6, 0xa71b2cf3, 0xa4aea51e,
+       0xbee09da5, 0x1e0cfe4d, 0xe72d55f7, 0x2103cb09, 0x7e87e622, 0x051eaa64,
+       0xbf84ea76, 0x87fa71df, 0xc479de14, 0x80bcb22f, 0xfeed113a, 0x8f2f974b,
+       0xab99f3a7, 0x451e79e2, 0x974a14fb, 0x8e1702d9, 0x11ce70a3, 0x113e3f88,
+       0xf91cb7e2, 0x798e0a34, 0xfc3afa65, 0xece9484d, 0xbff7a7a7, 0x5df29fad,
+       0x5d2977cb, 0xc8441d3f, 0x388a50fb, 0x57cd10bc, 0x14ae80d3, 0x5c91de7f,
+       0xa9ea0060, 0xe51a5088, 0x3228bd77, 0xc2ddf3fb, 0xbec0a3e9, 0x2c359fc9,
+       0x60fbf19e, 0xaabd7bf4, 0x97eb3b3e, 0x9fcf41e3, 0x7fa3650d, 0x22e0f67b,
+       0xd0bcac47, 0xbd9f2afd, 0xb4bbeeae, 0x9e3ab9d9, 0x691b7ff2, 0x6fc6fb47,
+       0x316d92b7, 0x8a3705f6, 0xe956be9a, 0x3a78ff46, 0x0f956cfe, 0xe34fd0e7,
+       0x36e8a373, 0xc109ca63, 0xf00e95d9, 0x1f9469f7, 0x0bf17df6, 0xddf80d7c,
+       0x95148d6f, 0x9fdfb0c6, 0x6137f157, 0x9f98d7df, 0x17ca185b, 0x76858f00,
+       0x7907175e, 0xa1d7934a, 0x35c02864, 0x3f3ddf61, 0xd8f9451b, 0x4377907b,
+       0x7437ae3e, 0xf0c4f246, 0x84f88d87, 0x3ccec1fe, 0x5f10ba22, 0x4ba5881f,
+       0xcc1faf00, 0xd7d812b4, 0x57725f7c, 0x817382c6, 0x7337ad99, 0x9185e948,
+       0xf87dffdc, 0x08e59fcd, 0x9c7c5017, 0xefbcb3b5, 0xe4c7fcae, 0x0b8bacfe,
+       0x87c070d4, 0x7327ab3c, 0x15a38801, 0xc6cfcf11, 0x37ef2873, 0xfcafeb45,
+       0x402f69a6, 0x88554f5e, 0x7b689973, 0x80911095, 0x3b4dbd8f, 0x6fdfb004,
+       0xf1828995, 0xd87aa108, 0xd7b8a88c, 0x7c405111, 0xdcdbffed, 0xe7bf00bb,
+       0xc0099866, 0xe33d0ca5, 0x5ce03b04, 0x41ca0468, 0x83faf377, 0x142d4c8f,
+       0xfc821fa1, 0xa287e461, 0x3eae9b64, 0xe7e92273, 0x609b74a6, 0xc774ac8e,
+       0xc4ad5fa0, 0xfad7acf8, 0x99fff2cd, 0xf54f1b7e, 0x316be31b, 0x2addbf5a,
+       0xd28fbe31, 0xf4b1a96f, 0x391a8adb, 0x4562f815, 0xd02a7673, 0x4b9bc575,
+       0x6fd2c4fa, 0x7f98f86f, 0x679aa6ff, 0xea8fd6de, 0xf4a3ebb7, 0xdfaa3f5b,
+       0x4775c462, 0x6fd4bd49, 0xf919ff96, 0x5bf4037b, 0xab16f98c, 0x5bf4d3f8,
+       0xf506a871, 0x5e3f715b, 0x93752f97, 0x5b7e93d4, 0xac4cf8f0, 0x0c5b6e8b,
+       0x82bc01fe, 0xd5537b7e, 0xe80e3073, 0x5c977fb9, 0x55cf4adf, 0xfdcf56f6,
+       0xd359e10f, 0x73fa2b73, 0xe574cf68, 0x56e7a643, 0xb73d3164, 0xb9e999a2,
+       0x9e988315, 0x82b7ea33, 0x7d8dfa2e, 0x7e84355f, 0xd6647e8f, 0xeda4eeaf,
+       0xb745b325, 0x225fbe85, 0xaa33e76b, 0xbbeb4547, 0xd1ba977f, 0x7833ee77,
+       0x7d27a5ce, 0xbbe80ef7, 0x06c7a841, 0xf9191c82, 0x368196e3, 0x07dd3e5d,
+       0xfe7b1f5f, 0x3f979025, 0x7f7fe8f0, 0xd27e6264, 0x8d8faf9e, 0x00fbb900,
+       0xeefaa1e0, 0x5aff9559, 0xa7d47e7d, 0x79328713, 0xe18fbcaf, 0x6391aaaf,
+       0x07c55df3, 0xfe075864, 0xe8fd1176, 0x1f999abb, 0xd2dccb3d, 0xfe7e06c7,
+       0x2e5112ff, 0x82c95fe9, 0x7d987e28, 0x9ee31cb1, 0x5b9ce33b, 0x2d9ccfc0,
+       0xb1d80b10, 0x72de0ff3, 0xf9d7ec02, 0xdda3d717, 0x279e1f3b, 0x8fbc8e92,
+       0x527a1d39, 0x6dcebf6f, 0x067af1da, 0x310f9ae9, 0x32e8ccc1, 0xd8172561,
+       0x3f35d59c, 0x9865da82, 0x93cc62df, 0xff3abdf8, 0xf1047c59, 0xdde1de45,
+       0xcfc862db, 0x72788def, 0xae54bc33, 0xaa78f5e2, 0x89e262e6, 0x4164ba52,
+       0xee5e274a, 0x2eb2397a, 0xe1efda03, 0xce32dfd0, 0x719bc35b, 0x351e1afe,
+       0xfabe66ff, 0x91d0bcfe, 0x1a227998, 0x8be4bb9e, 0xe0377868, 0xcf4d6de3,
+       0x8186475c, 0xf2647e5c, 0xf0146cfc, 0x8c79efd1, 0x6731deeb, 0xd2bcee90,
+       0xa65e2a7b, 0xa6148e78, 0x524780c8, 0xb7367c0d, 0x29ebc76c, 0x29b77e74,
+       0x5210b959, 0xc937f99f, 0xfd88f103, 0x83d476d6, 0x348e1f1a, 0xab30b933,
+       0xbe83e57a, 0x6f5c42ae, 0xca17389a, 0xe7a0d857, 0xef333cd4, 0xf6fe4c7d,
+       0x975d7f73, 0x0cf11231, 0xd22905cb, 0x0ba02bd6, 0x1094e7fd, 0xe8178ba3,
+       0x9539ff42, 0xbc001fb4, 0xee732557, 0xb4dfbc30, 0xa7e07ee3, 0x39f4ac37,
+       0xe71979c8, 0x61d0c2de, 0x22b94f4f, 0xf8b10b1f, 0x79198318, 0x7ce7eb9d,
+       0xabb12f78, 0xdcc1327d, 0x31c001f2, 0x66cdca81, 0xffa01878, 0x68dfd145,
+       0xa0f918bf, 0xeea07ca7, 0xc5573df8, 0x07401bf3, 0x5dbbe03b, 0x1bc87b02,
+       0xd68feb66, 0x42e415ee, 0x87469bc4, 0x8cbeba26, 0xc5307464, 0x5a6df3c0,
+       0x37b3c55d, 0xfdf089c4, 0x26ffea64, 0xf7ebb071, 0xdf8d01f5, 0x3c5772cd,
+       0x3d215c41, 0x7e806f4a, 0xacd7de8b, 0xf1177a6a, 0x6a2acb75, 0xf15dc99e,
+       0xf407d1a5, 0xd6f095e0, 0x1d34fcad, 0xf6179989, 0xa467e56d, 0x7b3f2f59,
+       0x5d6fedac, 0x66b5710f, 0x090af50e, 0x07e2e825, 0x6ecccc33, 0x20f56fd9,
+       0x29bfb79f, 0x5dc8b7ba, 0x9524cff5, 0x44afe02e, 0x089c4f9f, 0xe9bd0113,
+       0xb4cf92b2, 0xfc600f79, 0xbc1ebd16, 0xfd20f561, 0xba7febba, 0xddbfd999,
+       0xfd5a63d9, 0xf20f1866, 0x78fd651a, 0x8b48f5c6, 0x2f34f52b, 0x77ee3a8f,
+       0xce36979d, 0xf097ddb7, 0xc78c1692, 0xbb13fb69, 0x114ecf79, 0x4e62c7ec,
+       0xb5e3efd0, 0x3fe6fee3, 0xa4dbffa1, 0x0ff7dd51, 0xc530a3f1, 0x9fdb1bf3,
+       0xe9f638c2, 0x054c8ee7, 0x2afe59f9, 0xfe542c4f, 0x483bb75a, 0x4889e598,
+       0x37942760, 0xf9c60af2, 0xf4de7085, 0x7a833b28, 0x2f1f0c32, 0x95ef5039,
+       0x4a0734ef, 0xafe5f7e8, 0xf103967c, 0x4c35d6b7, 0x539ff9ff, 0xc91fd1f9,
+       0x72807c81, 0x1bcfed81, 0xca98f3e9, 0xd976a79f, 0xe6fe8366, 0xde39d81a,
+       0xd12ce0f2, 0x7867151c, 0x38b22cd0, 0xe61b2ef7, 0xe59ffb61, 0xe0198f30,
+       0xaa473e8b, 0x7a9e87e5, 0xf2e5e996, 0xe7003126, 0x761bcb81, 0xbc5c42b4,
+       0xed19b0fc, 0x19c36f57, 0xf89bd7dc, 0xbcec0bd2, 0x8baf1371, 0x43897687,
+       0x3361f036, 0x2b1acfc4, 0xfad00f51, 0xd507ac11, 0x8cb7dfb8, 0xa97f2d93,
+       0x453f15f9, 0x3cdff2e1, 0xc173c4e3, 0x189cdb2d, 0xf2b86c8f, 0xb89740be,
+       0x3541f063, 0x0be538ee, 0xec43eb82, 0x9549e3b8, 0x7d66424f, 0x243491dc,
+       0xc2923c61, 0x231a5799, 0xffc1d17e, 0x12785c2f, 0xed4ecdf6, 0x8049f2fc,
+       0x739be2bb, 0xe284fe4f, 0x17202a93, 0xe7dedbac, 0x067dc03e, 0x550fbbed,
+       0xecfad27d, 0xd34fb833, 0x1bb347fa, 0xfe6d6b7a, 0x29f61322, 0x9d7c775a,
+       0x55dc7102, 0x5fd093cd, 0xc4f2f55b, 0x1fc31254, 0xdfe04ad0, 0x89f62f40,
+       0xdfdb748c, 0xe0133fb8, 0x0ee94d3c, 0x3c4777eb, 0xe2c95839, 0x471ab2f4,
+       0x5f7b1ede, 0xb8dc4bae, 0x376dfa71, 0x28de3ac2, 0x8bd265ba, 0x4a21f1f8,
+       0x417bebcf, 0x3eeaedc7, 0x15ca7041, 0xe1a7c7e3, 0x175e941f, 0xfc38facc,
+       0xff25c685, 0x35b404f9, 0x3f1b7526, 0x7f02f70e, 0x5edfbeda, 0x202c42b3,
+       0xc79f3b47, 0x8fd03db8, 0xf5a41efa, 0x10990b85, 0xb62e3977, 0xd7f98ddf,
+       0xa3cc66cd, 0x08fe6f2a, 0xe5f5a9e5, 0x8d5f7177, 0xad6ffba8, 0xed8fe3a4,
+       0x9d3ea893, 0xc583ab77, 0x403a559d, 0xe2765a5c, 0xccfe3573, 0x4b8b5af8,
+       0x1e8f1777, 0xf6c01963, 0xc8fdd5df, 0x967fadca, 0xcfde2188, 0x1d7a018d,
+       0xaa3ee2b9, 0xe0170786, 0x7ef47461, 0x7ff8ec4b, 0x818b7ec7, 0xb04f406e,
+       0x53f63ac7, 0xc41fbd68, 0x47dc03d5, 0x5aeff6b1, 0x9a7db337, 0xde763156,
+       0x32ffb6a2, 0x77d862c2, 0xdf6ef409, 0x7c79a7a5, 0x83653c5b, 0x2ba7da13,
+       0x8a5d4ebe, 0xb0efdfad, 0x01bdea70, 0xbf5f71df, 0x0de63382, 0xacbe04cc,
+       0x81223c6c, 0x6fada53d, 0xa94f7cda, 0xe7a9f3fe, 0xb2273c78, 0xf51fb82e,
+       0x547f51bb, 0x34371611, 0x61665bc2, 0x89aaab7a, 0x76a71fad, 0xda76023a,
+       0xbb7da9cf, 0xb6abaf90, 0xb4fc911f, 0xbf0d03bf, 0x79512291, 0x047eb056,
+       0xf53fe0a2, 0xb61cdee2, 0x75fcc4bf, 0x543f38e3, 0x6286f1c7, 0x7edde38f,
+       0x72ce3746, 0xe762507f, 0xde3cae7e, 0x05994149, 0x116c9dfd, 0x9ffde409,
+       0xb1c5f20c, 0x58e656f2, 0xc59e2d44, 0xa3ae87e4, 0xc1d30e78, 0x89f25dce,
+       0xabddda12, 0xc30e631c, 0x0e55ff79, 0x45f88649, 0xe3cb0d6d, 0x7737fda9,
+       0x36bbd01a, 0x8fdc0ee1, 0xd7e033ab, 0x87caec95, 0xb0ab86b8, 0xabb02474,
+       0x2824ef51, 0xabfc1d26, 0x32a9c51c, 0x6aad7385, 0x8dc111a7, 0x677942e7,
+       0x87cc3151, 0xd65c9977, 0xa20efb18, 0xa27894bd, 0xf4ba22f0, 0xa5c938e7,
+       0xa3f43211, 0x5854dfe5, 0xa3600e5a, 0x6314c14b, 0x377b0c61, 0xe70b867f,
+       0xf55db6dd, 0xbb22141f, 0x191e5852, 0x3b6d23ac, 0xf5c873e3, 0x285121f8,
+       0xe7d4da3f, 0x7bbdf6dc, 0x75ad2f41, 0xca812512, 0xccaac519, 0xd679c367,
+       0x1b2e16e1, 0x7fccf4f8, 0xb5fb4abd, 0x2bf47886, 0x3e5aecda, 0x720092a9,
+       0x630f2366, 0xf2b020de, 0x384ea4e5, 0x0484f98d, 0x4fba895e, 0x476f1263,
+       0x26ece87f, 0xc9e01f16, 0xcf1abfb5, 0x002473e2, 0xcbebabf0, 0xb3ce1572,
+       0xf0c3b884, 0xc60776fe, 0xb9bd9603, 0xe807e508, 0xa4af8d10, 0xd7b9fd62,
+       0x0733ab7a, 0x568d99fc, 0x2bf1afd5, 0x66ce702d, 0x9f6fdab1, 0x58b9fd52,
+       0x907e862a, 0xbcaa25d7, 0xe8b4b97e, 0x79a3e620, 0x4f9ea296, 0x373fad9d,
+       0x12d3cc6b, 0x0727ea88, 0x25dcff98, 0x3369ab6f, 0xdfcc6dc2, 0xafa0de5a,
+       0x04fc786b, 0x8035e6f4, 0x52bf624e, 0xfc47b01c, 0x6aff0646, 0x8f6fc8fc,
+       0x1e9a735f, 0x8f5956bf, 0x2310db5f, 0x75f8f4fe, 0xd2f8f5b8, 0xf0eed2fc,
+       0x7f463f1b, 0x855ff90e, 0xdaaad15f, 0xe95e2a91, 0x8525a95f, 0x3b806ca9,
+       0x5ca3085d, 0xc328e518, 0xdfe0e61e, 0x350393fd, 0x81db95f8, 0x9d4d3dfa,
+       0x7d98b70f, 0xe2390367, 0xca375e01, 0x04049c11, 0x1f236f3d, 0x81598ebb,
+       0xcb919f58, 0xcf4f75d7, 0x3b5ed395, 0xb57e90b2, 0x7af7f809, 0xde7607e4,
+       0x6a049137, 0xdd4e40b3, 0x83bf582e, 0xb17b8b3e, 0x10bef708, 0x7041e2f7,
+       0xcb0b8bdf, 0x957cd447, 0xcf04a1b6, 0xe7c3060d, 0x3d3f4053, 0x153edb92,
+       0x09779ef4, 0xf83d0529, 0x7e763883, 0xecb521e0, 0x7aa92717, 0x9bcdf0b5,
+       0x2890fbe0, 0xb6f579c3, 0x20cb36d0, 0x78f137a8, 0xa1378a8f, 0xbf181aee,
+       0xb8322435, 0x83025b16, 0x2cd20e20, 0x8badb8e2, 0xccb9e3c7, 0xc42dfb0e,
+       0x42da45f2, 0x4517399f, 0xa6d6f3e9, 0x71035c5f, 0xd8a68dae, 0xac932a79,
+       0xfeb7efa6, 0xede4bb06, 0xbcb2b24d, 0xd00647ba, 0x3b4d5479, 0x4cc3aeab,
+       0xe9506e1e, 0x5bd2dafc, 0x872ffe70, 0x91d61938, 0x5bcefe22, 0x8e79d187,
+       0xe35040fd, 0x395e2c33, 0x16bf7d52, 0xd7ea0bf4, 0xfa79f7ba, 0x8151d770,
+       0x91bd39c0, 0xdfd14bd5, 0xf949d57a, 0x9e45f29c, 0x7c011c12, 0xc04a185b,
+       0x1fbc737b, 0x47ebb413, 0xfe3a08b5, 0xd5d753cc, 0x179508bc, 0xeb0e5130,
+       0x0446c7db, 0xe0141d83, 0x386ebf81, 0xd0be7fae, 0x4e5ddaaa, 0xbe7c0292,
+       0x41cf12e1, 0x3b5b6bde, 0x70a1af71, 0x8bee2db7, 0x879db470, 0xbcb4bf53,
+       0x5ac717c4, 0x195a57ef, 0x08946c5f, 0x971b33ae, 0xb8be31da, 0x55f9696f,
+       0xf57fbeb0, 0xb155cf23, 0xe94791ce, 0x8f9678a7, 0x3193c4a5, 0x396bdfc0,
+       0xf4baf786, 0xfef918d2, 0xfc6b3f1a, 0xfa75f1ad, 0xac4f38d2, 0xac6fc6bc,
+       0x582b4ecc, 0xc093843a, 0xe1c3db5f, 0x35d6dc71, 0xbb9e2b9e, 0x193593f1,
+       0xe9b78f00, 0x96ddda1c, 0xd93cec50, 0xf627560d, 0x5fc6badf, 0x3f7c7903,
+       0x7a09c2a4, 0x377efbb2, 0x63f5bfa0, 0x77c2ca08, 0x7805ba96, 0x8589778e,
+       0xb778816c, 0xbb7e9750, 0xe27ff803, 0xde1475e4, 0xb84d4a27, 0xdd146ebe,
+       0x92bfbf08, 0xa83f8c10, 0x537edcf1, 0xf3e8e6c9, 0xf35a4fcc, 0x7a52b39f,
+       0x2175673c, 0x6e3c925d, 0xff77e00e, 0x904eafe3, 0x668bb6ef, 0xd55f63a4,
+       0x7bbed21f, 0xb6eccadd, 0x56ca7119, 0x25949ef8, 0x3db89ca3, 0x11e2f74e,
+       0xc5026f70, 0x751c947b, 0xdf8fcfd2, 0x8ea87a25, 0xda24f0a3, 0x4497c84d,
+       0x2e976451, 0x3947e94e, 0x8482e4d2, 0x6c790239, 0x42e55e9a, 0xe541d85c,
+       0x1ec5a460, 0xb123bf06, 0x829bce8c, 0xd6162560, 0xaa708b5f, 0xe6365ce3,
+       0xccbe53c9, 0x0451c383, 0x8890a243, 0xfa6bfd0b, 0x6bd3d356, 0xcbca0813,
+       0x408547da, 0x9367ed2d, 0x7c42b110, 0x0b914b25, 0x5128d520, 0x78bcf190,
+       0xf98232ff, 0x5fecb697, 0x2dd87427, 0x7f87e854, 0xb58fcfc3, 0x69c7c79f,
+       0x01fcf2f8, 0xc1ce46f4, 0xde607df6, 0x3c6cadb8, 0xb416ebf7, 0x87f43bd3,
+       0xa9158f6a, 0xcfd8efeb, 0x209f2c4d, 0xde89137c, 0x0fea3367, 0x7b193ecd,
+       0xec0d6463, 0x23fd8d17, 0xab769383, 0xd4a377c0, 0x13e876f9, 0x1d1cdd75,
+       0x7e84faa2, 0xb11a1b9f, 0xcac1ee1f, 0x71c998fd, 0xd0727d17, 0xbefe03cf,
+       0xf2311eab, 0x9530f0c5, 0xa87db54b, 0xb869f70c, 0x7ed0ea3a, 0x9277a0c6,
+       0x454c8da7, 0x37e5573b, 0xf9359e23, 0xee7dca36, 0x337ef76a, 0x91f98b83,
+       0xd7087186, 0x0d9c8709, 0x1e6de97a, 0x7cb6fdec, 0xd70a078a, 0x28fe412f,
+       0x07ce12fd, 0x37fcc326, 0x82b66e84, 0xf5e77c9c, 0x8ebf4424, 0x867ed3ca,
+       0xf5c7c4f7, 0x09c4f5c1, 0x7bdaa878, 0xc24f5d5e, 0x390eef48, 0x1d1272a0,
+       0xdff8d12f, 0x7c9aefc8, 0x1bc5c2d4, 0x8ece78d9, 0x73cb3ac0, 0xc60cbc41,
+       0x00b9364c, 0x5dbd9aaf, 0xc4b7daab, 0xdff68e9f, 0xd751172a, 0xf000cca3,
+       0xd9a8ad49, 0x744b6eeb, 0xa3956a7c, 0xfb4af520, 0xd48bdea9, 0x673a8b3f,
+       0xd1da15e3, 0x945ef37f, 0xc677f9f0, 0x2285135f, 0xd1bf874f, 0xe2baa371,
+       0x108e3e2f, 0xffd85f76, 0x6e9bf3f3, 0xe4078fe4, 0x40ddf9ce, 0xa846af3c,
+       0xb95bc8fe, 0xe326d6be, 0xf2d28727, 0x6d05eaba, 0x3d3bb3ff, 0xd1f79460,
+       0x31fb7515, 0xbc83d2dc, 0x7e2a6d7b, 0xfa0e9909, 0xda985c6c, 0xe55d592d,
+       0x3f3abcff, 0xbde18daf, 0xc1f68eed, 0x79eb4f20, 0xda1c754f, 0x0993118b,
+       0x045d8aec, 0xdef71eed, 0xf7944ea3, 0xfadd2496, 0xf02ed5d3, 0xf66a7ca3,
+       0x1a9766a9, 0x4bb0ebdf, 0x8b46f5d5, 0x544d728f, 0x4f3c285e, 0x00fc79c5,
+       0xf98bad47, 0x15c070af, 0x5693d8f4, 0x97f02d4f, 0x0e25ce8d, 0x84864bf6,
+       0x25bc58b3, 0xeecf93ac, 0x9066d1e4, 0x0fc520b7, 0xba7e7fac, 0xbae20dfe,
+       0x5c4c6787, 0x6a978302, 0xfa6fb021, 0x583611e5, 0xf1fcc115, 0xfeec397e,
+       0xecb97e9a, 0x71cdccbe, 0x62d97ecc, 0x96b49f28, 0x12f3013e, 0xe737e205,
+       0x01b8777e, 0x3e438854, 0x03d4a715, 0x0ac52c3e, 0x45c323ce, 0x77a51cdc,
+       0x20e41086, 0x42b1226f, 0x91fc58e6, 0xd23fee74, 0xe44a32fe, 0x8c8fe07c,
+       0x8dcf0481, 0x149d8066, 0xc6af4e83, 0x5ecfdf89, 0x0e72ec6f, 0x7e5555e6,
+       0xbe74480e, 0x1cec2549, 0x87dc474c, 0x6df80f82, 0x9381dc75, 0xf6c0bd6d,
+       0x0c09fd59, 0x0dff46cf, 0x12f30608, 0x12fdfad4, 0xe889ac11, 0x7f81f95f,
+       0xfa0b26fd, 0x0ee23657, 0x28fdbe82, 0xd767c58e, 0x50f5ee71, 0x6ed0b9ff,
+       0x347e7b81, 0xe1e4d1b9, 0xbbb7f191, 0xf3aafa05, 0xe039b3c6, 0x78b952fb,
+       0x3adcf00f, 0xb5e0ecfe, 0x4cf69338, 0xaf0a77c6, 0xe8d7b7cb, 0xe8ea24d7,
+       0x4ab88567, 0x48779eb4, 0x6f6ec043, 0xe0dce2e5, 0xc3deb557, 0x8b397831,
+       0xd0411e7a, 0xc6cd33cd, 0x553691fc, 0x2e3dfe7f, 0x5b51f90b, 0xd6fce84f,
+       0x30d7fc63, 0xa8738e8f, 0xc6a77386, 0xd969a973, 0x74a0711d, 0x952dc7cc,
+       0x72332ee0, 0x3b436436, 0xcf6cebce, 0x4bce3124, 0x31ac46a6, 0x256b05cf,
+       0x80d7dbc5, 0x3ab154b7, 0xea71f401, 0x188f4c5d, 0xf9c6d1f1, 0x7d801f87,
+       0x31883fb4, 0x32b451f3, 0x84d6ed2d, 0xb4fdf4c5, 0x6a58c9f4, 0x42edebcf,
+       0x9262b8cc, 0xe77efb8d, 0xc589eb26, 0xd9266fe0, 0x3da77f68, 0xa0a87def,
+       0xdc63b7f8, 0xe18e3ebd, 0xe18e3ebd, 0xf0d25ebd, 0xfc83c729, 0xbaddd675,
+       0x3e0da7bc, 0x7900824b, 0x9474fe88, 0x462e25cf, 0x15f7ceef, 0x10fa6fb4,
+       0x501cf265, 0xb2441b12, 0xc59ef90d, 0x21f3b487, 0x9b3df4bf, 0x6e52f900,
+       0xefea965b, 0x137d185b, 0x37e7dc18, 0x5371c24c, 0x60eb1ac8, 0xa5a5e78a,
+       0x8dc43726, 0x93fc2f4e, 0x2f4c8e13, 0x03c968cc, 0xf3854879, 0xd3bdf491,
+       0xf30dc7bc, 0x8aa7ae4c, 0x05f1892a, 0xd3a525c8, 0x5cefdc64, 0x77998a60,
+       0xf6c6da3d, 0xb9c68f4f, 0x9b4b4cb0, 0xacea748a, 0x5f802497, 0x2a53e462,
+       0x478be9af, 0xa6639e76, 0x62d8a37c, 0x489b5bc8, 0xdf5c389a, 0x64af88c2,
+       0xbd559d8d, 0x324bc9ad, 0x5bec21c8, 0xaa3d5295, 0xfa8079d1, 0x45c60a6a,
+       0xbd0b8ff1, 0x1bf835f1, 0x500b1bce, 0x44726a2f, 0x6f3d3086, 0x151bbd05,
+       0xfe6b6d0f, 0x3bec3fa8, 0xe76ff27e, 0xf4efb01c, 0x01dda117, 0x7df8f67a,
+       0x1ce03bef, 0xb1f727d3, 0x06ddc8b8, 0x8d916d3f, 0x5b26ffe9, 0xd7985ce9,
+       0xf23fdf7c, 0x4afc513c, 0x93fdb356, 0xe1bc027b, 0xdefebbbc, 0x9260caa0,
+       0x3f211ee1, 0x8852b5e2, 0x68dfd71d, 0x7b96f163, 0x32966fb6, 0x53df1864,
+       0x571fe301, 0x8de3d0fd, 0x0d2afeec, 0x87db859e, 0xfd9be04b, 0xf7566425,
+       0xb6445bdf, 0xb025287e, 0xf151e67f, 0x80f38466, 0x92f6af7a, 0xcc7e59c7,
+       0x6ad63a02, 0x213d87aa, 0x38c3de76, 0xc89f258f, 0x7894a945, 0xd0e41e4b,
+       0xeff786ef, 0x6799eba3, 0xcfb803f5, 0xd7679c66, 0xf4147d7b, 0xf4a996cf,
+       0x5db79e36, 0xe0fb6216, 0xe507898b, 0xdbf9cbb3, 0x63173b10, 0x3d9e378c,
+       0x3c036d98, 0xc6a6dcfc, 0x68c8f313, 0xf3bdb738, 0x2bf880e0, 0x4a7d5bdd,
+       0xee0a2fbd, 0xb8f286ed, 0x1739608f, 0xef8a408c, 0x45bbd08a, 0x4d555fc0,
+       0xb43ef03b, 0x2a8fab6f, 0x909c2743, 0x25e9ad4b, 0x036e876a, 0x9cc5923a,
+       0xdaad3ece, 0x7e624e7c, 0x9dcfc335, 0x013bf3ea, 0xef90391f, 0x3c74ff2d,
+       0x159df7a5, 0xfbe8f9e2, 0xe9b05ed2, 0x3b7be1f7, 0x959e6d5f, 0x3695feea,
+       0xcfdf237f, 0xf170f955, 0xfaeb69d6, 0x36d49452, 0x9ea9917f, 0x41f3c38b,
+       0x232d5f1a, 0x31e945a5, 0x67a347f8, 0x7e849f07, 0xe8d1f386, 0x816eb8b8,
+       0x9a7f6f3a, 0x06987fba, 0xdf2329f1, 0xbb2e74f4, 0x82648c55, 0xa2f91b3c,
+       0x4ffb9bb5, 0x3d98db76, 0x8a5658b1, 0x73526f40, 0xca2b9d77, 0xd42e399e,
+       0xc809f81d, 0xe7c656d9, 0x9c0f7a1d, 0x6fe7d060, 0xafdeb889, 0x70a9c870,
+       0x6bd21fdf, 0x9823e42c, 0x369ef0fd, 0xa29f31ce, 0xdf01140c, 0xf49e58c5,
+       0x07032a95, 0xdd2fb675, 0xf609ce78, 0x8210db76, 0x8756a271, 0x6d2fde1e,
+       0x2f89ea3c, 0x08547a55, 0x19fcdf2d, 0x16d6d474, 0x7638b3cc, 0x5d338d49,
+       0x9ac71732, 0xeb6764a7, 0x35ef5128, 0x3b955bbb, 0xaf998fcd, 0x10eeefd2,
+       0xb85f3fdb, 0xa3d21a69, 0xeaa5be4b, 0xe4682cff, 0xe918cf50, 0x337dc4b3,
+       0x0a2d9fe6, 0x5df7e3e4, 0x461e45e8, 0xe6e91bba, 0xbdd8bbb5, 0x04b5426d,
+       0xdb1dd8f7, 0xe37ee1c4, 0xe2f46ef2, 0x5be9bb4c, 0x8f38c7cd, 0xb65fe0ee,
+       0x5f5d66b5, 0x2e1ff302, 0xe11b9f01, 0x84bfe6d7, 0xa92f4c28, 0x5e6eedf3,
+       0xcb137224, 0xf9d750cb, 0x0a9ce07b, 0xcc3c97ec, 0x356dfcb3, 0xafc1a4ee,
+       0x479c6bc1, 0xe7815f11, 0x79eada09, 0xdbbec3cc, 0xbf07581f, 0x5af77027,
+       0xeedbd70e, 0x11e9a4e8, 0xaaa77f6d, 0x69e60169, 0x603f6879, 0x4c7db6b7,
+       0x7ac4bed8, 0xeb75ef0e, 0x96219e96, 0x3d1dd49f, 0x5b746109, 0xfe06e94c,
+       0x12fbd766, 0xd18195f2, 0xc98142fb, 0x7de8c0ca, 0xfcc4122a, 0xd30de594,
+       0xed8bcf74, 0x93de3d7a, 0x84ea91fc, 0x4d2cf198, 0xd3f934de, 0x976bd1e4,
+       0x04297d99, 0x0164640e, 0x7f451e7e, 0xd9e7ea86, 0x625f7576, 0x6aa57d0e,
+       0xbedd39e3, 0x8c3192c4, 0x12f84b5e, 0x9e9dde7c, 0xe9d078a5, 0x7d7685e9,
+       0x9df7c5de, 0x4d0f368f, 0x19f9b44e, 0xbdf8c4e5, 0x3c5a1e91, 0x231748cf,
+       0xf04e003d, 0xb66ede2b, 0x3850d605, 0xdc18e6df, 0xc22b66fe, 0x51369add,
+       0x559a7381, 0xfcb0f3e9, 0x0e987c03, 0x8d6960f6, 0xd543fd1d, 0xbbd91aef,
+       0x6aae4438, 0x556cbd87, 0x4e73b046, 0x27c049a5, 0xd3226a13, 0x1e422e2d,
+       0x22e6f87d, 0xc27f6fb8, 0x10e991a3, 0xe1fc7f7a, 0x2dbeacc9, 0x0dc5bef2,
+       0x5adff7f7, 0x83eff784, 0xfbf1817e, 0xfbe0d995, 0x73c4eb6e, 0xdeccbae5,
+       0x9d2e691f, 0x66adeec7, 0x1ed415ed, 0xaef5d0b3, 0xd7e0d0e2, 0x5a2b7e40,
+       0x0e218a4a, 0x77110154, 0x2a55deba, 0x872db0ce, 0xe8e3f3ad, 0x9e6d877b,
+       0x175fc8ad, 0x58bae2d7, 0xf9404871, 0x3c590722, 0xb573a056, 0xc6d6efd2,
+       0xe298bb51, 0xc5a26d77, 0x7d307e0d, 0x78ff07ee, 0xcb22a26d, 0xfa35cf51,
+       0xc70077c1, 0x1fcb135a, 0xe0e6fbd8, 0xec15c8f8, 0x523ebd80, 0x7ecbfe02,
+       0x634b059f, 0xc2e4be7b, 0x26f91bf3, 0xb6311f16, 0x61e9a3bf, 0x5f006722,
+       0x50941d54, 0xec0fe1fe, 0xe4c24acd, 0x73b08aa4, 0x08879567, 0x3aa9b39e,
+       0x6ce78458, 0xa7c21ce0, 0xaff03d3a, 0xc9d36739, 0x054f0c57, 0x44225702,
+       0xb7685b8d, 0xaa7ceaea, 0x87cc0869, 0x386e71f0, 0x9867c227, 0xf9d277aa,
+       0x92d157f3, 0xb97043e2, 0xa66fb879, 0x1e04e26e, 0x55aacbee, 0x35a9a3ef,
+       0xdaf0f3b1, 0xfc554778, 0x475f6568, 0xf740a7e9, 0xe4b4efd3, 0x09fed8d9,
+       0x7cdad1fa, 0x7085396b, 0x4ebd9fe0, 0x6e42fcf0, 0xf80fd932, 0x0c6511b3,
+       0x48e49bf0, 0xf6cdf154, 0x065fe9af, 0xe9b36e94, 0xf7e53237, 0xe3fc3ebf,
+       0xd827b822, 0x995a6f1d, 0xed97eb45, 0x30cf563e, 0x2ca2cb9d, 0xacfc39cc,
+       0xdce99d7e, 0x1de75a00, 0x1b0eac35, 0x13e174ad, 0xfc8a6b1d, 0x951c6143,
+       0xd72bb7df, 0x260b7f01, 0xf611c716, 0xa39fb849, 0xa5aca7e5, 0x28fc033c,
+       0x97166439, 0xde7829a9, 0x02f27106, 0x897c8645, 0x47bdeadd, 0xf0d4b5df,
+       0x784cdbca, 0x8094181f, 0xe183877f, 0x690ba353, 0xbc83ae54, 0xae54125d,
+       0xbebc7d83, 0x01cb8f0e, 0xb76f13fb, 0xde7d004c, 0xf29fdef8, 0xabf6fef0,
+       0xde233f58, 0x9d233ea6, 0xf6dfe9cf, 0x2fbd1cdf, 0xdf91d7de, 0x64a3be07,
+       0x9395fb40, 0x2a4ee45d, 0x910ab587, 0xaff06ca5, 0x2364fef5, 0xb0e9fa61,
+       0x03bfb4ad, 0xd71849f5, 0x8f76d5b1, 0x9fa3750c, 0x7b125a4c, 0xe5276795,
+       0xa1fdc6ac, 0xc3a68cc4, 0xf85d610b, 0x8497bb1d, 0x37cc1453, 0x7ee3a97d,
+       0x28718236, 0x4373891b, 0x49b8989c, 0x8d453f9a, 0x5f1899a7, 0xf945e725,
+       0xe87ceacb, 0x179085f7, 0xf2c6da3f, 0x78fce819, 0x89c3afd0, 0x8808e58c,
+       0x4903658b, 0x4ddf583d, 0x427f8782, 0xcacc7ffb, 0x069651e2, 0xce378ba2,
+       0x74bb3077, 0xf76453bd, 0xdbc189b7, 0x3b88aec1, 0x57605c43, 0x125afdb4,
+       0x705e3f70, 0x74fb8add, 0xd7184c07, 0xb80c467e, 0xfda87f60, 0x42de411a,
+       0x536bfb3a, 0xfbf5aee9, 0x035f2498, 0x399fbe71, 0x7c99fd59, 0xeddb7982,
+       0xec00a427, 0x586626df, 0x47e3a3aa, 0xdecc1db3, 0xdc15766d, 0x767880ee,
+       0xf1811c73, 0x3389ef47, 0xdf9e3d01, 0xbe056b9e, 0x44700978, 0x766890f1,
+       0x25fd0bdd, 0x66f0a39e, 0xcf9673e1, 0xe3c3c82f, 0xddc77e29, 0xdee19762,
+       0xc1ac67ac, 0xf54f305b, 0x13de1305, 0x9ee492fc, 0xce97f506, 0xc3d02eca,
+       0xe30564cf, 0x982f3e70, 0xc52f3e70, 0x82bb5fb5, 0x10d0fdc2, 0x6c12df16,
+       0x2cfd0044, 0x7be40a98, 0xf9514fc1, 0x4fd7d358, 0x18f472a8, 0x82dcf047,
+       0x3947ca60, 0xda87f2d2, 0x0fe609da, 0xc2d199f5, 0x4dc73f03, 0x614ce2d3,
+       0xe343e21e, 0x73da094b, 0x9e22ede3, 0x65fc816b, 0x4136df38, 0x3e13c3d5,
+       0xf96128ae, 0x7043eec0, 0xbb7ee78f, 0xba981f7a, 0xca9379af, 0x08923727,
+       0x37eda16f, 0x70ee245e, 0xaf9fdc16, 0xda787fdf, 0x524e5f60, 0x5dda57fb,
+       0x9f38f085, 0x49bfede8, 0x602745f5, 0x8a202c3d, 0xd134fc00, 0x3b076862,
+       0xeef709d2, 0x77af9feb, 0x2652f6a8, 0x5bce8cc9, 0x269df6d3, 0xa23743f1,
+       0xb92c5afd, 0xec3b2f01, 0x0f9047ca, 0xc9116fe0, 0x4f90e295, 0xe17e58fb,
+       0x02368b90, 0xfe521457, 0xae7cc3b4, 0x5bf3afad, 0x1dafbce9, 0x3e07fac8,
+       0xf572fd04, 0x409393af, 0xe9518fdf, 0xdf1a95a5, 0xe2b97f01, 0xaeb97f19,
+       0x6dcf94ef, 0xd3cf160e, 0x0ef80de4, 0x062dd9fa, 0xdfdac5e6, 0x0dbafca6,
+       0x3b0ec6f4, 0xa7ee3f41, 0x20d996e9, 0xa738da67, 0x9636be54, 0xec566aeb,
+       0xf279df85, 0x46eb605f, 0x528bdf61, 0x949fbaf4, 0xaf77fcc0, 0x2a7d375c,
+       0x45d99de4, 0x514b2bcc, 0xf34541cf, 0xbf147a4b, 0x6ad77c68, 0x8d217167,
+       0x7aee267f, 0x13e7879f, 0xcae2102f, 0x8afe1d22, 0xfc133fc6, 0x9df7dc61,
+       0x627f9840, 0xdd9d9fe4, 0x79fe4ff0, 0xd5bd0059, 0x320e7f85, 0x6f8ee9fe,
+       0x8f783f68, 0x5a7f9185, 0xd0ffaa1c, 0xc25cff2d, 0x9aabfbf3, 0x7f715e27,
+       0xcfa7c9b2, 0x63963547, 0x95f3b16d, 0x77de2a9d, 0xe6b77549, 0x6298de80,
+       0x04f5e762, 0x853b7192, 0x769c5777, 0x36757e4f, 0x4c0877d4, 0x9908ed0f,
+       0xb0ed0f51, 0xaf183c7b, 0xf3b0b34d, 0x022782aa, 0x7ddc0fe7, 0xeff4722d,
+       0x60ed3c8e, 0xf0c504e3, 0x1ec02fd8, 0xc1f1937f, 0x3cb92998, 0x2fa59ea4,
+       0xe4617a66, 0xfc336971, 0xcea3dcde, 0x17a073fc, 0xc0770053, 0xbc254717,
+       0xa8eaa957, 0xb7f1fa84, 0x822dde7b, 0xd796a878, 0xbbf77a3c, 0x7f100545,
+       0xfb7e3276, 0x5a77cabb, 0x807c8f1d, 0xb3dc34be, 0xfce3b63f, 0xfc9efe95,
+       0x9ca3e052, 0xfde376ce, 0xb638c1f1, 0xc88b325f, 0xfd310c22, 0x70fde968,
+       0x1ef1999d, 0x766159f9, 0x21c66dde, 0xe47bec4f, 0xde30fe55, 0xefed4e67,
+       0xdfd82764, 0x81ecb7cf, 0xd99108d0, 0xaa941dba, 0x467e63af, 0x93f03675,
+       0x47f88726, 0x64fc17f1, 0x0c77ee88, 0xd1ebaae6, 0xdd816ec3, 0x70911547,
+       0x8467f21f, 0xd754177d, 0x16675cb1, 0xeabb97be, 0xe70079c5, 0x3f653288,
+       0xc5c1a5d0, 0x939ff3e3, 0xe81b25b0, 0xff7016e6, 0x13ca2824, 0xdf3ae0bf,
+       0x10e94223, 0xdddf6d3b, 0x8c046e27, 0x33d3a8ff, 0xa07609ca, 0xbe107ed0,
+       0x772e3d1b, 0xfb71e804, 0xb049b5f0, 0x537069ae, 0xd9b78ab8, 0xe0d0e13b,
+       0xfc64e01a, 0xc173a8f2, 0x7c03c028, 0xe9a97a07, 0x7c0b31c8, 0xb043f1af,
+       0x83e30cf9, 0x3e00be28, 0x6e0be4e8, 0x3c35d43e, 0x41f9504c, 0xf9b3ffab,
+       0xf46b8b42, 0xb71017c8, 0xbe277e70, 0x35780598, 0xe7b505f2, 0xb0c676ee,
+       0xcb1282e7, 0x5f3e3493, 0xf7c7cf6d, 0x3cc112dd, 0xcac7b227, 0x93d0c77e,
+       0xbf1efb80, 0xdb31b171, 0x4996393e, 0xaf72514d, 0xdaf5d993, 0x0f0ca6ef,
+       0x0e7f6873, 0x4ee28aa7, 0xa1faf3b4, 0xf8ab749e, 0x0e38c723, 0x5cc517ee,
+       0x43b00cf8, 0xaf6049c3, 0x8497370d, 0xda761e41, 0xfd806426, 0x9f1b6b98,
+       0x657ff30d, 0x60b7aac8, 0x6fa57b49, 0xcab66fd9, 0xa695f69d, 0xddabf70f,
+       0x9dfbe36a, 0x49bb7d6c, 0x409be761, 0xa1c347af, 0x26400fad, 0xcf0b8380,
+       0xa1b65d32, 0x28450f1e, 0x38026ede, 0x72f61e28, 0x87ec11a4, 0x3c92937c,
+       0x3ec0ec11, 0x6ce00161, 0x133afe6b, 0xa1259de2, 0xbc030e37, 0xabbeda25,
+       0x6aefbf5b, 0x7b35b7b4, 0x343ff348, 0x7bf3497b, 0xf682aec1, 0x1773eaf9,
+       0xac0acefc, 0xde0b616f, 0x59d8f09f, 0x95451af9, 0xa3ce8167, 0x6dc79d44,
+       0xd2e105a4, 0xaa994fee, 0x20e4a3e2, 0xa07357f5, 0x1429909d, 0xfbd4530f,
+       0xf5b8a653, 0x36dc43f7, 0x29fdf626, 0xbd3d3f5a, 0x6e375c6f, 0x7d3fec30,
+       0x8fa0f2df, 0x7bf297dd, 0xc787f31f, 0x02fde00d, 0xb263bfac, 0x2e137dd8,
+       0x52838786, 0x2bec75ec, 0x99c79e55, 0xfe703922, 0xbfeeef7a, 0x6fb9bae3,
+       0x043fdff7, 0x09ec723b, 0xee1e4081, 0xe32313b8, 0x8c601f31, 0xf5a57c8c,
+       0xd1bcfdeb, 0x1273d846, 0x0732fbfd, 0xd5ca3c28, 0xcb059f00, 0xf63d4f57,
+       0xfcefe80b, 0x9f448151, 0x3c9228f3, 0x5f2e2103, 0xd0cefea4, 0x53d98e01,
+       0xf501fb5a, 0xe2fe3df7, 0x2d11e2d4, 0x8aaf7682, 0x53ce8a39, 0x343efbd4,
+       0x5e394eba, 0xe9c8427c, 0xfbf81f4a, 0xb421c467, 0x5519c3f8, 0x7ffd922f,
+       0x3738f3c4, 0x802bde37, 0x1a737efd, 0x71a8944f, 0xd3d4cb27, 0x1c438a8f,
+       0xdfec1a77, 0x62fecffd, 0xbf29e42a, 0xa3ca63cd, 0xade3b437, 0xf0b7a81c,
+       0x3151ef31, 0xd0e6f7e2, 0xca8f78bd, 0x1f2678ac, 0xee3f8d3d, 0xd727ca5a,
+       0xb309dd03, 0x3dd8f303, 0xeefa4624, 0x491ffddb, 0xe3dda191, 0x1bfa3bbb,
+       0xa9eaf0e9, 0xeab7dc02, 0xbe461e89, 0xe9e743dd, 0x277e1abf, 0xf8fc42d5,
+       0xac2ea93b, 0xc34be6bf, 0xdeafc6ba, 0xc092a7e6, 0x74f8d3ce, 0x9be31252,
+       0x917ebbb1, 0xf49dec44, 0xbaede232, 0x97bf4678, 0xe25d9aad, 0x3e95399e,
+       0x43ae9f7a, 0xd27ea8c8, 0xa5627902, 0x0eb3ac2a, 0x425da115, 0xc62bf3d4,
+       0x7f166df5, 0xa75024e7, 0xcfcefd3d, 0xaf41790c, 0xf8a71f7e, 0xd6013aed,
+       0x156122c1, 0x1daa63d3, 0xa463c1af, 0x14a407f3, 0x3e0eefe1, 0xe1181f23,
+       0xbf23b97c, 0x40f5c15e, 0xe99bddfb, 0xc4c4b303, 0xf0d0f318, 0xf5d08331,
+       0xebf7bb38, 0xdebc7171, 0xbc773f7e, 0x6b401df0, 0xa466f277, 0xd35db19b,
+       0x4030451f, 0xb07e962e, 0xa7c5664f, 0x5d143ca0, 0xf9028894, 0xe7f4fd12,
+       0xd5c949f8, 0x5d2b6fc8, 0xfc7759ec, 0x27917556, 0x7c9d119e, 0x6a3d3627,
+       0x25dbbe03, 0x8e20d9d4, 0x5a7da37a, 0xe15e882d, 0xf03305e7, 0x89888abe,
+       0x526d6840, 0x887ecce8, 0x130f7833, 0x1050cf3c, 0xf8113bda, 0x05a135f4,
+       0xf3b6acfd, 0xb28b56d4, 0xb5429b3b, 0x9acbb036, 0xbc79d992, 0x97440903,
+       0xca95fd2f, 0xcf474daf, 0xb462554e, 0x7d31730f, 0xc9289d3e, 0x459ff439,
+       0x807f29eb, 0x81c7dc1f, 0xce429271, 0xd8327afd, 0xfdd8732d, 0xa3cd6dd8,
+       0xf0a64f5f, 0x8095deb6, 0xd352667a, 0x28baf703, 0x18ff8221, 0x17dbcf81,
+       0x425f7870, 0x7ac6ec91, 0xf42ce2d1, 0x937f46fb, 0xda04bd34, 0xf7e88b27,
+       0x042be24c, 0x4e9d5788, 0x8eeaf0e3, 0x06a45cdd, 0x3fd87f7e, 0x5c438d8d,
+       0x4ff024fe, 0x1a492bdf, 0x2791bf8e, 0xf841f56b, 0xe0c48b3b, 0xf97aadbf,
+       0x6d335edc, 0xc393355f, 0xae49e2fc, 0xe28fe20c, 0x12f5a29f, 0x50f6ebce,
+       0xf5f0016a, 0x39fd62f4, 0x4f6ab0c7, 0x91b52cce, 0x247ef440, 0x3eb942e7,
+       0x03bf6d60, 0x59bc377f, 0x4d3f3024, 0xf9516fce, 0x24ecd67d, 0x08d377dd,
+       0xb9353bb3, 0xbf9555ba, 0x79bf545b, 0x3743278e, 0xf661297e, 0x7b481fd0,
+       0xc7ec9021, 0x3d1fb62e, 0xd0e5bdb5, 0xef89783c, 0xe1f40a37, 0x7e0c43ad,
+       0x16b15f2f, 0x738d22f9, 0x6e31bde3, 0x636dfb7d, 0xfca375f4, 0x4cc3f51a,
+       0xbbe3dac8, 0x1f4d09ea, 0x45e66ccc, 0xcccd0788, 0xbb4678a7, 0xf7b76f58,
+       0xc7462fa4, 0x2e2fa375, 0x1983f7c9, 0x7c5f45d2, 0xf49dfc5c, 0xdba96fc5,
+       0xf5ca8632, 0xe8de9a3b, 0xde83fa4f, 0xff6fc498, 0x1b51f005, 0x31cd375d,
+       0x775b48f8, 0x114038b4, 0x03d46395, 0xcc7ed8a7, 0xc4e98ba4, 0x0e33a23f,
+       0xa847a1d0, 0x618ee25d, 0xcf8a9d2f, 0xd24fddd6, 0xeca257a1, 0xfbef3112,
+       0xa89325db, 0x02e52a3d, 0xbe10fd7c, 0x921ef522, 0x82b04822, 0x19da61f8,
+       0x0579038c, 0xfae2cfea, 0x73d314fc, 0x625c5ff4, 0xed187ca7, 0x5d0e2d15,
+       0x29ecd2e6, 0xc474bf3d, 0x7bb06723, 0x293e3557, 0xfc827c02, 0x9f71e0cf,
+       0xff37c8c0, 0xb5e2611b, 0x00800011, 0x00000000, 0x00088b1f, 0x00000000,
+       0x7cbdff00, 0x55547809, 0x753eeeb6, 0x2a490d4e, 0x62c65549, 0x4a61270a,
+       0x0843c048, 0x91602018, 0x520c6201, 0xad0e2280, 0x210c0e05, 0xfaf5cd09,
+       0xe76f6dba, 0xd11a0484, 0xfdb1c5af, 0x15fbbe9e, 0x2b8fbd5e, 0x30188a41,
+       0x015b9260, 0x06d88081, 0x9f3e01c1, 0xa88d2a5d, 0x6e874921, 0x3efdd82f,
+       0xef6b5ade, 0x8a555493, 0x77befa6e, 0x66f6d25f, 0xf5af3d9f, 0x610f69af,
+       0x4cd9532a, 0xf83096c6, 0xb05b1951, 0xd3dcc2d5, 0x7f36ef21, 0xfa31b415,
+       0x05ff06b9, 0x635e1262, 0x33739889, 0x5dd8c696, 0xbfb2fea2, 0xf3f19ba8,
+       0xfaf0f2b2, 0xdf85b177, 0xdd8c094a, 0x3666bcc1, 0x3d3bb18e, 0xff4fe591,
+       0xbbf28641, 0x4f7f8456, 0x5ca7c471, 0x8c7f8388, 0xc9afe367, 0x4dc9958c,
+       0xc05edfcf, 0x5949df58, 0x266af2b3, 0x0751ff1c, 0xf6d1ff1f, 0xc7967492,
+       0xc53dbbd8, 0x8f485e89, 0x270cc1d6, 0x6755d631, 0xe404f4a3, 0x1af0d07d,
+       0xeb02dcfe, 0xdfaf30b3, 0x94f6290e, 0x92cea94f, 0x80e09b18, 0x7f21534e,
+       0x0c9fd605, 0xd863a365, 0x5e62d9d7, 0xc91d8c59, 0xa0fb9736, 0xa7f4075d,
+       0xe801bf43, 0x0f7e875f, 0xff2839d5, 0xf28b9d5e, 0xf5129ca3, 0x13089353,
+       0x4558c19c, 0x2f769dce, 0xc8e35bb4, 0x9cab3ca2, 0x1b7a4264, 0x797b2ff3,
+       0xde81d334, 0x14ab8247, 0x5ab18529, 0x3359a497, 0xab00f887, 0xfa84afb1,
+       0x35de8295, 0x83e6255b, 0xaf9f95ef, 0xbf4064af, 0x0f1876de, 0x2a5b53e8,
+       0xcff06cfb, 0x9f67b692, 0xb33379e7, 0xf886d44a, 0x852f88bb, 0x153a57cd,
+       0x58b38c1b, 0xc6193493, 0xf6f1b771, 0x9f25bbb7, 0xa45cff0a, 0x23a3f385,
+       0x44cbef82, 0xfff18b3f, 0x72e2dda0, 0x7e8017c9, 0xb7861716, 0xc165765b,
+       0xe1d4d2b7, 0x7c865a38, 0x2f1c3a9f, 0x8fbe0ccb, 0xef916365, 0x7e962f97,
+       0xf10d9538, 0xe48d322d, 0xf5f96473, 0x6feabcf8, 0xff68d9f0, 0x11bcf8b7,
+       0x3cfc8269, 0xc6a2d57c, 0xedb0b633, 0x79f20aa7, 0xfa8515e1, 0xe4f5c6ad,
+       0xcb067942, 0xb1fcf5c0, 0xdb99ff27, 0xdafd50d9, 0xbc583fb6, 0x9ebfae53,
+       0x37be35bf, 0xe075a551, 0xa1bceeb8, 0xc0142b71, 0xb6f3ac20, 0x46fa70ec,
+       0x5f9235f2, 0x48bb444b, 0x58896d7e, 0xd617c187, 0x111a2003, 0x6457ee85,
+       0xf8f5c79a, 0x8b17c836, 0x3796bc77, 0x7fb19cbc, 0xf50eba21, 0xbac4f827,
+       0x3e14cf15, 0x3c88732f, 0x44f5ae00, 0x17656fe0, 0xc4c2c40b, 0xff2c5d16,
+       0x9354c156, 0xeb2157d8, 0x0caf9fc0, 0xfd43cb3e, 0x41195d97, 0x5b8c67f2,
+       0x92dd30a6, 0x5cb9df8f, 0x06afce46, 0xf58099fb, 0x96ffa275, 0x7e15a61d,
+       0x0b5cc758, 0x6983c07b, 0x1c5b4f2c, 0xdfb7f512, 0x7d7aa261, 0xd899b27f,
+       0xe9ed8c4d, 0x30662f48, 0x78eacd3f, 0xdfa2f51f, 0x7e7da8cc, 0xe6e7e702,
+       0xc0c7a678, 0xb6e94cf8, 0x4a270079, 0x20d96331, 0x8b48ca67, 0x6cba01af,
+       0x941e0252, 0x614d3ebb, 0x537720f5, 0xb38c1db0, 0x2f7e90f9, 0xfe6c9603,
+       0x21a9a26a, 0xba07db13, 0x9bbd40e7, 0x1b7515f3, 0xd55a7154, 0x6f79629f,
+       0xed81d5bb, 0xb7fc0efa, 0xf3f6334e, 0x0cc1a627, 0x00ed7bd9, 0xb22f282a,
+       0x37a87d9b, 0xb293e4ca, 0xfd7df209, 0x2a3ea18c, 0x6128115a, 0xacb9b7c0,
+       0xe901c1bb, 0x1463e46c, 0xf5c55dfe, 0x6b7ae0ce, 0x9e69f004, 0xa13cd3e0,
+       0x65da4aaf, 0xf1251bd2, 0x0e658fb2, 0x045ba7e9, 0xdde9e68f, 0xee308925,
+       0x1ad2453c, 0x15cb7f20, 0x6f8f0c25, 0x69ba3ea1, 0x89951f48, 0xaafdddfe,
+       0xcd819602, 0x2df8e167, 0xa87ae56b, 0x5df116c4, 0x49681fd8, 0x84732ab8,
+       0xdd46cf97, 0x60bef809, 0x25e85fe0, 0xca7f6116, 0x0424bfe4, 0x2c7b0e81,
+       0xc0e74fee, 0x994ffbbc, 0x9df06bd9, 0xaccc845d, 0x8d69f4e1, 0xe99147b0,
+       0xb7588e81, 0x83daf30a, 0x7e63b238, 0x7a9d5ba4, 0x8353fafd, 0x8cb8c5fd,
+       0x154b4d3d, 0x3cb04596, 0xa21b4ae3, 0x0afa30fb, 0xb5d2443e, 0x7779e859,
+       0x543de3ab, 0xd8e8c3c3, 0x79ec80b5, 0x05551fc9, 0x4bdfdf55, 0xf65e434f,
+       0x2375885c, 0x185cf7fe, 0xf479c6e9, 0x1bdc73c4, 0xfce070f2, 0x51ea2c40,
+       0x00aaa7a0, 0x369dfa4e, 0x33c235ed, 0x88ff0397, 0x906dbe89, 0x71cf1f3f,
+       0xffb627bf, 0x7dd22e44, 0x0d7b4991, 0x8c365187, 0xf5053a5b, 0xe7a5d6e7,
+       0x6e498ccd, 0xe40cfd26, 0xec1d5249, 0x9075483e, 0x9e9fc427, 0x27287cc4,
+       0x3867e666, 0xbd9b836e, 0x22bce982, 0x3ee91135, 0xdb767d00, 0x11353fb1,
+       0x72fecf71, 0xca67a679, 0xd737fa70, 0xe3028f31, 0x3cd9d4b4, 0xfd85e80a,
+       0xb7ca0e75, 0x3d28b9d6, 0xba52a758, 0x9f84fde9, 0xeb50ffa1, 0x109478b6,
+       0xc49e52bd, 0xd03cc3f5, 0x79af383b, 0x80e9f24c, 0x304f79bd, 0x03904792,
+       0xf90926df, 0x1ec9eb05, 0x67f027a2, 0x67921820, 0x8ce34a8d, 0xe20a9234,
+       0x89ae7e7b, 0xe01383da, 0x7873237b, 0x587fe07d, 0x5bf0b97e, 0x4bba77ee,
+       0x65be909c, 0x813994f7, 0x5dd2cdbe, 0xca312f87, 0xcdefc42f, 0x25f2ddd2,
+       0x607a7fe8, 0xd819fb3e, 0x18c0e98b, 0xdcfc2ba4, 0xd19ff38b, 0x1fc86169,
+       0x9f24ac30, 0xfe7c86f9, 0x60174920, 0x6ba1143c, 0xb59da0a3, 0xda788032,
+       0x48c982cf, 0x279b02f7, 0xb977e50e, 0x2dc1e393, 0xa092e9dd, 0x16a959bf,
+       0x3a55464d, 0x037d33ce, 0x1533afd0, 0x9dfa8406, 0xd5a3699d, 0xb1db443c,
+       0xddbe50cf, 0x26407b36, 0x09ee64c3, 0x74f3d886, 0xe503aaf6, 0x35dc7517,
+       0xbf5d23b0, 0xcf49d04b, 0x50f8b15d, 0x4e9d75af, 0xce3002d0, 0xf2362bdc,
+       0x21b19b2f, 0x6c476dc8, 0x33d254c2, 0xa0c3413b, 0x3af8d8fc, 0xebbd9a16,
+       0x02dfa49c, 0x76803f87, 0x18c03eff, 0xddb9d7ea, 0x87e8cb9f, 0xd2729896,
+       0xc3cf3083, 0x4c44a4d2, 0x425dfa5f, 0x13a7a51e, 0x1d3e907a, 0xc71538a6,
+       0x2d4eb8fd, 0xf9780f1d, 0x8e958ea0, 0x587c7c07, 0x54f4a367, 0xd3d2839d,
+       0x0f4a2e75, 0xe7e23943, 0xbe239408, 0xe639418e, 0xa639438f, 0x983f43ef,
+       0x9bb43fba, 0x7de77e50, 0xcd305768, 0xd29e37bf, 0x2de27be6, 0x048e8eb8,
+       0x8f8c64d6, 0x06c40a78, 0xfa06985a, 0x49fd2923, 0x9fb018db, 0x6914ef56,
+       0x293d2c1a, 0xf20556fd, 0xf8cc2fef, 0xbca09ff9, 0x49e32928, 0x8ef7cc1b,
+       0x9396f6d3, 0x6e7e2f90, 0xc47693ec, 0xa0b1fbe7, 0x990e9124, 0x9b20ddc7,
+       0x8c6951d3, 0x59bbb224, 0x8d93e421, 0xa5ade67c, 0x25e58500, 0x64e65cc1,
+       0xb367d9ec, 0x7d01b56e, 0xff79c797, 0xbd16f311, 0x0c74bcab, 0x40ee99e6,
+       0x3ecc9779, 0x52d1f792, 0x7fb052ca, 0x82deec5b, 0xc07f10a4, 0x193efd2d,
+       0xb74cc3f5, 0xc4299cc4, 0x6904df6f, 0x6f51bbe8, 0x20acbd8b, 0xc3b47009,
+       0x669e1329, 0x9f6e4914, 0x1afcb87d, 0x579c66f5, 0x337f914b, 0xc4682e2f,
+       0x93b97174, 0x37159ef2, 0x97fca237, 0xbed7afda, 0xe5bfda84, 0xc538d334,
+       0x628bd40a, 0xd37a8d17, 0x7fe86401, 0xf58f1ff7, 0x3eb886bd, 0x87886de3,
+       0x332b997c, 0x9a3a165f, 0x63b9de51, 0x1e57961b, 0xd2b92169, 0x133535e2,
+       0x9a5dd8a1, 0xedf3e50c, 0x15401692, 0x6365f458, 0x243b9632, 0xdf36c90d,
+       0x0283ed3d, 0x6b2f1f2c, 0x467f31f3, 0x7a40752d, 0xe73f995a, 0x985bd412,
+       0xa0d9a89d, 0xcfc0e9dd, 0xe77e232f, 0x316bc767, 0xbe05c62a, 0xaf306a57,
+       0x157ab559, 0x496cf1d7, 0x4aa3f602, 0xcdf2099a, 0x13fc97b7, 0x93d8a3ce,
+       0xcb0924c8, 0xb1fa0a9d, 0x97eefd2f, 0xd7a80ea5, 0x9431219c, 0x9c81d39f,
+       0xf3fe71ef, 0x18d562bb, 0xc5b35098, 0x9aed8a51, 0x1363922d, 0x58253de5,
+       0x56689f5f, 0x4f7e80df, 0xf64713de, 0x3cc3f2a0, 0xde4e8bf2, 0x42ec8a33,
+       0xc54587e5, 0x71349e98, 0xc3f2bdbf, 0x372a72ca, 0x952a00b1, 0x427f7bca,
+       0xfc97b6ed, 0xfa0534b2, 0x93ac7f7f, 0xa9f00b74, 0x6bd10954, 0xd8499f50,
+       0xaa6adefe, 0xffa529df, 0xbfd43cfc, 0x6f98979c, 0xa417f185, 0x2fd584c4,
+       0xcb0ced1f, 0x511f8c57, 0xb1d884aa, 0xb0ccbcca, 0x5205edfc, 0xfa90f8e9,
+       0xb098a29e, 0x6752d2fc, 0xfa90f8e9, 0x088e5477, 0x23bf2fcb, 0xdf3f2c33,
+       0x8feb8b34, 0xca59563a, 0x94b2bee5, 0xd22ccdfc, 0x5e0ef943, 0x3f9418f7,
+       0xc7f9e504, 0xef953fb9, 0xf80a7f04, 0x80bc7a52, 0xd0e380fc, 0xe20bcb0e,
+       0x59d31e84, 0xda266bb7, 0x83e3f101, 0x8b17c85f, 0xf06efcec, 0x5f22a60b,
+       0xcc876ec1, 0x6e1ed4bf, 0xb9639bc7, 0xbcce509f, 0x67e04e8d, 0xf9055779,
+       0xf5296557, 0xf4860105, 0x391f6f0c, 0xcfa2506f, 0xec3887df, 0x966f4852,
+       0xef188e8f, 0xfc9da978, 0x95dfe118, 0xb8c6568b, 0xa377774c, 0xc3ac637f,
+       0xeb7aff18, 0xc88b9729, 0xeb5bfc2f, 0xa4bd905a, 0xfcea2934, 0x133f9037,
+       0x249ccf39, 0x7f82af11, 0x57617e45, 0xf08bf912, 0x4fcd1293, 0x4a9ffc30,
+       0x50ce73d0, 0x5297673d, 0xbeb94c96, 0xbdfa339e, 0x1837ff9e, 0xacf68887,
+       0x8df1a649, 0x55df83f6, 0x9df7fa29, 0xca3e3f50, 0xfa2914f7, 0xebc3d7f7,
+       0x06d453cf, 0x09f3c83b, 0xd23a6926, 0xa0aaa4fd, 0xc672566b, 0xd96988dd,
+       0xdd055ee7, 0xf5e785c2, 0xf4e74c46, 0x615a4ef8, 0xcb66b7fd, 0x183fee2a,
+       0xbae4517e, 0x7f7127d6, 0x3515c4e4, 0x66f2854e, 0xb8c38d5d, 0x3509f9a3,
+       0x66abe30e, 0x38c72b37, 0xb4ce3dd2, 0x7710e301, 0xff90a42e, 0xf7d71249,
+       0x48ded15e, 0x2f5eca0f, 0x5b6adfea, 0x93e8d7f0, 0xb7ed5cd4, 0xa04e2e20,
+       0xdc3797bf, 0xf8a13bdf, 0x89de38ec, 0x4f767c27, 0x51bf3e88, 0x6083cf7f,
+       0x9538819a, 0xa4faa13c, 0x09e316c4, 0x0e651fd5, 0x1a7e5867, 0x6ed03ffa,
+       0x58446ba1, 0xccd55bbb, 0xc7e07ab0, 0xd43fa366, 0x0ad96160, 0xac5353ea,
+       0x245e7e86, 0xeb10bf1d, 0x740eecd7, 0x453998a3, 0xec51bd95, 0xe9c25693,
+       0xc9fdf917, 0x25cf1e24, 0x1cf5f327, 0x6bf3e24b, 0x99dc3d94, 0xf119ff03,
+       0x58879910, 0x07f60575, 0x7710bb3d, 0x32e99c5a, 0xe76ce0b8, 0x2ab71573,
+       0xba6d6780, 0x41c61fe9, 0xde73d0fe, 0x07f0155b, 0xb7a639b4, 0xdeff20b3,
+       0xf9792b73, 0x66e9a64d, 0xd57fb18d, 0x0a5add57, 0xcf148af9, 0x7d7f106f,
+       0x0956fb66, 0x926280f4, 0x50ca7e58, 0x0594fc5c, 0x16302aec, 0x0276e640,
+       0x3cace3ed, 0x0189ae8e, 0x8bf587fd, 0xabd22add, 0x73e0c626, 0x3bed0d30,
+       0xd8466f7b, 0x059c5c7e, 0x32fb41da, 0x715ff79b, 0x205b6abc, 0xf47d0541,
+       0x74b281e8, 0x24b1c5c4, 0xf73fad07, 0xd42e39ed, 0x37af3053, 0x1fff5711,
+       0xe38075e7, 0x8d5e7c38, 0x4f4e3e66, 0xda096e73, 0xc0b1dcdf, 0x5f88690e,
+       0xdf4a8af9, 0x1580fc63, 0x2eddcff2, 0x706c6fdc, 0xd7f4345a, 0x535e218f,
+       0x106d3c6f, 0x1c7216fb, 0x689c8dc7, 0xd217b0da, 0x7cbc0adf, 0xe2a6e388,
+       0x4b19fd38, 0xd1cc0f00, 0x0a74b19f, 0x641e23cf, 0xfd1fbf39, 0xc49ffeee,
+       0x8f2f146b, 0x17e2ffee, 0xbef4ff90, 0xc2ed0d5c, 0x9f4e58b9, 0x86acbe15,
+       0x59a7e420, 0x9f70637d, 0x3dec9fd1, 0xc7bfeb8b, 0x78409bea, 0xc7886fb3,
+       0xa33725fe, 0xf388c478, 0x2d539e20, 0xfffb86e3, 0x3665c7c3, 0xb35df3a4,
+       0x718d9d38, 0xb436a681, 0xf2169f3f, 0x603cc6ef, 0x7c716ffc, 0xf3833e63,
+       0x641da360, 0x5fdf180f, 0x43f115ea, 0xfbe76c99, 0xd137bfb3, 0x0a2d4abe,
+       0x3edfe421, 0xcf38a26f, 0x602ddfd8, 0x1f599c7c, 0xb269926c, 0x14cefc3a,
+       0xa4d8295b, 0xf6e28ab5, 0x444add19, 0x3b26ed5c, 0xbfb44739, 0x625bcbb9,
+       0xf0b3f4c7, 0x7c44737a, 0x327cc85e, 0x82b34fc6, 0xb7ade511, 0xcffd837d,
+       0xddfe18b9, 0xdcec2c92, 0x74323648, 0x88a363ff, 0x664e0687, 0x155e2225,
+       0xa0640188, 0x599545bf, 0xfe90d261, 0x7a83a968, 0x3693d456, 0x719ca74a,
+       0xb4e3883c, 0x27b001d6, 0x5174bea1, 0x94d5c86a, 0x3601ec33, 0x811c6435,
+       0x038e837f, 0x4e3a719f, 0xa6ff660b, 0x2ee6f208, 0x43a9f333, 0xe82d9874,
+       0xc5196105, 0xed170375, 0x1e669764, 0xbca3265f, 0xa6265d5a, 0x462fac86,
+       0x886a658d, 0x4ecb8d9e, 0x82cbcb0a, 0xe1318d8f, 0x3174c7fe, 0x3236bc4e,
+       0x0fc33fac, 0x3079f831, 0xfa174169, 0x6bedd327, 0x2c491fc8, 0xbfeb0acc,
+       0xbd3864e0, 0x8dc799f3, 0x39f6af71, 0xe67eff23, 0xefcc2519, 0x276c0c28,
+       0x1e7e147c, 0xf9f67dfe, 0x64dcfcf0, 0xc9156fb1, 0x93d1ebb7, 0x514dfd4d,
+       0x4f4fdfca, 0x9e9c3ba7, 0xf4e1e5c9, 0xd384f54c, 0x38457d33, 0xc37846bd,
+       0xcd6a31e9, 0x31f2b0e4, 0xf2c3f21b, 0x3b367f63, 0x18267eac, 0xb8fcd0c2,
+       0xf56115ad, 0x1a5f6c27, 0xf2f49f96, 0x73f5613d, 0xcac2ab7c, 0xfbae7773,
+       0xc53ff8bb, 0x3eac31bf, 0x57f4d992, 0xeb537ff8, 0xfde361e3, 0x9ffff157,
+       0x8b76e422, 0x604edbd0, 0x1987ee2b, 0x0ddd0af6, 0xb6ce97d4, 0x3f715763,
+       0x69562f46, 0x60af4a1f, 0xbd94035a, 0xd4247b20, 0xd480a36f, 0x8d1bd026,
+       0xf506b626, 0x264daffe, 0xe4349fda, 0xf732477c, 0xf3247633, 0x29b3acfd,
+       0xd3ce225a, 0x4ce7a7d0, 0x7ea03fdb, 0x1bea6c13, 0x814c7f64, 0x730e305b,
+       0x579fb4a9, 0xe2a85092, 0x523caa3e, 0x70133c5b, 0x33293968, 0xe1ac8930,
+       0x201ff3e4, 0x6ddb2e3d, 0x4e54e22a, 0xb768eaf2, 0x37fe5d60, 0xec057920,
+       0x6353da2b, 0xe9d69f1e, 0x325e30ab, 0x1b5c2bf2, 0x15fd6336, 0x809fcdf7,
+       0xf7e0ec71, 0x9557eafb, 0x742bd086, 0xf8a34b5d, 0xdcc94d47, 0xb9eb19ae,
+       0x0436aac7, 0x64d3de61, 0x2ec1ffae, 0xbac32534, 0x984f49cf, 0x9ba59fb9,
+       0x3b02cfd1, 0x4e01e749, 0x4237a870, 0x8f64389a, 0xa2006bd4, 0x1bdf1673,
+       0x4e5d212f, 0xc3c61ac8, 0x6109c5bf, 0x646aa11c, 0xf436efff, 0x3a26aaac,
+       0x6035e643, 0x0757f70f, 0x7a471a1e, 0xa0fdecf8, 0x67af0164, 0x463d7c2d,
+       0x0f428bfd, 0x70f4277f, 0x90dfea0f, 0x3b35e87d, 0x3f478f9e, 0xf7366cfb,
+       0x67ef8dab, 0xc639f992, 0x57ee6499, 0xd98ced57, 0xaf043e70, 0x58677ed5,
+       0xc475b6be, 0xca7dd086, 0x5e3d632a, 0xacf5c149, 0xdd537217, 0x87b84c15,
+       0x1a7e5f91, 0xe3b356e9, 0xb1fbfdf2, 0x8d3fa9bd, 0xc69d53db, 0x4653ebbb,
+       0x7f5dfdfe, 0xe9fe6166, 0x9a66c9d7, 0x2f38d7d7, 0xe2439748, 0x072c1c00,
+       0xf4c4ef1b, 0x9402d158, 0x901ef837, 0x8bb8bf20, 0x2d5f5199, 0x919a66f1,
+       0xf699a7f8, 0x5a583ef1, 0xed4ab26f, 0x3a1e60ef, 0xfee4fea7, 0x37ac78ea,
+       0x0fd19fd8, 0x6ffa0008, 0x73753a9f, 0xccdfee1a, 0x807fc895, 0xddf86cf1,
+       0xcda8df73, 0xf18d7768, 0x4bde613e, 0x963e031f, 0x35fa8d32, 0xdc7867fa,
+       0xcf87a212, 0xf7005859, 0x5673f473, 0x9f301bdf, 0x01c7e88d, 0xa7b6361e,
+       0xb7d07f93, 0xbf763fee, 0x181ef504, 0xfe831c15, 0x7f75b9cc, 0xbab8889e,
+       0xa99965fb, 0x9c4f1f80, 0x3f48cff7, 0x1f672e83, 0xe58f1cba, 0xae1097e0,
+       0x86ab2ed8, 0xdd6e7272, 0x7ea189ae, 0x3e6539bf, 0xa2e7414b, 0x39ea3930,
+       0xb97c6445, 0xe7fbe2ce, 0x4eee51c7, 0x033fa998, 0x3e056b9f, 0xe9aa6637,
+       0x18dcf8a1, 0xf24f883f, 0x21be374f, 0xd8d95e93, 0x3ee7431e, 0xd45c0b1f,
+       0xd6fabaee, 0xb8662ae3, 0xe035f85f, 0xfe5c0554, 0x82aa701e, 0xe00df05f,
+       0x655bf314, 0xf7ce3a4f, 0x4ebfa7eb, 0x8ef8b8a0, 0x9f779b1b, 0xbdc9ffd4,
+       0x5ce3df48, 0xc0d806be, 0x5af76427, 0x83f45472, 0xfd5ff64b, 0x4d43f504,
+       0x65f6958b, 0x4783392f, 0x07fac15f, 0x6bf58624, 0xcca43102, 0x1f245a6b,
+       0x6bad67ee, 0x1465bbdd, 0x2d35d7e4, 0xd6984029, 0x63d23026, 0x0f92cd35,
+       0xd42eb7f7, 0xee7855e9, 0xeaf07250, 0xf7b7ec05, 0x62f7ef20, 0xc620fe9d,
+       0x2bcdbd8b, 0xd6fec0bf, 0x0c5958b7, 0xb019cfe2, 0xf6f1c28c, 0x6f1c7e4a,
+       0x0b59ff8d, 0xf5e6bff6, 0x0dd1e325, 0xbf59daac, 0xa87f742a, 0x8b29ff77,
+       0xd35a740a, 0x5102ecf2, 0x779b80af, 0xe9b9d85f, 0x83fd5f5a, 0x7822f1a1,
+       0x399f4cb3, 0x03e36f74, 0x6d15ff41, 0x9c901ae3, 0xbdf6c7a0, 0x2b1e9122,
+       0xd63d414b, 0xbd7ffbb1, 0xf81de38b, 0x3710139f, 0xe8c6e0ac, 0xf93a3ccd,
+       0x1c62350d, 0x05b4f176, 0x169ac1e3, 0xe76885f3, 0xcf14be41, 0x88cf1c52,
+       0xe8fd2367, 0x8c4b40ad, 0x58ccf45b, 0xded90f92, 0xf309596f, 0x805615f9,
+       0x7e8e28f9, 0x6fc82acb, 0xb2f5124d, 0x7168be6c, 0x0a292bf0, 0xc596c7d1,
+       0xcb239fcf, 0x87e5165f, 0xe0b3beb3, 0x7a8d5bfe, 0xadb882d1, 0xcfcb7c09,
+       0x5cbf5beb, 0xeed28ee0, 0xf76e14a5, 0x9acf26cc, 0xf243051d, 0x14da51b1,
+       0xf1b5bb44, 0x275524c0, 0x9a41eb3e, 0x1518bedf, 0xffb251d7, 0x90c199db,
+       0x7c07befe, 0x91bf7ee0, 0xe5f3d9af, 0xedd23354, 0x2aa72fed, 0x7bdf43f1,
+       0xa26becd3, 0x94bc97ed, 0xe6eeedc2, 0x1c45cf04, 0x55bf7ab7, 0x8ef844dd,
+       0xef8802d1, 0xdf3a38b6, 0x365b7c00, 0xfbe28415, 0x4d779a6e, 0xbda1ac9b,
+       0xe25d69ad, 0xf1faa7ad, 0x6e41b21a, 0xce23af9d, 0xf0878764, 0xe302fec8,
+       0x3ae714cd, 0xa6e68fa0, 0xb9469f78, 0xaafaec54, 0x1a8afdd0, 0xcf033053,
+       0xbd9ab619, 0xc887e7db, 0xd5d76c9f, 0xa5cf784d, 0xd5935935, 0x4d99fe21,
+       0x6abd2f9c, 0xed092130, 0x9271d826, 0x09b7c097, 0xad2dff48, 0xee50da0f,
+       0x70714fef, 0x15745a3e, 0xc6ee67f7, 0xab7bac3c, 0xe506b3c5, 0x2c5a6b6a,
+       0xdf476f8f, 0x2f59bed8, 0x3c04ebca, 0xfed2f407, 0x5bc0af45, 0xfa4618ef,
+       0xccd0ee97, 0xad3722c2, 0x0ebcc6d7, 0x5adb57ac, 0xf76a155f, 0xa5dc0f7a,
+       0xb1ccfce1, 0xe34b3dbc, 0xf71c8d78, 0xf90ce208, 0x7db55a64, 0x8fdd887e,
+       0xd45877ac, 0x14c0e833, 0x6051f69d, 0xfc347768, 0xfc5291de, 0xe6d1ca2e,
+       0xea364f24, 0x86270561, 0x512d5478, 0x3bf501e7, 0xfd466f91, 0x168e823d,
+       0x7481d7b3, 0xcde4537d, 0x19d10f16, 0x39455b04, 0x965f5c1e, 0x7d9caa25,
+       0x35bde621, 0x91ef9c33, 0xf2173ef5, 0xaee93666, 0x0ecf3855, 0x4fa6e499,
+       0x1bfe27ed, 0x5702faf5, 0x2edbff39, 0x5cf78edf, 0x272e66b6, 0x6ff77e7c,
+       0x4872f939, 0xe294e6bf, 0xf7feb873, 0x9ab63e05, 0xfbce1775, 0x2a3ac468,
+       0x94c13c52, 0x36247d90, 0x7086e53a, 0xa4fc44c2, 0xf1077b09, 0xf5bbed13,
+       0xafba58b1, 0x09c457b5, 0x4e10f30a, 0x92a698e2, 0xef66e31f, 0x868c3de3,
+       0x06db134e, 0x14dc04d9, 0x4b27390a, 0x90464d90, 0x2841b6e5, 0x58b6c78c,
+       0x3617c7fe, 0xf9e23457, 0xee65d33f, 0x13ef850f, 0x96e4b730, 0xde07f742,
+       0xfb63775b, 0x1b7aaf03, 0xf723ce50, 0x4c056607, 0x37892d2b, 0x5ef04fb0,
+       0x827dd445, 0x78f0d4b8, 0xd2aa99d3, 0x1cd9fce4, 0xac40fe87, 0xb13bef8f,
+       0xd3e388e9, 0x7f285348, 0x8b53c5d7, 0x736d9bd4, 0xfc5fa902, 0x45adb6d5,
+       0x39e36720, 0x80df301d, 0x7f720e60, 0xe1df7063, 0xefe4c9bd, 0x29923e82,
+       0xb98876de, 0x00aff044, 0xac1e24fc, 0x16fb6169, 0x263fa381, 0x9dddfea0,
+       0xfc887ea4, 0xd32e3fe9, 0x25188dbd, 0x91467168, 0x3fe8fdaf, 0x6f723f83,
+       0xb6b3d72a, 0x67ce7e56, 0xed0cdd53, 0x31c38c7c, 0xb3910e4d, 0x37ee54c4,
+       0x973d1f57, 0xf27f0161, 0x4264e992, 0x7ebff41e, 0x6e02735f, 0xfd9d5583,
+       0x955e2668, 0x4ef147b9, 0xdf7a854f, 0xda263b49, 0xeadc3fd0, 0xf1f48a9b,
+       0x3ee8b207, 0xe98514e3, 0xf9f0fe4a, 0x8b0cbed4, 0xf35c9302, 0x53a53272,
+       0x46afa6da, 0xc036b53f, 0x98638bd7, 0xb4e60541, 0x6def944a, 0xfec2486d,
+       0x7dbdff6a, 0x5da9ea24, 0xf67f7ca9, 0xbcb92bcd, 0xac14c2bd, 0x14ea9e5f,
+       0x7099f778, 0xd8976ebf, 0x22bdebe7, 0xfc633d53, 0x65f3ad29, 0x2f20e007,
+       0xed10fdb0, 0xc959b62b, 0x9d798a9f, 0xc5b47a71, 0x6d5479d0, 0xf68642c7,
+       0x34c9cfa8, 0xc777ca09, 0xd3ff93f6, 0xf1556edf, 0xb1c633fc, 0xefbca19d,
+       0x72a7f716, 0xf6cdb000, 0x78c6efa1, 0xc1bf6d31, 0x05c4393d, 0x28c6c39d,
+       0x7b5cd9db, 0x89e3bd28, 0xee716bde, 0xc04e38a9, 0xfd12e784, 0xa35f3ba0,
+       0x93cd0d79, 0x3cc6b8d1, 0xefcf4873, 0xf85ff4b6, 0xcbcd0a45, 0x61c83881,
+       0x6dac9e7c, 0x31abc512, 0x23ad370e, 0xba6aa1c6, 0xb55e7c34, 0x0301c153,
+       0x26f5f9f9, 0x28cf2836, 0x43b1b5df, 0xc2c81b79, 0xe4262cee, 0xd2b6e0ff,
+       0x283cd0a2, 0xf6a1c29a, 0x6db17cbf, 0xed11635b, 0xf032e9ab, 0xf8d20e3f,
+       0x97275c24, 0x7709102b, 0x03a73e6a, 0xb38ba3de, 0xfac1f2f1, 0xe63b7380,
+       0x669ebced, 0x6455c475, 0x79d0bc92, 0x3d9fe19c, 0xdc2e052a, 0x79edac02,
+       0x079893d6, 0x1d31eaeb, 0xea09ac7a, 0x3fd2bf7d, 0x4ef90031, 0xc449f7ab,
+       0xaf9f3be7, 0xea0a6a7a, 0xad66dddd, 0x504ff512, 0xe0fc8e7f, 0xb6eacd37,
+       0xa363b910, 0x9ee8d3fb, 0xb538c45e, 0x873d3767, 0x01df6e7e, 0xe7f3c549,
+       0x067f733e, 0xeda6bbce, 0xf5ea0b1b, 0x925f03da, 0xe6939b5f, 0xf815317d,
+       0x4f5ad857, 0xb166cdf7, 0x2cdf74ed, 0x7e07f857, 0x0327d717, 0x56be2667,
+       0x7787c21f, 0x7eb1bc85, 0x53b458ef, 0x3b5e426d, 0x7485de30, 0xe3dde75f,
+       0x227dffb0, 0xd5da371e, 0x90a343b3, 0x7bd89bee, 0x1dda0e94, 0x7df7429f,
+       0x3db13f73, 0xbfa90ee0, 0xbeffc84f, 0x2df7ee54, 0xc2eef34a, 0x7e7556f9,
+       0x78abc165, 0x19fde7b5, 0x21fa5f18, 0xd144772e, 0x1bf28323, 0x4ab54f21,
+       0xd7eb05bf, 0x57a4645e, 0x898ddf80, 0x9f5dbfc0, 0x095e4eb4, 0x4f01f7df,
+       0x385fd112, 0x7dc4e3cb, 0xac28cf66, 0x0ff1ff5f, 0xfd8f5153, 0xfc049c0f,
+       0xaaf687ef, 0xc03748b1, 0xca2c717f, 0x7a465ed9, 0x3cd390cd, 0x9f685394,
+       0xc02ff887, 0xe5e90e7c, 0x0aee96dd, 0x267dcb92, 0xf8097286, 0xfc007927,
+       0xe72ed03b, 0xa81e4039, 0xf39224fd, 0x3726dddd, 0xd7a0b3f9, 0x78be5027,
+       0x7777e619, 0xce483a97, 0x1f3edcf1, 0x887035e5, 0x8633f1fa, 0xc4814c6e,
+       0x12fba13c, 0xc409a989, 0x8e5f4337, 0xcfebf211, 0x58351356, 0x872c9c47,
+       0xbd8847c9, 0x4f6179e4, 0x6d2ed3b3, 0x7e34617b, 0x84edc69e, 0x7549d843,
+       0x7ffde91a, 0xe36ab610, 0x9b8bd991, 0x40ff2fd0, 0xb10ef2a6, 0x3810122f,
+       0x45f62439, 0xc9a86ed0, 0x7e2dbefc, 0xbc79019f, 0xbdd33d8f, 0x51cd04a1,
+       0xc3f6f961, 0xf8f6ce98, 0x2c65d04b, 0xd87dd15a, 0x173cc5cc, 0xe872d7f1,
+       0xbfbc5cd6, 0xc79677d6, 0xf63f2d79, 0xd026f17f, 0xa00eb1e1, 0x053b147f,
+       0x81fc21cb, 0xb98a359f, 0x49f79786, 0xd7e88f42, 0xbd8f102a, 0x1e50f22d,
+       0xc0035226, 0x5e5ffcc6, 0x74dbdffc, 0xe6953fc8, 0xf09086be, 0xa1af7ba7,
+       0xfa9df6fc, 0x72c50d31, 0x28af99df, 0xb8b16e7e, 0x2d3f1173, 0x46721059,
+       0xa9f7e9c1, 0x8143e266, 0x173d4595, 0xe5c6971c, 0x9ecea260, 0x963e2892,
+       0x9f8c3e1d, 0x05b7645b, 0x4c8ba0fc, 0xf5073e5f, 0x7d2fd88d, 0x371f8998,
+       0x1e7f02fc, 0xd187d911, 0xf5bb016f, 0xe7910bc8, 0x5bf26eee, 0xc622fd8c,
+       0x5f109836, 0xf624dbab, 0x6b1681df, 0xbfaf0d5e, 0x5f2bdc5e, 0xe8e3badb,
+       0xbaebe028, 0xd1ca23d7, 0x0573a16f, 0xeba3c53f, 0xffcfc29b, 0xff09a5c7,
+       0x871b1c65, 0x8ae00bfe, 0x615984f4, 0xf1c0565d, 0x075ee947, 0x899771d2,
+       0x2bf40bd3, 0xf843a7c9, 0xb98bbb31, 0xc4bfea5e, 0xce4f5ee8, 0xbc61ff4e,
+       0x29bb333f, 0x6631c353, 0x767cbc2b, 0xf73f266b, 0x9e327c51, 0xbdba17fb,
+       0xd6bfc80b, 0x7ef067dd, 0x2fa11ac6, 0x717e0399, 0x7eac457f, 0xd6eff08d,
+       0x55ef22fa, 0x8ad53a72, 0xaf98b37a, 0xbd5dc701, 0xaa0fdf93, 0xbf5e19da,
+       0xfd69d056, 0xe28ea7cb, 0x3fb55cb6, 0xa9d05ca2, 0xdee235b6, 0x959cef07,
+       0x657d89a7, 0x46fc1f71, 0x6f7c27ef, 0x47c6fee6, 0x7ca31fa2, 0x57df1a6d,
+       0x206581ad, 0x64fbd77f, 0x8d68e21f, 0xbf7027a4, 0xc257d997, 0x60341efa,
+       0x3eb3ee20, 0xa0f4e824, 0x1fad0fc0, 0xcabf57da, 0xf43c23df, 0xd7fcf874,
+       0x14658f31, 0xe5a47f7c, 0xdfdc16a7, 0x9adbc48b, 0xbff93326, 0x227d04eb,
+       0x106eb5f1, 0x682ddb3f, 0x55f122df, 0x33ae95e3, 0xffb7ee7f, 0xe0dfcedf,
+       0x4dd13af3, 0xfb403995, 0x4a2f5544, 0x7f5eae9a, 0x11eb835d, 0xd77bfbeb,
+       0x8b90c5b5, 0xf1326cc9, 0x06f93cbb, 0x7f70a5e3, 0xcb85af7b, 0xf7c280cd,
+       0x453c0db1, 0xfc205fb6, 0x732f85f5, 0xeb52f5bf, 0x97dc04e5, 0x481eebee,
+       0xca9a9460, 0x7e623ed1, 0x7a5e887c, 0x93c78d29, 0xff5f5c5b, 0x85f9fd1a,
+       0xde1acd7b, 0xc63f5aef, 0xbe3b41ec, 0xb491cc7e, 0xe77621f1, 0xe17f5155,
+       0xc53787de, 0xbfc47ee0, 0x658a1a49, 0x1e3fdb5f, 0x24debcc2, 0xfda01369,
+       0xdf81eed1, 0x6aeebde2, 0xec4cdc57, 0x2cbdb6af, 0x8fe43777, 0x0b5d36be,
+       0x268f3f8d, 0x1c2df5f1, 0xdabb2663, 0x5fee3233, 0xd0bf712a, 0xbbe483bd,
+       0x16dbe0e7, 0x5bbfb7ba, 0xe8182e62, 0x5bf0eba8, 0x67bbd03a, 0x3a0b29ff,
+       0xa72d25eb, 0xe2bfc12c, 0x70825c2f, 0xa9fb402c, 0x2f742ddb, 0x2defdf71,
+       0xf3525e78, 0x4fb497fa, 0x7cfd0eb5, 0x955ec7f4, 0xe1cf1de9, 0x882c77f6,
+       0x89269aa7, 0x968667a5, 0xf51ca99b, 0x69bfe620, 0xc0d4fae2, 0x4b812ae9,
+       0x6e06a703, 0xf3fd0957, 0xb8e8d6e0, 0x23d4f434, 0x2465bdcc, 0xd370f7f4,
+       0xf35fba4a, 0xfaf0f6f0, 0xbcce31ab, 0x5c73eb09, 0xbc397eae, 0x1e20ed7c,
+       0x91d3d275, 0x4333eefa, 0x1cb0e4ff, 0x6040e3c4, 0x700558d5, 0x75a9c3ff,
+       0x73945963, 0xbec2939b, 0x7af5f61b, 0xbd6dedf4, 0x58bb416c, 0xf14cda3b,
+       0x3fe8ed45, 0xf2f14259, 0x82cbc095, 0x9f103fb6, 0xe93adb2a, 0xe622e87e,
+       0x5e748f5d, 0x40e716d4, 0xc832b97f, 0xcda2b8e5, 0x3849f3ea, 0xc3d9133f,
+       0x88dfcc45, 0xe0ebe838, 0x83f42cef, 0x4c4df912, 0x82d5b7e8, 0x9d05abee,
+       0x363c4357, 0x8889ef0a, 0xc446bc78, 0x77b36bdd, 0x15abc51c, 0xfd7ca235,
+       0x4809c3f1, 0xf5c60ae7, 0xeb9f854f, 0x867f831f, 0x7b94893d, 0x23f754b0,
+       0xacdaabff, 0x36fb5f74, 0x6b6e7fa1, 0x0d23fd02, 0x237d03d7, 0xf9bdf8e2,
+       0x91de7c7d, 0x25a6b3f6, 0x5a6f7ebc, 0x406bd12a, 0xe989c1f8, 0xbe088f42,
+       0xb8b3f655, 0x42afe83c, 0xb51f3595, 0xfc7056ea, 0x4780a9ae, 0x1d4bbfe8,
+       0x9eed1897, 0x56fe9192, 0x7e46f7f8, 0x418bee31, 0xbb63bf7d, 0x7f7e343d,
+       0x97db9d3c, 0x1d64b375, 0xef1210f9, 0x8ccfce2c, 0x4c4cef1a, 0xa32e7bc7,
+       0x5a7a7c1f, 0xdee3bc68, 0xf8f11131, 0x95f3d72b, 0xb6a7bf78, 0xde97eb89,
+       0x1137e842, 0xfe4677fd, 0xd5936d70, 0x2d497187, 0x65de89e0, 0x5e505e21,
+       0xc232a4db, 0x3f379a4b, 0xb7bd067d, 0xd5bde334, 0xa760ad25, 0xa525fba1,
+       0x1dfc207f, 0x0dd7cf1f, 0x168f4b74, 0x4371183f, 0x9fee15cd, 0x946bdf1a,
+       0x350fc520, 0x729efc6d, 0x19aba1cb, 0xbedf3099, 0x58c8fff6, 0xe9c3e909,
+       0x296b5fdc, 0xf7857ff6, 0x6dd87e6c, 0x0e87ea8b, 0x91a971ea, 0x1cc6a5e4,
+       0xe4ff234c, 0x3783f800, 0xd1f1bc43, 0xb46f1477, 0x00798a1c, 0x577bc3f7,
+       0xfe3ac779, 0xd9ea9f0a, 0x3767f226, 0xd14a46b1, 0xfff509cf, 0xbdf83b56,
+       0x1d84479d, 0x8013fcc4, 0xeea047eb, 0xfae1fcbc, 0xd537d0c1, 0x996bd702,
+       0x348e65be, 0x0b544f5c, 0xdbcaa9b9, 0x91df4741, 0x90b5507e, 0xc9fcf027,
+       0x41fa45ee, 0xeb87a78f, 0x628ffa99, 0x3bedcfc9, 0x4f703b2e, 0xcffbe818,
+       0x03dfd123, 0xca2b3eff, 0x0277e83e, 0xbce23d9f, 0x2650beb5, 0xf16699fa,
+       0x809bf0d4, 0xbe9b848e, 0xc61f7653, 0xef1db909, 0xaa0e2164, 0x50bd4276,
+       0x7a3e03f9, 0x8f94fee9, 0xe3f92bef, 0x28c74ce8, 0xcef1d5df, 0xfd5bc464,
+       0xe44e3f47, 0xd13ab9fc, 0xf9fd7292, 0xf124a919, 0xf124d7f8, 0x129f77f8,
+       0xabb8c04c, 0x09ec80f6, 0xf06ec7bd, 0x238129fb, 0xff38f0a6, 0xe6957499,
+       0xf1c6df53, 0x29e76a61, 0xef9cbf8c, 0xfc6998f3, 0x80c5e561, 0xef62bf9b,
+       0x300bce18, 0x27ee6b50, 0x329ed5fc, 0x4f6a7cd1, 0xda85a40d, 0x4dfb1d7d,
+       0xbf57fd47, 0x893e919e, 0x6f77a863, 0x908177c3, 0x18b3edbf, 0x668ea7f2,
+       0xfa49553d, 0xa8664b2b, 0x68fb1ebf, 0x7b50a4dd, 0xcfce9c91, 0xc1d219b7,
+       0x0bcc5e85, 0x87417c7c, 0xd8a96c4d, 0x7e78e027, 0x103fc441, 0x8f4aed5f,
+       0xa8dd5f12, 0x6edf5c5f, 0x5c8fb865, 0xf74ace7b, 0x5f687e70, 0xbb3bf14d,
+       0xfa849de2, 0x37bd7986, 0xc758fa61, 0xfdf849ea, 0x37b58e87, 0xb4a7bed1,
+       0xe99ecc29, 0xfa173f38, 0xe1a71f4b, 0xf6ea98bb, 0x611ee98f, 0xe699bb75,
+       0x7b50f98f, 0xedce96d6, 0x0c675f59, 0x2c486fed, 0x8d80e38b, 0x7d77eb0f,
+       0x2ff211cb, 0x61cab7d6, 0x768c1aef, 0x7ef9d327, 0x0381b77f, 0x3e26e4bf,
+       0xfae9e5ef, 0x3e69b7d6, 0xf13f6655, 0xccc9beb1, 0x14f377cb, 0xa76a4efc,
+       0xe71d24b3, 0xbff717bf, 0xed08b9f9, 0x924d4073, 0x1cec818f, 0x7887be1f,
+       0x5d013f1f, 0xc6267c07, 0x3ce95bbf, 0x1c6ba1b9, 0xe819b7bd, 0x9a253b7a,
+       0xe78938dd, 0x13950028, 0x890e3c99, 0xc5d67f2c, 0x9c4e1ff7, 0xc4ecfae5,
+       0x68a4ef7c, 0xc5674d7a, 0x04974e3c, 0xbbf85bbd, 0xcf7ac8f0, 0x8e76fe88,
+       0x7ae04fd6, 0xd0c6f67a, 0x938f5c79, 0x3496a7ef, 0xddf0571f, 0x348b5546,
+       0x5548ed03, 0xaef4a7f6, 0xa805f203, 0x0702aad7, 0xbab1dce8, 0x7702ef69,
+       0xefdc7994, 0xc2ad76e2, 0x333cfd12, 0x79f1c5c3, 0x22a9699a, 0x04ca7a8e,
+       0x34ae9de3, 0x2cfbf83b, 0x76f33efe, 0x2d9787a1, 0x729f9332, 0x7e66a99a,
+       0x17cfc16e, 0x7b3d0b16, 0x91cfd0bb, 0x7d0d86ef, 0x67e8a77c, 0x336cabc9,
+       0xbe442f9e, 0xf853be23, 0x9b994b7b, 0xff7c8ffa, 0xfbf0a77d, 0x404eff22,
+       0xe1e84b9a, 0xea226c89, 0x07d83f61, 0x9cc6fbe4, 0xb7b3b218, 0xd510994d,
+       0xd4f7c04f, 0x8d4f78aa, 0xfaffc1a9, 0x7ec94f9c, 0xfb3ce89d, 0x3fc3dd16,
+       0xa2b2c31b, 0xd90d8f9c, 0xefee432f, 0xe7177ce0, 0x3e0ed50d, 0x97ff8347,
+       0xdd0a3220, 0x3ff832d7, 0x3fe1f04b, 0x9b266f7d, 0x20fba129, 0x2cef6507,
+       0xffde2a57, 0x1aff21ed, 0x0bf64056, 0xd62195d6, 0xb10d6195, 0xac46974b,
+       0xa1e38a8c, 0x5ce925f5, 0xda50a7ff, 0xf9256399, 0xf44bf6ab, 0xc03aae3e,
+       0x0efab1e5, 0x2709f689, 0x7dd274b6, 0x92a5e585, 0xec6ae6e6, 0xc0cfce0c,
+       0xb71b62d1, 0x065e06e7, 0x847025e9, 0x6fdf68e5, 0x123df617, 0xf758934f,
+       0x2effec02, 0x3de1a4b7, 0x68e2ebc4, 0xa823b4c5, 0x2387afae, 0xf519a5c0,
+       0x5e9e2466, 0x22577972, 0x5c7e20fd, 0x3ffa053e, 0x064df391, 0x3ae6a7e2,
+       0x9084f472, 0xfd769db3, 0xf5ffda04, 0xbd5ce2cd, 0x8835a739, 0xe462e974,
+       0xbb38f607, 0xfee46cb7, 0x57ab9d31, 0xbee86207, 0x1c5b7564, 0x6eaaafbd,
+       0x8c9d8fa9, 0xac9b6471, 0xb2be41c5, 0xc62954e5, 0xfc0595ef, 0xa58d479e,
+       0xb9d0fc9f, 0x5cc7de29, 0x7afdf033, 0xba79d87d, 0xe1ebcf31, 0x3dcf523d,
+       0xea56be83, 0x79fe9d7f, 0xe365d046, 0x9369cbf1, 0x7aa31e19, 0xf779c69f,
+       0x82d3791d, 0x276a054f, 0xaf00b3bf, 0x52e33d56, 0xa6a2dea9, 0xc6dc46ce,
+       0x45ffe635, 0xefbf83ba, 0x9346fb30, 0x6377997f, 0x0fea4bf7, 0xfe8a9b1c,
+       0xf1e76f74, 0x9c1096a9, 0x7d046cf7, 0xf57f851d, 0x57e424cc, 0x969254a1,
+       0xcb877f0a, 0xe1fb6d73, 0xe85fdc34, 0xc3ce3941, 0xb404e3f4, 0x4f7bd593,
+       0xbf404c27, 0x8d4f1f63, 0xc9b52efe, 0xc1298f54, 0x87c67789, 0xcd336fce,
+       0xf79f92ef, 0xe27058c3, 0xe5a129b2, 0xf5afff0d, 0x77a441c0, 0xa6182db5,
+       0x413a0c07, 0x5cef4f74, 0x9d2b0ef5, 0x4b79e3d3, 0x4facfde8, 0x866eff04,
+       0x75e507a0, 0x8f339e16, 0x614cd743, 0x615e61f7, 0xcf092501, 0xbf320383,
+       0xf49a36b7, 0xfe314cfc, 0x13a04acd, 0x12ceb5ef, 0x59b393e7, 0xc79bd537,
+       0x337529fa, 0x2dd3bd07, 0x85a51a66, 0x186dc0b6, 0xfdf9e5fe, 0x9024fef4,
+       0xd82f38a6, 0x28e07bc4, 0x9ba21efc, 0xf4182ec2, 0x8b1cf190, 0x5c8c07df,
+       0x1eb19f4f, 0xe83fd737, 0xd6bde05a, 0xf3a7e642, 0x282cb9f3, 0xafa3d1ce,
+       0x6fc40e63, 0x17366e78, 0xa25899dc, 0x17ea8f87, 0x68e47ae1, 0x46de09eb,
+       0x0ea5666c, 0x48149f9c, 0xbb8b5d33, 0xe1f475f1, 0x67dc472d, 0xf7bfb07e,
+       0xe7430517, 0xb1db5a8e, 0xae1ef0cf, 0x3dd376e4, 0x35df0d5d, 0x50129c63,
+       0x58f5067a, 0xd755a816, 0x8f511faa, 0x981def19, 0x8cfdd197, 0xb80ef7c8,
+       0x7f218bdc, 0xbfb8c7af, 0x54b7d3ba, 0xb0efbfc5, 0x7f46c522, 0x96df2607,
+       0x0ff71d31, 0x1fdec9fd, 0xa4e75711, 0x89d409a6, 0x7e419be2, 0x1c55c0a8,
+       0xfae21773, 0xdef1b725, 0x065e1182, 0x31a7d5df, 0x6712f77a, 0x9e51efe5,
+       0x92da1c02, 0xde2afd08, 0x944f661f, 0x6eefe8a8, 0xf434da71, 0xdf38ace7,
+       0x36f9a1b8, 0x8a3df8d8, 0x0f865b06, 0x2f71b8f5, 0x0d9e922c, 0x926e8b40,
+       0xfe46cd43, 0x997bc472, 0x19bcda5f, 0x8f1d6023, 0xdfd317c6, 0x53ddca07,
+       0xbcbf42e4, 0x69bbbc41, 0xc7d27490, 0xefc4d3ba, 0x17773233, 0x8b7693f9,
+       0x9dfb8dba, 0x206faf74, 0xf3bf2545, 0xd896fc70, 0x586f90c9, 0xaa3dd129,
+       0x31355486, 0xcbef00b3, 0x7bf50ccb, 0x17495743, 0x8f6c07da, 0x93837c7e,
+       0x53d6e3df, 0x43ebdd19, 0x7c19143e, 0xc1f10d30, 0xe4f7ee2f, 0x831adedb,
+       0x52d3f5fb, 0x9bb60958, 0x404f7016, 0x4bef189a, 0x46b32f80, 0xf0f7e2a4,
+       0x714c567b, 0x830a7dd0, 0x0214002f, 0xdbf043b7, 0x78c393e0, 0xc256ef1f,
+       0xfc1bc7de, 0xf3962a7b, 0x5c378cc9, 0x155b51c6, 0xcfe48dfb, 0xec3501ff,
+       0x4a307ca6, 0x00004a30
+};
+
+static const u32 xsem_int_table_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x566bff00, 0x51f86063, 0x54b7c08f, 0x8aae1818,
+       0x12d18aa1, 0x6066113f, 0x60611330, 0x4de20688, 0x01f77b40, 0xcc40fde9,
+       0xc0c0ca21, 0x4005c409, 0x37881ebc, 0xa03df100, 0xb7341af8, 0x6061e3cd,
+       0x8bc40058, 0x10097880, 0x303371bb, 0x6f1373b8, 0x06197dff, 0x04452c86,
+       0xfd90157f, 0xfe7e995e, 0x5ed86c1f, 0x9df6be9f, 0xc1b7da00, 0x0617c102,
+       0xa05a37b2, 0x8164d9aa, 0x68cd8cdf, 0xf8d05bf2, 0xdfe8f15b, 0x7fca8ce1,
+       0xffca8360, 0x60c0c765, 0x3fe082e5, 0x16efc1b4, 0xd4099c74, 0xbc42e59b,
+       0xa88c47fa, 0x104c49fc, 0xc472001a, 0x03a8ec47, 0x000003a8
+};
+
+static const u32 xsem_pram_data_e1h[] = {
+       0x00088b1f, 0x00000000, 0x7dedff00, 0xd554780b, 0x733ef0b5, 0x9992bcce,
+       0x24324ce4, 0x02709201, 0x1c45a1e1, 0x62d11262, 0x0409813d, 0xa8513a0d,
+       0xf09862a1, 0x404c108c, 0x3fc6d0a4, 0x05102183, 0xb91060e9, 0x080ffb56,
+       0xded2f45e, 0x8b42d148, 0xd881f074, 0xd7a17ed6, 0x32adb57a, 0x68a3e2a2,
+       0xbdb56c62, 0x5ad7787d, 0x9ccc9f7b, 0x7ad104c9, 0x3fff6dbd, 0xdfb3b87e,
+       0x5af7af7b, 0xc513ef7b, 0x23bcc996, 0x7f18fb18, 0xd6ac672e, 0x121b18c5,
+       0x7e39174f, 0x17ebfe7b, 0xb0dfebc5, 0xf1aedab2, 0x6d9ac750, 0x2f105cd7,
+       0xc636ec67, 0xdfbb18ca, 0x65813199, 0x61185a62, 0x38dc5019, 0x19cac2c4,
+       0xf46559bb, 0x2f47bf73, 0xeb194a94, 0x77576add, 0x55b94115, 0x90bc90cb,
+       0x0d4a3ede, 0xcb4fd849, 0xedef7cc1, 0xe4177556, 0x963f9fd9, 0xe0e2bfb1,
+       0x938e19fd, 0xfc12d8c3, 0xd663147d, 0x982cc83f, 0x251fe90d, 0xb2b7ef4a,
+       0x9f580179, 0x5586bd55, 0x53ebe2b8, 0x0a7601bd, 0x41b11fca, 0xbd5b943d,
+       0x7c704701, 0x263cfebc, 0x9fd9fad1, 0x637c695b, 0x1af576be, 0x0dfb4e87,
+       0x3de589c9, 0x96065f6a, 0x96be1fb7, 0xda1a81c6, 0x4fae1367, 0x29ef7a83,
+       0xc7c4b31b, 0x4229c38f, 0xed7918f3, 0x717bcc30, 0x82c35f3c, 0x0d57dc36,
+       0x6169180b, 0x97d4c254, 0x1cd3ca51, 0x99baf69e, 0xe366a98c, 0xfed22aa9,
+       0x45d90df2, 0x9b2c7e54, 0x9e3133da, 0xf28f21b6, 0x533cb4ea, 0xfd8acc79,
+       0x80d65200, 0xad2e7ffb, 0x3a50b071, 0x5fc787d0, 0x700621bf, 0xac7bf5cb,
+       0x0adf8231, 0xe95bf086, 0x4c63f0e0, 0xfc844d77, 0xa7f3c642, 0xc442c1dd,
+       0x597fd1db, 0x4fed8852, 0x64292e57, 0x7771be90, 0x5fe115ae, 0xfd40e389,
+       0xaa4b1dc2, 0x16c604d9, 0x098ced84, 0xff0c7d5c, 0x3f203bea, 0x513f9e2e,
+       0xe855baac, 0xc1ffc277, 0x9d3f8e10, 0xe6235ef0, 0x0ded200b, 0x8db6fc85,
+       0xc740cbef, 0xfee642f3, 0xbfa63b35, 0xacd4f389, 0x32379731, 0x97f4f7b7,
+       0xf31f17e0, 0xd4f08c7d, 0x192e8981, 0x7a710748, 0x199f1108, 0x25eb00f9,
+       0x5e00043c, 0x6f481788, 0x54c259b8, 0xa89f7913, 0x203e45d7, 0x369141f2,
+       0x4890f28b, 0x223ca2c3, 0x1e512ed2, 0x916ef915, 0x28542def, 0xfa8b958d,
+       0x0de68c0d, 0xbe52f08e, 0xcf8915fb, 0x147b3633, 0xb81ad76d, 0x43ce9e20,
+       0x78085ebc, 0xc04e816d, 0x2974f3bf, 0x6068bd32, 0xfbda78bb, 0xb40bb632,
+       0x123bb5d8, 0xa7fc21da, 0x01e42494, 0x095939a7, 0x73d32f79, 0x452df313,
+       0x099ca06f, 0x1d345838, 0xd60af1f0, 0x6537bc00, 0x7c83bf07, 0x3345e306,
+       0x2e587db0, 0x64d779a3, 0x15cf5e13, 0x04cec01f, 0x12bd4c1f, 0x0f9101a6,
+       0x2a7e105b, 0x6f9c4a0b, 0xfce9c498, 0x48b5351f, 0xfc369f08, 0xc253e015,
+       0x1c234f02, 0x83599d54, 0x06d98380, 0xa149677e, 0x39df9062, 0x3a645761,
+       0x967723c0, 0x3c052ec4, 0x169cdece, 0x871e03b1, 0xe57c73e7, 0x80e42c2b,
+       0x663bbb74, 0xdbf683c9, 0x6ddf310f, 0x9ce8fed0, 0xda08520d, 0x3e67af6f,
+       0xf67dbf6c, 0xc60ca192, 0x26c73edf, 0x4aaa1f21, 0x5e7c8ac0, 0xe486ab31,
+       0xd67cbf42, 0xf306166d, 0xf00ddecf, 0xd86a76c7, 0xc8de7282, 0xd07b45fb,
+       0xe7c7c45c, 0x40daafe1, 0x19d2fefc, 0x835d5028, 0x9678bfe3, 0x3d00b514,
+       0x9201e855, 0x3e75b327, 0x020f31be, 0x2c7c712a, 0x9ecf75c7, 0xa8999455,
+       0x6dd3924f, 0xd24056a0, 0x415abbb2, 0x97898d28, 0x8d7555df, 0x990dfb1b,
+       0x982d2dbd, 0x67b35d62, 0xf2c0e23d, 0xb34776f3, 0x0c0edd30, 0x2875c511,
+       0x27ad2741, 0xbb3bf7c8, 0xbfb26e5f, 0xc3eb8c7e, 0xf6e5d03c, 0xc8156d59,
+       0x2083db67, 0xbbde1091, 0x9c693be7, 0x5e386bda, 0x3c99bac5, 0x0895f297,
+       0x7dc0d747, 0x3fd625de, 0x556038bb, 0xa3be1e09, 0x87c2294a, 0xefa864f9,
+       0x4eb4559b, 0x338e06d1, 0x43da14bb, 0x87f620fa, 0xaab6777d, 0x6b674e34,
+       0x46efe51e, 0xbbb8e078, 0xe2709f9b, 0x90e02078, 0xd566fa9d, 0x8d535854,
+       0x9ff3e7e7, 0x71bafd10, 0xf1f131bc, 0xcee3141f, 0x7bb5adde, 0x635abc71,
+       0xacd1137d, 0x0c0a7960, 0xcf25f209, 0x619a9217, 0x521d3c9c, 0xc43ff718,
+       0x60317efe, 0x2fde3e5c, 0x77bfdffd, 0xd2f93415, 0x3e1e8715, 0xfe43e900,
+       0x11be1e37, 0x1563cdc6, 0x3cc0b705, 0x3e6d7b79, 0xb37d9de4, 0x1bbc8e76,
+       0xdf6cd9d2, 0x5c328ff9, 0x6929d6f7, 0x16c38eb8, 0x414b5d9f, 0x7c38b33f,
+       0x0268e992, 0x27f9032c, 0x884e1e99, 0x3a0b767d, 0xd3c0507a, 0x1583e758,
+       0x0abbdcf7, 0x65331dc6, 0x90f3c96d, 0x6594ebfe, 0xa0dd714b, 0x0f3ff607,
+       0x8ae87ff8, 0x06daef6f, 0x382c95f9, 0x1efe0245, 0xafd6ed3b, 0xd3f6c01d,
+       0xae2f569d, 0x29f595cf, 0x9ebf55f5, 0x1fa4aab2, 0x8bc89b34, 0x9eb8d994,
+       0x363b5189, 0xfbf83ea8, 0x44ba034c, 0x172097f4, 0x356e101b, 0x9f3e5e7e,
+       0x48d8db55, 0xd70773c0, 0x4b37f37b, 0x3e0d0724, 0x087c17ac, 0x869fab0c,
+       0xd8fc81df, 0x068700c7, 0x2a9de761, 0x54efd466, 0xfb41148b, 0x35e3bbb7,
+       0x6a778e2b, 0x1c0ca8fd, 0x28c754ff, 0x32b92a5b, 0xf2ece3bf, 0x07a435e6,
+       0xad538ba0, 0x4e67a09a, 0xfb0df3df, 0x977243ab, 0xe8d65d02, 0x343a6f92,
+       0xba966e09, 0xedcf2824, 0x7d91b228, 0x84ebe825, 0x13bb519b, 0x2c0f92ed,
+       0xd2b4767c, 0xf306b85e, 0x9e89d33b, 0xdcf7afa7, 0xbf7af98f, 0xb63e619d,
+       0x77ad2c6e, 0x1f89fafe, 0xaafb08be, 0x557dd90f, 0xe086fe50, 0x9f5e80a7,
+       0xc212f581, 0x1e1c5c63, 0x55eac9c1, 0x7e7e1093, 0x2d36efab, 0xd62b2f0e,
+       0x47e6fc03, 0x0ab0de87, 0x242b79e6, 0xf06c9cf9, 0xcebabf7d, 0xa863e42e,
+       0xa9caf51c, 0x27cff670, 0xb60b78c1, 0xf4031c55, 0xb00a9eb1, 0x46bc606f,
+       0x0035d807, 0xbfb7c5e7, 0xc520133f, 0xce92422a, 0x07f9fc60, 0xe03b11ec,
+       0x23203e61, 0xa2f3d71b, 0x90768233, 0x498257a1, 0xafc0d672, 0xd0a9ff31,
+       0xcb940ca8, 0xc6721ddd, 0x1e38b4af, 0x1f6477e7, 0x6eb14bcb, 0x1c868f03,
+       0xd66c2f9f, 0xf5c7f418, 0xb8dc3c03, 0xb311c5fe, 0x92d75b3d, 0xa73bb269,
+       0xc2d7f41a, 0x38416fe9, 0x3f0f54d7, 0xfe3089ae, 0x5b3bfe62, 0xf276e7ec,
+       0x9df21d2b, 0x6b1bfe38, 0x6e0eddae, 0xce96eb08, 0x996fd158, 0x81989e1f,
+       0xedce9d69, 0xd83f3adf, 0x25cfe8bb, 0x8fe8e9d9, 0x4fa9824c, 0x819c5d94,
+       0xef5c1b74, 0xc5a790d9, 0x6fe06bf1, 0x9db30ed1, 0x55d850bc, 0x7de6f5c1,
+       0xdd3fedc5, 0xb2497686, 0x79d86f1d, 0xa2842ed0, 0x5cc5aeaa, 0xcbdf760f,
+       0xce9c5952, 0xbfd99d03, 0x8e73b927, 0xed0ead72, 0x453c51ef, 0xed12abbf,
+       0x798ba059, 0x7af9fa6b, 0x3abdea1c, 0x76e3e696, 0x37f84c6b, 0xd7296cff,
+       0xe38c7553, 0xf79ade79, 0x6bcd3f49, 0xc86af4e1, 0xce3864c3, 0x71f199f4,
+       0x9d3324f5, 0xba66e8d6, 0x846ab6bc, 0xc0ecfda9, 0x75fd5358, 0xea9a17b5,
+       0x362f04e7, 0xb86fafe5, 0x86fed4dc, 0xba66e9e6, 0xfb43de7f, 0x3075e830,
+       0xe84cfffc, 0xd9279fd5, 0x7d5a4667, 0x900a5fd1, 0xb0d64f8f, 0x674c2eda,
+       0xc9c838f3, 0xd37e9e0a, 0x0b07e3c2, 0x9a3a0531, 0xf6cbf229, 0x27afc33a,
+       0x977967ac, 0x3a6f94c7, 0x7afc3438, 0x09967ec2, 0x9255b2b8, 0xc8d67c82,
+       0x1672d8ab, 0x5339442b, 0xdc68d2e2, 0x1cb12c9b, 0xdeb0f7cc, 0x6af4951c,
+       0xc0d2f894, 0x64e749d7, 0xfc42dd87, 0x65fe4511, 0x6267ac6b, 0xa7c0bcc6,
+       0xc8d330ec, 0x41d8536f, 0x0e92fb94, 0x2445804d, 0x42e6cbcd, 0x70766efa,
+       0xcf41259a, 0xfccf2d4b, 0xe4809a51, 0x9d39ef91, 0xf11a55ce, 0x55f239cd,
+       0x580c1495, 0x937a68ca, 0x581ffd5e, 0xe79f0df7, 0x5a4ec1ba, 0x7bad05f2,
+       0xf3eca595, 0x166ef75b, 0xeb493ffc, 0xe39c7896, 0xa6f75f73, 0xf3dd73cf,
+       0x1c989d84, 0x3173a84f, 0xf11a6fee, 0x9ea3c805, 0x6bef9996, 0x6905297b,
+       0x415efd0d, 0x694a55d9, 0xb5cdfc84, 0xca3cfef6, 0xe56e57ef, 0xcf21bbf9,
+       0x9def5fa8, 0x8d308b23, 0x1a51c7b9, 0xd66471a1, 0xccbd7e4c, 0x52e78fba,
+       0xa283e839, 0xbb703eb8, 0xdd7bf98d, 0xbd5ea9a3, 0xcd8bb78b, 0x02f6491c,
+       0xea3213d7, 0x39176a09, 0x57da2b9e, 0x9140bb52, 0x8ec4f344, 0x3242718a,
+       0xde0eeca5, 0x4b9dd22e, 0xb718f8e3, 0xc86a7947, 0x7c79efdd, 0x0f27e8b5,
+       0x459cac87, 0xbd015469, 0x085b2659, 0x0e1fe08e, 0x041dbc25, 0x38385ec0,
+       0x788a4fdc, 0x2ff9726e, 0x942b1c85, 0x35bf4a15, 0xca9acfb9, 0xa71fed3f,
+       0x491552d8, 0xae02ff51, 0xa363e807, 0xb077af9b, 0x57ae4e79, 0x92aff652,
+       0xe6b7bd79, 0xf66ce929, 0x4b0ae66e, 0x7ea29220, 0x03c780b6, 0xe2d5a4b7,
+       0xbbed45f8, 0xfd02463b, 0x3d935c9c, 0x09c2fd11, 0xf805d218, 0xd24285e5,
+       0x81ffe80a, 0xdfe4c8a5, 0xb5796bcc, 0xfb8bd73d, 0x5a444ef7, 0xf9e402fe,
+       0xb7e8790b, 0x72f1a94b, 0x1bf022d8, 0x807747be, 0xf189735e, 0x0b4346ee,
+       0x0f7485f7, 0xd8b5705b, 0x9f90955f, 0xc4dd7e7d, 0x12c49acf, 0x0ced19fb,
+       0x951b46fe, 0x390a7a71, 0x75df904b, 0x9784a6b6, 0x48633a0b, 0x27ff0667,
+       0x0d5b0f8f, 0x017d4065, 0x2c967018, 0xc625cfde, 0xebdd2053, 0xb2e47a08,
+       0xc4713904, 0xc4b8c517, 0xf20ed9c9, 0xcf2d82a3, 0xb1eb88bc, 0x40299fa4,
+       0x08d7077c, 0xb90214b9, 0xc7d848e4, 0x272f9467, 0xbb6f429d, 0xea371eb9,
+       0xfafa165f, 0x6f502f83, 0x9e039e17, 0xfb04823f, 0xa2950c9d, 0xc6b2c645,
+       0x32c30c33, 0xc863e5d9, 0xc1ecab8f, 0x8965cb2f, 0x86945af4, 0xf0d4fb70,
+       0xc22af964, 0xb9f2f293, 0x4b90d3c3, 0xb51615c3, 0xc1adbe23, 0x901eb899,
+       0x30bf14b2, 0xf959f9d6, 0xa14bc0d7, 0x52bb0585, 0xcaef87c8, 0x7f1bfea2,
+       0xef34f920, 0x53c52f78, 0x8fd4b5e6, 0xa87cdb38, 0x60932d07, 0xd9a62ed7,
+       0x351f22cf, 0xb397175c, 0xf3ee91eb, 0x7ab4b59b, 0xf310efc8, 0x931acdd6,
+       0x00ad7b86, 0x53e318fb, 0x84b32768, 0xfda26438, 0x1c3f189c, 0xfc36aecc,
+       0x1b813ac0, 0xe7086b80, 0x51b3d635, 0x836da9d8, 0x0b1ba9d8, 0x687c0b7b,
+       0x75fade9f, 0xabb1e109, 0x73b72cc3, 0x676fde5b, 0xa37323a0, 0x530d256b,
+       0x25f259a5, 0xfadec9c0, 0xf3ae0151, 0xb91fade4, 0xe4efc153, 0x42dc0f9a,
+       0x5bff9078, 0x2c5ffc27, 0xf0b7f827, 0x3f7245f8, 0x35f77f63, 0xb6e4f5f3,
+       0xfcf090ac, 0x66dcfa6c, 0x9b0de309, 0xcde6bec4, 0x945145f5, 0x488f8fe5,
+       0x35e79f28, 0x7ce256f7, 0x4fbd0d75, 0x1bae1ca3, 0x943a7ccf, 0x4a39add7,
+       0x08e59574, 0x8b2e5b7e, 0x6f41a1d3, 0xe53c0f60, 0x87be4891, 0x49f10958,
+       0xad7a0644, 0x70b84ed4, 0x2fbb467d, 0x9bf24f8a, 0xd63084a7, 0xe3ccd151,
+       0xe87740a6, 0x62fec129, 0x45a52f04, 0x5ca145f2, 0x34f9b669, 0xa6bc9fd8,
+       0xb422ce66, 0x3e6c1a1f, 0x5b1dda1d, 0xf9451e51, 0x491acf7e, 0x7ecd11c4,
+       0x3f36a2b8, 0xd1768e9b, 0xc9930b5c, 0xd1abd06e, 0x9d0557df, 0xf740b3b5,
+       0xe1d72c68, 0x2197e83f, 0xc586d5ca, 0xd0c998d5, 0x02f1496d, 0x1650e89d,
+       0x66b1cc72, 0xd317346b, 0xffc99b62, 0x50379b92, 0xed8ec07c, 0x3f35b1a1,
+       0x1a61bea9, 0xaac9939d, 0x2c84fcb9, 0xf026c9ce, 0xb592b273, 0x075e7517,
+       0xf5bd29eb, 0x74c0ffda, 0xe01f220e, 0xe6eebe56, 0x75f85aec, 0xb5e77b52,
+       0xed677e98, 0xcf959f87, 0xdcf33d99, 0x2f28dcf9, 0xcf91ce50, 0x41d7e107,
+       0x22e5a5f9, 0xf836373a, 0x07cb64e6, 0x832bed29, 0xd8f9926f, 0x827d3748,
+       0x1854d83c, 0x7efe402b, 0xe3c5ed65, 0x9add7fb0, 0xb08d1faf, 0xb5d7ff38,
+       0x81f3a0ac, 0x5a997379, 0x3f940d25, 0x7fa5e3c9, 0xb490f956, 0x3905ffdf,
+       0xfa0929a1, 0xcbffe0ca, 0xc156faff, 0x2ea7e8d9, 0xa3ce97bf, 0x53d11fc0,
+       0x04fbe9e9, 0xec55ac7d, 0x5033af44, 0xb84883c0, 0xb9e0fa02, 0xf7c2cca3,
+       0xe6fb026d, 0x157e6072, 0x04735ff2, 0xae3ae227, 0xe81dbc80, 0xedc48664,
+       0xd70a099f, 0x8b3f7197, 0x9d865ddb, 0x4743f395, 0xb712dd2c, 0x62d8269b,
+       0x390fd073, 0x30c6d6b9, 0xd0f27c6e, 0x75fcbd7f, 0x90e877d8, 0xd61a37c3,
+       0x83614110, 0x3b1d07f5, 0x7b714543, 0xd81764ee, 0xbeb9e3d9, 0x5e6c7b46,
+       0x4ee7448b, 0xa9a427e0, 0xd2de1217, 0xbb71dc6a, 0x827a122d, 0xbbe036f4,
+       0xd03ddea0, 0x187183be, 0xa5a1338e, 0xd6150ae6, 0x4b64df75, 0xae3d2a55,
+       0x3e9c3958, 0xff82ff2b, 0x0c7e8857, 0x97ef13ae, 0x8a3b4cc8, 0x03ea81a6,
+       0xf6f169f8, 0x9d91dfe0, 0x4a8a179f, 0x59973c76, 0xc6d25c5f, 0x7321d2f9,
+       0x52be73fb, 0xa240e786, 0xa4a5b27e, 0x0b9f8b4d, 0xc1e298b1, 0x5761b3b8,
+       0x852ebe0e, 0x25e4369d, 0xc1ad93c6, 0xf5f454c6, 0x7997e945, 0x7cfa6a6a,
+       0x53fee147, 0xf824e2b7, 0xbb42f3cf, 0x31e47214, 0xb00beed1, 0xe57abf7b,
+       0x2e0e2fa8, 0xaa7ec45f, 0xb3f6b9fe, 0x9ff90afd, 0x33393f6a, 0xf3f0b9fe,
+       0x1fb917c2, 0xd6ece7f0, 0x4f2d7214, 0x173c97e8, 0x7149b48b, 0xd5f209f9,
+       0xfd93ed8d, 0xae41bfd4, 0xd8535ae6, 0xff388df7, 0xea443c10, 0x359d78a5,
+       0xedf74594, 0x704675f2, 0x9467e619, 0x852ed197, 0x585e11fa, 0xb457941c,
+       0x52961c04, 0xc6185bcc, 0x7c5beadd, 0x9ebf9e54, 0x4ec115c7, 0x2fa0688c,
+       0x9c788587, 0x75e4186f, 0x2977b7c8, 0x1e410f94, 0x02df7de3, 0x57fb60b4,
+       0xb73a015d, 0x50ef5995, 0x763a2f3c, 0xd7ca8dab, 0x5927c7f7, 0x479c22dd,
+       0x0ee45f8c, 0x5f3ed044, 0xdf8714ff, 0xf78ed0ab, 0xbc516c07, 0x54981631,
+       0x7699e3c4, 0x675c8f1e, 0x478c4a2b, 0xae518406, 0xf88a7bf3, 0x068826ab,
+       0x2bd797c6, 0xa8de31bb, 0x3e5d80b4, 0x81b70e21, 0x71ccebf7, 0x185fc345,
+       0x85ea92cd, 0x944230bf, 0x73f10e8f, 0xc47ea343, 0x81bf64b6, 0x4e6b0f97,
+       0xd7319e5d, 0x212807ec, 0xa8ce8f7e, 0xfae6bc57, 0x8cae82e1, 0x15ad67b8,
+       0x6a7486fc, 0xc6e7425e, 0x05d9121d, 0x5c1768f5, 0x806bb718, 0x69fe28e0,
+       0x9dac55d0, 0x909105db, 0x76ade385, 0x93f22ecc, 0xb8d0d75c, 0xb4607d86,
+       0xc9ef5faf, 0xec764f9a, 0xa85efc6d, 0x1dfd97e0, 0x3f426d17, 0x6be6c0e4,
+       0x63e98a7f, 0xe7d39be1, 0xd4c2bc10, 0xceb6e0ee, 0x8c6f312b, 0x93ccf803,
+       0xf1993c79, 0x5e7772b8, 0x2431e106, 0x033e06f2, 0x5e7f0873, 0x3387dd1b,
+       0x416656e8, 0xac1ef1c6, 0x093a27aa, 0xd2847c8b, 0x3f7c79e3, 0xbe3c5c1b,
+       0x22a1f50d, 0x6d5da76a, 0x8c4bb4a1, 0x3e7cdd13, 0x0f7daba7, 0x33fdda53,
+       0xc33eef9e, 0xf27de0f3, 0x38901df5, 0xf4178e1d, 0xa7256ab8, 0x343f7163,
+       0xf472fc78, 0xe22cf34b, 0x8f5033fc, 0x72cf2c74, 0x72df98a8, 0x3f1e7949,
+       0xa3ba611f, 0xe8ce213c, 0xb19c51b5, 0xa19abdcd, 0x6cb3ba9c, 0xe42f1475,
+       0xfc8cf9c8, 0x47df3955, 0xc0743b79, 0x79f03f38, 0x8921ee88, 0x8235bffb,
+       0xa7126c26, 0x25e79603, 0xaf746c7c, 0xb649c3ce, 0x45fab25c, 0xb1e6dfec,
+       0x4f3078d1, 0x4779f22d, 0x3e97c8be, 0x027d62f8, 0xb75c3a5e, 0x0b7fc839,
+       0x5cfdc3df, 0xc11d17c1, 0x17ef0390, 0x0e2569b5, 0x0957530d, 0xea462df9,
+       0x76a25972, 0x8c49d7a2, 0xe29349ce, 0xb7b7b29f, 0x36e9fd15, 0xf55bf94f,
+       0x78a6ef62, 0x3f4380ab, 0xe24b8c7d, 0x4e5f3f93, 0xddf86a7c, 0xaf9cdd7b,
+       0x1163cedb, 0x9368a73c, 0xe2995e38, 0xd7fbc3cb, 0xda8b1a69, 0xd1ca0632,
+       0x2e6c5734, 0xce3643ae, 0x073c0451, 0x6e6dbb93, 0xf8aa5e5f, 0x7f78c27c,
+       0x1b4d3e41, 0xfa4fe66f, 0x61a6f581, 0x23bffb0a, 0x5448c1eb, 0x5079c5e3,
+       0xc6e42e9e, 0xd5e46d26, 0x9ede2d16, 0xe3851886, 0xbea05686, 0xe1c6e832,
+       0x14cee9b2, 0xfb15f4f3, 0x5510176a, 0xe3dcb8b1, 0x8af289f7, 0x4067e613,
+       0x871788ef, 0xf87f2c9a, 0x453f46bc, 0x56e303cc, 0x2a65835d, 0x44a6971f,
+       0x7a62e9f9, 0xaf1f8246, 0xfaf1e668, 0x5f3e758a, 0x1fe43f62, 0xcfc5cc57,
+       0x536ed8d9, 0xee4d44fc, 0x9f35a21f, 0x7e275bb7, 0xefc5dab8, 0xf475b435,
+       0xdc605a95, 0xfbcc3bb1, 0xa66b1677, 0x4bb23efb, 0xdaf0821d, 0xfa425790,
+       0x42fae070, 0x1c91f4a1, 0x018f0860, 0x6f824cf8, 0x9e02fe8a, 0x01157e9c,
+       0x0671e497, 0xdd27f79e, 0x29edd0e7, 0x60b1b1f7, 0xdf9523bb, 0xdf314537,
+       0xccbbf113, 0xcd79a7fd, 0xe6f955f5, 0xe3e2ecbc, 0x03a26d33, 0x0c56ddf7,
+       0xc81aec7c, 0xedfbc9c7, 0xf3e4ebe7, 0xc5076112, 0xf426b9e5, 0x077476b0,
+       0xa3b4d9c5, 0xae419ef8, 0x7897da02, 0x859afc8a, 0x3cfc95e7, 0x2edfc850,
+       0xce27cfd1, 0x49924317, 0xc4da37ee, 0x25ed683d, 0x24f25b94, 0x207ae31b,
+       0x7dede4e4, 0xbc862ecf, 0xfd40db1b, 0xc037685d, 0xcbd61eef, 0x85b540f5,
+       0xdd853bca, 0x47c92df1, 0x906a9ee5, 0x3f941616, 0x97335cfc, 0xdf5e62e9,
+       0xbce397b3, 0x9f3a16d5, 0xa1a2c76c, 0xfa9d6a08, 0xda9859d9, 0x7632d90d,
+       0xd4c5e29d, 0x86edc3ea, 0xb8bd8feb, 0x5eec6340, 0x0b4bf36b, 0xf4791e50,
+       0xf150c5a3, 0xf43965e4, 0x63d3a38e, 0xeffe7151, 0x2d2f7c79, 0xcdb4f584,
+       0xd05dbe64, 0x9166becf, 0xc06e9703, 0x165b3af1, 0x63bb35c1, 0x7478c31d,
+       0x47b1e6f6, 0xc56cdc71, 0xace8f147, 0x3aa7a66a, 0xced0bc0f, 0xea8dd4fd,
+       0x600b7913, 0xfd60bbbe, 0xec553f74, 0x7482e11f, 0x34c976da, 0xbf3edfa2,
+       0x021be1ae, 0x51d820a5, 0x5476ed0c, 0xa3b97d71, 0x65ff38d8, 0xe709667a,
+       0x6bc51b53, 0xda429e40, 0x174364e1, 0xa4c67c22, 0xd80280f9, 0x1f6e37bd,
+       0xe55e8a9a, 0xb1ef2e46, 0x6064bdbf, 0x716e91bd, 0xfa8a1a4f, 0xf2ccfd66,
+       0x3ac216b7, 0x9ab999ee, 0xcfbc86f2, 0x8c27d426, 0xdd2f149b, 0xbde3933b,
+       0x007a03cd, 0x7a09ddd6, 0x2a804140, 0xa4d7a1be, 0xb97eefe0, 0x00f5cd55,
+       0xcf9e2ff2, 0x8da62b84, 0x45bc5b3b, 0x24fae2a9, 0x551bd0cb, 0x771875be,
+       0xb451fe83, 0xbc1c70c3, 0x8ea90ddf, 0x7c90edfb, 0x433c212f, 0x9eda6d33,
+       0x83aeb3a2, 0x149287f4, 0x9363de3f, 0x8f1239c4, 0x1d616617, 0xd58769d0,
+       0xc618bdb7, 0xf16998ed, 0xcea284ed, 0xe79492ea, 0x9cd5d947, 0x7d5817df,
+       0x7d45354e, 0x7ba32b5b, 0xdf7e7d8f, 0x96768a0b, 0xebccb9f5, 0xe7e36ada,
+       0x0c1c06d6, 0x1553cc7b, 0x977481db, 0x7ba34aed, 0x94348493, 0x0bef2a8f,
+       0x6881d6f4, 0xf3f12cd9, 0x8b9c5945, 0x9e81ba75, 0x36dd3f90, 0x4968dfba,
+       0x0d9dac9f, 0xe835720f, 0x737114c5, 0x37c85f8f, 0x04ec31fc, 0x4cce9ffc,
+       0xecde517a, 0x9676fd24, 0xe8629afe, 0x0c633c43, 0xf253c79a, 0xea3fbc2d,
+       0xc2b7c441, 0x8192b642, 0xf3b4ade3, 0x7af25eb8, 0xd7e81f64, 0x087fda0c,
+       0x42e009f9, 0x048af8fc, 0x7a252cf0, 0x8141ec89, 0x979722f2, 0x445a059d,
+       0x7d2103bc, 0x46dfc36e, 0xcfaf9c0e, 0x55ebe61f, 0xa27cfc59, 0xf6379e28,
+       0xe7122fff, 0x8c05d097, 0x8e3819e6, 0xde57fa4e, 0x1cf1a11d, 0x42d6734c,
+       0x2ea8c73b, 0x81a2c2df, 0xdfcfb7fa, 0xe03e71d5, 0x0fc3d36d, 0xd4862d77,
+       0x41c731a1, 0xfb1dc780, 0x30f5bd76, 0xc2be381b, 0xbf027f38, 0x433a3ed3,
+       0x0e50e39d, 0xeb7faf39, 0x6983bc7e, 0x41273a4b, 0x72bfa004, 0x03b0757b,
+       0xbc7934e9, 0x57918ece, 0x9deb8c2b, 0x22fbe25c, 0x08f2cb92, 0xd20777cd,
+       0x97fb83a1, 0x411ab672, 0x1d5d9e79, 0x641eb954, 0x4e9708c5, 0x35472281,
+       0x614f0e8b, 0x62966d5f, 0x7c475f77, 0xb47b7ccc, 0xc93ce781, 0x7bb4cdeb,
+       0xeaaefcb8, 0x3e9073a5, 0x17b0b37f, 0xe9923ef8, 0x37bfb939, 0xf5c2aec0,
+       0xf3f355f6, 0x7b596faa, 0xfc1e30f3, 0x4fc13bad, 0x9273b44b, 0x36c330e0,
+       0xbb2de884, 0xe23dd19a, 0x3b96e6bb, 0x9d7f00b3, 0x4d4e2555, 0xf689d918,
+       0x7cf56776, 0x7237b76e, 0x25ec1bbb, 0xaae0ff7a, 0x718f7d06, 0x67ff6112,
+       0xf592398b, 0x8c50677f, 0x1ffee5eb, 0x3e6bf24b, 0xec41fc71, 0x32fafb09,
+       0x9e833ba2, 0x7db29f6f, 0x6305ea28, 0xac14b7df, 0xbca11476, 0x92616198,
+       0xe883f246, 0x7fc83379, 0x29d9377c, 0x3a235e81, 0xfda28e68, 0x2629e9d1,
+       0x37d7e83a, 0x21e74f33, 0xe57d3a5e, 0xdeaf503b, 0x89d23d55, 0xeaabbe8b,
+       0xae51dbb6, 0x785a086e, 0xaedfa62c, 0xfa0f4c19, 0x97bdb3b4, 0xeffafff9,
+       0x867fd36f, 0x0283d99e, 0x6ce7d20f, 0x22a790aa, 0x371fd5de, 0x5fbf0808,
+       0x724f7e17, 0x239fe6fc, 0x82bf833d, 0x471bfa1d, 0x90fb6ee0, 0x636fbc78,
+       0x3ae85971, 0xb36be786, 0xf7801efc, 0xf7a32f0c, 0xaf6f5636, 0x96345ce9,
+       0x3206ebef, 0x705e5762, 0xf76ce38b, 0x2cf9ecd5, 0x7ec0e907, 0x39995010,
+       0x058dbb78, 0xfaae29a7, 0x775f9dda, 0xe2dc75f0, 0x371d6760, 0xaf76c5ec,
+       0xf0f39b59, 0x82c6c61e, 0x6d773a72, 0x7517f903, 0xf092bf11, 0x4a757bb0,
+       0x051abead, 0xf8cadbf9, 0xfb7d4cb9, 0xc6164a2d, 0x9d0f3441, 0x01f92a6b,
+       0x65ff2245, 0xd478c325, 0xa0286f0c, 0xe15e7d02, 0xd2a2dc8d, 0xe3cebe21,
+       0x82c95e28, 0xc2857ffc, 0xce7e36fc, 0x5f8463f8, 0xaed4f7bb, 0xd1af084d,
+       0xcddf74b9, 0x57d5a780, 0xa31373bf, 0x8fa8a379, 0x4f492881, 0xf1fcf1da,
+       0xa3f9f8c2, 0x38c27f71, 0x3ecf7c87, 0x9497e492, 0x288fec7f, 0x31a826ef,
+       0x4f804acb, 0x8f56359a, 0x0d71b07c, 0xc1f00e30, 0x67ee7cc6, 0x7bf3778d,
+       0x267bc63d, 0xb6a07e7b, 0xada5da1e, 0x007ad075, 0x33352efe, 0x0a1bb71e,
+       0x1bda02f6, 0x6a5ddeed, 0x756fc13d, 0x7d0a7d5e, 0xf213a462, 0x8708d583,
+       0x21ac6fc2, 0xbc7eda3f, 0xb2bca199, 0xe9cf07e7, 0xf30ad15c, 0x2eedfe23,
+       0xd1b395f6, 0xad817b41, 0xe23f9536, 0x75fb7070, 0xee2ff202, 0xe283ad7f,
+       0x7d0f1bb9, 0xd2fac5e3, 0x502c79f8, 0x0b9ac8e6, 0xc6b0e7e2, 0x38e4cdbd,
+       0x2ab9ff7a, 0x8cecf7e3, 0x0906fab8, 0xe29915cc, 0x7fb47feb, 0x31f5f18e,
+       0x48eca0b6, 0x5d675f11, 0x3e74e7d9, 0x42997690, 0x470a26f7, 0xf9e260b2,
+       0x4fc2dbe3, 0xb609d233, 0xefefd266, 0xb295e5e1, 0xf713e1c1, 0x16737d8f,
+       0xc8b7f8f1, 0x2ebe2847, 0x51900be3, 0xcc787e89, 0xf9468f90, 0x8cf71e51,
+       0xbf62b8f1, 0x29d6d4fc, 0xc90f1fdc, 0x5fe58945, 0x97753cac, 0xa6f87295,
+       0x965eef78, 0x3f442443, 0x14c5eade, 0x5d736f67, 0x4fbe26a3, 0x7249e237,
+       0x2377bf03, 0xf1134f57, 0x09498973, 0x603b347a, 0x551933d6, 0x7b80fce6,
+       0xf6fa493a, 0xa787211e, 0x9d3dc439, 0x31fe5672, 0xb4fc9c9f, 0xc3af710c,
+       0x2748c97d, 0x235561d9, 0x0919bee9, 0xc9ba0489, 0xfaced2aa, 0xf0b0ed4e,
+       0x77888ecf, 0x9ef15197, 0x7ef109f1, 0xbf7c29ed, 0x63b18636, 0x3d28e3ad,
+       0xf2a3eade, 0x124eb49f, 0x14c8424e, 0x7c0ab19f, 0x71574b5a, 0x57ac413f,
+       0xbc05eb11, 0x3a788867, 0x576c4bbd, 0x2360dc79, 0x8ba09ff0, 0xeb9f8f28,
+       0x9afe9cb5, 0xbef98abf, 0x47f71f7c, 0xa71e7358, 0xb78db0c3, 0x70b31d0f,
+       0xb889b53a, 0x5fbc4a4a, 0xef6c9bd6, 0xffcbf2f3, 0x9cf29190, 0xbf2582a4,
+       0x53e5e2df, 0x8e52231d, 0x4d8ea953, 0xde7a7ed9, 0xcfdb2985, 0x594e2ed0,
+       0xcbb8e57e, 0x89f38e53, 0xbd2147e7, 0xfc4e5c7b, 0xe5fd0d7b, 0xf41ff0bd,
+       0x76e8245b, 0x9befcaa1, 0x928bf519, 0x741977de, 0x9c692cbe, 0xedcc3b25,
+       0xcf9be596, 0x7a4c6eb7, 0x9d4cb71f, 0x3ce266f6, 0xeb9af6cb, 0x5da4f38d,
+       0xcc5f7d06, 0xe734fe2e, 0x7e3e46a2, 0xe830134e, 0xa9f788cb, 0x66651f3c,
+       0xc526a539, 0x37917501, 0x790cf7ce, 0x39f89517, 0xb3c8af4c, 0xa6af5e2c,
+       0x25967909, 0x3148e4e4, 0x6f18895e, 0x8f5f317f, 0x35c8b3e5, 0xb2e33bd4,
+       0x2561f9cc, 0x7102fcf1, 0x7ae502fe, 0xe03b4276, 0xdb0f3d56, 0xbbdfe66d,
+       0x5cc57ac0, 0xe84f3a1f, 0x39426b35, 0xcf1ce51e, 0xf4c7bd22, 0x364e3e12,
+       0x92b5176f, 0xc1edd21f, 0xffab207d, 0xcfb784b0, 0x8d42ede4, 0xe908aeb4,
+       0x026f9c13, 0xa67d9be6, 0x788ab778, 0xa96afe81, 0x07944a57, 0x8a671156,
+       0xba1625e3, 0xf616f610, 0x15b07972, 0xf18481e5, 0x78961292, 0xdb9c6c8e,
+       0xa27df9f5, 0x19b8ad5c, 0x9f8a7ff8, 0x88f6f091, 0xb8cc2bf8, 0xca8fdf0e,
+       0xae171e7e, 0x9bfa6660, 0xf134c8ea, 0xe66aa559, 0x6679e9f7, 0x99a19f3e,
+       0xd7e41bf9, 0x1e74c53c, 0xc84dbdd8, 0x9f932523, 0x8b33fa03, 0x3ffe3d3e,
+       0x9c72bd29, 0xbd009e59, 0x3679c7ae, 0x8925c162, 0xb456a3ed, 0x3cdd10af,
+       0x3c962a8d, 0xf2851fe2, 0x9d31ef9b, 0x24fb5573, 0x3dbdc627, 0x45a5f83a,
+       0xfb755e74, 0x93865428, 0x07d92a2c, 0x269f4fc2, 0x7808f6e6, 0x49eb531f,
+       0xcbd9df6e, 0x6c878c24, 0xeb7d5af5, 0xd77e8034, 0xaf28f935, 0xb9f0cfa7,
+       0x955f0132, 0x699bcd25, 0xfb233f5c, 0xfb73ac3c, 0xbf8bab74, 0xe675515b,
+       0xb1e9005d, 0x8ce2993c, 0xf48434ba, 0xf3efc799, 0x0311fa26, 0xdfa8f9fb,
+       0xb24e6573, 0x2bbaa70f, 0x0f1dfa53, 0xdf4c8b39, 0x20d451fd, 0x4d8cfb8d,
+       0xd1768a1d, 0xe3d5cad6, 0x48e69483, 0xf93dfd89, 0x5afbca52, 0x8d3b4e3d,
+       0xfe6d6957, 0xdb8009dd, 0xe285bf16, 0x53fc5bd4, 0xabe62b24, 0x3dc5c519,
+       0xd28fa3a5, 0xdd041477, 0xb3ee82cb, 0x1ae3b1fd, 0x592731c6, 0x99ed587c,
+       0x3c09cfc4, 0xfbc24d7e, 0xdc557dc9, 0xcbe4f096, 0xc0d86aeb, 0x93aab3f9,
+       0xf53d58fc, 0xcd393fbd, 0x52dceb4a, 0x718a96e0, 0x55e6d67d, 0x702b9714,
+       0xf1453db3, 0xf9fa1975, 0x78f35b19, 0xa2864784, 0xe91e784a, 0x9ef6f3f7,
+       0xe7863649, 0x43601edb, 0xeef9abcc, 0x7fe81388, 0x8676d0da, 0xac68f778,
+       0xa709fd1c, 0xc60b661e, 0xa6ac1e23, 0xfe33f178, 0x42d719ac, 0x8f1776bb,
+       0x5633b4a7, 0xa63d7085, 0xa77c5167, 0xfbb79dbf, 0xec945c79, 0x1fcfa58a,
+       0xba08f08f, 0x1164bd38, 0xb1fdaa5e, 0xfe600b1d, 0x38041d6a, 0x90f4f38c,
+       0xea9f2a5c, 0x75a5cc0f, 0x3ac6ed7a, 0x5fad7ee9, 0x738c15d7, 0x9eb10e54,
+       0x5843fdf5, 0x6a3b22cd, 0x4a4b3fab, 0xdc463f45, 0x3925cb76, 0x3bac1dbc,
+       0x6a750fd1, 0x736c7c66, 0x81cd3f72, 0xd6e301f2, 0xdbd100fe, 0x1540d673,
+       0x2b9e95c6, 0x3cbd12b3, 0x3fd7c657, 0xfdd2afc5, 0x8f24cf5a, 0x7f7df2a4,
+       0x5674ff92, 0xc7ac9efe, 0x263c2196, 0x350d21ff, 0xdde9f81a, 0xfc8fe632,
+       0xe30ae80e, 0xbf7cd557, 0xf1ef8d83, 0xea39d337, 0x94ecbcb1, 0xadd230f0,
+       0xe5c98f02, 0x5c793bef, 0x69ebab7a, 0x4de91339, 0xf0cfc893, 0x66a7bbf8,
+       0x1d4c1d02, 0x05df435d, 0xedecae79, 0x8f3faa36, 0xdf754fd7, 0x29e90fb2,
+       0x724e9f9c, 0x1f5c7928, 0x8f8135c2, 0xf1f39d55, 0x4694fe57, 0xdbab68f2,
+       0x308a9112, 0xf9e0e755, 0x49cca851, 0x95add4f1, 0xe4945f36, 0x579a62d3,
+       0x5dab4ef5, 0x7e53e904, 0x16d51e7e, 0x637a4f98, 0x0aba8eaa, 0x0f2cb9fe,
+       0x98691e90, 0x23cf724b, 0xd736aeec, 0x63d72714, 0xec2c7b66, 0x41ae392f,
+       0xc5b370bf, 0xeef9b587, 0x42629e29, 0x462bf70f, 0x846ede30, 0x7e32bfb0,
+       0x6335e2a7, 0x7c92df96, 0x7cd3ae4e, 0x7b2e4259, 0xd02a4526, 0xf615cd45,
+       0x4cc1a78a, 0xc35e5967, 0x040f030e, 0x752dcfe6, 0x7c71803e, 0xb8f35cef,
+       0x53f72a59, 0x2fc6e592, 0x0bfda99c, 0xfa1b3f43, 0x276a5c38, 0xa1f06f39,
+       0xd1830fc1, 0x947df185, 0x22ff0b9f, 0xfe244fa0, 0x2ff085fb, 0x4bdf179e,
+       0x17f84179, 0xac6fa59d, 0x3fbd46cf, 0xe739d197, 0xf8dfc28b, 0x7e37f095,
+       0x18c6fe83, 0x51fa2394, 0x559f8b94, 0xa6724f6e, 0xd64e5f11, 0x18454c4e,
+       0x09dc657f, 0xa25da257, 0x85557e1a, 0x5e915145, 0x993e48d6, 0x52afb6e8,
+       0x9f9d4145, 0xd0504645, 0x3b0639e1, 0xb3443b01, 0xf4ad2079, 0xe2a5b44e,
+       0x7fee2893, 0x0e53fa0c, 0x09e547e1, 0xfbef8a3f, 0x4f9f6227, 0x1873ef89,
+       0xebc82df6, 0xdd2f3c0a, 0x93bf3562, 0x7cb8d233, 0xc8437216, 0x6d0569bb,
+       0x56c7f50c, 0xc912c790, 0x9daf2e63, 0x3d9117f9, 0x39cf9035, 0x02b16cff,
+       0x3c13c73c, 0x3fca534b, 0xa40f4057, 0x1a4977c0, 0x716e9f8f, 0x00aee606,
+       0x64a96d78, 0x0aa6d724, 0xa2eb0d39, 0xbd1e3677, 0x4cf911b9, 0xd146be05,
+       0xb503d7e0, 0xe7f07f18, 0x0c5f89bb, 0xf492ccf9, 0xed3900e4, 0xfef8a2ca,
+       0x1da725e7, 0x708eb0de, 0x0e67cb8a, 0x74cf902f, 0xc945ffbe, 0x9f18cbe7,
+       0x583fb2f7, 0x3edfe822, 0xb3c97657, 0x90af9df8, 0xad1be2c7, 0x541cb27d,
+       0x1faf2e54, 0xe0b38fc2, 0xff1fcefb, 0xb5c934e5, 0xea1aad47, 0x5a8fa9c3,
+       0x60df78a3, 0x1dfe4ef9, 0x2711cb0d, 0x7ddef7cd, 0xdb751f3c, 0xeeff6c74,
+       0x60e4896e, 0xcb7bbd93, 0xf7bea197, 0xfde19951, 0xd0091601, 0xc6d3b9bb,
+       0x9e41cd39, 0xd9e4ec5f, 0xd68f3be5, 0x8386ff61, 0xd6a68676, 0xae4b43f2,
+       0x97e432fa, 0x6c32b71c, 0x3acf7cb2, 0xfa2f30db, 0xe6175289, 0xfdf0a67b,
+       0x23931e86, 0x64f48768, 0x06cce774, 0x7c03bf38, 0x9b76a682, 0x16673bbb,
+       0xe46967ec, 0x6fd86991, 0x87c93ee9, 0xd1f53a6c, 0x4286c73d, 0xf10fe5bf,
+       0xf6cb5877, 0x412d33a6, 0x203e9dce, 0xdc7ef147, 0x9e27d84a, 0xe1612e4b,
+       0xcbcfc869, 0x69b56cf7, 0x3bc97e09, 0x3d9a77c0, 0x10fe5f9e, 0x6efd03cc,
+       0xc3e49efa, 0xe164de2d, 0x0ef7b4f1, 0x701f6b39, 0xd9d6fee1, 0x5f71b8c6,
+       0x6ed86d1b, 0x31fea449, 0xdbeb86a7, 0xf5069b69, 0x69dbef4b, 0x0f409c5b,
+       0x897ef6cb, 0x76740969, 0xdca8c77a, 0x3bcbd1b3, 0xd7122720, 0xa3c454b3,
+       0xd5b11299, 0x4b5fc424, 0x7de23dd3, 0xdf1a6cac, 0x5fa11b90, 0xa167d232,
+       0x5704ddc7, 0x512b6f03, 0xbc716958, 0x8f02a9f5, 0xe2796f4a, 0x05ba46f8,
+       0x09eb00f1, 0xf4c25c83, 0x985b902e, 0x85b9036e, 0xf08ed9f8, 0x58b37483,
+       0x5664c677, 0x433b7a81, 0xf51b0747, 0x85615e8c, 0xe780567c, 0x2506e673,
+       0x37fb2ced, 0x60d6edd2, 0xff259e3d, 0x95b5da7b, 0xdb33f80a, 0x6015c16d,
+       0x94bbb349, 0x907e95b9, 0x05a4afbb, 0xfd834a1f, 0x0d8297af, 0xcae979dc,
+       0x83737f43, 0x99dfef38, 0x367c11a6, 0xf7d1b50c, 0x50dfb684, 0x8f7f00fe,
+       0xfdb2e1c7, 0xa20fc586, 0xf671847e, 0x185638d3, 0x8f27d467, 0xc9375393,
+       0x5d4e4e34, 0x8fce3183, 0xb9e71c68, 0xeebdb38d, 0xea7af352, 0x3ce31a96,
+       0x5bf80695, 0x7db73eef, 0x6c9bcce5, 0x46bccf5e, 0xae77271a, 0xd052fef1,
+       0x65d6eb0f, 0xf3ed77a8, 0x12c1dc94, 0x374a68e9, 0xae06e7ce, 0xcca3a44a,
+       0x7e266949, 0xa659e8f2, 0x30d5767c, 0x8121fb53, 0xdcfaa691, 0xe893f3da,
+       0x7d92a5d2, 0xd43c7981, 0xbd68d8f4, 0x923661b6, 0x1cc3153b, 0xcc3d5f94,
+       0xf5677245, 0xa8b1c1a5, 0xa8ad71d7, 0x82db5767, 0x57baa617, 0xe24a5f82,
+       0x0b35e58f, 0x1bf5c9a6, 0x329cde85, 0x5e63cffc, 0x964dfe85, 0xc81e31de,
+       0xd15e9bbf, 0x10fefb8b, 0xcfc616f5, 0xed8cd665, 0x2501f0d2, 0x95141f9e,
+       0x804a103f, 0xd001476b, 0xecde824b, 0x90f306b0, 0x8eebff1e, 0x5815db5b,
+       0xd80286df, 0xfec630cf, 0xd3eb7694, 0x2f3c62a1, 0x28f74c59, 0x5efe36ed,
+       0x1b7e7fba, 0xe69e3fcc, 0x4780e967, 0x9bd73a5b, 0x47dbf3c9, 0xefcd324e,
+       0xcd306c28, 0xfcc1b0ef, 0x9b691fc0, 0x00fcc5da, 0x4b194bbf, 0xf9a76f4f,
+       0x340d85ed, 0x6b1b46ff, 0xd69fcd30, 0x0e9abf3f, 0x1f49cefb, 0x2f23ff64,
+       0x70bfef35, 0x36ff79a9, 0x9b61ffbe, 0xa7f314ee, 0xa787fed1, 0x5ff7c9df,
+       0xdfef94b8, 0x9fedc7ce, 0xfe1fa33f, 0x663fce1a, 0xa3edf990, 0x3ff79b26,
+       0x7fbcd1a2, 0xfcff9f3b, 0xf98b774d, 0x97ff345d, 0xfbe6efd2, 0xf348d11f,
+       0x1f41ecdb, 0x786d91d2, 0xc5fa335a, 0x5fa41f2c, 0x9d40c92e, 0xce3c71d2,
+       0xf71a46f8, 0x71a756d3, 0x0d30fbba, 0x9715cde8, 0x1c022ca7, 0x4dfe7608,
+       0xed97a682, 0x3b71b0ab, 0x7a764425, 0xa0f55c7f, 0x6d8cfa4c, 0x9df047b3,
+       0xe5077bef, 0x6e17e610, 0xaeec8cbb, 0x2eff3b26, 0x14585332, 0xfbb8dfcb,
+       0xfb895d82, 0x85174e4a, 0x0963a7ad, 0xdf2fd57c, 0xcd71b0a7, 0x2a691fc8,
+       0x3f918fd1, 0x1da3f68d, 0x28c737bf, 0xbfcad37d, 0xda3afcb3, 0xf913639d,
+       0xdf3f1d66, 0x31e7b10e, 0xb155fc5e, 0x870ad3fe, 0xfc55e9f7, 0x6e1f783b,
+       0xc7df415d, 0x374e145b, 0x024d4bd9, 0xec87bd4f, 0x343efa11, 0xcf8403a8,
+       0x8c8ac475, 0xe6647cbd, 0x5c973c31, 0xd4db23b2, 0xb48b2e6f, 0x178ef7e3,
+       0x402fae6c, 0x5afaeaff, 0xf14c897b, 0xb7387d07, 0xb470d88b, 0x6c0f6a8b,
+       0xf28c62b5, 0xa9eb5aba, 0x39ff4258, 0xfafe7341, 0x3dfe7306, 0xf18ac46b,
+       0x946ef7ab, 0xfc22ced8, 0xdeb9950e, 0x7a7e6798, 0x8a5f7196, 0xc02afbe6,
+       0xdd142860, 0x33c52980, 0x56fefe55, 0xf58d7de5, 0x2ad37d34, 0x43638fce,
+       0x21e3bbf8, 0x2a747bfc, 0x7af277df, 0x3d0eaceb, 0x5ba9eb00, 0x933c132b,
+       0x923b1fd7, 0x1fc05bae, 0x80f8ed8b, 0xef26e1de, 0xf3fd7927, 0x47ef24d6,
+       0xd5b3efa5, 0x43cb9287, 0x91b8f8a6, 0xe8ac1d36, 0x9a8bbf34, 0x077a69d1,
+       0x94c6b7b5, 0xc73231bf, 0x8ec97ed4, 0xa2fd537a, 0xfaa68df0, 0x4c2b1d05,
+       0x5ad0faf9, 0x6b79fb53, 0x6fea99d6, 0x54ddbe68, 0x56c37d7f, 0xf04e7e53,
+       0xafed4c5f, 0xaa69ddab, 0xef391cb7, 0xf28fba6a, 0x11de994b, 0x7a75defd,
+       0xbf9bda0b, 0x77142977, 0x2cfd0b7b, 0x1a55da3b, 0xe41defa5, 0x0e419fef,
+       0x4260662e, 0x52fe963d, 0x9464c77b, 0xe7e48ccb, 0xb64fd30f, 0x3b19f287,
+       0xfc11ae9a, 0x16361de4, 0xbd53c6cd, 0xee3a7eac, 0x63ea1395, 0x03bf509f,
+       0x81a2fd18, 0x752c72f5, 0xfaaed379, 0xe7bb6711, 0x0ec430c3, 0x5291ea5b,
+       0x128d83fb, 0x1b96240b, 0x086666ef, 0xbe28db39, 0x7fb8debb, 0x3f8c14e8,
+       0x63a2da34, 0x5f36cf9a, 0x4e48c497, 0x043ff5a2, 0x29b861e9, 0xef6cb09e,
+       0x9f7f1328, 0xbad32a39, 0x0099426e, 0xb4caf572, 0xe728cbc0, 0xc2c9f459,
+       0x2bbcf16b, 0xf5057f5d, 0x84383b1e, 0xd699faf4, 0xadd7ceaa, 0xa5009f88,
+       0x52d6b56f, 0x4835ba7a, 0x0dadebe9, 0x6d6a9e94, 0xbad634a6, 0x5a57d286,
+       0xa6fe9443, 0x5fd283b5, 0x7d2986b5, 0xa50775b1, 0x2846b42f, 0xa755af7d,
+       0x7e87e0d4, 0xf6101bf9, 0x185bf0b0, 0xd8b0f613, 0xab7c7acb, 0xa3ee7c4b,
+       0xae7d5bfb, 0xbda0c70f, 0x9da2f7df, 0x060e39ee, 0x1b7a64af, 0xd93a8f1c,
+       0xd9238b2b, 0xae4de014, 0x3c71a677, 0x0aac2d39, 0x3edc7def, 0xc61f41fa,
+       0xf0af2141, 0x57c450a0, 0x15bee293, 0xee5360c3, 0xe989e327, 0xddf013bd,
+       0xff7be9ca, 0xcee38e54, 0x647ee748, 0xe93293da, 0xc07d1661, 0x9f05ed77,
+       0x8fd26e1e, 0xc2efa65f, 0xbf0fdbbf, 0xbbf442ee, 0x34aba537, 0x3b01df7e,
+       0x0efa25c5, 0xefbdd3a7, 0xd00fe3be, 0x7995c1fd, 0xeff13872, 0xcba7241b,
+       0xaec28abb, 0x1d34fd84, 0xc2fbe734, 0xc9175552, 0x16732d63, 0x556a5fde,
+       0x468fafc3, 0x6a51e7fc, 0xcf32b38c, 0xb3bcf346, 0x7fb89477, 0x607ae11b,
+       0x15e8879f, 0xff6a4efc, 0xb067af79, 0x30f58c71, 0xe6bd8076, 0xf41da7a0,
+       0xdac1d61d, 0xca4f4a0f, 0xde746cef, 0x21fad873, 0xf0690bda, 0x5473df8f,
+       0xdb8c6f28, 0xf08725d4, 0x61b03b3b, 0x4fd07cd3, 0xec7a7c33, 0x9add3837,
+       0x875cadef, 0xde5bfe38, 0x0a4b36db, 0xa0a34fd2, 0xd5c51ea6, 0x8c9ef781,
+       0xe24db6f7, 0x23b9739c, 0x446a0b66, 0x6768dd8e, 0xd0649fcc, 0xafdd769f,
+       0xfdbfde41, 0xfba32b53, 0x9a9de2b7, 0x0e1e1e31, 0x40bf205a, 0x581fe6e4,
+       0xb7d77146, 0xec92bb1f, 0x402c8593, 0x581a10f7, 0xffb7be98, 0x1c50b32e,
+       0x8bf65dfb, 0xfc128b8c, 0x2f78758d, 0x9bf50cbd, 0x7d82cf59, 0xd92fca66,
+       0x662fce61, 0xbd20e4d7, 0xa566de2f, 0x118dcef8, 0x970afd73, 0xc25bf04a,
+       0xdca0379a, 0x95fc2f5f, 0x86532af9, 0xff2fdf03, 0xf5e5fdc1, 0x1c9df1e3,
+       0x7c46df97, 0x6e2cc6e0, 0xdaed2ca7, 0x72efc369, 0xa2e076bc, 0x61997eaf,
+       0x8c06c8ff, 0x951e8493, 0x8c9dde28, 0xfebb4fbf, 0xfa1af5e4, 0x429c4064,
+       0x5ef963ac, 0x917be529, 0xbc492eed, 0xfa51082f, 0x61b7d8a0, 0xca4feeb7,
+       0xffca491f, 0x99ff2924, 0x4ccbcde9, 0x0ae256f4, 0xe10d77ee, 0x82f685f4,
+       0xfc52f4a4, 0x9f8f33f6, 0x23fc6037, 0xf9f8eb9f, 0x1d3ef4cc, 0xe7c9ffc6,
+       0x80f17e3a, 0x2ae0bff5, 0xf2fe381b, 0xb1f77c1f, 0xa59bc810, 0x06777eff,
+       0x5b7a1bbe, 0x7be0e709, 0xed3dc6a1, 0xde58f7f4, 0x48194252, 0xe4476fcf,
+       0x6e91e794, 0xba0f41b7, 0xdd4bef0b, 0xf8c2bf84, 0xe9bc3cef, 0x3ee7b42a,
+       0xc95563dc, 0xa76bda5f, 0x1d37dbfb, 0x61ee91b8, 0x9e55fe41, 0x1de748df,
+       0xf4cd074d, 0xef5ff4b9, 0x1ef8c1ce, 0x27f08a50, 0xdd2f64a2, 0x698dfbb4,
+       0x589a87a8, 0x7259f12f, 0x0fff9c3f, 0xeb1f2459, 0xeb03996d, 0x2698f38d,
+       0x03a69701, 0x57dee89b, 0xe21981d3, 0xec8c4b7e, 0x0d7ee4f0, 0xabfa0ec2,
+       0x1697bc4b, 0xb80c5bf7, 0x83b708b0, 0x67ba1eda, 0xaeb0abc2, 0x9a7fbb33,
+       0xcbc02521, 0xaebeb7e0, 0x87f7ff05, 0xf972e0da, 0xc5efe13d, 0x9fa845fb,
+       0x6fd85076, 0x68da7987, 0x7da0668d, 0x9f93b8dc, 0xf77e363b, 0x45ef0781,
+       0x3b25f57f, 0x7d9797c5, 0x2e17e9f7, 0x47b2fc85, 0xbe6adeac, 0x1394970d,
+       0xfc134fc7, 0x06a8fbc3, 0xff7e963e, 0x01769b69, 0x8ac96f2f, 0x23d965e3,
+       0x82ec6d47, 0xda98f081, 0x7316d475, 0xd74fc0a5, 0xced0d3ab, 0x23e87b6a,
+       0x6f95fa1b, 0xbe18911f, 0xcf0018af, 0xbd934f9d, 0x7c227080, 0xe3f57c0a,
+       0x137da92f, 0x7ae505e0, 0xdb92be32, 0x52f9449d, 0xf8c5c7c6, 0xf7f7d024,
+       0xec71887e, 0x087dd95f, 0xddef8687, 0x79fb819c, 0x74e66953, 0x8e7b7f7e,
+       0x5837f30e, 0xa52a3943, 0x3be1bcbc, 0x2dfd10b7, 0x0e4b7139, 0xa1f50ff7,
+       0x1a1fee3c, 0x745cfb8a, 0xe7da6cdf, 0x3a241662, 0xa65fb86c, 0x57bf9b7b,
+       0x2923d558, 0xf05da4f8, 0x00bb9bc9, 0x37cfb0b9, 0xd0d6fdc5, 0x6efe642f,
+       0xde3f9c47, 0xd9e3c462, 0xdeffca4a, 0xbd75f1c1, 0xebbc62db, 0x77e89872,
+       0xc46ec6f7, 0x7a053bd3, 0x9ad5c62e, 0xf0121298, 0xfbc63e90, 0x732a272c,
+       0xfbf89e39, 0x7607ea24, 0xc72c54c1, 0x7a56ddf6, 0x8fd09497, 0x9f145c7d,
+       0x1f98957f, 0xfa869dd6, 0xd61ccdfc, 0x38bbea90, 0xe192ddfb, 0x04b37787,
+       0x77e04b3a, 0x6fbbffce, 0xf06efce7, 0x0aa6a47f, 0x3cf77feb, 0x87ec23e7,
+       0x15d612fa, 0xa3faa5cd, 0x0f9224b3, 0xc54d1676, 0x82adbbe7, 0xc9f5cdcf,
+       0x57eb02f4, 0x9fb680f0, 0x2c9e706e, 0xd5c503c2, 0xfe836f16, 0xe7157289,
+       0xae3818cd, 0x844bc7c1, 0x93b9083c, 0x37ddbbee, 0x1efe9ce4, 0xf235a34e,
+       0xbfc8bde0, 0x0d21afc0, 0xf74ad7f9, 0xefbb7fba, 0x06be17c9, 0x2edbfb7c,
+       0x72cd6f83, 0x1b6f9935, 0x73a1eff6, 0xfdbe64c2, 0x2958036d, 0xca16f8a9,
+       0x436df253, 0xae457fec, 0xc87c701a, 0x86ab966d, 0x9e0c1c9c, 0xefd272c9,
+       0x49ca52d6, 0x959e79f8, 0x8347a40f, 0x5bfa0d0e, 0xe9cb6ffa, 0x4e9faffc,
+       0xa7ec3a0d, 0x070e8353, 0x704c67c4, 0x815fae4c, 0x10b60c3a, 0x78a56438,
+       0x4961e362, 0x1d0b67dc, 0xf04a5e1b, 0xb1cd49d2, 0xdee1b1f0, 0x29247cc4,
+       0x5ed495df, 0x9207ca4f, 0xf29307da, 0x8df6a6cd, 0x31b49f07, 0xa9a883a2,
+       0xb7cd7d9d, 0xfc296bd9, 0x350f4358, 0x16df781d, 0xefc8fa42, 0xb3fca1b5,
+       0x802c06de, 0x65c7c3f1, 0x00f61f8a, 0x3cc0378c, 0xe88afb3d, 0xc9ddb5bc,
+       0x21decdfd, 0xf7280db6, 0x8cded47a, 0xb93bcc2c, 0xe813dc7d, 0xd824f0cd,
+       0x961eaf99, 0x22c76e49, 0xd0a1efa9, 0x6780534d, 0x2a7b906c, 0x27b43c46,
+       0xbcddff8d, 0x7f45d94a, 0x2c2fa35f, 0xc2f5b9d3, 0xdfd1d775, 0x3c39e861,
+       0x285aeaea, 0xccacf45f, 0xba42678f, 0xbfc13432, 0xb6858b78, 0xdcf0964f,
+       0xc9d1336e, 0xdfdcc382, 0x3539b858, 0xfd152fdd, 0xd156bb16, 0x4fc072f7,
+       0xef189538, 0xb869c635, 0xf0fca92f, 0xc23f8295, 0xdd2df7e4, 0x0a0fae6d,
+       0x219dc9bf, 0x3644cce4, 0x30ebdc51, 0x52bf877d, 0x2d757f1e, 0xb8e7a1e0,
+       0xa4377f4c, 0x784cb0ef, 0xcfc7dbe8, 0xdf88594d, 0xf589bd23, 0xe1cf12da,
+       0x8d1f20cf, 0x9d5e5c1d, 0xf2e5f479, 0x3cbd226f, 0xdf09ebf6, 0x63ccf486,
+       0x11f98d2f, 0x9ff07fe6, 0x0366bf85, 0xe23d4fdb, 0xcf7278a4, 0x79d13711,
+       0x15cfe3cf, 0x87f3137e, 0xebc714ec, 0x04d1f239, 0xdb9ebba4, 0xef280dec,
+       0xf7f80a7a, 0xff1edb7a, 0xf48c4268, 0xdfc27aec, 0xa7ee0ca4, 0xd3fe1df5,
+       0xa71ef82b, 0x0aec30ef, 0xe92388ed, 0x3f4d47c4, 0xa4477fe4, 0xca8ff1e7,
+       0xfc0def13, 0x49b9fbad, 0xb8f4f39c, 0x5c7eed59, 0xc7c7879f, 0xc9747e9b,
+       0x1cf0eb03, 0x1b51c0fc, 0xfa9c4fde, 0x404cbfe3, 0x9fb3da39, 0x59ef47db,
+       0x73c1df63, 0x9919a98c, 0xe700ad1b, 0x869990f7, 0x11923d81, 0x9f1a1e98,
+       0xa17f2e0a, 0xc2b9ca78, 0x8f086be3, 0xf008ff21, 0xe72e7490, 0xca7c11dc,
+       0x1fc8f533, 0xca35f95f, 0xeffc2383, 0xfdfb18d9, 0xb23ad76d, 0xdf693e5b,
+       0xe861ff6b, 0x2df75ce0, 0xdf65cf45, 0xf7cefe3b, 0xd1a1985d, 0x60f992fa,
+       0xbe3f9d20, 0x75dff29a, 0xe7bd68fb, 0xff07ef48, 0xbf7de8d9, 0xfb91df44,
+       0xe7ff7da4, 0x07bef9df, 0x75b3fbc7, 0xde2aef02, 0xf1fa6803, 0x9f7d685f,
+       0xf47dce56, 0x86f74a0f, 0x458cff5d, 0xb4227e7b, 0x176162af, 0x9633161a,
+       0x44ecf13f, 0xff267da8, 0x3bdd0f49, 0x31d73a4b, 0xdc9971d2, 0xf1229c3f,
+       0x23ccabfb, 0xfb90bf09, 0x7d85c353, 0xbf157c31, 0xff3c3a6f, 0x544f7e4e,
+       0xb9e1b6d1, 0x0b8533e4, 0x82c7747c, 0xc418bc95, 0xc8997abc, 0x6fcafd9b,
+       0xf0974c4b, 0x95e1483d, 0xcd9ed1c7, 0xdec997cf, 0xdcec9485, 0x78aa32a7,
+       0xe4cda379, 0xccd0ccf7, 0x377e107e, 0xf25fd128, 0x192af18b, 0x4ba57f5f,
+       0x0e00448a, 0xbd3a0a53, 0x329d3718, 0x1ef0cada, 0x5c1634ef, 0x7e05fe8f,
+       0x3c712887, 0xc4b56c05, 0x6bbe62b8, 0x51748285, 0x45e8f685, 0xcf227ed8,
+       0x3a1487e7, 0xe8f610bf, 0x42856d74, 0xa27f35fa, 0xe25df082, 0x75f4b438,
+       0x5bc6aa3c, 0xb18eb0a7, 0x87242c67, 0x7e47f81c, 0x76e31d61, 0x613f9428,
+       0x3f10cb51, 0x07f97d57, 0x30cb5dbf, 0xf78bab6e, 0x7f1e0166, 0x1fc7f3ff,
+       0xff8f2e4f, 0xfbfc2f7d, 0x1fc133c8, 0x8b1f7858, 0x169c01a6, 0x99942c29,
+       0x89577185, 0x5dc5329d, 0xf9fc79cd, 0x9c7c4e4a, 0x183f6a4f, 0xe9de7efd,
+       0x4e5f800f, 0x10ec668d, 0xc6ae74a6, 0xff8685e3, 0x0e61f176, 0xf19fa6af,
+       0x9d81a4ef, 0x03be272b, 0xfb9327ba, 0xcdf83ffb, 0x6fd08bfe, 0x9f19e8aa,
+       0x94b8f9c9, 0x6166ddff, 0x2d31f697, 0x3e42e7d3, 0xe749951e, 0x94e5c76f,
+       0x487eb9df, 0x86ff73f8, 0xed201bf7, 0x72c2cdd9, 0x939f7d26, 0xdda188e2,
+       0xc527b60e, 0x32db8afd, 0xc088b88d, 0xe5c8fc1b, 0x8b7377f1, 0x22666ba0,
+       0xbf54cede, 0x88184cad, 0x9539fc07, 0xb7f21e70, 0x47fd17c2, 0xce43ef84,
+       0x0a40b4d8, 0xe026df7e, 0x7f13d577, 0xf9dbb8a4, 0x905a7787, 0x6ddfcf7e,
+       0x24477f31, 0x25c5f853, 0x75d704ac, 0xfa4e13d5, 0xc74d81fb, 0x57de1f65,
+       0xbefc3a6c, 0x5ce2982d, 0x389e192a, 0x7f73c63e, 0xbc12a992, 0x5aed647e,
+       0xd1fd7080, 0xf97dfcbb, 0x59785b21, 0xc57e75aa, 0x88b9d7c3, 0xa13cdd75,
+       0xbe0fefe8, 0xe8ae3d15, 0x7673f414, 0x92c4ef1b, 0x1d118fe9, 0x1165edf7,
+       0x17e8e394, 0xf65277d1, 0x0155eff1, 0x3f44ee48, 0xf2fdf80f, 0xd8c138c4,
+       0x1bfc8f83, 0x0e9b9fea, 0x7fbe2a4b, 0xd98949be, 0x74d82e30, 0xbca323d0,
+       0xf719a89f, 0x660bd539, 0x4fc5f025, 0xef821532, 0xe8fe9793, 0x83f79c7a,
+       0x8d9dfc33, 0x066f54fe, 0x0e0f8bea, 0x307c445f, 0xdfbebed8, 0xadfa96ca,
+       0xb8230e38, 0xf8c3d327, 0xfca6697d, 0x30e0e597, 0xecabafe4, 0x14be55b1,
+       0x39546bf8, 0xbe59cefe, 0x931ffe45, 0xf21bcf6f, 0x7e27282d, 0xe554a767,
+       0xbe4138fa, 0x6f92a6e5, 0x172d252b, 0xf1f2bee1, 0xd788b951, 0x5d3206ff,
+       0x80009b66, 0x00008000, 0x00088b1f, 0x00000000, 0x7dddff00, 0xd554780b,
+       0xb3dae8b9, 0xc999ecf7, 0x649324cc, 0x763c82f2, 0xe0283100, 0x540c0624,
+       0x4521e6eb, 0xb680e91b, 0x84c07c07, 0xc4c9de60, 0x2f4a81e7, 0xe4bc8903,
+       0x062368d4, 0x0284e81a, 0x28350b62, 0x8380c068, 0x57c78a58, 0xb68ad4fc,
+       0x5e508307, 0x0be03086, 0xf5dcac7b, 0xcced6bff, 0xa2899d9e, 0x7ef7bd3d,
+       0x9b7e7e37, 0xebdad7b5, 0xffd7bff1, 0x3dcd6bff, 0x7c5398af, 0x08b90923,
+       0x9e47d77f, 0xa21116db, 0x7a790858, 0x679f1591, 0xf1269077, 0xe124fa2a,
+       0x9090a469, 0xd92b0ec0, 0xbbffdb94, 0x9089976c, 0x79fe8431, 0x8228ef65,
+       0x4258e27f, 0x143fc1e6, 0x9fa2ee42, 0x72d01426, 0xe2e28490, 0xf8a7b969,
+       0x3e9a3494, 0x91f2049b, 0xc8bfb595, 0x3ca3e41e, 0x8ffb165e, 0x759f5df3,
+       0x7465dfd0, 0x29eeb65d, 0xcdeb18de, 0xa4840977, 0xa5ed3210, 0xce85652f,
+       0x11e7747b, 0x9f41cf93, 0xc9444c3b, 0xcf2bcc8b, 0xb71f74e5, 0x90147fd3,
+       0xb4d79802, 0x42ce6c97, 0x41ff0f0a, 0xeba363d1, 0x290a77f3, 0x6ca1bab7,
+       0x58b340f6, 0x33972570, 0xc613c2b8, 0xca7ce951, 0xff1c2e5d, 0x297b7305,
+       0x3385f7c0, 0xf0a01256, 0x553725dd, 0xfbfd1d7b, 0x405129b9, 0xda45df38,
+       0xfb9d1def, 0x279c1eff, 0x2684759c, 0xb3dc75d2, 0x382d0493, 0xa11342bf,
+       0xd95bf3f3, 0xe011eefc, 0x22ee7d15, 0xdff4c5c1, 0x83a1ecf7, 0x8249e1bb,
+       0x457fda04, 0xfacb1b7b, 0x1d79f683, 0xd02f7fdb, 0xc14ebafa, 0xebeda265,
+       0xebed8224, 0x7f7bec42, 0x7713ee47, 0x540afed0, 0xdb4ac7b3, 0x6d442817,
+       0x922370a7, 0xceadcc6b, 0x5dcafcc8, 0xff79c212, 0x876e17f8, 0x91e93ff1,
+       0x3d4fcc09, 0xa6ef8e18, 0xbce93fed, 0xa0c4813a, 0x73b9ed0f, 0x6c9aa911,
+       0xa207e426, 0x6467886f, 0x74f0fa7f, 0x5f9545c6, 0xeb627718, 0xaf2fc0b3,
+       0xe8cb9e8b, 0x9132debc, 0xddfa768a, 0x144ee31b, 0x85ed7d02, 0x3e3c50f9,
+       0x77afe9c6, 0x9ffb0051, 0x5f5b32f4, 0x682156ed, 0x10eef581, 0x8a377ad8,
+       0x73fe8541, 0x652ff8ca, 0x1ee57f98, 0xf2d1a481, 0x6ad34b74, 0x4f27ad07,
+       0x0126c99a, 0xd7ce2f87, 0xa2bcc3d1, 0xf14262ea, 0xdf8b60df, 0xcf1f2840,
+       0x30758893, 0xc76a8fa5, 0x7d025394, 0xe2b45d5f, 0xfe4f089c, 0x00a37e9e,
+       0x34e2effc, 0xf9935772, 0xdd1d6ea3, 0x7ddc7594, 0x967d3060, 0x9fbf44b7,
+       0x9d786166, 0xd8215bf6, 0x195ae146, 0x2427ae8c, 0x7aa17288, 0x67fbf44b,
+       0x8ba7faf9, 0xf22f08dd, 0x14d9e8a6, 0x359e7f83, 0x8720e9c2, 0x144b8513,
+       0x4c42829c, 0x174c5138, 0xe046a7e7, 0xf77af952, 0xbf50c1d2, 0x4804f046,
+       0x706b75ff, 0x835fae33, 0x108fed23, 0xef355fda, 0x4db3bcaf, 0x70fea626,
+       0x846ce0d1, 0x0ddc1f47, 0x7209d8f0, 0x8ffa4ae6, 0xc5f5727c, 0x283748a1,
+       0x49ff0267, 0xf1c742e1, 0x4d2cb84e, 0x705fb72f, 0x75707931, 0x194984d3,
+       0xea48e004, 0x5acace81, 0x41903eee, 0x90e631e1, 0x8c394052, 0xc5bc60fc,
+       0xf774a417, 0x728c2d94, 0xc4c3a350, 0xa717c644, 0x185f7c39, 0xe0113f54,
+       0x5c10efe8, 0xfd1e298b, 0xd5c21b21, 0x46d1e94f, 0xf35fec9b, 0x570e14f9,
+       0x4ff90597, 0x29fbbc40, 0xfdb44c1e, 0xa65e4e94, 0xbafe0078, 0xc5e193ba,
+       0xa5e185bf, 0x000f8490, 0x045aebdc, 0xa7ae884f, 0x196ee3ae, 0x67c9a3d6,
+       0xe3d0e7fa, 0x4afd0629, 0x7297e8b1, 0xc3394120, 0xdbcd57f1, 0xfd34b34d,
+       0x7f1d3079, 0x368fe51a, 0xdffa4324, 0x11b7d037, 0x66f0fd7f, 0x224257c0,
+       0x8036db83, 0x17e003ab, 0xf83e4196, 0x389f5443, 0x297ef523, 0x49d70510,
+       0xfa302f6b, 0x162823db, 0xa0370745, 0x463f5a67, 0x33d01b83, 0x44b3a1e0,
+       0x85197284, 0xff6e7277, 0x747a52f5, 0x72bef9e8, 0xffd611cf, 0x6243c13a,
+       0xd33bfbac, 0xeba477f7, 0x313df881, 0xdfbe9a31, 0xbb5f85b0, 0x8f7be81a,
+       0x3a4f7c80, 0xd0c90913, 0x6644e7e9, 0xa3653c57, 0x1fd7407c, 0xd9ecc57e,
+       0x0f97f4a0, 0x9f9c3843, 0xf2e5fb02, 0xb011fbc8, 0xefda2490, 0xaa392b16,
+       0x210863cd, 0x968c6c57, 0x246cdbdf, 0x81c2d6e5, 0xfef0f7fb, 0xb497b207,
+       0x0f1828f2, 0x1d0768e4, 0x9e322f2f, 0x15d05f51, 0xcb7ef9b3, 0xfae3aeba,
+       0x4baefbfe, 0x8b7aa71b, 0xee98e9ad, 0x627b6d7d, 0x91dfd954, 0x874c74d1,
+       0x92e93f27, 0x7f8e50c9, 0x87028f8a, 0x6009d7ef, 0x24154ddf, 0x3e9aa3a0,
+       0x3c730bba, 0x17fdd3ff, 0xee0652b9, 0xd15ba49f, 0xc5d7b88e, 0x3a20dede,
+       0xedc28048, 0xfc8cd513, 0x778cad42, 0x31fd05af, 0xfa41ea91, 0x31b5e4f8,
+       0xf581ddef, 0xf7e807a2, 0xd727af27, 0x9f9f0a12, 0xefa49080, 0xa02f927f,
+       0x7416f0fd, 0xe7908e36, 0x5aa65da9, 0xbeb490f8, 0xe0c49ae8, 0xbf9f5a4a,
+       0x429269b1, 0x4b60baf9, 0x9e9e01b0, 0x1bf76149, 0x2209af80, 0xa9757c01,
+       0xff4093c9, 0x9237fbde, 0x27682a2f, 0x07053f60, 0x1bb40a49, 0x9010a6af,
+       0x7c76e3bf, 0x742dcefa, 0x135ee37e, 0x376d0a3d, 0x01c3bf7d, 0x6ad7967c,
+       0x5c1d3e22, 0x836093c6, 0xee338e8b, 0xc80b7a98, 0xf76a0a83, 0x6cf0b988,
+       0x7287886b, 0xfbdf80ab, 0xf129be03, 0x5adb7e74, 0x12b94dce, 0x076d02e4,
+       0x595bf8dd, 0xc146ff3b, 0x7d372543, 0x728ca8ff, 0x4040a363, 0x0a0b6fc4,
+       0x0dfacac4, 0xdbbf695a, 0x85f7e95a, 0xf7e8bfa0, 0x73c6efd0, 0x7202dcef,
+       0xbf13ce87, 0x79401adf, 0x53bf465d, 0xde364f80, 0xb655fd8d, 0xf69d240a,
+       0xe995b157, 0xccd78aa7, 0xb1dfa81e, 0xddea0d6f, 0x465e3a62, 0xd0a3e82e,
+       0xab932864, 0x1bec1705, 0x2847e388, 0x82c2ceb7, 0x1bae83e1, 0x78131c98,
+       0x206e5a99, 0xeffb3477, 0xa410e262, 0x62cf32ff, 0xf3f69939, 0xae4a5146,
+       0x9ce9e909, 0x31daf60c, 0x851f6f0a, 0xb5325bf7, 0xf6dc28af, 0xbb951d17,
+       0x3331fa75, 0x3f7e2869, 0x14c263af, 0xe7f900e2, 0x9df00a5d, 0x9dd98e36,
+       0x0b675e6f, 0x6f5e740a, 0xf099c39a, 0x1675ff7e, 0x8dbbdf7c, 0xacdee1c9,
+       0x7f60c3ee, 0x9335689e, 0x43639d00, 0xe27288ab, 0x07b356c4, 0xceb8b6e4,
+       0x7cbb728c, 0xf643b31b, 0x4f7eb2b7, 0xdbf6616c, 0x9d3f75a4, 0x7cb87a02,
+       0x35ed8093, 0x49c65d39, 0x1955ccad, 0x728cdfa5, 0xb5c39356, 0x4d151e1c,
+       0xd218ced4, 0x6ad6ee5f, 0x6f20d0fa, 0x73aac96b, 0x42943c62, 0xedb547c8,
+       0xe27ef5d1, 0x806bec88, 0x225f421e, 0x66bdd77d, 0x11afb026, 0x814cf68e,
+       0x7d029cf5, 0x75c7eb4f, 0x9693aa0a, 0x82590e2b, 0x4b078f68, 0xf41cfce6,
+       0x2216fbcc, 0x01c7f6d0, 0x154e541f, 0xfd7fc259, 0xea7f7d15, 0x02592b2d,
+       0x20960ceb, 0x3d49cbfc, 0x9370bfc2, 0x78a41bd9, 0x39ab7c2a, 0xfef40cb5,
+       0x039464e4, 0xf1222de5, 0x29c6e4e9, 0x36e5bd41, 0x605c1fa6, 0x2d7868ff,
+       0x40ca9b94, 0x624b4ecf, 0x44d95972, 0x210d70f1, 0x4d39719f, 0xd82a0bf7,
+       0x1ebb953b, 0xf475954d, 0xd1e7b950, 0xc83a2a54, 0xd25bb052, 0xcf41dc28,
+       0x652aefd2, 0x5ee54e36, 0x1ba6d5c1, 0xeb47eb47, 0xbec5de57, 0x3d87ba1b,
+       0x12bfea07, 0xfceb87e6, 0x61b9064c, 0xf8dfa7ec, 0xf453f403, 0x816685f6,
+       0x4de8abce, 0x69b4574a, 0xa1e2d1d1, 0x42fb18be, 0xe740f050, 0x1131df63,
+       0xa2bf0755, 0x5511c6bf, 0x631def87, 0xfc53ff28, 0xecc1dcdd, 0x8e631db9,
+       0x5885b5c8, 0xd7bf0176, 0x3d1db879, 0x42b419d9, 0x8d5bfe7d, 0x85c5ffc0,
+       0x0903d202, 0x3764e4f8, 0x4aca6fda, 0x642f2e5a, 0xefd397df, 0xac772f81,
+       0xe54a7c61, 0xa4f20285, 0x29d1f5ae, 0xa0a37ed8, 0xda3bff40, 0xa92ed04a,
+       0xd6091228, 0x76823c6f, 0x11c74552, 0xe533f037, 0x07b066df, 0xb8b5aeea,
+       0x7c6b1c40, 0x9bf9f1a9, 0xf7133266, 0xa8d75677, 0x073d285b, 0xa7841513,
+       0xd7c5bf91, 0x195bb708, 0x188bfa5f, 0xcdb9bedf, 0x14bc2b0c, 0xd6be473e,
+       0x3e0458f8, 0xf1f08c2e, 0x3249d6fe, 0x2089f5f0, 0x73e0132d, 0xfe57f633,
+       0xb84f6b14, 0x7ca97b1d, 0x66766dfe, 0xd05fe52d, 0x6b9f1a97, 0xe7e46d7c,
+       0x56fba92e, 0xd7bdc798, 0x931d70d9, 0xcfebb87e, 0x457932f7, 0x7e93de60,
+       0xe41520b8, 0xfb351963, 0xe0d63ec1, 0xa4e50b5a, 0x5e6af318, 0xca5c672c,
+       0xd8f30cfc, 0xdc79d9af, 0x6259f25f, 0x6067d222, 0xfee919a3, 0x1fb3f8db,
+       0x7f225d9f, 0x7d5f2a5e, 0xe36a7f1b, 0xfba27b8b, 0x9bd38cf9, 0x0a5ebfb1,
+       0xe38510c7, 0x56feb69f, 0x99c27f06, 0x06991ddf, 0x817ea878, 0xd7d039d2,
+       0x81092756, 0xa882939c, 0x8876aab7, 0xa1cb106a, 0xf538b7b1, 0xecc0dc7c,
+       0x489da7b5, 0x58cf554f, 0xfbf4c582, 0x8e8ee7aa, 0x77b2e306, 0xd13fdd09,
+       0x71df81f7, 0x3dd0397b, 0x4aa0f81a, 0xf9627322, 0x98921ab7, 0xcbb3dcfd,
+       0x27d6133e, 0x1b37d96c, 0x37ff6dfb, 0xd6a9d033, 0x6649e7ee, 0x53b6971c,
+       0xe9403ea1, 0xcd8132f8, 0xfd28fa6f, 0xfeb316fc, 0xa272629e, 0xb41cc3aa,
+       0x6cb6fcc1, 0xe50dddef, 0x7ff41643, 0x939cb7f9, 0xe935bfc1, 0x5fe86de9,
+       0x248877f1, 0xaa976514, 0xe7e7410e, 0x43116ff1, 0x8fb0d196, 0xf1262daf,
+       0xe5823e58, 0xce9187f6, 0xbd461dfd, 0x4a6c1818, 0x9836bd47, 0xafaff7a4,
+       0x73cf7a7e, 0xeac20a01, 0x078c9f67, 0x6bba72f9, 0x9dc03c53, 0x27225bf6,
+       0x242f71b0, 0x4557eac5, 0xabedab7d, 0xd82bedfc, 0x3e6e3bf8, 0xd35f7041,
+       0xfd9d7b2d, 0xff0d3bbf, 0x2db28ca0, 0xaf09fb89, 0xdd00d721, 0x68c92d93,
+       0x8e79d25f, 0x258a8ef5, 0xdf0c03b7, 0x1f5b3edb, 0xcf3df5a0, 0xe61ebc7c,
+       0x27f5f35d, 0xbf041feb, 0xea1b5ece, 0xdeefff3d, 0xefba278d, 0xf6c494ff,
+       0x3d4fbd05, 0xe52d79b9, 0x2df7de8b, 0x77ade81e, 0x856c89cf, 0xfb77b3ae,
+       0xcfe0a997, 0x0dcf6fbc, 0xfbeeb069, 0x234a4e76, 0xf686f431, 0x5a0dfa04,
+       0x8513ebfa, 0xe4e913f3, 0xf6de034f, 0x0d9fd8ef, 0xf1433cf3, 0x4fd0720e,
+       0x002fcddf, 0xbca2d5bc, 0x0a42f283, 0xcbadbae7, 0x6df85f70, 0x71dbac78,
+       0x03ae4fcb, 0xd983bff9, 0x46127e93, 0xaefc6e79, 0x50ef7f0f, 0x09755e7c,
+       0xf6cadc78, 0x8a76fea5, 0xf181f8c7, 0x41fe0678, 0x80dc75f1, 0xdc76cfc7,
+       0x50b59bf5, 0x6a3923b7, 0x5f87aa7f, 0x57e012e8, 0x9ffeb021, 0x25cf5249,
+       0xf33d1f01, 0xdd6bcdfb, 0x0ac57f0c, 0xb2cfa3e8, 0x49d79d09, 0xe8367873,
+       0x8b1ef09f, 0xa6fd036b, 0xc87bcf6a, 0xdf3bbd4f, 0xfd353f42, 0x7d740873,
+       0xafefa4bd, 0x8166ed0b, 0x33a377af, 0xe08f8964, 0x7d382ea1, 0xef8f12aa,
+       0x20fbe08f, 0x23806ba3, 0xe0ba81e8, 0x18855bbe, 0xcc9119f8, 0x4c126fec,
+       0x6ed775c1, 0x740c8bfc, 0x509bc7a4, 0x823af804, 0x7c2077fa, 0x71707069,
+       0xbf87dcb9, 0x8d1f8c8d, 0x3f14fded, 0x788cefa0, 0x9e827c03, 0x797cc3f2,
+       0xfd00b339, 0x1891ef24, 0xcdb7a272, 0xffb40922, 0xf4376e5e, 0xb825bfe7,
+       0x06c961be, 0x1debe5be, 0xbe345f88, 0x7c75b6fd, 0x93b93857, 0xd1ba2895,
+       0x55f3d5e0, 0xa3fef96c, 0xbe072664, 0xdb5bfeeb, 0xe89a9377, 0x87dd36fd,
+       0xeba6494f, 0x0471ddaa, 0xfb7d99fd, 0x1edebe6f, 0xf9ef7fee, 0x3884189d,
+       0xfdf6d2c5, 0xf28ddf28, 0x6d45c283, 0x59df318f, 0x1d75be7c, 0x3cf47f4c,
+       0x683a0ce3, 0xed2f3d3f, 0xdbaeba42, 0xd00e447a, 0x796c0efe, 0x1a71f716,
+       0x08fe811f, 0xf3d3d6ea, 0x51a37d87, 0xefe6139e, 0x9e538e37, 0x9d6efdcc,
+       0x6ff1c7b1, 0x4e35173d, 0x765da075, 0xbc7dbe39, 0x6ffa92d3, 0x2ee9dfd0,
+       0x6e9e2766, 0x6306a717, 0xcd9269c5, 0xc4d61e3c, 0x828f549e, 0x94ea59bc,
+       0x316be055, 0xceed0e3e, 0x87459cfb, 0x94f0dc12, 0x347f8815, 0x4a74a62c,
+       0x85f869c7, 0xddf01d27, 0xc089bce0, 0xf8021f7c, 0x663ffcea, 0xbd808f97,
+       0x16f74e6a, 0x28c1df82, 0x89b76477, 0xbef87504, 0x4d3539cf, 0x2848b8c1,
+       0x3879f013, 0xfa1984ff, 0xbfe0d0fd, 0x4b2250fa, 0x3efce8d3, 0xc59e080c,
+       0xd5f25fb4, 0xb3af2cd1, 0xd95aff7f, 0xf28c50b7, 0xc259d537, 0x42bf6187,
+       0x3c61b45e, 0x0b6bdc42, 0xbd735fa0, 0x7fbbd70d, 0xd19b17e7, 0x858dfeee,
+       0xdd10f8b0, 0x7c42a4d5, 0x6271f586, 0xffeb17e7, 0xf86aec1b, 0xbe5f8e98,
+       0xfd87b69e, 0xee3b56c4, 0x933ece7f, 0xe7ed1a30, 0x069c1f17, 0xcedcad72,
+       0xe9fcb1e8, 0xed0360b4, 0x2b0a78ef, 0x1596df1f, 0x3f54fc04, 0xfc810ce3,
+       0xf9f3bfd8, 0xbd53d03a, 0xe809db4f, 0xb917dea9, 0x017bfffd, 0xeed44ee3,
+       0xeb75ba55, 0xd29224a8, 0xc0b997c7, 0x2f56922f, 0x1632e45c, 0x08f906f8,
+       0x091d58fc, 0xbfed8daa, 0x6339faa3, 0x41e03f0e, 0x320c0e3a, 0x181ca115,
+       0xd8c0f204, 0xe76fab4e, 0xa16fd6f2, 0xed2239df, 0x8cb872fd, 0x31069b95,
+       0xed85d279, 0xd27e70f7, 0xcbf7fbea, 0xfd00bfda, 0x61fbe8a6, 0x4859d7df,
+       0x39fe2c7d, 0x7aa7f9c8, 0x372e3fcb, 0xefbf93cc, 0x7f7c7f37, 0x260240bf,
+       0xdbb65bb0, 0xa9efe082, 0x93c34391, 0x939ffae8, 0x26abfc59, 0x113c343e,
+       0x1e5ce4fc, 0x32d1c4d7, 0xcf883f7d, 0x9943da03, 0x00ffbb58, 0xde7daf78,
+       0x7ed25646, 0xaa745f6a, 0xe7daef80, 0x6bfe38be, 0xa767befa, 0xb57afd1d,
+       0xd23bfe2f, 0x3425ad41, 0xbc21f81b, 0x003642dd, 0x257f6f9f, 0xc7b5f81b,
+       0xfa4eca1c, 0x6d5eb886, 0x6b03a53b, 0x5e9c75ff, 0x8c761c14, 0x226070b2,
+       0xf3a7abc9, 0xce401aaa, 0x833e52e4, 0xd59267f6, 0x526e418f, 0x7dc2ecb5,
+       0x4227f40f, 0x8f431d3f, 0x5f69165d, 0x8b96c4a5, 0xdfcd9317, 0x27db4fcb,
+       0x6fcc1dc7, 0x17e393a6, 0x3d80c793, 0x0e0a95d3, 0x8f6a3ac8, 0xdaaf3c83,
+       0xf8146e72, 0xa38c3e0f, 0x40f28014, 0xf47d0049, 0x051e1ca1, 0xecc3eff2,
+       0x9ebd28f0, 0xaac8b939, 0xebf46648, 0xdb6cf3e0, 0xf441b2b9, 0x6c7bb3b3,
+       0xbdc96333, 0xd71db744, 0x8ed0b551, 0x7d631bfb, 0x15d19bb6, 0x2dd01ef0,
+       0xa1fc0b8c, 0x1ca1fb8d, 0xeadc3944, 0x993f5856, 0x57de1941, 0x5435d96f,
+       0xa94a870f, 0x3e51db09, 0x92567845, 0x2750b966, 0x2af1b5bf, 0xe9143be7,
+       0xfd2f786a, 0xc55e8fbd, 0x89d19e08, 0x7126e14c, 0x8b8d5298, 0x787be67e,
+       0x7b325abc, 0x993f00ad, 0x08925d78, 0xfc84d2a4, 0xf1da471e, 0x1766a0e9,
+       0x27a9093c, 0xf24f2720, 0xc1f83ef8, 0xd78119e0, 0x81fb9402, 0xa32e422c,
+       0xaade79f4, 0xf074b824, 0x8f1dd2bb, 0xf548b1f3, 0x628bc984, 0x4223d817,
+       0x522e47c0, 0xb4586a7a, 0x23d02865, 0x3a2553fd, 0xe961343f, 0x075de2fc,
+       0x883b04be, 0x2bfa29d2, 0xc1243f02, 0x49620a06, 0x91326566, 0xe5921f20,
+       0xff7e8887, 0x10f0d5e1, 0xcc7287d8, 0x617f2241, 0x0ab1065a, 0xe121b6f2,
+       0xcf8822eb, 0x04245c39, 0x41dda1f6, 0x74fa7642, 0xeb4e948c, 0x90be3ff9,
+       0xe9747596, 0xdeba36ba, 0xae5417c8, 0x476dc619, 0x3f7ed1f8, 0xa9fbf435,
+       0xbf4fdfa1, 0x4e0d5fa9, 0xdcd0eb7e, 0xde835763, 0x6370e76c, 0xdc3959e3,
+       0x24f27c28, 0x9c5341a0, 0x11cdc787, 0x367c71ae, 0xf14f6816, 0x2e772bfa,
+       0x09c3d3d2, 0x420fc37b, 0xc085bb85, 0x6051b87e, 0x79fe9a7a, 0x88efba1d,
+       0xb87c8acb, 0x2bf38f82, 0xcd46e70e, 0xbdafd56f, 0x7eafed0d, 0xb5036ded,
+       0xdedd8b8f, 0xec7cd039, 0x3893e7b1, 0xf64dff40, 0x577ffd98, 0xe2f754b9,
+       0x7c406f7b, 0xb93e4fb7, 0xeda3e828, 0xc1b95fcc, 0xfe3c4cce, 0x61be3775,
+       0x3335a676, 0x4071df1a, 0xe2de94df, 0x37bf4586, 0xfa0c49d2, 0x75d06472,
+       0xbbc7c6df, 0x3175616d, 0xd2109a63, 0xdf5f0941, 0x4e2c8de4, 0xcc7dc77e,
+       0x8db7478f, 0xcedfd42a, 0x6168efeb, 0x0b1de3f6, 0xdec38c45, 0xaf6d115e,
+       0x3f5ff91f, 0x77fc003e, 0xfca0bc27, 0x217ce776, 0xeeeda218, 0x03ee37ac,
+       0xb4893bc8, 0x3e7c39df, 0xd747e673, 0x653288fb, 0x49779d39, 0x4877dfa0,
+       0xbbfca597, 0xf5d1e5d2, 0xf71788f3, 0x6e38c649, 0xe4c5dbba, 0x9b9414a7,
+       0x58f44646, 0xf74a51e0, 0xba527f60, 0x0897f887, 0x20f80272, 0x1f220e5e,
+       0x25149adc, 0x29e7ceff, 0xc9afa009, 0x8bbdfccb, 0x9c67bfbd, 0x93a89692,
+       0x2a05d2ef, 0x7e759231, 0x1d27b327, 0xc2f99be4, 0x7ca14495, 0x26485f28,
+       0xda9eae8a, 0x66fcc8ad, 0x491b8317, 0x17208297, 0x94979725, 0xc89bdd83,
+       0x2f6b59e8, 0xb3e8afbb, 0xffa4df33, 0x43c40abf, 0xbb9ef2f9, 0xa7183495,
+       0x57fbc537, 0xabb018f7, 0x473e3c8b, 0x6c087a7f, 0x806eeb63, 0x5ff6e775,
+       0xf1ec834f, 0x5e3dbda0, 0x2b1e8bd3, 0x28b44fcc, 0xbf3029ef, 0xfc04cd57,
+       0xe3e1fd30, 0xf5a41939, 0x318383e7, 0x284c448f, 0xafe30e1e, 0xf2f576e2,
+       0xb718e945, 0xc2e45c6d, 0x3ca2e372, 0xfc84af2c, 0xba5cfa3a, 0x06a7c148,
+       0x49a7ab3f, 0xac3e2915, 0x56ff58c3, 0xdb8fc717, 0x43e3e1c4, 0x5e9acafb,
+       0x9b45718f, 0x82643eab, 0xbd5265f9, 0x3576d302, 0x1764fc21, 0x6d267f41,
+       0x940b658f, 0x32dcd3e9, 0xb920f112, 0xad3949ea, 0x93e2983f, 0x6d282853,
+       0xe8a220ca, 0x3e92c7e8, 0x364710c4, 0xa7a353c0, 0xba8e4c35, 0xe1193d39,
+       0x0f8996e3, 0xd1d1a8f0, 0x03587640, 0x3c0b4de8, 0x8e99fc5d, 0x45f1f3fa,
+       0x281b3e2a, 0x3cfbd89c, 0x33e0f65e, 0x1b33ef85, 0xfd611516, 0x36ef5c13,
+       0xcf8a9a2c, 0xbf2614ba, 0x7dfaa6dc, 0x12538066, 0x77537e61, 0x79d26480,
+       0x48af9c8a, 0x5028807a, 0x1b90e2d6, 0x7443e9a3, 0xe5a3c749, 0xe004f28d,
+       0xb315f9a9, 0xe2c4e209, 0xa3931ffc, 0x6716fa3a, 0x87e089aa, 0x013e1d13,
+       0x80c3e7f4, 0x47bf3a67, 0x9c153ce9, 0x878fa31f, 0xe32c1d38, 0xe802b1f4,
+       0x83ff3e85, 0x7423c9d3, 0xf06e509d, 0x560e9098, 0x7579654d, 0x95137cee,
+       0x10f08070, 0x25ade7d1, 0x4c89da7a, 0xb43689d7, 0xf210cf82, 0xd20b21d7,
+       0x51247d8f, 0xb43fa845, 0x256b8820, 0xbbd00cde, 0x25bedc89, 0xb3892ad7,
+       0x243ef09c, 0x15067db1, 0xe96fb815, 0xae7f8132, 0x2f3cde1f, 0x3fff6159,
+       0x4df67cd0, 0x78c08e7f, 0x7a215765, 0x3bcfb248, 0x765a2eeb, 0x9dfb50b4,
+       0xbe3dd9fe, 0x7d010fb1, 0xe40938b7, 0xfce839c9, 0x627475cb, 0xf08fc01f,
+       0xb78dca75, 0xbf7e50a5, 0xc8186c1d, 0x6a196ba3, 0x98533803, 0x792fe02b,
+       0x00cdecdc, 0x6278f0b9, 0xe4cfbf6c, 0xc76f6614, 0x45115e17, 0x1566cde7,
+       0x5b5d73bf, 0xcd0fc510, 0x4d251e5c, 0x5ef51f1e, 0x79a33f93, 0xbe29bd7f,
+       0xd4a7e03a, 0xa109930b, 0x233dcf72, 0x306a3cb6, 0xc28101cb, 0x931461a4,
+       0x9912817f, 0xe4fd69d9, 0xfc7f410b, 0x0df0df79, 0xe8d16fe0, 0xf261096c,
+       0xfd98402c, 0x356bada2, 0x1dca3dd0, 0x237fd217, 0x8b2d03f0, 0x9fa464c3,
+       0xb84c3bd4, 0xf9ca5ddf, 0xb3e7256d, 0x7ebf9c55, 0x9f45fc09, 0xf45fc04d,
+       0xabe718f9, 0xfa43e066, 0x65c94d6c, 0x7457e376, 0x76236315, 0x816b12f3,
+       0xe0dfe015, 0x927ca130, 0x1d04b7de, 0x1bee8760, 0x833f02e7, 0xf9742ce8,
+       0x685f509c, 0x910e2155, 0xba02e858, 0x2f39dcf9, 0x2ef29be7, 0xa005fa29,
+       0x40f7ba3b, 0xedcb97ff, 0xc48d1f25, 0x76d4c928, 0x08331fd4, 0x709f45f8,
+       0xce00dbd7, 0x78b0a70f, 0x58c94b47, 0x47c53b84, 0x5e2e8a5b, 0x26f33693,
+       0x6736390a, 0xde09fee8, 0x6ddc718f, 0xcc906e5c, 0x93a61900, 0xb7022d13,
+       0xc900949b, 0x258bc9d3, 0xe0214d97, 0x272fea47, 0x9b9b9006, 0x106cdc98,
+       0xe0323eb8, 0xe8ccc1bd, 0x129b934d, 0xfeeafde0, 0x87287cf3, 0xbd3eb9c9,
+       0xb1bee5ca, 0x3b1481dd, 0xf12965c2, 0xff427d84, 0x03a70a7a, 0x937dba29,
+       0x6fa9beec, 0x8c7d7c5f, 0xe3e51875, 0x209bd049, 0x3c5f2473, 0xb279cde8,
+       0x9038c4f2, 0xf2c9ff3b, 0x2bb20671, 0x2fcaf1b4, 0x2a5ea254, 0xed0e30bb,
+       0x1b968a85, 0x88121f51, 0xbe46a402, 0x7f7ad13b, 0x44f5e03c, 0xb6cf8f0b,
+       0x1f90839a, 0xa1e5a273, 0xd9372c3a, 0x84c9c014, 0x8fc416c7, 0xeb79e5a7,
+       0x9ed78c45, 0x63640b8c, 0x1757e17e, 0xfcba8a2f, 0xcb6dc58b, 0xe70e81b2,
+       0x0d96586d, 0xa4993ef3, 0xcaeaf70e, 0x7b4150a4, 0x45873cf1, 0x2a2d6fd9,
+       0xd1037bd8, 0x6c6b596b, 0xfc03427f, 0xe260ec13, 0x773b03c9, 0x70f8fc5f,
+       0xe4ffe288, 0x3bb43663, 0x2f40e41b, 0xd8361b94, 0x90d20be1, 0xc625fcc4,
+       0xdca60ffe, 0x1d3c0610, 0x84bf514c, 0x61247127, 0xfe60613c, 0x071fe361,
+       0xf5c42e5f, 0xcecc8ad6, 0x1e9a78a3, 0x7163d7e5, 0x4fdce3bd, 0xd403ac43,
+       0x657af1c7, 0x9678fa80, 0xb15c4387, 0x7fb7bfeb, 0xfdbf6463, 0xda54e0c3,
+       0xc7cb6d5f, 0x37c7df4b, 0x53ea7ed1, 0x6f3bff7c, 0x24b83d83, 0x0f325d86,
+       0x33c012ec, 0xf468c78f, 0xfecfaa78, 0xcdac7463, 0x25d286bf, 0xee81a3d2,
+       0x21472785, 0xd0727f9d, 0x784dfa8c, 0xa034baf2, 0x360bbaa7, 0xa235ff94,
+       0x4fc811e7, 0xc88a6f27, 0x32bef707, 0x3d71e306, 0xba5eb442, 0xf1f99539,
+       0x85d967b4, 0xb97b28ea, 0x832a582c, 0xa176513d, 0xf809f18e, 0x40b1c1cf,
+       0x413abc86, 0x1e3cf4e2, 0xf1fecfbe, 0xbcaeda12, 0xb913f19b, 0xfe875036,
+       0x07bb36d1, 0xfa4668fc, 0x895539b8, 0x779497f2, 0x1cefb0d7, 0xe5d6e201,
+       0x3133cc2f, 0xda9cae3b, 0x570708f1, 0x1f03a480, 0xa117f971, 0xfc94737f,
+       0x7a3131eb, 0x7677ae30, 0xdaaf932a, 0x0fc2ecb3, 0x0fef5806, 0x7db97ad9,
+       0xce3dde52, 0x8f5faeb0, 0xc8aeb58b, 0xf6c5ae7a, 0x2ff72235, 0xb5de189a,
+       0xde1c65fa, 0xa2f8f3da, 0xf2a54499, 0xf4c2d2b4, 0x5ef0594d, 0x5948e419,
+       0xa092626b, 0xcb79675b, 0x367951ed, 0x32252d65, 0xd6f2a5c8, 0x8eae7912,
+       0x14f0fb6f, 0x4f0a2eb8, 0x211756cb, 0xf14ebe9e, 0x7c740bde, 0x03ed737c,
+       0xcbf409bb, 0x0e5276f0, 0x3947ae8c, 0xac7c6f77, 0x8ccb3a73, 0x78e16b78,
+       0x2320161b, 0xc34df275, 0xe3fbf197, 0x801faa9b, 0x35f1fd78, 0x0186b64e,
+       0x7c6c59e5, 0x81b8e11a, 0x1e7b51e3, 0xef8476a7, 0x6578e092, 0x80d7be54,
+       0xd7f8e470, 0xa7bda4e0, 0x53afe076, 0xf0825c71, 0x77196f28, 0x8c8bf049,
+       0xaf6f2d7f, 0xf2035f0e, 0xe063ca91, 0x1f9b53d3, 0xeeffad1e, 0x2784ca60,
+       0xe9a44f01, 0x9982e2d2, 0x6876bea9, 0x39e8981f, 0xc0c7fb08, 0x40d3d106,
+       0xb0995dd7, 0xab8437b6, 0x0fa7d68d, 0x07983a2d, 0x4586e27e, 0x7334f85d,
+       0x7d808efb, 0x87f68b97, 0x3ac63dba, 0x7ef0e6de, 0xf3175168, 0xc4035973,
+       0xc24cfe05, 0xbc9c92f8, 0x927efd1a, 0x912eda23, 0xf8173ecd, 0x78816519,
+       0x7c928ed1, 0x610b73cb, 0x0fceee5f, 0x56fbe0e8, 0x56a7b32a, 0x02e4bfa5,
+       0xf685b1ff, 0x6b06fe0f, 0xca3e74a6, 0x34b2f14f, 0xcee949cf, 0x8e2ee9c6,
+       0x8082abb4, 0x06f39b7e, 0xa8f9cdbf, 0xa2bbb879, 0xb846bafc, 0x8c78d648,
+       0xfb8448f7, 0xe83c38eb, 0xcbc3941b, 0xe66e1cb8, 0xe0d5bf7e, 0x5bf0a3ef,
+       0x7d478f62, 0xc4c734b7, 0xda5639f6, 0x92c5c29e, 0x09cbdac8, 0xf0361d6c,
+       0xcfb08b17, 0x49d96108, 0x009cb1ba, 0xb0a1cfde, 0x2804522f, 0x52d09327,
+       0x4ecf9bb0, 0xde007ee8, 0xfbec9c3f, 0x79fbf018, 0x0161d746, 0xdf5ebffc,
+       0x16e700e5, 0xd0af9031, 0xc311bff6, 0x9b2ed0f9, 0x624a1d56, 0x0bc81ccf,
+       0x4ae2e9f7, 0x911d7043, 0x9cbfd8b2, 0xc4325f33, 0x5cbabe59, 0x59267f5f,
+       0xffd03bfd, 0x53851b3a, 0x83b33c02, 0x1f72e7e0, 0xadde5015, 0xccfa69b3,
+       0x529be78b, 0x913e18d3, 0x0ebe803e, 0xbce07b32, 0x312424a4, 0x72f2a1ff,
+       0xaadc9f94, 0x4f1bacbc, 0x8db1fbe2, 0x1e215e94, 0x30c9d1a0, 0x3d013549,
+       0xdf44d65d, 0x8622e9eb, 0xe74497dd, 0x78806c33, 0x383f368a, 0x14f000df,
+       0x3d414c2f, 0x178ba46a, 0x01affcfa, 0x4b3af011, 0x91a93c23, 0xf6891395,
+       0xf794fb87, 0x8dfbfcfb, 0x2562ecac, 0x4f165cff, 0x0124a0fc, 0x79b4f2f3,
+       0xd65ceacc, 0xacde7605, 0x88528cce, 0xb8aacd2f, 0x7cf06ffc, 0xc97e1cc1,
+       0x7ee2720e, 0xdce3cf01, 0x66cbeef6, 0x7cee7d3b, 0xe4138367, 0xd31a7e45,
+       0xd849b323, 0x11f7f80c, 0x03e2cc97, 0x973f7c41, 0xddb97878, 0x3beefb0c,
+       0xde9fc142, 0xbe774b4c, 0xcc19bc1c, 0xc307d997, 0xf974047f, 0xd0535dda,
+       0xd77daf07, 0xcac039e1, 0xf5bebbec, 0x4f5c564b, 0x5c56bd64, 0x3a3eb6bf,
+       0x1f7f8453, 0x3e41087c, 0xb131e0d0, 0x967bad94, 0xc89bf6fd, 0xb3b5d837,
+       0xc6fea3ac, 0x7cd89ff2, 0x14f9f08c, 0x2c5ca8aa, 0xd38b534a, 0x9e5e3d28,
+       0xcf0cdea6, 0x5b386b1a, 0x32fc821a, 0xfee20d3d, 0x95272fa2, 0x964cffae,
+       0x8014f2ef, 0x25f25743, 0x6d87afd9, 0x061c0e4c, 0x1de3a6fa, 0x1bf6d5ce,
+       0xd74029dd, 0xeb8dc6a4, 0x6ce9c39a, 0xef13cee9, 0x4979035e, 0xf79888af,
+       0x3f2a2b58, 0x78fd1079, 0x11e7d122, 0xf9879f1b, 0x8d2ab97e, 0xf5b4f5c5,
+       0xbf1891ce, 0xc761d9cc, 0xe6730373, 0x48fb7d8b, 0xf339f3a0, 0x9120fe59,
+       0x1adf46ba, 0x7236f765, 0x0fdfee7a, 0xfd8de7ec, 0x849fce94, 0x64e7bcfb,
+       0xdfdc04d7, 0x567467af, 0x2115593a, 0x72fc7aef, 0xe39ee301, 0xdd1d298e,
+       0x4c1a5cb4, 0x969b00f4, 0xe87b782e, 0xbaca0a31, 0x4be7e62e, 0xffceef13,
+       0xfe3e7d05, 0x50bfd312, 0xe4e01bbe, 0xce871550, 0xae63ddff, 0x3d0177cf,
+       0x4150e9df, 0xaadc940e, 0xd5780fbe, 0x1d9af7f6, 0xcbd53cf1, 0x72574790,
+       0x74045287, 0x536ed252, 0x522569f1, 0x256b951c, 0x33c2b112, 0x0d92264d,
+       0x0ac4719e, 0xe84bb1cf, 0xebd00ef8, 0xc79f51d3, 0x12e57917, 0x7ce92cfa,
+       0xbef833f2, 0x13ed0a5c, 0xd2557474, 0x7897caf9, 0x62f5492e, 0x5b95e49e,
+       0xd4fda8e4, 0xf2e8f6a8, 0xe5d11d55, 0xf97450fc, 0xe5d183ea, 0x458b900b,
+       0xfade3af1, 0x1f1015f1, 0x858f697a, 0xf34f2198, 0xede60b69, 0x815d06ee,
+       0x94368ff9, 0x3baa938b, 0xf95c42c7, 0x4d383fe3, 0xe17b77e0, 0x5c62cf1f,
+       0x4ecdbc3a, 0xdf6b2f20, 0x0e247107, 0xb69f1ef2, 0x6afa806d, 0x19f827da,
+       0xb5b69fab, 0x73c1fe41, 0x1a746857, 0xe791fcc4, 0x03e766be, 0x82594fc2,
+       0x78fea710, 0x007f93d7, 0xa9f8fcba, 0xed1768c1, 0xe8260216, 0xe182b02f,
+       0xa31c7c7d, 0x8c71f1fb, 0x44b7abee, 0x98ff2fef, 0x875bd9a6, 0x37bd00ae,
+       0xfbc1893e, 0xac23a2f8, 0x9acac71c, 0x665e353d, 0xe7c51765, 0x78232347,
+       0x537ce3ce, 0xab2b9c16, 0x71c5af88, 0x9ececf20, 0x7f80e792, 0x6896f2e5,
+       0x3df46a38, 0xfefd1822, 0xe6ff2e0d, 0x5cfbdd12, 0x4b2bef88, 0xff7f41d3,
+       0xdf3cc496, 0xfb972ef9, 0xac9dfbbf, 0x917883f1, 0xdd145d3b, 0xdc88b439,
+       0x860df727, 0xd7c00bfc, 0x6afbc890, 0xff5ab8c3, 0xfe7e738f, 0xaff2cac4,
+       0xa70e1cdd, 0xbb441d17, 0x5e2ecfa1, 0x7593aaa4, 0x7d96b2e5, 0xbf0825a9,
+       0xf573a97d, 0xf6a7c1fb, 0x790edea7, 0xf0245b45, 0x599a92cc, 0xde397f9b,
+       0x76c5ef0d, 0x03d42798, 0xffda7b1c, 0xa8ed0f18, 0xcfa05bdd, 0xb96f29d3,
+       0xe3ac9d41, 0xe74aeffb, 0x5c6ade1a, 0x17cf2e0c, 0x19b96f79, 0xf455aee8,
+       0xf6eab340, 0x1478fe9f, 0x8cd5bbc0, 0xb66b8fe7, 0x13c8099b, 0xd00fdb7f,
+       0xf5bd525f, 0x479029ad, 0xe2535fec, 0x958d7981, 0x402c5788, 0xf0adc757,
+       0x33b9d93c, 0xeabdec1e, 0x25966aff, 0x4d1be605, 0x118e9477, 0x1ad2d47e,
+       0x10b6033b, 0x13cc62ea, 0xf11bded6, 0xfe8c195b, 0x9ca788de, 0x49cb8174,
+       0xb7c7a792, 0x71725db1, 0xd68bcf00, 0x4ef2a7cc, 0x39ab0fe7, 0x897984d6,
+       0x722071c6, 0x995f27df, 0xe01440dd, 0x3f2c6daf, 0xd609fe85, 0x777f3cb1,
+       0x1e832b28, 0x82ba02a9, 0x26415ff5, 0x74de702b, 0x4f0a9906, 0x14f46e4d,
+       0xf6868fb5, 0xcdee85bb, 0x9cfec6bf, 0xae3dafc8, 0x51d83c50, 0xdc39f883,
+       0xcf95851e, 0x56affdf2, 0xc369d55f, 0xcf8f967c, 0x174728c8, 0xb41d1e43,
+       0x64cd83ff, 0xc7dc76a2, 0x422793db, 0xfb4f667e, 0x3887e8ab, 0x513c9edd,
+       0x6cfd06fe, 0xde9a0b94, 0xa4ff023c, 0xba7275fa, 0xe83a7d7a, 0xbf9646b3,
+       0x9f5c969a, 0x4f031f5f, 0xb96e77da, 0x2df61f3e, 0x9e1d3be1, 0x40a7080d,
+       0xe87e84ae, 0x9423f474, 0xbcc9bf70, 0xe862de41, 0xaadb49d7, 0x83a4fff4,
+       0xafa006e2, 0x01e7a2a3, 0x7c48d0d7, 0x0fa15e72, 0x46912dcf, 0x952a7fb6,
+       0x76a24848, 0x9be82971, 0xbd4658d1, 0x602ada58, 0x55bcd71e, 0x6b29ebd1,
+       0xc9e944b6, 0xfd84d20a, 0x7c769156, 0xd746b456, 0xa15e8257, 0xb2b2aaf0,
+       0x8daa857c, 0x79daf5d1, 0x17ad9aa8, 0xf6e0b12d, 0xa7d6d119, 0x84fac196,
+       0xdf9c5619, 0xb0278fbd, 0x544c8bf8, 0xc7e19bd0, 0xabc7289d, 0x71e70f89,
+       0xfedfd71b, 0x3cea2505, 0xbf3b3cfa, 0x0c979d54, 0x9e9991e7, 0xbe419643,
+       0x54bf5014, 0x2ca1264f, 0xae81a7b8, 0x7567f41f, 0x051a10a7, 0xc4092b65,
+       0x70f7b017, 0x5fac039f, 0x5b478e7f, 0xff5bac3f, 0xf0c3bc9e, 0x45e7055b,
+       0x7d6eb644, 0x47870d7d, 0x944b56cd, 0x56fc62ff, 0x0abce021, 0xe37495ce,
+       0x2e3b7577, 0xe5faa25a, 0x75ea99fa, 0x1b78a362, 0xc226d15f, 0x93ef1e62,
+       0xb111c1c7, 0xe61c09ce, 0xa7fc7c70, 0xb7c01965, 0x3a9d808f, 0x88ba0388,
+       0x3c209590, 0x588433c7, 0x577178e9, 0x7eb195f7, 0x6e5612ec, 0x3171f969,
+       0xd593aadd, 0x67c61f66, 0x01ef454a, 0xd5f67f38, 0xe02b5f20, 0x66a4d4a7,
+       0xeabfc84b, 0xce03f470, 0xa2787067, 0x7d447ea0, 0x86b37d8c, 0x3b42d5e7,
+       0xbb034fc6, 0x1675be98, 0xf3facd86, 0xb971cf55, 0x3752f094, 0xef08bb9e,
+       0xe7dcf014, 0x9e08e11a, 0xa3735c8b, 0x9f5f6042, 0x7204f14e, 0x1a408d73,
+       0xc29f0a05, 0xfeefd31d, 0x30b9e023, 0xd97103ce, 0xc4131dda, 0x9fae075a,
+       0xfaf663d9, 0xa4938836, 0x002bc9cd, 0x9eeba77a, 0xefbe8333, 0xbc70574c,
+       0x7bc3070c, 0xee4092fa, 0x7c61233d, 0x047fddef, 0x87151c7e, 0x28d384e7,
+       0xf8499cac, 0x56760e5c, 0x07dfc93a, 0x58bd3df2, 0xf35f0029, 0x9c6cf1e3,
+       0x67389314, 0x0581d83a, 0x50b49cac, 0x11203750, 0x4feb8a3e, 0x30a990b3,
+       0x760f785f, 0x0cfc15a3, 0x27be1d0e, 0xf8c3e7d5, 0xd3d94369, 0xa132872d,
+       0xf0fad79f, 0xfbbb43ee, 0x7941173e, 0x1397df7d, 0xf77f60d2, 0x70dd0f5a,
+       0x5af63953, 0x0cffb6a6, 0x1f4ed039, 0x73dac796, 0x7cbee37b, 0x9dc12e76,
+       0xac49d9ad, 0x9ab359dd, 0xd5c83570, 0xfebd98b7, 0xff4543a9, 0xd8e40fec,
+       0x39c7d079, 0xec17fc9e, 0x0bd3a824, 0xa39f99fe, 0x10bfe91d, 0x67bef51f,
+       0x6d3e7451, 0x534bc54d, 0xe92d5da0, 0xdaecbcc2, 0xdffce8f6, 0x1ec5c41f,
+       0xff73a357, 0x62049105, 0xbf472b8e, 0x024c90bf, 0xa5dab1c9, 0x20bfbf46,
+       0xbe3b9744, 0x7c24ede0, 0xe3ba8a4f, 0x0c581f61, 0xcf9688fa, 0xf3014d06,
+       0xf4bc1155, 0xf4a3baba, 0xcac2af50, 0x4bbc7967, 0xeffad7ab, 0xf3f3299d,
+       0xa71c6149, 0x40151167, 0x3b6b3e14, 0xb61fa1cf, 0xc21f73a6, 0x088ba347,
+       0xa024ec9c, 0x436a5383, 0x7944c857, 0x7fcd6b3c, 0xf7491aac, 0x712f299c,
+       0xb23c0e7e, 0x9bfca54a, 0xf8a29a2a, 0xc7d85edb, 0x1e6e28ef, 0x5fdc8937,
+       0xf26ab4da, 0x6f32bab5, 0xe07df7df, 0x94c9e2d1, 0xb2470ab6, 0xf35f2fef,
+       0xd04b6bd8, 0xf3c4d1a9, 0x5ed9c3ad, 0x356caea7, 0x3cb41d94, 0x1976574a,
+       0xfa86ddea, 0x93394374, 0x8671efb5, 0x210f45b2, 0x17566b05, 0xf4de544b,
+       0xc3668464, 0xc4ab0b8d, 0xa993c535, 0xec2dabdc, 0xba8e7cc2, 0xe823c14e,
+       0x879d68e4, 0x9e1ce9c5, 0x2474b96e, 0x00eba1c0, 0x0e9a83c8, 0x00fb05c1,
+       0x10f6fb47, 0x453be196, 0xdb3b5df7, 0x1fb4d667, 0xec06efc1, 0xfc84cf3f,
+       0x23ef32bc, 0x716df76c, 0x442c5217, 0x140e8fe5, 0xf8702987, 0x8148ca6e,
+       0xea30fefc, 0xefed9e9f, 0xc9a63da1, 0x750cded3, 0xc353ca3f, 0xcc3f5d79,
+       0x17e111c7, 0xf32b8e0d, 0xf4a5cbce, 0x75465ffd, 0x81e60bbe, 0x8b73befd,
+       0xaffcdec1, 0xc06313da, 0x340bfafe, 0x3a72071d, 0xd2f40238, 0x011be25a,
+       0x7b59dee3, 0x6d133ed9, 0xbddcd877, 0x58c2ae0e, 0x8419e6b0, 0x776761ff,
+       0xd1654096, 0x587b1983, 0x6f1ba539, 0xb19438c0, 0xbab39597, 0xbcb44cb3,
+       0x9587a328, 0x075eeb2f, 0xde3327e5, 0x38e89629, 0x67754787, 0x52d82e89,
+       0xdbf88bbc, 0xf7cd8ae4, 0xdf6c19f5, 0x83efcda5, 0x06756ad1, 0xe986abac,
+       0x6a0e381d, 0x767572a5, 0x9b6de9d5, 0xff663c28, 0x6ef28edc, 0x372dcf53,
+       0xe039bb31, 0x34aebc85, 0x8bd46f0e, 0xb425df28, 0x17403227, 0xe9f04526,
+       0x5052eecc, 0xbf515c6f, 0xb487ec1d, 0x6f5123d9, 0xbeae975c, 0xcf6ae30f,
+       0x93e873fb, 0x0cfdebce, 0xa2ef9317, 0xd207f309, 0x5da2741e, 0xad8d88f5,
+       0xd21df287, 0xe5e38387, 0x879ebe21, 0x693ed832, 0xd80dfa5e, 0xdedc6ddf,
+       0x7c115e6d, 0xffe146ca, 0x7e3fb681, 0xb7cfd994, 0x93b951b7, 0x6a11f900,
+       0xdb93c806, 0x323c9fc1, 0x03f6d652, 0xecb4f9cd, 0x9ad3ec88, 0xfa19aba7,
+       0x1b736ff8, 0x55e4d7ab, 0x5efb2e73, 0x0d695bd3, 0x8f693e0c, 0xeb00d88c,
+       0xf3044bb0, 0x399aef69, 0xb462c37c, 0x7ce06603, 0xc066aa89, 0xe558fd7e,
+       0xa9d81310, 0x31fe7e1a, 0xc00dfd5a, 0x071e36e5, 0x8da4f0d2, 0x775f3eff,
+       0x08ed48a9, 0x1f20e758, 0x8aed47f6, 0xcff82cd1, 0x21f78aec, 0x02263916,
+       0x8f75225f, 0x1ffff781, 0xc465e9c1, 0xa7093ffb, 0x35e71def, 0x6f2a21c8,
+       0xb5ff410e, 0x9f444ff3, 0x5f70e247, 0x69cc842d, 0x63fbba85, 0x8fd87be8,
+       0x3efba5b6, 0x7de5d0cc, 0x16b07ecc, 0x3d6d4fed, 0x7e7f7ff6, 0xfe91bfea,
+       0x0fb469fc, 0x5d607f0f, 0xb9477e85, 0xe1f1e51d, 0x8b9e089b, 0xf3efcc39,
+       0xb1dbecd2, 0x0d7eaf3f, 0x14c573f6, 0x361f4031, 0xef041e8d, 0xdf0a32f6,
+       0xc39d5415, 0x74c0fbb9, 0xe9a3e796, 0x9644e6eb, 0xe0bcd3df, 0x72af3c4a,
+       0x3ee37496, 0x5044503d, 0xcfd5f67e, 0x94f58e1a, 0x9036024e, 0x41719513,
+       0xe7353ff0, 0xd35f3c13, 0xac0aeb3c, 0xe62dfd87, 0xe2b2cd13, 0x19d3cd38,
+       0x2657361d, 0xe411bfa1, 0x206dc02e, 0x606d4a3a, 0xa922117e, 0xfbf1f5a3,
+       0xff3107cb, 0x7bb0bd8c, 0xd7607be7, 0x5da1b2ae, 0xb8c4280b, 0x8e1a534c,
+       0x6121e947, 0x9b05f210, 0x32afe947, 0x5c712b82, 0x9609fa0f, 0x9412d539,
+       0x2bb0bf73, 0x1b56ff30, 0x802d6e59, 0x446910ed, 0x43e7c979, 0x7a209e9a,
+       0x1587ee7f, 0x87609de7, 0xf3ea0f64, 0x6fb0a813, 0xfd584b9f, 0x23f685dc,
+       0xbb9abfb0, 0x8f73c450, 0x6a0df964, 0xce859c74, 0xf1fc1535, 0xec25affc,
+       0xe0f83804, 0xffe878bb, 0x1f384eef, 0xcec85be5, 0xfd009321, 0x7df22f3e,
+       0xf7c620fe, 0x7f3645b3, 0xe8aec8b2, 0x67b4aef3, 0x379e20fe, 0xaa84f4d4,
+       0xc71b4f1f, 0x5fdd2fd8, 0x28bc0016, 0x0e7043dc, 0x110bfc2c, 0xaf9c6af1,
+       0x87ff0e5b, 0x5ecfd68d, 0xa12e2624, 0x77cdf4f0, 0xf9b57ae2, 0x5f0b49ce,
+       0x430bfe87, 0x75edc7ff, 0xaeffc163, 0x42c887ed, 0xe1107edd, 0x22ca4722,
+       0xc6109fdc, 0xf7bf557d, 0xdc6d3f7c, 0xb5f21287, 0xefaedf45, 0x1822855c,
+       0x4ae9cfe6, 0x9bc02411, 0xc80de78f, 0xe6367872, 0xade618e5, 0xe9c7d3c1,
+       0x230ba34e, 0x3d1a7dbc, 0x96ede018, 0x5fa0b3bb, 0xc20b7cdf, 0xa6bfd8c9,
+       0x91b09f57, 0x5b67ec00, 0xf1495820, 0x8ec0b2da, 0x2dacf27a, 0x9fcf19bc,
+       0xe211fdee, 0x4e32b7bb, 0x6b10f381, 0x816fc665, 0xc7c64ebd, 0x8387bbc3,
+       0x6ba5ebdc, 0x7a7e2956, 0xefd1175f, 0xed4126cb, 0x0dc5d7a4, 0xbbbdff40,
+       0x2cfd646e, 0x3f39e3b6, 0xce18403f, 0x7bfe068d, 0x347ff811, 0xe7d1c2ff,
+       0xfe69bdd8, 0x39fde88e, 0x28adf39c, 0xb38dc888, 0xe8f30150, 0x963f73b0,
+       0xbbc712af, 0x3e408e3d, 0x50499d6a, 0xabab0ec1, 0x83cf02ba, 0xe5e93900,
+       0xee899d6a, 0xfc220b53, 0x68fa675f, 0x59233df8, 0xbff3a49d, 0xc32f76d1,
+       0xbac6b0fe, 0x91ef0baa, 0xcbe41171, 0xf9d7a82a, 0x7d56eb57, 0x47580ffc,
+       0xbf830edd, 0xa867e0c1, 0x6e55d3d2, 0x1f705e84, 0x32647200, 0x9c077bc1,
+       0xda9f6cbc, 0x3f4afe85, 0xbca4abf7, 0xacf78dd4, 0x09db0b39, 0x27fd63f8,
+       0xbe331d99, 0xec3f6db3, 0x76a713cf, 0xfd72c165, 0x3c683fdc, 0xf3ae340f,
+       0x685bf451, 0xbf6e8ff6, 0x28c6623b, 0x0b9d93fd, 0x8c33fd86, 0x80af0dd7,
+       0x37a6247f, 0x49bd7357, 0xebca2bf5, 0x472e9abb, 0x0ffa0afd, 0xffb69ce4,
+       0x7207b906, 0x1341abe6, 0x5f3e039f, 0xf6e27836, 0x34ae2c41, 0x811bf702,
+       0x697f8b4b, 0xfe1f60ed, 0x063b7ecd, 0x049af0b7, 0x01244726, 0x9aaf65cb,
+       0xfce256db, 0xe6ff7624, 0xcb945cba, 0x86a91f9a, 0x53efd104, 0x654efdc6,
+       0x7e04efdc, 0x2c7e7d5f, 0xe5f557f8, 0xaa172e1a, 0x912f3ee1, 0xeaa321f9,
+       0x13909327, 0xbf0129ee, 0x6f3b3c53, 0x945e7517, 0x1dfc23ef, 0xf9512d17,
+       0xbd6ccde6, 0x13de3873, 0xf0450727, 0x31b1accb, 0x7fb693ff, 0xf990bf18,
+       0xd40a12a1, 0x230a87dc, 0x8dfda8f7, 0xcf834be3, 0x5f1341bc, 0xc1c7b800,
+       0x2dda11fe, 0x7d9da3b6, 0xedf1ea8c, 0xc3332fdc, 0xd598e781, 0xd3046661,
+       0xee3119e8, 0xdbb9586b, 0xf3740156, 0xda4b9731, 0x3320e0fb, 0xe79bbfc2,
+       0x6bdc41cf, 0xd55e4e86, 0x83e1ccfd, 0xfa6bceef, 0x16ffe281, 0x60366fdc,
+       0x81938b59, 0x3fef481f, 0xdf4fb2ff, 0x4dedca3d, 0x2babf7c6, 0xaf50dae3,
+       0x09a3d1f6, 0x47da49cf, 0x667f317a, 0x25139737, 0x1bb03fdc, 0x2f20c102,
+       0x5bdfb9da, 0x4f9ecd72, 0x8e4fbbcb, 0x3e3dc0f4, 0x8fc9996e, 0x11c5b7dd,
+       0x783b97c8, 0xbf0f77fa, 0x9fcfeb41, 0x427ef194, 0xb76e4f2d, 0x2f185440,
+       0xfe82d3b0, 0xd9991acb, 0x477b3597, 0xf644fb31, 0xeefc81ad, 0xf46633c0,
+       0x07c4d5a7, 0xf58cda9f, 0xe23e7819, 0xcfa33305, 0xfb3b2ec0, 0xfbf82e3e,
+       0x773ec03f, 0xa0279a6f, 0x97d2fb80, 0xe3053836, 0x8b440945, 0x73910ad7,
+       0x99051fa1, 0xad11fd1d, 0x81c67382, 0x67cb274e, 0x5dc66a24, 0x2ba39fb4,
+       0x543d70d2, 0x74dda29e, 0x8c1697f4, 0x1beeadcb, 0x3f5df997, 0x5ef17b32,
+       0xe6768fae, 0x948ee87b, 0x21caf59c, 0x1ffbaff0, 0xa95c7661, 0xf00f5949,
+       0x9eed7b21, 0x2fec7da8, 0x16bdd9cb, 0x7da70b55, 0xe41cbc53, 0xdcafdeb7,
+       0xb8d9c24b, 0xd218ad7f, 0xbd9e790e, 0x2c3c239d, 0x418e95bc, 0x6b173a97,
+       0xe0cccc7b, 0x4663de1b, 0xfed4bdfe, 0x3f602e81, 0xc6057a09, 0x1ee3ebf1,
+       0xe3a36728, 0x0ccbfd20, 0x69ddfe8f, 0xae8b5edc, 0x6ef9a60f, 0x3dd4bc04,
+       0xf9e1c5f6, 0x46178c0a, 0x43e5a739, 0xb3ab331d, 0x27136e81, 0xb6f2a287,
+       0x3e33064a, 0xbb70b529, 0x19e4848e, 0x63f5fece, 0x71989227, 0xc660df23,
+       0xd71e4e2f, 0xc5af5fee, 0x80b16fe9, 0x24ae625e, 0x324e7242, 0x60c94aff,
+       0x9389c985, 0xe433f421, 0x65c90c2c, 0x427c09fc, 0xfb821de1, 0x61ad8ef0,
+       0xdeed7c7e, 0xc222b290, 0xb522a1e2, 0x876f214b, 0xf1fb78b0, 0x5f48899d,
+       0x84adfc5a, 0x6a1676f0, 0xf4b952c7, 0x0210a37c, 0xc5a4bf3b, 0xc5ee01b2,
+       0xc584bb19, 0x04ebc3ed, 0x8d254b94, 0xaccf3013, 0xc428c76a, 0xa3117c7f,
+       0x2260aacb, 0x5cf1b9ea, 0x825a95de, 0xbfd5da32, 0x946f3017, 0x71f68ff6,
+       0xa328fd0d, 0x8c1c3fa0, 0x8fa239f1, 0x677b5183, 0x93933b7c, 0x0e2e8b64,
+       0xbf222432, 0xfe839ffb, 0x1f4d12da, 0xf0bf4d01, 0x06929fb8, 0xce4d7efe,
+       0x5de41bce, 0x30f11835, 0x3bf00d2c, 0x575b2276, 0x7080bb78, 0xa8f525ad,
+       0xdeb9341f, 0x0bd72e37, 0xd300c5c7, 0xf147963f, 0x973836d9, 0xf1e35f9d,
+       0x0c4f4d1d, 0x836d0744, 0xd8a1bcb5, 0xd381b074, 0x1249cd41, 0x578e8eba,
+       0x6a8490b3, 0x73a7b347, 0xa63bea34, 0xde3cacf7, 0x98f16562, 0x467fd36f,
+       0x6fd4677d, 0x2696bd46, 0xc709f8f3, 0x0ecfdeb3, 0xc2fc7d7a, 0xd67e08a0,
+       0xbeeae979, 0x3b11319c, 0x6ac87fc5, 0xb282ae55, 0x80710c97, 0x7e4267bf,
+       0x259df82e, 0xa7658f96, 0x60736970, 0xb3da17be, 0xc20ab959, 0xf4665d2f,
+       0x24bc966b, 0xe97801df, 0x386c7dc2, 0x1e80b885, 0x73ae7835, 0xe00aefd2,
+       0x7d6fc63b, 0x63495bdf, 0x89fbee9c, 0x7fa86dbb, 0x64e5df3e, 0xbe499cf7,
+       0x5fda449c, 0x682c5fea, 0x76eef677, 0xeed47ea2, 0x7e6b715b, 0xfb14b204,
+       0x35e39b7b, 0x060e2640, 0x6e112e7f, 0x347f7bc2, 0x7136ab7b, 0xaf3b3f20,
+       0x19faedcf, 0xee0b2ba3, 0xec4f3f1f, 0x74ca007e, 0xc71f783e, 0xfecf1cab,
+       0xe1f2931d, 0xd7bf07be, 0xf7d061e1, 0x5abd03e5, 0x667efbc4, 0x4535f4a5,
+       0x405e185c, 0xe59b51d7, 0x9b7e8170, 0x3fd7f39c, 0x53e5a2cf, 0x771e583b,
+       0x3349a6e5, 0xe58190c9, 0x0fbd77ef, 0xcbcf78cd, 0xbefcc1f9, 0xe0788519,
+       0xa58b5c1e, 0x9d1b64fe, 0x0b05e5af, 0x0d3fa3ea, 0x18317df6, 0xf0a6b8fc,
+       0x25b38001, 0x51f307a7, 0xf0e79dfd, 0xb925993c, 0x0e45bcef, 0xb6e7f5f0,
+       0x0c571c92, 0x47e045b8, 0x173cecac, 0x33d9beb5, 0xb7247eea, 0x47da9eac,
+       0x23365fd7, 0xdf04b5ce, 0xc663c5a8, 0xd8487d82, 0x372d5cfd, 0xb473bde2,
+       0xffe0255d, 0x4eda74f8, 0x4c1a7380, 0xae90d61f, 0x521b8c78, 0x3bee123b,
+       0xd19329bb, 0x7863754f, 0x6e039c2c, 0x023a9a4e, 0x43fd29e6, 0x971f7bc2,
+       0xbb3abf41, 0xf4d32737, 0x907fddcf, 0x946fcfd9, 0xf2029993, 0x409e5ba5,
+       0x1ffebfc7, 0xe2bcb29f, 0x5f71fbf9, 0xc251d740, 0x029b64ec, 0xc17ca9f2,
+       0xedaf7c3e, 0x39678ec3, 0x6b257dd8, 0x289cac2c, 0x3af8f963, 0x6f2c4fb6,
+       0x0aa7f767, 0x4f242e33, 0xceb0bd00, 0xc7d762ec, 0x08d5c346, 0xefad13c7,
+       0x09c55e61, 0xdfec3a04, 0xb98f6604, 0x439e31ea, 0xb078fa94, 0x3f2dfd3b,
+       0xb1f2053a, 0x01e89d7c, 0x71ec817b, 0x7ca5bfa2, 0xee230ddd, 0x9f3f4072,
+       0xbf004f24, 0x5c1bfacf, 0xbd17be22, 0xed4cff2c, 0x97be9eba, 0x00a35fd6,
+       0x8ebcbe3f, 0xd13cbfcd, 0xe8e819ba, 0xc8887ffa, 0xf889925f, 0x966deec0,
+       0xd7c011d5, 0xbc26eb4a, 0x74c4e897, 0xfb42d86a, 0x0171026d, 0xa7e7125c,
+       0x4172fbc2, 0x8ae13cc2, 0xbd62ca96, 0x60e1f3dd, 0x2136f111, 0x9c2a6167,
+       0xf57ca07b, 0xb5a7d033, 0xc11f28eb, 0xf83e33f8, 0x84772cf3, 0x2d1984af,
+       0xbc0f20d3, 0x7f7649fc, 0xd33d9f6a, 0x9629f37a, 0xa5370607, 0x0ca13dc1,
+       0x9f2cff5e, 0x9f1aec59, 0xb9070fd4, 0x7ea4be5a, 0x85defeb8, 0xcad27c7e,
+       0x2bbc2dee, 0x827e6053, 0xca4ba4cc, 0xe8fcd6f7, 0x37510f56, 0xaaae3039,
+       0x657afec2, 0x2bf584a6, 0x77966533, 0x5b3de5fb, 0x4aeba75e, 0x0bddf4c8,
+       0x544399f4, 0xc25613cc, 0xacd489ae, 0x1da35005, 0xfc2d5a46, 0xfff30e9c,
+       0x9b214ead, 0x961ce7f5, 0x9ca8fef2, 0xf4fd0858, 0x01d5ffbe, 0x765d6f80,
+       0x17b068cf, 0xc53e17fc, 0x93a39db8, 0x1e1d75c5, 0xf1ba012f, 0xf3274e77,
+       0xb2e44646, 0x86f4c3df, 0x676f5d71, 0x751c999a, 0xbd9fb187, 0x9b9f8c59,
+       0xed629c79, 0xf7b438fc, 0x3683bad7, 0xe577f498, 0xaa7ecd5b, 0xeb3dfee4,
+       0x8e3167c6, 0x0b828245, 0x6ee095f2, 0xd9f75850, 0xbf98d98a, 0xd0e36a7d,
+       0x4c779600, 0xc7257cc0, 0x1f2edfc6, 0x60ea7002, 0x4f0e4df9, 0xefac3c77,
+       0xf1a3c6d4, 0x8d8abeb0, 0x8ac57eec, 0xbbd4b9e0, 0x44e44646, 0xdbf7c38e,
+       0x09f78c4c, 0xa279fd0e, 0x493f1b53, 0xfe60e79d, 0x85a7d400, 0x6cb2e1b1,
+       0xf02d84f0, 0x643ff5fd, 0xcdbd3978, 0x4e8be782, 0xabcfa2db, 0xfd32769f,
+       0xdb533bb7, 0x8367b5ef, 0x4b2be9fe, 0xe6e2a223, 0xcf1db96e, 0x442c7da7,
+       0x5cb553f7, 0xe575b8c4, 0xa9048172, 0xd4fd3fcc, 0xff20d9f3, 0x3e7a6d4f,
+       0x668f9f5b, 0xbe7b4efc, 0xfdc78dac, 0x54bf9a63, 0xf5cfe38b, 0x725f9858,
+       0xd6a97f00, 0xbf30b49e, 0xb5ca59e7, 0x77da8740, 0x54e22b67, 0x12cf77b0,
+       0x685c106b, 0xffb93b73, 0xb9875555, 0x09ee46c7, 0xcb6ff634, 0x7424f466,
+       0xb01fe808, 0x7ca30c8f, 0xdff2defe, 0x93a9f14d, 0x0fcf14ff, 0xc61ff931,
+       0x3880abdf, 0xae4dc02b, 0xafa04873, 0x7d181b52, 0xe137ef85, 0xf3cdcb3e,
+       0xe941e52c, 0xd76f900e, 0x846b8f0f, 0xcf3705fc, 0x941accbb, 0xddf5df87,
+       0xeeca92b3, 0xf520c959, 0xb8804e78, 0xb33edf98, 0xd256b888, 0x2e565e62,
+       0xf13a4ff2, 0xdf2c88b4, 0x05b8c05b, 0x1fa68b87, 0x5e408e80, 0x48ac169e,
+       0x80a74247, 0x6a68a8f6, 0x0efd0d9f, 0xace65744, 0x2beaba68, 0xaba21fff,
+       0xe881ac84, 0xca7187ca, 0xd8d6e9b9, 0xc2fdc574, 0xa07edc97, 0x56fde938,
+       0xf98e4fcd, 0xbfbcc57a, 0xef03ab62, 0x731e22fb, 0xdbdfde8f, 0xd862ed4a,
+       0xd571693f, 0x0a250dc1, 0xeaebf7cb, 0xfd823f06, 0xcbea2b1a, 0xb95d4d87,
+       0xe318c760, 0x89b314ac, 0xd74017a0, 0xfe673fa2, 0x23b32f24, 0x3c275c58,
+       0x4e7dc65d, 0x5e0982dd, 0x454c4766, 0xb2aff17e, 0x780f7829, 0xcc62ee67,
+       0xd8485cbf, 0x6d1d993d, 0x3fc0ca6b, 0x7f03ab7b, 0x178b46b7, 0x7cd1e591,
+       0x716042b7, 0x2c8dc0a7, 0x3712366f, 0x790f5eea, 0x2395cdc3, 0xe7d26fd1,
+       0x50461e0f, 0x5c6a5c6f, 0x1b2aee71, 0x078b5dc2, 0x0052759d, 0x617e855d,
+       0xc1243e76, 0x7f50f4ca, 0xe4fe80f9, 0xfda222d4, 0x907940b5, 0x1bf1e656,
+       0xf8b5ff8d, 0x37a47392, 0x9df22c17, 0xf5f0febf, 0x21df31b8, 0x7eec841f,
+       0x41f31be4, 0xc85e8dc8, 0xb7faa107, 0x4da61eaf, 0x5656b2f5, 0x65eafee1,
+       0x44bd48ce, 0x9c2b60ed, 0xbfefc3cf, 0x120dc9f8, 0xfcf269e6, 0x84bfdd92,
+       0x6c47e7bc, 0xfd3c6a24, 0xff4324fc, 0x43bfda66, 0x707fdad1, 0x30c30df3,
+       0x63cbcb2e, 0xf9d2a97e, 0xee8e623d, 0xbfca410f, 0xde368287, 0x8f8d828f,
+       0x6236baac, 0x617b501f, 0x8898d641, 0x83ecb09d, 0xe8aba6e2, 0x27d77658,
+       0xe9aaf798, 0x885bbf7b, 0x61fbfe79, 0x5bdfafce, 0xecfd2abe, 0x98b387eb,
+       0x58053d7d, 0x504bee92, 0x7a17fb7e, 0xda966f31, 0x7cc08f25, 0x39efdf7b,
+       0xf7d68fbe, 0x01fbf8ce, 0x3bf99ad8, 0xfb0d9eef, 0x6263c82a, 0xe2230bbf,
+       0xfe56fbfd, 0x9f5427fb, 0x39877bb3, 0x38b954fd, 0x080624fd, 0xf79b2ff8,
+       0xde806308, 0xfecfa909, 0xa7e5c529, 0x1c5aea59, 0x3dfb8067, 0x7e62cd9f,
+       0xc4de7f01, 0xffa1c335, 0x33de028d, 0xa3ef32b1, 0x9fb879d4, 0x977a923a,
+       0x8ecabbee, 0xf11e59c7, 0x384c7316, 0xecc59b3e, 0x3b5dbadd, 0xa71b9055,
+       0x8c3c7883, 0x15c14854, 0x5456d760, 0x2422c098, 0x5992c185, 0x2998cf18,
+       0x6b5f7de3, 0xdfe4fdb8, 0xf2004b72, 0x7ff4fdc4, 0xeb59ebc8, 0xb139432d,
+       0x81d5a676, 0xb9bca171, 0x5c1c2377, 0x61c02a71, 0x0cc4de65, 0xfa6ea718,
+       0x081dfc14, 0xa0e7b53f, 0x6dc16ebe, 0xe6d22fe8, 0x3cc3b2b5, 0xb19dec15,
+       0x967baed4, 0xe92b3bce, 0xca1ea9a6, 0xedc583d7, 0x203af7f9, 0x8e5b1e4e,
+       0xba30e717, 0x81bc1468, 0x7fa2149f, 0x4c7cea34, 0x1fb3074e, 0xa392cd5f,
+       0x357ebdee, 0x5eb8424b, 0x049ae81b, 0xea57b2e4, 0xed5d83b6, 0xd839ea27,
+       0x43af1357, 0x0872fbc1, 0x45ee5f93, 0xaccdfa0a, 0xaf87eeee, 0x256bfa82,
+       0xa910cfdc, 0x6e3057fb, 0x67b70aef, 0x007ce125, 0xf12305e5, 0x67c637f7,
+       0x7e010efb, 0xb57b72c7, 0xf28fd777, 0xd9a8bfc1, 0x39362b5f, 0x5d0f1083,
+       0x9b1e54e1, 0x4bf2720a, 0x5801e589, 0x68935dc3, 0x9dff953f, 0xa666fd84,
+       0xbd028efa, 0x5705b0ae, 0xda041d00, 0xb94cefd8, 0xf8435867, 0x9d9b06fb,
+       0x9a67606d, 0xe8044ddd, 0xd05f6e98, 0x7b75628f, 0x2785c409, 0x3c244a05,
+       0x6bb067e7, 0x5f9df526, 0x771fa371, 0xcb8fe722, 0xb71c1528, 0x5e342b22,
+       0x39d88e4c, 0x55babf07, 0xfd9a9782, 0xbf32b263, 0x7199e4fb, 0xa5892eec,
+       0x3bf003e1, 0x1777764a, 0xb6b87b01, 0x6a71c05d, 0xbcc19ef3, 0xc676eabc,
+       0x54f97ddf, 0xa5e63752, 0xe765957d, 0xa32340f6, 0xf985d277, 0xc32b64a9,
+       0xd9dd2127, 0x2e78f7d1, 0x79f1e766, 0x3f8f327f, 0x137f72d4, 0x6f581895,
+       0x0fe2d6c9, 0x99f70c4b, 0x0b5771b2, 0x4c9f785d, 0xc4f05f20, 0x9d95573a,
+       0xe12be8cd, 0xe014f0a5, 0x2d2ef0df, 0xc7e5967f, 0x857319ae, 0x7eb14c07,
+       0xe71db3f9, 0x923de0a6, 0x6bf20953, 0xe5a5c75d, 0x70e30ecf, 0xcfe597fd,
+       0x0375047a, 0x4ece8e7d, 0x2d3b7e64, 0xe0c3d67f, 0x8d13c5a8, 0x19bdb379,
+       0xafe58921, 0x84dfaf75, 0xe60b7efb, 0xfc771477, 0xdfe810e9, 0xc7692b62,
+       0x6ec1aaf8, 0x2dfa53f9, 0x71d364d7, 0xbe399ece, 0xd79821fe, 0xb0f39f4f,
+       0x7b68bb7c, 0x321ffae4, 0x26f4fcfb, 0xe47602bb, 0xa9b72e06, 0x73eec8fd,
+       0x93f6c6df, 0x5a723b46, 0xd91db476, 0xb71ffe57, 0x02fcd923, 0x84de589b,
+       0xdfb5df26, 0x715b3c05, 0xd7f41e3e, 0x31f37d6d, 0xe46c77e4, 0xb19d1df9,
+       0x6e0e3bf3, 0x33bde3b6, 0xe86ddbe7, 0xdc789497, 0xfc338ceb, 0x31a90000,
+       0x40cfc0f1, 0x4eabfade, 0xf944c1ff, 0x71636a4f, 0x71e04924, 0xc24457a6,
+       0x4baa62e2, 0x1293f71f, 0x1d83a4a7, 0x57f7dda0, 0x3546fdc3, 0x1615c349,
+       0x7be6faef, 0xca26cf4d, 0x3bebc021, 0xb27bbec9, 0xbec5ae31, 0x145a2f27,
+       0x2dab5c7d, 0xa3baecc8, 0x4c90a679, 0xf606d9d7, 0x156de001, 0xe5f56f8b,
+       0xb4b5ec07, 0x60b9bde1, 0x6c7ec07c, 0xc9ca2e45, 0xb56e2d52, 0x4ae3f997,
+       0xe8ea7c79, 0xb8dfb28c, 0xf5090840, 0xf67f6153, 0xe809caf9, 0xb1e07f47,
+       0x5d2cf8e9, 0x0167386e, 0xfda1fa7e, 0xce4457cf, 0x88fc46ad, 0xb2942f70,
+       0xfa089a5c, 0x96b89732, 0x0257fc80, 0xa525feec, 0x68c13e91, 0xd8024c17,
+       0x770ad239, 0x5977e01c, 0x54f509a3, 0x42a4d1a0, 0xebce0d3b, 0x7d5e99b3,
+       0x19e99b2e, 0x8c20aa8a, 0xcd1b3da3, 0xfbc0ee3c, 0x214c4c5b, 0xf6049a78,
+       0x6292e65c, 0xf5acc3de, 0xb7ae68d7, 0x9c2e9f82, 0xf7bf4265, 0x133ab2e7,
+       0xc349c6fd, 0x1b36f7f1, 0xa7cbf59d, 0x9de47ab2, 0x2f616dcf, 0x31275fd6,
+       0x49289243, 0xb39b3f20, 0x00cb3c79, 0xa29abbb7, 0x8c78c6cb, 0x29525cf1,
+       0x319e5df1, 0x9db9ffb4, 0x635f9066, 0x1cb94f00, 0x77cc1ede, 0x38bfd6d3,
+       0x94cdc193, 0xb2439ec5, 0x3a04ce26, 0x63289218, 0x4490c63e, 0x2ba55fe6,
+       0xb90ff9c1, 0x7d202dce, 0x08dbe618, 0xcf1b9b46, 0x7d7d2219, 0xe71bf9d7,
+       0x953b37bd, 0x0e9aadf3, 0x9752cbf1, 0x4be8f18c, 0xd87c93f5, 0x1c9867a7,
+       0xcfff2bea, 0x3ed967ef, 0xf3c88569, 0x87285c66, 0x5ad8bae6, 0xcd9e0a8e,
+       0x71237f70, 0xd6013b50, 0x002c42b1, 0x2dd265bb, 0xdd475c0e, 0x758f765e,
+       0x6ceec2ed, 0x1375e3d0, 0xdc4387bb, 0x985f08c6, 0x2fc9a4ad, 0x9bae6eda,
+       0x44d0fde0, 0x5fe78edf, 0xd559c745, 0x3fde414f, 0xfdba3a6e, 0xb6afa04f,
+       0xd15f50db, 0x80b3ed7f, 0x2e57659f, 0xa6f751da, 0x7902bef9, 0xad0b8fe2,
+       0xec17327f, 0xd5376616, 0xc0da5a76, 0x68db9c2e, 0x2ab4ef38, 0x9647ee3a,
+       0xa5dfb127, 0x6f7e8e68, 0x3fd5473c, 0x7884d80e, 0x46fb2d59, 0xbd53bf00,
+       0x6707f983, 0x37984d2a, 0xca7a2a50, 0xb19ede40, 0x67e3db45, 0x83a4fdf8,
+       0x7b3c3473, 0xfb9e0386, 0xecf0fdca, 0x2e780e19, 0x5233dc35, 0xf8a6780b,
+       0x3e78e1ad, 0xe19af3b3, 0xed9ee780, 0x3c070cd7, 0xa93736af, 0x0d5f37c0,
+       0x50e4e5f2, 0xc1bb1cf8, 0x9694f68b, 0xf4a97a97, 0xad139f98, 0xffcafb17,
+       0x40caff22, 0xbebaf0fa, 0x43eb4479, 0x8264acb7, 0xb56b983c, 0x845ea37c,
+       0x3c7e98bf, 0x1dfd05ab, 0xe4fabf7b, 0x0e419b97, 0x8f688a74, 0x95edfd68,
+       0x1ec1437c, 0xdd287bda, 0xee061013, 0x6bec38ff, 0x309c60c6, 0x6d157e00,
+       0x93d9a01f, 0x9d3c7946, 0x4722a7af, 0xfaec097d, 0xae37ebef, 0xc1acefe0,
+       0xbb9d984f, 0xbf30f051, 0x0f3b3b71, 0x05c4a7b1, 0x4193e27e, 0xdbae37e6,
+       0xe37e8f99, 0x10fee0ca, 0x4e9189e4, 0x8ffb05c1, 0xe2478dca, 0x77401f21,
+       0x073ca1be, 0xdfbd1cf1, 0x1a3c193d, 0x7403f90f, 0x1f617bde, 0x65877761,
+       0xba625dfc, 0xc0bc83df, 0x2efd893a, 0x609b9d4f, 0x47614b9e, 0x8b4ffef4,
+       0xcaf5aef3, 0x76d77728, 0x53e77bb2, 0x266e5f65, 0x899235e8, 0x7c6b3df7,
+       0xda8e7f76, 0xc488f30c, 0x877fd5d7, 0xdf96b078, 0x0126bdd5, 0x4cdbb7e9,
+       0xb3c81754, 0xcf2e4e35, 0x9f6f9424, 0x2fdfb2b5, 0xfeda3fc4, 0x13b320b3,
+       0x2f3cb52a, 0x8cb2fe7e, 0x7904bf9f, 0x7bc8321f, 0xdb8b597d, 0x43bf6b57,
+       0x8209cfc5, 0x33b7d01e, 0x1e21f5c6, 0x610fd51e, 0x77fd4ae7, 0x1f303c38,
+       0xd7478f88, 0x993ed807, 0x82fcc3f2, 0x786afd08, 0x8eb7e8d0, 0x15fda1fb,
+       0xfa052d1f, 0x3373f3f5, 0xbf461e35, 0x05bf7435, 0x7e46b179, 0x79d1ed27,
+       0xfff103a0, 0xc5393ef6, 0x80fb7ff8, 0xe35fea72, 0xf034ed5f, 0xcd7eb6bd,
+       0xceb7df6f, 0xa5f1814e, 0x7dc65d61, 0xaedfd1aa, 0x552f33ed, 0x906dbe1e,
+       0x5fff6f87, 0x0e1f8792, 0xe3a30f28, 0x1e59df19, 0x1ae38bfe, 0x44f3d9bf,
+       0xc03bec3c, 0xca7d878e, 0xfe664df2, 0x546a713b, 0xe88a78bc, 0x54fc5950,
+       0xe3a3ead4, 0x1e14caf0, 0xbd7c6787, 0x7888a77f, 0xe271e5ab, 0x0f4e3dda,
+       0x9470ad34, 0x18d69c63, 0xdb22ad3f, 0xfeaa00a7, 0x21558e37, 0x008000f5,
+       0x00000000, 0x00088b1f, 0x00000000, 0x7dcdff00, 0xc5547c0b, 0xbddcf0f5,
+       0x6ec95f77, 0x803f79b2, 0x0920f370, 0x909b0849, 0x4ba8a8c4, 0xc5281808,
+       0xa3e22225, 0xe101e4b8, 0x5ad14791, 0x859ff6b4, 0x83012f20, 0x748b4146,
+       0xd5b03ea1, 0xd0445a1a, 0x11142ec4, 0x3e0bf5ad, 0x2ffa07fa, 0x5688805f,
+       0x52c05921, 0x9dfadada, 0xb26e6673, 0xbf944977, 0xdf7dfff6, 0xdcc993fa,
+       0xe6733b99, 0x9af399cc, 0xed177333, 0xb6ec9e30, 0x097dfa30, 0xdd662fff,
+       0x58ce9626, 0x79febb7d, 0xde7d1ee3, 0x4f63daaa, 0x2a1fc387, 0xea12fd4b,
+       0xbbb19497, 0xc32836dc, 0xfd8c0ddf, 0xc62176d6, 0x2f903793, 0x3532f3cb,
+       0x16a5af28, 0x83a2cbc5, 0x06a8279e, 0x7de18ac6, 0xd12f6f13, 0x0a5b56c4,
+       0x1ed87b19, 0x90f962ee, 0x9615b037, 0x1f3ec668, 0xe3524ee1, 0x60357de0,
+       0x9fbd40f2, 0x1995bdee, 0xed8d4854, 0x63116a05, 0xf39b7ade, 0x9ec65499,
+       0x35af3232, 0x1ffda07a, 0xfda8908c, 0x2e67ae1b, 0xa7d8cb16, 0xcb7d9a2f,
+       0x56a7d1e1, 0x083dbb36, 0x90ed4f8e, 0x540b7687, 0x51c38c28, 0x18cca7b7,
+       0x46579413, 0x633c581b, 0x070838f7, 0x9ed4d62c, 0x3ff786e2, 0x2cedf493,
+       0xdf332d5c, 0xac16c638, 0x062f9896, 0x95fe7dda, 0x9fcbc414, 0xa525799f,
+       0xa15f082a, 0xb5e969ef, 0x9bad7f5a, 0xafe8165c, 0xf9fd698a, 0x557f6387,
+       0x2909f34e, 0x9ead9e02, 0x9f9feae4, 0x3367f834, 0xb824a6e0, 0x6059733e,
+       0x1648efbc, 0x0bc072df, 0x6232b973, 0x9441bca1, 0x358ed50f, 0xa5fea545,
+       0x0edf923d, 0x1c79e1e5, 0xf755d3df, 0xe2f09514, 0x2fdb77ca, 0x3df42f6f,
+       0xd07032b6, 0x1786fd00, 0x30c94e05, 0x59976c3f, 0x8343051d, 0xd81e68ae,
+       0xce1f24ba, 0x259c5317, 0x9cc66788, 0xeed09525, 0x6af3fc71, 0xf95acec6,
+       0x3978687c, 0xaaf8e76b, 0x671f9fe9, 0x3357be26, 0x3338fce4, 0x06d55f11,
+       0xa76e09e6, 0xe607e71e, 0x9f98b165, 0x955f2fb3, 0x6673f389, 0x389955e7,
+       0xdd92c73f, 0x3d9c70f3, 0x4c995c13, 0x1d956c66, 0x037807e0, 0xedd59bcf,
+       0x2b16d5d0, 0x122dcfa7, 0x14b64ba7, 0x7a22491a, 0x817971a2, 0x2e919ebe,
+       0x4207aba7, 0xff81eae8, 0xfa02ba61, 0xa36ed861, 0x57dbb785, 0xd7023e77,
+       0xaf956ae3, 0x3d419c07, 0xabe9e8bd, 0x9bf643aa, 0xf833a307, 0xdb25d305,
+       0x60cb9aec, 0x669cfb7e, 0xc0ea6d75, 0x7f757dfb, 0x5f6d508f, 0xc6978ed5,
+       0x45d6525f, 0x4a740b78, 0xc0ea7b6c, 0x98bb1a38, 0x3fef07cb, 0x9ed5e021,
+       0xe79233df, 0x93d7547b, 0x8e674f38, 0x922c2c5a, 0x31a422b1, 0x6dc1a768,
+       0x4ed049f3, 0x2199bb43, 0x300f0d5c, 0x34af049f, 0x3e5c1b64, 0x9ec35f18,
+       0xb41e6c19, 0xf3dc391b, 0xeabfbe34, 0xc32bcd98, 0x2bb36bfb, 0xef3c3559,
+       0x6ff3ca3d, 0xc0ecf30e, 0xba07c6f2, 0xa683ef4f, 0xcd3f2adb, 0x7c977c47,
+       0x45656179, 0xd8ebc111, 0xb333788e, 0x7a79e0a6, 0xdc59f91f, 0x3fd5da40,
+       0x0924aeef, 0x67533bde, 0xc6a78860, 0x02639758, 0x8af183ae, 0xe1241473,
+       0xcb0b976a, 0x8449761b, 0x8f9912a3, 0x3868fd87, 0xaec353d1, 0x606f0509,
+       0x305addbe, 0xf92dfa0a, 0xe385cda3, 0xb25f733b, 0x6bf2864f, 0x51bf3c52,
+       0x22f62f01, 0xea0914df, 0x647e848d, 0x4a7ae915, 0xf1adc201, 0xb19fc7bf,
+       0xdc7bff13, 0x89935bee, 0xec9b737c, 0xd526867c, 0xe420fa95, 0xcc373c17,
+       0xc3b216b9, 0xb0873de3, 0x3ac5c7bd, 0x92d6b664, 0x7bac8319, 0xc827bd6d,
+       0xe13f6a06, 0x45af8b0e, 0x8f07e01a, 0x92c7991b, 0x5e47c03e, 0xbf9a5552,
+       0xf34658c6, 0x8331d8d1, 0xf206dad5, 0xf86a9136, 0xe9391bac, 0x25e38425,
+       0x16f7a155, 0xf6b6b0ed, 0xa5c80f64, 0x5d28f6fa, 0x524f71be, 0xdc904f6b,
+       0x247f845a, 0x0d92fc21, 0x5e62c3d7, 0x3cda46c4, 0x05bd6ed4, 0x9f019fe4,
+       0x586e4c04, 0x1497e197, 0x87349ba2, 0xbec8e889, 0x019e519a, 0xfc828d1d,
+       0xc4d740f8, 0x46671848, 0xe23c7f9b, 0x064bf5f7, 0xc665279a, 0xca193e3b,
+       0x5fde2523, 0x35eebafa, 0xced8b159, 0x54e1d707, 0x328eadaa, 0x73ba432b,
+       0xaa3e279f, 0x7f636534, 0xa91a1f65, 0xe19d8bfd, 0xdfbc333e, 0x6478b296,
+       0x7bd7bc14, 0xf537e80c, 0xa5a0f972, 0x187cb65e, 0xf7f6852b, 0x80626fbc,
+       0x492efb2f, 0xb52d3787, 0x1e68daa7, 0x935dbc1a, 0xc75eb82d, 0x557f12c7,
+       0xb5e8ff3a, 0x1acabf40, 0x5b0f3905, 0xac197461, 0x3196bfc8, 0x6f5033e7,
+       0x80c39b54, 0x661235f3, 0xefbbe91c, 0x63e47ff5, 0x82e5b19e, 0x5528f87f,
+       0x872bdd8c, 0xbacb3b61, 0x7ce2f7af, 0x34328aec, 0x817b61e4, 0xb7971c06,
+       0x9f219c33, 0x7d27b91f, 0x1f90b5f9, 0x24c1dab9, 0x2eaf47e4, 0xeef4891a,
+       0x1a8e7185, 0x55179c64, 0x74adc123, 0x8e501b86, 0x13991b29, 0xe2a2557b,
+       0xc7ee08cb, 0x04ed0f20, 0x648d3d04, 0x63d402ae, 0x9444dc00, 0x27aa3d4f,
+       0xe50e352d, 0x4b47588f, 0x7f287cc3, 0x75a30aec, 0xec7a5f63, 0xdf9065c5,
+       0x3875626a, 0xe7affdbe, 0x8bbd6256, 0xe709146b, 0xdcd462e1, 0x9e780e91,
+       0xf1d7ca9f, 0x3fdff8e5, 0xfe02258c, 0xf2e7df3b, 0xf6c0600c, 0x17a72315,
+       0x36ec4d65, 0x5d73b42f, 0x1520a7a2, 0xe15baeca, 0x5f2c9197, 0x5a3cf477,
+       0x02372001, 0x885a5e7f, 0x97cb93fc, 0x3fc01d86, 0xbac6fde1, 0x8d9f2b93,
+       0x1c963a45, 0x93afa788, 0xeaa6372b, 0xfe7f4ae5, 0x52be92ff, 0x2797aa99,
+       0xe4d2fada, 0x079462c9, 0xee2dc7a0, 0x681cb890, 0xada03907, 0x327920d7,
+       0x6f5e9ef0, 0xf81f7fe9, 0x72ff398c, 0xdeda13fe, 0x030bfa50, 0x94fd8c3e,
+       0x7443f40d, 0xa6bb5bf1, 0xdda9791f, 0x665e5146, 0x8b32fde3, 0x11b8fdbe,
+       0x04af1a0e, 0x7943b1e3, 0x4cba8b7c, 0x63f5f941, 0x107924e6, 0xc6cf9116,
+       0x43e29a62, 0x065bd5fd, 0x373a41e3, 0x7e845f00, 0x84ab5912, 0xf98c3a74,
+       0x03190925, 0x7ef866eb, 0xac732942, 0x4aeff785, 0x9ff6a34d, 0x32d5ce62,
+       0x42554df1, 0x274badf8, 0x10627bba, 0xf313df6e, 0x6c5bbfb0, 0xbef59fd4,
+       0xaa5cf409, 0x4e7ad0b4, 0x8f889b76, 0xb903ac4c, 0x4192f50c, 0x393e632e,
+       0x75a5d383, 0x8167c9b6, 0xe0cf9f7c, 0x6c9c0235, 0xa5e1d335, 0x393be04c,
+       0xf22a5e6b, 0xb3e5ab45, 0x8fa01e9c, 0x259cc3c7, 0x91ad0fa8, 0xf1c6bf40,
+       0x7a23082c, 0xede28b6c, 0xf3482db6, 0x31f7bd21, 0x3066f79e, 0x424aee51,
+       0xbff77f7d, 0xdbefd264, 0xe90f200a, 0xda9e826b, 0xa292b866, 0xb9e3976c,
+       0xb7af1b6d, 0x04f3d126, 0x9964e3ae, 0x54b6d9cb, 0x37469ede, 0x7049f341,
+       0xf5c9d93d, 0x133ab2fb, 0xc16fa38d, 0x879424d4, 0x0c0c0b7d, 0x0eb280f5,
+       0x90c3a733, 0x6d9c9efe, 0x576c7e62, 0x9f9159f1, 0x75f0f46a, 0x6fcc2dfa,
+       0xb9c01376, 0x7a4779bf, 0x03fdac0f, 0xf694edcd, 0x7976a559, 0x3981a62c,
+       0x4b9eb9c8, 0x8056e93b, 0x03d9f6ef, 0xd0901229, 0xcf3ff49e, 0xe05c7ca0,
+       0xbb7fe638, 0xf292a63d, 0x255b02a3, 0x6d347fa8, 0xda472f1b, 0xdbfa864c,
+       0xcde19b1e, 0xeff216fb, 0xcb04a60b, 0xe79b42bf, 0x7aa5f200, 0x0bb2bdd6,
+       0x5fe4d0fb, 0xac8fe711, 0x0ef24cdc, 0x3a45ef06, 0x4a949c3a, 0x3b2d817a,
+       0x9617576d, 0x513b370f, 0xa272810f, 0x26a3c3ff, 0xcf9572f0, 0x276e1b3f,
+       0xedf40b7e, 0x3876fe45, 0xaca1ca15, 0xe807d71e, 0x3c12b357, 0x67ff601f,
+       0x717baea5, 0xf49e1c3d, 0xf3a43cc3, 0x947fbbb3, 0x46e7fc81, 0x83ede813,
+       0xe96d9bf0, 0x19f5bf9c, 0x6825ab6d, 0xf3c13127, 0x48e76c27, 0x51c99cf8,
+       0x98ecfed0, 0x8428a609, 0x8cbcfbdb, 0xf3138de3, 0xeb933517, 0x6ee55193,
+       0x6dda16a9, 0xe23872b1, 0xf48b8a3c, 0xe94ccf1b, 0x8b7f1816, 0xa61df424,
+       0x925d9246, 0x425646ad, 0xfbe978ba, 0x640eb8e9, 0xb165beb1, 0xee6bdfbe,
+       0x814050ce, 0xa37dbabb, 0x7bbd983c, 0xa1fd8873, 0x7c6951a5, 0x3ab2951c,
+       0xd623e906, 0x69aef7f8, 0xc9b2df30, 0xb77c43e9, 0x48abb08c, 0x25ecfbc7,
+       0xaed0dd89, 0x45c7f234, 0xfe7c36dd, 0xa90622e3, 0x744ced1c, 0xd2a3e507,
+       0x63967d38, 0x785fc43d, 0xf6c39153, 0x122f6c6f, 0xe6fbcbda, 0x63b7f5ed,
+       0xb62d70e6, 0x58145204, 0x78c50f77, 0xfe60d2e2, 0x713dce2e, 0x7b97f22f,
+       0x971f0f93, 0x9c8c1e90, 0x48477b3f, 0x6d644edc, 0xae802313, 0x1147a60e,
+       0x8925919d, 0x1f54acf9, 0x2fe04dca, 0x5a303f54, 0x369da1f2, 0x75a3266d,
+       0xb5d61dfa, 0x9fde1ba2, 0x4dede0ec, 0xfd254d2e, 0xdfe29a74, 0xf261fc87,
+       0xce047711, 0x035be4e3, 0x50e1d20a, 0x898dd6fa, 0x683bb546, 0xf5514d9d,
+       0xeb64eff9, 0xea75dff3, 0xfe9537f3, 0x7f382b33, 0x9855c636, 0x107c8716,
+       0xcbf23ff8, 0xf48399ab, 0x8bc958f0, 0x2bee517a, 0x72d6dbc9, 0x3a424053,
+       0xe3b0b9fe, 0x5465295e, 0xb2c3bf1e, 0x5fe582dd, 0xe033297c, 0xcf28b253,
+       0x9196644d, 0x920f84d1, 0xa39001a3, 0xbb1c0f88, 0xfddffe11, 0x0be1077d,
+       0x9da09aeb, 0x1f5573dd, 0x36f123da, 0xd71ebb03, 0xd685916d, 0x5a3eb6ad,
+       0x80e740ac, 0x966192c7, 0x16fba430, 0xb63373a3, 0x55998725, 0x22139b94,
+       0xfcb6d42c, 0x9dc90a1f, 0x73335665, 0xfaff7e40, 0x3d43ca30, 0x8bfb1fe2,
+       0xed863e4d, 0x3f21790a, 0x5bb92062, 0x5cb730a2, 0xf8fcf548, 0x85927f7c,
+       0x6690c1ea, 0x03a073e2, 0x28271eb1, 0x104c3c0a, 0x10eb6bb0, 0x9be7a47a,
+       0xc5973ac4, 0x70003b7a, 0xc96fbf50, 0xad12ccdb, 0xfdb13be3, 0x462c96f3,
+       0x89d2d67a, 0x7c38d4ec, 0x67603149, 0x27c10ed9, 0x48c9b63a, 0xd6badaaf,
+       0xc5700cf8, 0x9c78d88c, 0x350f5e0c, 0xc30fcc40, 0xd607533f, 0xb20e6339,
+       0xb45847bb, 0xdb0b8a7a, 0xb5ef124f, 0xa60aa5a5, 0xeb19b374, 0x52e78bc5,
+       0x437f9bc7, 0xc1f8d47a, 0x87b5f356, 0x8e5c1f91, 0x501fecef, 0xc1ddaa7e,
+       0x1c359df1, 0x961c9dd7, 0x56e51c35, 0x7553944b, 0xc1b3e507, 0x8d1d999c,
+       0x907a80f8, 0x44e2b9bf, 0x1f241286, 0x179d70da, 0x0c573d53, 0x55bf7be0,
+       0x73eb8e1d, 0x79eb7e90, 0xdeffe1bf, 0x5fa1137e, 0x0edfb7a8, 0xa7bd42fd,
+       0x21bf66ad, 0x4bfeb062, 0xebefec55, 0x4fcc65fa, 0xe05533c4, 0x8bc0e815,
+       0x76fda7fe, 0x54e3d103, 0x032fcd8b, 0xf1c7f79e, 0xf1b658fe, 0x901eb04c,
+       0x40687401, 0x8f0d8fbd, 0x90cb9d3a, 0xff5a3125, 0x281596d2, 0x23593727,
+       0xbddd23b6, 0x60e2e829, 0xa0647ff8, 0x9ce6f49e, 0x47c403cc, 0x40ad9722,
+       0xdaca9922, 0x7c689f89, 0x89d262ee, 0xbf03cc12, 0xbbf235fb, 0xcf0ed37b,
+       0x440fc6c1, 0xb920ca6d, 0x95dae317, 0xfc397c56, 0x7069fd1a, 0xbd221d23,
+       0x0861d3f7, 0xb11d1afc, 0xb612ede9, 0x99e814ff, 0x277a6a98, 0xca124d63,
+       0x188ea679, 0xf1101f18, 0x1f134b64, 0xc12f02c7, 0xa3d4637d, 0x640fe60a,
+       0x3e42de78, 0xb9ec7b35, 0x272b0514, 0xfb42cdce, 0xfb7de00a, 0xa1bc25ff,
+       0xea03767a, 0x1eb8e3c7, 0x866f7c48, 0xa4fe87c9, 0xc78fd406, 0xb58ebd0d,
+       0x1dcaa5fe, 0x3a03cc4f, 0x73699c69, 0x1360e702, 0x53e2243b, 0x3740758d,
+       0xa463d912, 0x8b3037c7, 0x35eef90f, 0x21be2f42, 0x01856c33, 0xe2557dda,
+       0xcbef4e7e, 0x2099f566, 0xaa2dbafd, 0x488feb7b, 0x7a73ce3f, 0x2fa83f11,
+       0x1807bd61, 0xf5fa5df9, 0xf4957ae7, 0xf6397ee7, 0xedf10303, 0xbbce02b6,
+       0xe50fbedb, 0x5ccde912, 0x48cb9ebf, 0x10cdb62e, 0x2a0eb5e5, 0xe3049fc7,
+       0x827fe04b, 0xfe88cd1e, 0x5469ecdb, 0x79732c9e, 0xf2e5aec3, 0xdb952da6,
+       0x65b76d97, 0x61e3f952, 0xf788d1be, 0x0f39d96a, 0x6b24fd91, 0xe50fa425,
+       0xd74f8d8f, 0xf3fb63fb, 0xec7f26ff, 0xa49ec917, 0x36af6874, 0x012295cf,
+       0xb89b563d, 0x75e8165f, 0x5d34174b, 0xd0329ac1, 0x9ac29a4e, 0x13a4303e,
+       0xfac48ebd, 0x5e8173b3, 0xaaf475d3, 0xbe7317a6, 0xf469708d, 0x21a74fda,
+       0xa266f974, 0xd3b63467, 0xc7fed516, 0x3a2bb406, 0xa07f34cc, 0xff90a6cf,
+       0x043f843b, 0x70a353c1, 0x99656278, 0x0c1829e0, 0x37592b9e, 0xc09a74c1,
+       0x6a18faf8, 0xcc2824fd, 0x581c2f6b, 0x3c63673f, 0x7fb7ec2e, 0xf6e4ad1d,
+       0xcb7065e4, 0x59a7a236, 0xce9cc9b7, 0x07dcb9c3, 0x4125a600, 0xff4433ff,
+       0xcbb8d6b3, 0x0cdeb0a3, 0x0fc1e389, 0x95fc01ff, 0x47467ca2, 0x875c34fd,
+       0x93c6e595, 0xc68e7ac1, 0x8840712f, 0xfea2d9f7, 0x46198ecd, 0x9ccff006,
+       0x9a67dfa6, 0x3fe4e77d, 0xcd6678e3, 0x9b33b7d4, 0x47273bad, 0x22303f10,
+       0xa9df66fe, 0xba5eff2f, 0x05c7163d, 0xfee1676d, 0x87e101d4, 0x827583e9,
+       0xb88de8eb, 0x0fbe5bf9, 0x93f59e74, 0xdbf442bc, 0xf05f8a4d, 0x3fc846f4,
+       0xe50e64f7, 0xe3bf88df, 0xbe58c39e, 0xe5f29335, 0x55d68906, 0x5843ae1f,
+       0xb725d967, 0x408d4d4d, 0xfdda2279, 0x89e7a33e, 0x19b69e61, 0x3f312f50,
+       0x8a05b0ad, 0xa15f85ca, 0x7f9796af, 0xf29dac67, 0xe4a97725, 0x0b0f2da7,
+       0xf075c1cc, 0x167fc14e, 0x9e5a4156, 0xaf85f226, 0x80fe60e5, 0xca0e6e74,
+       0x9b7adeb3, 0x90d0f382, 0xb9dbfdcc, 0x347f92d9, 0x5a3ca5e0, 0xc7cf5fb4,
+       0xf9f0ad35, 0xe5275c64, 0x5c9dbc65, 0xe93584e7, 0x9e70cf58, 0x96c9bdf2,
+       0xb6bfc408, 0x0ba7d6de, 0x1bd08d7f, 0xbc4f82dd, 0x22b13ae2, 0x5b75da06,
+       0xd10e2724, 0xfc827a5d, 0x3926cc12, 0xbb73ced0, 0x8ff41552, 0x6449744f,
+       0x96599547, 0x9c3f2125, 0xe11531ee, 0x82961cb8, 0x47c80e03, 0xc6284e96,
+       0x61689df9, 0xff40bf34, 0xaffe891b, 0x8112973a, 0xd3d36744, 0x335f46bf,
+       0xd72fba34, 0xdbac37d3, 0xbf6eb84d, 0xe8eb7f8e, 0xdf403adb, 0x00f3e943,
+       0xd704d3d7, 0xd6b97ab5, 0xfac84fdf, 0x2877ed0c, 0x60bf81be, 0x5f003bfe,
+       0xe1c3ad3b, 0xfa63bea0, 0xbe4bae14, 0x38465f4e, 0x152e864c, 0x9c948f9f,
+       0xa7840e39, 0xb92169d4, 0x355eb217, 0xcfa046f8, 0xb872f0ba, 0x7a68a7f0,
+       0xa2c5ff29, 0x28b8631f, 0x2c5cf787, 0xe82e007a, 0x8be20dff, 0x4f3c392b,
+       0xcf9c4d49, 0xf343bb08, 0xe368347f, 0x6f1fa3dd, 0x5af31849, 0x00cf910b,
+       0xa2cf69fe, 0xee1fa720, 0x6d07982b, 0x9e428d3c, 0xedb8b4cf, 0x2ddb1826,
+       0x3f44d551, 0x8d4482b7, 0x4d4cbc02, 0x3c431cf0, 0x3b7837ed, 0x65ab9ed1,
+       0x06b7da2e, 0x7a63f8fa, 0x697cc0dc, 0xa9e286f0, 0x1abe0861, 0xfc509e3a,
+       0x575bcc0c, 0xa049a612, 0x3fda608f, 0x671c2bde, 0x6b12bea8, 0xa30dfbd2,
+       0x7a2f7f85, 0x8d979fc0, 0x9858d3e5, 0x4e79fc93, 0x69b9ec89, 0x9f207fa0,
+       0xc8c1569e, 0x336d12af, 0xd34f3f90, 0x275a8643, 0xf9cf5c37, 0x8cc5b4d6,
+       0xf8da63fc, 0x8131e942, 0xd300ff75, 0x89f51669, 0x75ff5c1a, 0xd00fda36,
+       0xc6cd31c6, 0x32e203f7, 0x776fbf34, 0xfefdca31, 0xbf7265fc, 0xd0f918bb,
+       0x4fbf591c, 0xf712ed36, 0x925f473b, 0x3ce69d28, 0x3f728c51, 0x18bba2ba,
+       0x4947d9f9, 0x680cf8ae, 0xfb81b8ef, 0x99f143e7, 0x7a106196, 0x69d195c7,
+       0xf6d23ae8, 0x7825671f, 0x0dc46546, 0x4acea5f8, 0xb4e7e45d, 0xfb4438a6,
+       0x67a4549e, 0xaa234ba0, 0xbf37c06a, 0x538d12fc, 0x36f01bfc, 0x1afbf62b,
+       0x76c7cb9f, 0x39096766, 0xe4fce6ef, 0xd8d76491, 0x271fee0c, 0x78112cbc,
+       0xeee42499, 0xd9322df9, 0xecaee525, 0xd335b84d, 0x7cc8c878, 0x245d8eb4,
+       0x7189172f, 0xcb05079d, 0xb05ff58f, 0xff9dfc93, 0x5bed3556, 0x30366d65,
+       0x8e7e4835, 0x353185f6, 0xeee62e48, 0xc7e5d688, 0xeaeb27b4, 0xa693dd8f,
+       0xe7f02f2b, 0x1dc7cae8, 0x8be5d42a, 0xd5d1aebb, 0x9948eabf, 0xf7757f2e,
+       0x67fd5d54, 0x5e03fe51, 0x52a4fdaf, 0x27b3fcf7, 0x7dc21f27, 0xb702ebe2,
+       0x253fdeeb, 0xebcc0efc, 0xf186caea, 0x7bf468d7, 0x3ef74aa9, 0xa97e39a8,
+       0xff00f904, 0x4f9bacd5, 0xc004c7fa, 0xb57b7058, 0x62fd7aad, 0xc41c0b12,
+       0x9f06aafd, 0x7e43f4e4, 0xf97d66fe, 0x08db3d82, 0xfa7c0baf, 0xe2428be7,
+       0xe762b266, 0x1a1e901a, 0x40ef4033, 0x62c31981, 0xb90ea240, 0xfe6ebffe,
+       0x37c65933, 0xa2737f9a, 0xaaadfe7e, 0xb3c3fe7e, 0x776ff3f5, 0xb23fe7ea,
+       0x51ff3f54, 0xc7fcfd2e, 0x3fe7e854, 0xff9fadce, 0xf9fad984, 0xe7e8f24f,
+       0x7e9d587f, 0xe93447de, 0x52e47be7, 0x7aa6bcfd, 0x43caea17, 0x27a340e9,
+       0xafa69f8d, 0x0fafa25e, 0xd1043148, 0x35674685, 0xe869baee, 0x7ad51ac7,
+       0x50bfaebf, 0xfa42c8fa, 0xf4f6fd88, 0xd08652f1, 0xf459a347, 0x5de72497,
+       0x977119ed, 0xdf1a17eb, 0xc1e7960a, 0xfc50f2f6, 0x253932ec, 0xe521e7ec,
+       0xd6cfda14, 0x2879fb01, 0x40ca3d3a, 0xebe752be, 0x9b762fc8, 0x3fb1c383,
+       0x17f1eb8c, 0xa86ae8b0, 0x014a7507, 0x1e38a3de, 0x5868ffe8, 0x6e3ff92e,
+       0xec46ed67, 0x45d64ef7, 0xa0161ce9, 0x241cc3d4, 0x9398abaf, 0x36e61ad2,
+       0x87c87f09, 0x5b171fc8, 0x8f904bba, 0xf87b9c5e, 0xbd8bed38, 0x866ae3c3,
+       0xe25e4f5e, 0xdf7127cf, 0xa7631465, 0xc1e8df05, 0xf7c817fd, 0xd07f855a,
+       0x20d8d4c5, 0xfe169e7c, 0x1289aacc, 0x872657c9, 0xd558dc51, 0xa7c912ad,
+       0xb4f2bfaa, 0xb1db8337, 0x52cb69a1, 0x42adaf0d, 0x41fae02f, 0x71c92a3a,
+       0xc7994728, 0xd3a87a46, 0xda1ffc81, 0x3f21fbe3, 0x9ebd9133, 0xbe70e168,
+       0x14a53128, 0x8905efe6, 0xbfce3bcf, 0x1ce58d14, 0xcc8d17be, 0x65cdf882,
+       0x1f0bd21e, 0xf1b58052, 0xbb787376, 0x4fd0d387, 0xc7f6b618, 0x1f30e595,
+       0x19778a89, 0xc7bfe5f9, 0x3bf97ef4, 0xcbf2249b, 0x86e00f7f, 0x4ce1d134,
+       0x9fdc7944, 0xff01b847, 0x9e0f58e5, 0x49362427, 0xb7fb17e8, 0x7eebb7b5,
+       0xb61bfcfe, 0xe30edfd7, 0xe70fe170, 0x0ebbf353, 0x0336fa07, 0x3dfd3cbd,
+       0x50c37e46, 0x1930ebff, 0x6bc60524, 0xe3179919, 0xcd9512b5, 0xe83e1edc,
+       0x4bfce874, 0xda7518cc, 0x1c7af5f2, 0xb4ec3828, 0xa2650eb6, 0xf4c1a6a3,
+       0xe3c99613, 0xbb9a5b1a, 0xc51e89b2, 0xcd83e77e, 0x2b2f2887, 0x34838a4e,
+       0x15166e2a, 0x1629bef4, 0x88f883ca, 0x83f78362, 0xe6d19bf8, 0x95978866,
+       0xcfb45dcd, 0x3eb85468, 0x12f86ab6, 0xafc82787, 0xd0947132, 0xe65e2c8f,
+       0xa5426788, 0x1327df87, 0xec8fd219, 0xdb074e50, 0x1490eccf, 0x17ab788e,
+       0x58b8e4eb, 0xe6dc1a3f, 0x082fe844, 0xae56e3ae, 0xba3bd6c7, 0xe38e384c,
+       0xb45d1730, 0x471dda7f, 0xb1c5d87e, 0x12eedfc4, 0x25de60f3, 0xdf50adf9,
+       0xa0dcc0ac, 0x3fbacb0d, 0xc5d60abc, 0x191bdfca, 0xbcae0bee, 0xc843c6ef,
+       0x4dd14c47, 0xc7d03f4e, 0x75afbfdd, 0xabc10678, 0x95139a96, 0xf6fcc18b,
+       0xbf04a37b, 0x855d8abd, 0x3c0832f3, 0x76ef7f24, 0xbeee77f0, 0xf47648cf,
+       0x3e63dfdd, 0x14b623a4, 0x7803257e, 0xe24e638a, 0x402c51a7, 0xc335d70f,
+       0x6c62cec2, 0x7985b36d, 0x596720cc, 0xf17fe913, 0xb4f445cc, 0x81c079ce,
+       0xe8beb4e4, 0x6ba63703, 0x456e9fb3, 0xbca1f3b5, 0xda985d5d, 0x96206f70,
+       0x0a7c9be2, 0x798ecf8c, 0x80a9438c, 0x261ff43c, 0x3c5cc3ca, 0xc3ca2e1f,
+       0xd0fd794b, 0x67049e7d, 0x531134a5, 0xe9157bdb, 0x31a65fc8, 0x19c3238a,
+       0xfb6a71c7, 0xf7b67121, 0xcf9113dc, 0x5fb13395, 0x131fcbcb, 0x6db18ce3,
+       0xe5869d5f, 0x8fe5f5e3, 0xdb28f28a, 0x6c32d6f6, 0xbe5f433f, 0x691fb451,
+       0x34a1d5fb, 0xf7d5efda, 0xb728b0ff, 0x45d57eda, 0xdfeac7ef, 0xcdca235f,
+       0x053f1e36, 0x66fd8b7f, 0xf44abe5e, 0x81a77f1f, 0x34e88279, 0xf3186676,
+       0xf47bcd04, 0xde5d68b4, 0x7f61ed88, 0xb1f68c89, 0xbac9e51c, 0x1ff6b5f7,
+       0x8c47fd14, 0x6fbdd34f, 0xd7d1c8c9, 0x724d199f, 0xbbc08970, 0xaea17869,
+       0xa7db57bc, 0x0ef1e28c, 0xdf5169ec, 0xb12bebc1, 0x3fdae8d7, 0x6246ad9f,
+       0xe069c3bc, 0xc7385dd9, 0xeb82d38a, 0x2d3d8979, 0xd7d4e901, 0x084a8a5c,
+       0xc9780df0, 0xa443a98c, 0x2ab9e289, 0xef22d9f2, 0xf85534a4, 0x2b9a5b55,
+       0xe81dbf28, 0x369fd315, 0x0a7d28bb, 0xf7bc2af2, 0x85576813, 0x2ed013fc,
+       0xbb4137e6, 0xed063e98, 0xb428fa62, 0xa11be58b, 0x0c3fcc5d, 0x3d7e60f0,
+       0x87f983b4, 0xafcc7da0, 0x7e537669, 0x4a6cf355, 0x50f66c1f, 0x475cd2da,
+       0x7146c7e5, 0xe38df979, 0xd1808a15, 0x15e2e896, 0xa38a8d8e, 0x5f130578,
+       0x615e3ca4, 0xfb70699b, 0x419477b0, 0xf7b985c4, 0xe80a9fa1, 0x7bbfa19b,
+       0x7df6bac4, 0xb8c74768, 0xad24fcf9, 0xa8f2a26b, 0xf68fde0a, 0xb2f58b1e,
+       0xedc825e1, 0x495ebd79, 0x3c714e5d, 0x9edfb9a3, 0x8a997a25, 0xcee7c2e5,
+       0x11c90094, 0x57cf5b25, 0x43e24353, 0xa22ff4b5, 0xc9a3391f, 0x94b1c385,
+       0xcf18fdba, 0x187a736e, 0x9a5dddc5, 0x8b05368c, 0x533d74bc, 0xa69d8d21,
+       0xcba3cbd7, 0xaf7a750b, 0xea81a97c, 0xaedf8659, 0xad8a67ab, 0x5aabd5d2,
+       0x1132ba94, 0x8f8c31f1, 0x196ebcc3, 0x6b7e824b, 0x7ef236db, 0x23be8533,
+       0x67da5ea9, 0xf1f129d8, 0x39f07d0a, 0x65af1887, 0xacd3f11d, 0x8ccd9e28,
+       0x0f901af4, 0x2475f99e, 0x7f6787ad, 0xe77f206a, 0xe033e668, 0x7882e57c,
+       0xac31f2c6, 0x9163f29b, 0x80be42ab, 0xc7e632a9, 0xcdd900b1, 0x64260fa0,
+       0x641a5e02, 0xe8ad4fcf, 0x79e119df, 0xf949c78e, 0x8a649e49, 0xf4d4c8f9,
+       0xa84acde2, 0x264470bf, 0x1dc3edd9, 0x71815e74, 0x9fba1d39, 0x925eccbd,
+       0xef477a80, 0xe16d7110, 0xacdea789, 0xd2690719, 0xe7b54a09, 0x0a86a90f,
+       0x1cf120df, 0x92df99a5, 0x5f0337de, 0x297bd3d2, 0xde6ce38e, 0x3f28f17b,
+       0x6402321a, 0x3518b477, 0x3246a1be, 0x19de705b, 0xf1c682c9, 0x7491f36c,
+       0x87b21885, 0x343b26f0, 0x95e3e63a, 0xc0e056ff, 0x114caaf8, 0x39a3b9df,
+       0xd47ca329, 0x99b5fbc0, 0xcd939fdc, 0x7ca10fda, 0x38358ec8, 0x39752ec9,
+       0x35ac7674, 0xc065d5a3, 0xe61cda7d, 0xd19fd8c4, 0xc53975ac, 0x264bfc9d,
+       0x9fef247e, 0x37d054c2, 0xe63e1cc2, 0xcbb40db5, 0x8f7c3d84, 0xdb9fabe0,
+       0x397e09ca, 0x2edb9345, 0x773e73d2, 0xbf181d38, 0x919b79f5, 0xea4f925e,
+       0xce1db3cb, 0xd3a01e23, 0x9dc2bb79, 0x76585e08, 0x0be281ab, 0xb86c4ab6,
+       0xf8f07044, 0x7fae68cc, 0x3097371b, 0xad67cc2f, 0xc25df3cd, 0xdbbab76f,
+       0xa87d09a0, 0xda631f57, 0x5910f18e, 0xe21b1788, 0x728cb6e5, 0x9b233aec,
+       0xc62b58f0, 0xef98bf7d, 0xfe1a1196, 0xe5cc3c05, 0x99da0dba, 0xf1d9a6d7,
+       0x943e71fa, 0x96137657, 0x2992e8af, 0x9f143b3e, 0x10fe2367, 0x5e130111,
+       0x50fdcb95, 0xb8fde700, 0x3b84141e, 0xf7cbf106, 0x4c3be6eb, 0xce2a7f3e,
+       0xc9057b67, 0x8a06319f, 0xcba50db3, 0x350f4265, 0x0d283a66, 0xf44d3c4f,
+       0x79ef903c, 0xec8626b3, 0xecc72e11, 0x2e63970a, 0x3fec1a97, 0x65f9ab5c,
+       0x3082b9c4, 0x0317af01, 0xe44f90f0, 0x1b46f8f0, 0xf18cdaeb, 0x49d9433b,
+       0x4553329b, 0x2766a37c, 0xfd20d4c1, 0xde285b14, 0x7f16ad65, 0x29561ea5,
+       0x3c521cde, 0x74116217, 0xeececaba, 0xf9d10772, 0xcf5c99ab, 0x47cc557d,
+       0x0b8b459f, 0x082b4d71, 0xd550a73a, 0xbff64d51, 0x27d5dfb6, 0x617d2efc,
+       0x05a9fdfa, 0x0efa1482, 0xe18596b4, 0xdf2b4b3e, 0xf1d05aef, 0x1fa33f9d,
+       0xa3e77e61, 0xda957e25, 0xaa1e9154, 0xd5eafd45, 0x76bffb7a, 0x6bd68787,
+       0xd4217fa8, 0x3398009f, 0xea1e3ea1, 0x5325784f, 0xb272b79c, 0x3acfdc02,
+       0x60fd2eb5, 0x4a6dc018, 0x9ba40e65, 0x0aaff261, 0xb410ee30, 0xc809d6d1,
+       0xe214f3cf, 0x7ff3a1d3, 0x7844cb3e, 0xefcda1d9, 0x83ad1b28, 0x0f9cc51d,
+       0x7e77d8ec, 0xa76828fa, 0xc5d2472d, 0x18e5b739, 0x20ce9e69, 0x9db485c3,
+       0xe2c18ab1, 0xfc0a8ed8, 0x37be637f, 0x1a63eb9e, 0xd3dfabdf, 0x255c307d,
+       0xe90477fe, 0xdfe0efbe, 0x1d68f223, 0xbe504a05, 0x7872e6c6, 0x5f3c6e10,
+       0x6e70d3b2, 0x9c3d304e, 0x9e0854c9, 0xae16df33, 0x675c3d72, 0x9f883ef3,
+       0x0cfae1ca, 0x9ff5eae1, 0x373e0f8c, 0x33b5c1a0, 0x969c5ce4, 0xc2dbebfe,
+       0x0f97aa53, 0x27fa7841, 0xf0a1b1f2, 0x3834d3b4, 0x9c59313c, 0x00e2fc2f,
+       0xe441b3c8, 0xf4964c5f, 0xb45bceed, 0xfb3de1e9, 0x642cd742, 0x4c6f00db,
+       0xb12fe216, 0xd6f69e27, 0x8bdafe04, 0x09167d04, 0x5b24e3fe, 0xbb1e3589,
+       0xdad5e28a, 0x0d331615, 0xce3525f3, 0x054e3065, 0x6f802fe3, 0x743c1a35,
+       0x331d808e, 0xa6ffca0f, 0xdeba7167, 0x8a0d2c99, 0x9c622987, 0x1aa9defb,
+       0xa1e67289, 0x7c866623, 0x3b888561, 0x6ed1c87b, 0xe00db029, 0x9085f311,
+       0xf3029a36, 0xfa2f989c, 0x06daa2dc, 0xfbc0cfe9, 0xdd64387b, 0xe969fd68,
+       0x6e6cacc4, 0x64074ba7, 0xf0f04f3c, 0x26ba0ff8, 0x2e1e78c2, 0x7ef78852,
+       0x0baffc63, 0x83ffbfc1, 0x5e9ce9f8, 0x1bfe2226, 0x6e228fa4, 0x14a37c82,
+       0xf70f3778, 0x1a1e4dfd, 0x71e0237f, 0x9e39749b, 0xfd38b3f2, 0xc6d3e36a,
+       0xbf6dc1af, 0xc1e686ae, 0x424cd47e, 0x2fa08a63, 0x0a445e4d, 0x22e387f9,
+       0xe15e3179, 0x158a31e7, 0x4b87f79a, 0x33f3a1af, 0x7bbec53b, 0xed136ae0,
+       0x71c2876f, 0x43dbc09f, 0x42efde97, 0x61dbd3bb, 0x14fee074, 0x3789f9d8,
+       0xfe351d03, 0x7ea3715e, 0xb154f406, 0x7af386d3, 0xbcf5023e, 0x048cb37b,
+       0x1f82bdf7, 0x2b925df6, 0x3bcb5ce8, 0x20e43b9f, 0x9661fffa, 0xae93f42c,
+       0xb2af3c2e, 0xe5c790a1, 0x603e84db, 0x0ea7a77b, 0xde95b7e1, 0xe882966f,
+       0x99967e6d, 0x0a60dbde, 0xbda13bc4, 0xf9994ec6, 0x7b002f49, 0x878036c5,
+       0x43c70746, 0x8601d143, 0xc3ad8efa, 0x3fe9fb48, 0x2e0952cc, 0x3c377b84,
+       0xb9fd1b0f, 0x8bcb1aa3, 0x81b4bfa0, 0x3e0eedf7, 0x30c5619f, 0x97a43cce,
+       0x79351cf7, 0x8dc8ee74, 0xe3179df0, 0x991ae0d4, 0xbda1e7cb, 0xf50baba8,
+       0xa143af38, 0xff769fb8, 0xfbea0b12, 0x30f8bada, 0x56f7a657, 0x58bf5c29,
+       0xc3ed9a55, 0x1d1a31f3, 0x1e7b6627, 0x00d9ba42, 0xa457e2eb, 0x27b9757f,
+       0x051c7e12, 0xa2fb8f18, 0xd69b35d4, 0x81c9b16f, 0x60db30eb, 0xffb7add0,
+       0xa5a6f312, 0xef49fe20, 0x5da081f9, 0xdbcbee4d, 0xdfcf0c2c, 0x8cd2e5fd,
+       0xe54fd448, 0xe7be9a11, 0xff1e2074, 0x7a499b62, 0xd86fc7e2, 0x35c705d6,
+       0x6047e968, 0x82b3fae7, 0x7ba758f4, 0xc79fd632, 0x2f512b3c, 0xf306d79d,
+       0x3e5eb412, 0xf6bceb16, 0x07f33852, 0xa5b5f9e9, 0xaab9d3b7, 0xf4114bda,
+       0xff1163fc, 0x7b88b1f4, 0xf1c62bda, 0x870f5886, 0xfea5beb3, 0x37910cef,
+       0xb3e7fd4f, 0xee5f9c55, 0x4bd7bc45, 0xa7b426dd, 0x77f35c36, 0x11f2cf3a,
+       0xf37eefd8, 0x86338d57, 0xedfa83f9, 0xcac977af, 0xf3c131fc, 0x0638d2a2,
+       0xf2a36bc6, 0xbf139a8f, 0x74c38f06, 0x3f681c78, 0xcbc7875d, 0xf2a4cfdb,
+       0xbfb39a8f, 0x21dcfda6, 0xc1d54fda, 0x066ed03f, 0x5fddef3d, 0xac385cf5,
+       0xe5fefd97, 0xf186be4f, 0x1d9baf7b, 0x7b0fe466, 0x9ce8cbda, 0xce8c8bdd,
+       0xfafbde5f, 0x5c638edf, 0x4ddbbdde, 0xcfa3ec4e, 0x1ce39818, 0x30643e44,
+       0x3a50d787, 0x4aca9e90, 0x3e84f1a7, 0x073e28b7, 0xb259d9c6, 0x27ca0715,
+       0x2df2eb0b, 0xc8a3bb47, 0xf349fc42, 0xfeed6bf3, 0xf1d65326, 0xd6313ac7,
+       0xe87d8b3f, 0xbf9ef1e1, 0x39ffbce1, 0xb0abdb8c, 0x1fa036b2, 0x64cfc16d,
+       0x8f7f8f07, 0xf3447b22, 0xe7682b73, 0xc86ba3a5, 0xca5cf0cd, 0xcb0f1cc2,
+       0x09fc7a06, 0x7bf403b0, 0xf69e63cb, 0x7ad27c60, 0xb7adff61, 0x833a2576,
+       0xb6545ef8, 0xb7e8edf2, 0x8b7e8435, 0x9facf0ff, 0x84289bcb, 0xfaee5ea3,
+       0x9e2a5565, 0x0df7e2af, 0xf7a4d000, 0x3c1d1556, 0x358de742, 0xe8757e7b,
+       0x2888fdbe, 0xbf3583d4, 0x57c6047c, 0x60dfbca1, 0x3aa13d27, 0x7fabe79c,
+       0xfd714317, 0xe784c760, 0x29da1f21, 0xb682dc53, 0xc05e701f, 0x90d967dc,
+       0x13edf882, 0xf1df3e78, 0x1471865b, 0x228f57e7, 0xcdfea83a, 0xbe23a68f,
+       0x38f22f81, 0xc93b4eab, 0xb3b36aa1, 0x3e1e4964, 0xbb66fae7, 0x0c288fe2,
+       0x0d573fd2, 0x7afe232f, 0x0328f566, 0x5e1ae7ea, 0x9f39b20b, 0xb1c5a0d8,
+       0x3c12812b, 0xc8a6724f, 0xc1c92eff, 0xe386565d, 0x5bfeec30, 0xbf51c209,
+       0xc80ff401, 0xfd1eed97, 0xaf286cf8, 0x3c5034cf, 0x95b761aa, 0xd6bb39e0,
+       0xbe0b764a, 0x7ebaf28b, 0x486db0f7, 0x01e1d5cf, 0x0fab1b8a, 0x3ee26673,
+       0x6beef549, 0x9c5d7133, 0x053a3f5a, 0x38c9e6f9, 0x69f90535, 0x3a407adf,
+       0x6764fb8c, 0xe6be7f16, 0x69d73a2a, 0x19ee10df, 0xc9a1afcc, 0x66d5ea93,
+       0x79b4c232, 0xd05c99df, 0x33f107bb, 0x0edce2da, 0x0f115af9, 0xf48c8c0b,
+       0x8143eab9, 0xb8e3154a, 0x6d557d85, 0xb89ff4fb, 0x76dd505f, 0xcf4e4ee2,
+       0xb3407f7c, 0xadfb42cf, 0xa7677216, 0x12a73029, 0x8116ead2, 0x738f137f,
+       0x641436ab, 0x5fe05e52, 0xfef6afc3, 0x8fce6c82, 0x3bd4f4b5, 0x4f94df8a,
+       0xee0a40fa, 0xdd7a9d27, 0x6a76f44c, 0xeb9d2e43, 0x06abfad6, 0x9d6038dc,
+       0xf3568c9e, 0xb29b7e71, 0x6eaaff39, 0xf6a776e1, 0xb1b0dabc, 0xd03be702,
+       0x4efc5329, 0x8110239f, 0x3d5a20fb, 0x9e3fdf2d, 0x226fd90e, 0xf347daba,
+       0x90c5740e, 0xb1bf0cae, 0xfc6dbc93, 0xce3b798d, 0xe62299eb, 0x3dfa470d,
+       0x6d3b2662, 0xf499a77f, 0xfca3bee0, 0x3ce8707c, 0xc5205b30, 0x37ee7c80,
+       0xf5af88c3, 0xe56c088d, 0xd195b37a, 0x9ec3bc79, 0x59bec4ab, 0x13112192,
+       0x6bea1257, 0x7ead3b17, 0xa520d7d4, 0x7b2f0ffd, 0xbf9e913a, 0x9fd0ce1e,
+       0xc39d2903, 0x44aed260, 0x0b0c673c, 0x45dfbc5c, 0xe29bdfef, 0x7d3e42c9,
+       0x6fb43a6f, 0xa87bf7c3, 0xcf34c5de, 0x2fc3cc58, 0x4c97f459, 0x8cf08eed,
+       0xe7d2e7a4, 0x27b40fd4, 0xbca8bbca, 0x8ab9ecd1, 0x3b47f1c6, 0x38c836db,
+       0xf9f55b6b, 0xf9f59bf9, 0x7e7d3e05, 0xbe7d0ed1, 0xe6863b39, 0xf01b8351,
+       0x285ffa4c, 0xe6cc5e5e, 0x8f8692fa, 0x9fecba50, 0x0f81afcf, 0xbe7429fd,
+       0xe3cf93b9, 0xce26d1da, 0x92e4d64f, 0x9b374b9e, 0x2d49c504, 0xe898fceb,
+       0xdae8cfb2, 0x70297284, 0x13b6c8d8, 0x00cd02ff, 0xbca50cfd, 0x5f38755e,
+       0x9f1c1a4f, 0x05e9f88a, 0xd51c786b, 0x9c7fcfa7, 0xe786d732, 0x9dd63f77,
+       0x7efcd5df, 0xfa0448d0, 0x354e6c55, 0xeb8f2aa2, 0x65c132db, 0x0dd578a7,
+       0x8fddb546, 0x347eb7f4, 0x994e13f9, 0xaf48ddd4, 0x318ed6a7, 0x71ad3d20,
+       0x6de3de72, 0xc05ae3e5, 0x5f8fe47c, 0xd7c4fcc4, 0x2672f143, 0x7acbcb9b,
+       0x192bb9e6, 0x6a649dea, 0x5364d8bc, 0x0ea1ce31, 0xd79402ff, 0x565c1865,
+       0x724bdf1e, 0x198b6ea1, 0x7403699d, 0x79034cce, 0xfcbffff9, 0xc68cd1f9,
+       0x8de9c6b9, 0x89fab940, 0x747ddb83, 0xbbe51d4a, 0x3a89c7cc, 0x854bca1c,
+       0x2ecf3fb9, 0x83e272a6, 0x3cbc489f, 0x7e34ce94, 0x903e1977, 0x7c5db06e,
+       0x8d36da0f, 0x2476e54e, 0xb1abfe2e, 0x7184d782, 0x6abc9a79, 0x9e031494,
+       0x5289ef37, 0x7b2e9023, 0x2f47a4d6, 0x2887b8c3, 0x8830be35, 0x300f1a4e,
+       0xe2ad673a, 0x60ab87f9, 0x3e57319d, 0x4676f3fa, 0xa108fdeb, 0x426afcf0,
+       0x72e09cf7, 0x77ce68c7, 0xf5f34653, 0x89f88154, 0x9c8f0c1b, 0x3a0be60e,
+       0x5cf4e358, 0x4865764f, 0x239bf9bd, 0x3c847d05, 0x87ed7d6f, 0x25b2ff14,
+       0x6f40ee88, 0xfbfa2138, 0x2bc990e4, 0x8c34c58d, 0x36eb99e2, 0xf7577e72,
+       0xfbccb4d6, 0x23ee9e78, 0xc1edb098, 0x6b13b478, 0x64ca4fb6, 0xbcd17f9c,
+       0x9359f468, 0xfd44cae2, 0xec84f02e, 0xb75275c0, 0xd6782659, 0x2796ad28,
+       0xcde9f9e0, 0xeafbd246, 0x87a73c04, 0xde68227b, 0x0098a614, 0x4f15a7ef,
+       0x4fb5e904, 0x869f64c8, 0x7dea038e, 0x820e14a0, 0x679f0b1f, 0x20fa4fc2,
+       0x40d87074, 0xc61354f3, 0xde9e5d68, 0x9239d126, 0x773c23d3, 0xec07be61,
+       0xb53f3c79, 0xdd0175a6, 0xef8a12ff, 0xd10f16d3, 0x1e317ceb, 0xfda19f0d,
+       0x43ecf868, 0x74fea27c, 0x7f9249e8, 0x48c98f8d, 0xc75f6cc1, 0x27b3b205,
+       0x7e3a4e74, 0x08df3e2d, 0xf28a8c7a, 0x3bdded36, 0x9f01de50, 0xaaa63d42,
+       0x859e3d33, 0x27b46dc8, 0x333f7eab, 0x2f2410c2, 0xb4c9b4d7, 0xa326b2cf,
+       0xea96a232, 0xf48e9f9f, 0xc6755275, 0x5bd50617, 0x3f7fba30, 0xd55f3741,
+       0x8111ff1b, 0x33add4fd, 0x79b4b8d2, 0x889803e9, 0xfb86b70f, 0x86fbfe90,
+       0x6d5da807, 0x1be9fa9e, 0x27a341e7, 0xb471b7a8, 0xf72fd043, 0x7aa4f6d7,
+       0xd0839c4a, 0xa147bcc9, 0xb36f6c5f, 0x0ef185dd, 0x86afda57, 0x16f9fe8f,
+       0x38f29aeb, 0xc9535b8f, 0xac386e3f, 0xc9f97050, 0x70531bd6, 0x7e83571d,
+       0x6a887e80, 0xf51c7029, 0x78abc841, 0xe37aa78e, 0xbfb0bba2, 0x0366a3ea,
+       0x7ebcf796, 0x15c13e63, 0xa780af32, 0xbde8c194, 0xe290352f, 0xe81fc20c,
+       0xb5beb415, 0x4dc104f1, 0x459d8070, 0xa5f4f7f7, 0xf1067cc2, 0x3f315681,
+       0x2261df50, 0x47f7e6fa, 0x11d78ff5, 0xc8475e32, 0x44603f78, 0xa1e9ccdf,
+       0x331cd4f1, 0xcd79f01b, 0x44c9df23, 0xdacf5bbf, 0x9eae3489, 0xae3e5768,
+       0x68149eaf, 0x597e107f, 0x338c08f3, 0xd9c62bef, 0x1af9a56a, 0x81d19c72,
+       0xc62becad, 0x77e0a2f9, 0x523f38da, 0x673c08d4, 0x6657b8d5, 0x1c6947e8,
+       0x2d70dee1, 0x43963bcf, 0x6e228dd7, 0x386371a0, 0xedeabb9d, 0x561f9230,
+       0xdfd003e3, 0x8183d215, 0x4ca7a1e8, 0xe914bc7d, 0xc0ecbd6b, 0xb59e8afd,
+       0x11fddee3, 0xc8367be4, 0x7a1bd40e, 0x80fe38ca, 0xef1c901f, 0xa74f7149,
+       0x0746ebfc, 0x6a9d63c6, 0xe81fc7fd, 0xa34e849e, 0xee7c68ca, 0x0f31b30d,
+       0x035f22f0, 0x7ae2ccbc, 0xbfc691ab, 0xab63f566, 0x79bbdcb1, 0xb90f9d2c,
+       0xf1eb5e5c, 0xd64eb75c, 0xa8a643ad, 0x23e35fd4, 0x13dee8c3, 0x61c0cf0d,
+       0xd23ed133, 0x99f981f0, 0xd2f00663, 0x4005ee28, 0x1bdf813d, 0xe219f826,
+       0x09cb8d27, 0x7c83273c, 0x0cebcf0c, 0xf942af25, 0xfddca84f, 0xe8af9fa4,
+       0xe082f1f9, 0x21d9da3c, 0x7c2145f9, 0x79487163, 0xc839487d, 0xf983e9e7,
+       0xfd8b67a5, 0x558f0d18, 0x7f9a8f02, 0x3f3d6fb4, 0xa8a55ee7, 0x7e83b426,
+       0xe7cb8135, 0xae59856a, 0xcfc975a7, 0x6c2954ff, 0x9f10b985, 0xf6c14d3b,
+       0xc2b7b412, 0x30f90d1c, 0x5ea087ce, 0xaf282985, 0x9e0d5bf1, 0x968f0178,
+       0xc13f637e, 0x31f721b4, 0xd90673e2, 0xd39428c7, 0xda0efd7e, 0xb2657b59,
+       0xe2df1b33, 0x717d87f2, 0xe017f1e1, 0xe9ebc379, 0x8da63f14, 0x7d8f143f,
+       0xa4442e7b, 0x43def3c1, 0x5ebf3a26, 0x465311d5, 0x60745876, 0x89e7bc50,
+       0xf5ed69f1, 0x3311dd2a, 0xd668f582, 0x4419511d, 0x2e7b552f, 0x0b5da334,
+       0x41caf3f8, 0x6754fc7c, 0x97da195c, 0x97276fd5, 0x9be279e1, 0x5fa0bb44,
+       0xae1d6cff, 0xf266bd9b, 0x35bef44f, 0xf7ef80db, 0xd22755be, 0xc3dee97b,
+       0xa54e8fde, 0x0611ff60, 0xe5183dfd, 0xaa9f5c39, 0x7ad89c36, 0x57fff21d,
+       0x825b5213, 0x86d5d0fc, 0x5f8bb242, 0x20e60630, 0xaff7a0dc, 0xad52b8c6,
+       0x54729b9d, 0xf7b1df1e, 0x1fc8ade3, 0x51186d4e, 0x77a56c88, 0xc1d9166f,
+       0x65c747bd, 0xdeae39e2, 0xe44e49f5, 0xd5182f0b, 0x62ddb97b, 0x1d4f6e77,
+       0xc1fb0f68, 0xbddec7fd, 0xffa09557, 0x8728f7a0, 0x4fe4f217, 0x8c5e7a80,
+       0x8ddad4bb, 0x630fa830, 0xdb7b3b7c, 0x92c57648, 0x6027a67f, 0x6984541c,
+       0xd031fbf0, 0x75c7d08e, 0x6b71a72f, 0x76a1c3f1, 0x1c4f1686, 0x03cd876a,
+       0x43cf813e, 0xd63ac5ed, 0x9ce312ba, 0x5046ed43, 0x78de2dcc, 0xafdad75c,
+       0xa2fde49d, 0x759a5f1d, 0xb1fc44f5, 0x15450f76, 0xe4b5c7ac, 0xdf91f27f,
+       0x1e46bbcf, 0x7d763f74, 0x37d3d70e, 0x4e6bff85, 0x9ebcd077, 0x11253034,
+       0xc4d27af0, 0x8385892c, 0x53178fd9, 0x0def88aa, 0x0756376e, 0x2ec7afdf,
+       0x964f23b7, 0x00cb5af9, 0x656b93ae, 0x7020cb67, 0xc8ed77fd, 0x1201f7d0,
+       0x61cae7ee, 0x631b2e3c, 0xcabfa36d, 0xabc3d67e, 0xe78ad3e1, 0x87a10684,
+       0x67dd0467, 0x2e6653ff, 0x469df75c, 0xbe14c73a, 0xefc7f3ed, 0x30ecfa40,
+       0xda55523a, 0x7dd17177, 0x8a657b93, 0x38ebec27, 0xe510b115, 0x7471decc,
+       0xcedfaeac, 0xfed32bd9, 0x0b9eef49, 0x02cfb8f1, 0x727ed0ed, 0x4e63e763,
+       0xe0a1dfa4, 0xfe472578, 0x15cffc76, 0xf6272fb2, 0x9db77b95, 0x0efe44ce,
+       0x1c95f07c, 0xfccd1fdc, 0xd74bdc42, 0x07f4825d, 0xdefe91f0, 0xfa48bbe7,
+       0x1e43a5a5, 0xb7b7bef4, 0x0edf4c72, 0x1fbd0abe, 0x0b79e017, 0x6ce0d1e1,
+       0x94260350, 0x67175fb3, 0x76b7be51, 0x84c7de39, 0x076813f1, 0x24c874d4,
+       0xc8b66ab7, 0xa5e6153e, 0xfd81eb3c, 0xf55cdf78, 0x37f91263, 0xffe3cb27,
+       0xf9cefe80, 0xefca65eb, 0x1fef76db, 0xbe92bef0, 0x55f6462d, 0x71031a71,
+       0x8f9d3219, 0xdd8cff99, 0x8b2fcf89, 0xa03fc0c7, 0x12cddabd, 0xc684cdc5,
+       0x7b16f465, 0x79089f05, 0xe5656dbe, 0x154c58fe, 0xe34313b2, 0x2077f034,
+       0xb0dee07e, 0x25d6a31d, 0x5af4fce3, 0xc98fe3fb, 0x7e7e61de, 0xef77bc6e,
+       0x8f382947, 0x35feaf8d, 0x7f320d93, 0x83a9ebfd, 0x15fc7fc7, 0x0697c6e4,
+       0xd30bfba4, 0x7fd483dd, 0xec15c453, 0x51937a30, 0xedbfdd8f, 0xed23f722,
+       0x21b6fee5, 0x2b5e67db, 0xadf97bf7, 0x6a2b8fe4, 0x75c54c77, 0xee20fa02,
+       0x5f6e342f, 0xf21db959, 0x788cd7d6, 0x1c6b2583, 0x82f5a365, 0xa836a3eb,
+       0xec9d6d5d, 0x5a77fb10, 0x229bc95c, 0x2b8b471e, 0x424ce2d1, 0x4ce2d0e1,
+       0x267114de, 0xf1dc730b, 0x198690b9, 0x4fb411bc, 0x34871210, 0xe8515c54,
+       0x7dd08bb9, 0x1bf64183, 0xdabb7175, 0xe409a3be, 0x1f64be3b, 0x48f0f953,
+       0x207e3728, 0xd434fd93, 0x8e36a43e, 0x5154ef7d, 0xcbfd561c, 0xcfeff932,
+       0xfd8a32ee, 0x4fed00df, 0xdcf9df19, 0xa97c8a94, 0x2fa86243, 0x9f1e4237,
+       0x5c578e37, 0x6bf77ec1, 0x723e3972, 0xed293372, 0x30875c55, 0x51d7a1ee,
+       0xdebd4265, 0x054d4ef8, 0x62631bca, 0xdae10995, 0x25994ef7, 0x4a2de715,
+       0xb2b375a1, 0xcbb7eb43, 0x1b67ed81, 0x467ba3de, 0x430ac503, 0xdf7429fd,
+       0xeb9725b4, 0x9bed97b9, 0x66fccd16, 0x9589a6fb, 0xea6fb95f, 0xb0f4e5c9,
+       0x734ba458, 0x4df6c7ff, 0xb471b93d, 0x22793a6f, 0xf132b174, 0xa6fbe0fc,
+       0xcaf38d97, 0x725b4df6, 0xd9afbe55, 0xf621de3f, 0xff6b2f4d, 0x2f4df6ca,
+       0x7d887f6f, 0xbfdacbd3, 0xfed37dc2, 0xe9bef976, 0xc3033c8a, 0x1c56b5fb,
+       0xbfbf7331, 0xb329cb85, 0xfc2b7758, 0x1738bae5, 0x72b2f52d, 0xc57487ba,
+       0x39afee2e, 0xe072a8eb, 0x7146373a, 0xe8d994bf, 0xd7bb40aa, 0x831d151c,
+       0x373abbf4, 0x62fbe69d, 0xf1d11354, 0xbd3f5045, 0x726f0fe4, 0xf0c57e63,
+       0x66d6991a, 0xf6c5fdc8, 0xfbef994e, 0x72116d5d, 0xde077dfd, 0xed989047,
+       0x28372a79, 0x7c5ec1de, 0xd998e280, 0xe448cf1e, 0x5a1cab03, 0xf937667c,
+       0xe7924c83, 0x629fe8a7, 0x0f14cd47, 0xc9ead17e, 0xe3ad0472, 0x424d7317,
+       0xfdd3f3af, 0x46d65e9e, 0x0b9ee369, 0x2fcd6784, 0xb23795aa, 0xd71de100,
+       0x4ffa1d35, 0xdf2a5452, 0x73a2c9e3, 0x7e8e0245, 0x9b4de3bd, 0xcfeb00d7,
+       0xba4ff9dc, 0x094fb91f, 0x523f474c, 0x1e1c877b, 0x6203df8c, 0xf88d965d,
+       0x6afd1f3c, 0x245ef80d, 0xca2f5bee, 0x60d3fe42, 0xdc23e40e, 0x47ff5ffb,
+       0x8bfbf23e, 0xe2468b9d, 0x9f501df3, 0xa05304f4, 0x3b3f7821, 0x53babf74,
+       0xf3e843cc, 0xc92d9d1d, 0xe80bc708, 0x7bc6889f, 0x8e977e75, 0xe6165671,
+       0x0cf9147a, 0x7642fe03, 0x659b9ecb, 0x1f0d2be4, 0x30c5dde2, 0x7cb97b35,
+       0x7cc11a2f, 0xd0dcffb8, 0xba6ce1f9, 0xe4d8b97f, 0xac359340, 0x8787ef80,
+       0x5ee85b15, 0xf264dfd3, 0xcf284dfe, 0x49fdf1d3, 0xe76f3831, 0x15bfb681,
+       0xc212d83f, 0x35effc0f, 0xfee2a0bc, 0xe474f773, 0x4e17c003, 0xf8697ca1,
+       0x0aefe7fd, 0xe71e333b, 0x0bf60567, 0xed17dfcf, 0x3e79e5c4, 0x4b1e7ac1,
+       0xa0abfaf7, 0x92b32dde, 0xb9d45ee8, 0xd3628ec2, 0x5d9fb862, 0x7f418f71,
+       0x95f2e5c5, 0x49af2bdb, 0x97ed0f1e, 0x289c5924, 0x31877267, 0x7f9e124b,
+       0x61a5f44a, 0x455feb5c, 0xe7130e7c, 0x98c473d8, 0x5f6e4c5e, 0xccf24512,
+       0xf4748d17, 0xce57eddf, 0xd70bfd73, 0xc3ff5685, 0xf18c7759, 0x357eb20c,
+       0x6a64dbbd, 0x19c23eff, 0x9d91b7a8, 0x7c376e87, 0xccb367ef, 0x4577bc7e,
+       0x247ab73b, 0x38c1ce7c, 0xb45dee95, 0xb37bc1e5, 0x12b29d6f, 0x18fed2f3,
+       0xf3d20975, 0x9eed6edc, 0x2f96072b, 0xc64678b6, 0x3f8e281b, 0xb185122b,
+       0x865c463b, 0x1ee31ee6, 0xcf0e7e14, 0x3ff7895c, 0xf5b5d0d7, 0xe9ce892a,
+       0x3ee1e727, 0xae48f2d2, 0xe45d2a77, 0xe22b601f, 0x78b3bda8, 0xf1d0640e,
+       0xf7687c71, 0xb233efca, 0x38c12feb, 0x748c6df7, 0x35dc00b6, 0xd39d6eab,
+       0xc1ad6908, 0x7597ef1d, 0x7f6367f0, 0x4773bd8b, 0x02b9e126, 0xdc5f80a3,
+       0x4714cef7, 0x0ebaf066, 0xd345bf85, 0xddac7e2f, 0xaff3c85f, 0xbee8a378,
+       0xc2e1b33d, 0x5ca33707, 0xbf20631e, 0x583096c6, 0xfdf76063, 0x53e7012f,
+       0x9e036e22, 0x89f37dd3, 0xc4fdfc61, 0x67140dc7, 0x4bdb2eed, 0x06b3f5f3,
+       0x94f7139b, 0xf69532e6, 0xbdc5aae1, 0xf84d1f18, 0x8c376747, 0x679e726b,
+       0x5dc3ce02, 0x0f948631, 0x2e4f0e08, 0x8f8f55c5, 0xb5f3a2b9, 0xe461cc95,
+       0xfcfc75fb, 0x0f83a547, 0x63ec56a5, 0x745cccdd, 0xe616f7be, 0xf5ef7aa1,
+       0xffa85c9a, 0x4bb687bf, 0x41dfdd21, 0x3e636fcf, 0x7e60ef4a, 0xd63dffaa,
+       0xdf0d794d, 0xc5772740, 0x38f93a72, 0xcffc2641, 0x870fb846, 0x0a588fe7,
+       0x29b198e3, 0x43d9146b, 0x9f84716d, 0x867b83af, 0xc7581fa0, 0x3ac4f373,
+       0x54ed099e, 0xc7590d4e, 0x7cda71e5, 0xf5aafa8e, 0xdfbe75d4, 0x0125b1de,
+       0x53146e1e, 0x116ba37a, 0x9e783bd9, 0xd3f30bdf, 0x95c79e35, 0x8b2d721f,
+       0x4f29958d, 0x29cbab72, 0x737d5c93, 0x5de3b319, 0x18166ff5, 0x7b34fe89,
+       0x6f68ba66, 0x81cf25d2, 0x5d3e7848, 0x1445617e, 0xeb862be4, 0x129a39ef,
+       0xfb4153bb, 0xfe866a6b, 0xbd3cb4f9, 0xd65df25d, 0xa66ae74a, 0xedebe917,
+       0x5d00bc43, 0xf389e4b5, 0x472c3992, 0x7e91c3ec, 0xe368937c, 0x260bb4fc,
+       0x2d78b3dc, 0xe716b3cf, 0x3f77c961, 0x8871439a, 0x38fdfb0a, 0xcaeffbe4,
+       0x093b77e4, 0x0b2ba37a, 0x84835dcf, 0x34e16500, 0xff9857e8, 0x4c20f404,
+       0x29566d3f, 0x0b7a033d, 0x3b36f796, 0xf3bfff29, 0xbb628fdc, 0x29cfab55,
+       0xc4ab1f38, 0xe255d379, 0x7b5d695c, 0xed0c64eb, 0xfda7b859, 0x7e35a620,
+       0xb31464f7, 0x1d350ef3, 0xbf5574c4, 0x1164d57d, 0xf9fd7d7e, 0x77e57b4e,
+       0xef9e00c6, 0xa7f7cbde, 0x79511eee, 0x316377f3, 0x50fca46f, 0x497f53f4,
+       0xbc189e62, 0x2cf5da17, 0x38eae7c2, 0xc6063071, 0x297371f9, 0x66e7ffc1,
+       0x59ffc117, 0x97a50573, 0x502fdcf2, 0xf48e763d, 0x70beefcb, 0xf5061942,
+       0x8a24b927, 0xc5deb8eb, 0x87a03e7c, 0x072e46cd, 0xc01c8336, 0x4c613bf5,
+       0x30f753e5, 0xdd9ed3e4, 0x532dfef8, 0x7ec24c17, 0x55ce97a6, 0x5faddeb0,
+       0x3a931630, 0x475f9f40, 0xebf8daef, 0x7d9dfcc5, 0x9e7c225d, 0xa137a835,
+       0x5b7de3be, 0x5e7db926, 0xfe7e7fdc, 0x3bed0e48, 0x3d39792c, 0x2586f501,
+       0x38213546, 0x9833e55e, 0x27a41657, 0x0fe2f67f, 0xe3cf8313, 0x7edd167e,
+       0xaff218f1, 0x05fe713f, 0x27e9cc1a, 0x4f0dbf91, 0x7b59fba4, 0x6cedeffb,
+       0xd739470a, 0xc7eed260, 0xfe62e4f4, 0x5fee30b3, 0xb0e5f92d, 0xd83f5c32,
+       0xd41b9e1f, 0x2fe653f8, 0x48fda537, 0x476fe81d, 0x27b1ed7b, 0x67d67f21,
+       0x0e411af0, 0xbded659d, 0x9eb8e2af, 0x2d9f91b6, 0x96c2525b, 0xf7155ca2,
+       0xaa4b67d2, 0xcfddfb82, 0xe4a9f2ff, 0x6f7e309f, 0x7fb79e1e, 0xf138636d,
+       0xce8cd7a7, 0xfdf14be3, 0xcffbf8a7, 0xe4efb86d, 0xd7d74c1e, 0x6907de17,
+       0xf09a2f20, 0x82c8f35a, 0xc8371c1c, 0xed04966d, 0x7e15e2fd, 0xdb4c798e,
+       0x6e78e5be, 0x1396ec6e, 0x0b486486, 0x305a969e, 0x71511dcd, 0x45e5e508,
+       0x8e002e54, 0xcaa42f71, 0x273d5678, 0x06ec77d9, 0x2745de7e, 0xcedaf3e7,
+       0x01b32595, 0xb5239f79, 0x83fb8a7f, 0xa1fc46ab, 0xbc58f490, 0x79da0f7f,
+       0xf7e6e3b9, 0x8071a0ef, 0xcf708126, 0x05bdd135, 0x46dde7cc, 0x6c9e6171,
+       0x6ecde927, 0xbf3813ef, 0x4ef13d67, 0xc1bb3394, 0xeb06be8e, 0x43e7e71f,
+       0x70fa795e, 0x2255fa04, 0xe2b53ec1, 0x6041447e, 0x1fafd632, 0x404de2a1,
+       0x1bd6c46c, 0x0d3f102b, 0x46de5ebb, 0x38b62ced, 0x7bacced1, 0x8bdd02f9,
+       0x73f0a6c1, 0xf17767be, 0x2ee543fc, 0xd5bbc627, 0xcf0bfb6d, 0xef29b977,
+       0xee9ead06, 0x7ae6a857, 0xcf2126cf, 0x0b3e7758, 0x9b5997be, 0x18a087af,
+       0x7aa737cb, 0xacafd093, 0x5f9041c9, 0x09706349, 0x5dfbf898, 0x10a47765,
+       0x7e50ae5e, 0xd21c8499, 0xe264dbda, 0xeed207df, 0xe262d85b, 0xe019f772,
+       0x9a2f481b, 0x477e85dc, 0xd3efe18f, 0x64c31b3d, 0xc02ecc69, 0x664db0c7,
+       0xb0afb7ce, 0x2b91d9ff, 0xde870e49, 0x583e8573, 0xc134bf7c, 0x68fd8c53,
+       0x453159f7, 0x22bd43cd, 0x3255c12b, 0x1fdf8e26, 0x7900638a, 0x1be60d78,
+       0xd2a7d064, 0x5b29f483, 0xc3c915f4, 0xd72e09a9, 0xaf2bb898, 0x01ee265f,
+       0xf1e70b2c, 0xfde165a7, 0x836d0ce7, 0x17b4dbf3, 0xddc70cf0, 0xbf39998f,
+       0xbe238fb5, 0xb4338da2, 0x7ac2df9f, 0x6ff473c7, 0x587a79e0, 0x136d13f7,
+       0x03d79a14, 0x4b07c586, 0xea1e9ef0, 0xc15a0901, 0xef21077b, 0xcb1e03b2,
+       0xfceeb26d, 0x30bb6875, 0x40319e6f, 0xc363934f, 0xc526f575, 0x1d709946,
+       0x43f8e95f, 0xc396f9ef, 0xc6a37934, 0x90f2fd8a, 0xdef1f3f1, 0x73a62d6d,
+       0x95d265dc, 0xa4747b8d, 0x979c1efb, 0x9202b689, 0x336d1383, 0x8d187b8e,
+       0x1e7c7ee3, 0x71d0de3a, 0xe995cb31, 0x98903f43, 0x40fae317, 0xabbf914c,
+       0x8bfdd8c3, 0x1daf0097, 0xddd25ee2, 0xda2a6f78, 0x9cfc9529, 0x88ea0764,
+       0xce23bf50, 0xaf24f141, 0xef6afd89, 0xf17de26d, 0xdb8e8a5d, 0xa2bdf992,
+       0x85e74666, 0xafdf0b59, 0xfd3630e8, 0xc76fe50e, 0x804e61b2, 0x3e22c980,
+       0xf38f88f4, 0x7fc916ef, 0x7a97dd07, 0x76e744ce, 0xab7ca2da, 0xdb473cf1,
+       0x9e09d38f, 0x375f6023, 0x61757f62, 0x2bd49ee2, 0x76808efb, 0xfdf6902f,
+       0x06efd080, 0xfaf2331c, 0xc7dc87b7, 0xa9d05476, 0xcf30fdf6, 0x7fba70f4,
+       0x5531edf1, 0x7d90c7bb, 0xf3dfbfc6, 0xf228cd64, 0x70bede1d, 0x93d12a4a,
+       0x16cc53f0, 0xfef6fcfc, 0xf7f9a97b, 0x8fe16e30, 0xcfb56dd9, 0x6fbe9158,
+       0x77d2b3a9, 0x2dd48e09, 0x7e9da3b7, 0x1f7c478b, 0x7bfea669, 0x718f6f04,
+       0x346b7ef1, 0x8d5fcf7b, 0x603d7df8, 0xc64f38a1, 0xed82e3fc, 0xb59e6d27,
+       0xf6faf1f8, 0xdb068f09, 0x9ccc0bcb, 0xe4f168ff, 0x6f3de3c3, 0x7b8dfb60,
+       0x6c1a3ca6, 0xfb56df47, 0x43ad0460, 0x6699efd1, 0x7f74a3d7, 0xa5057349,
+       0x7f5abf5a, 0x17169515, 0xdf9fe3ee, 0xe97ba665, 0xdf7412ee, 0x42cff668,
+       0x18bbf67e, 0xcfd47bcf, 0x71f34fc2, 0x6656c73d, 0xc11c5247, 0xc2c5325b,
+       0x80f4171d, 0x77ed19f6, 0x6eb8f135, 0x1f9ef226, 0x24bd90c5, 0x6f483f41,
+       0x29db96a7, 0x7263d64e, 0x3d22d525, 0x7da7092f, 0x0eb8e3d4, 0xc5f1fea1,
+       0x778f4451, 0x1de8bc3e, 0x6ee3d79c, 0xbc79771e, 0xffdfeb83, 0xe1c794b5,
+       0x7a5e56f6, 0xebde133c, 0xc954e07d, 0x97bb4866, 0x82ec91ff, 0x7bf3973b,
+       0xf85cef4c, 0x0f81c500, 0x5ceeaeb5, 0x986fb21c, 0xe3833aef, 0x74bcad8c,
+       0x27f1cf10, 0x04fc5a2f, 0xf9a839ee, 0xbcf8739e, 0x80ddd4c1, 0xed7868f8,
+       0xcf68294f, 0x6e7dedf4, 0x474841e7, 0x42fe7a26, 0x8df97d7c, 0x3b620fa9,
+       0xf113204a, 0x7cc0a0db, 0x79091d21, 0x68e828d9, 0x1fe7be53, 0xe5e2ded8,
+       0x1e3e926f, 0xf9c5d79e, 0xc65703da, 0x78ed3e07, 0xef04b766, 0x68eb0a2d,
+       0xe5f654a0, 0x499f5c23, 0xf38c08fe, 0x8af888f3, 0x047f0e33, 0x11e34bde,
+       0xc6844af7, 0xf1a812d3, 0xef02efc2, 0x45976a2d, 0xe28f9e7c, 0x2feb43bf,
+       0xf4d138c2, 0x90be7f2b, 0x51e7f3b5, 0x8b5c367b, 0x3f30aef4, 0xfa7cefee,
+       0x9f3a28fc, 0xe7e5f67d, 0x25f78332, 0xe1cbd343, 0xe33fe3e5, 0x9f32f7e3,
+       0xa4462781, 0x3acc17b7, 0xf9f7bcfb, 0xba37a224, 0xc1f701f8, 0x7da2cf9f,
+       0xfeddad5d, 0x3b675a38, 0xab9d6eff, 0xa75bbe9d, 0x696619f1, 0x3afb27cf,
+       0xed1f3dbb, 0x313f8d49, 0x3d267b77, 0x6267b5f7, 0xee06ddfd, 0x5dfad0af,
+       0xfc618bf8, 0xf00b7fbe, 0xe7cc22e9, 0xb27cc76e, 0x11fdf83c, 0xdacbe3a1,
+       0x47e5d26c, 0xb2f9f4fb, 0xff67ee7c, 0xe3fbcff9, 0xf7616451, 0xff6e4461,
+       0x27a8733d, 0x9a8e5e13, 0x33dcbc34, 0x22d8f80c, 0xdbb35f11, 0xfef5e1c0,
+       0x7635fb9c, 0x21867817, 0xf715ed9f, 0x828eee34, 0x29ea1e7c, 0xaf2d6e1c,
+       0xee1421e1, 0x0de747e5, 0x5366ff43, 0x0d83f73e, 0x8b434f75, 0x7fd5c791,
+       0xee887cda, 0x70f0d23d, 0x02e5d9ba, 0x9f9fdc96, 0x82c0b9b7, 0x96fe61eb,
+       0x7d304b02, 0x7718ecb4, 0x3b372408, 0xe27143b3, 0xdf145a10, 0x5b8bd406,
+       0x5eedc876, 0x1716e546, 0xdb633fd4, 0x9bd62eff, 0x30aa25b7, 0xfcc71cf8,
+       0x355c93cd, 0xeee77041, 0x4c77e3d0, 0x763f3ebb, 0x3f7f3e8f, 0xfdc53cc6,
+       0xf02bdff7, 0x0ee3f3eb, 0x7f1ff3e9, 0x242ccf70, 0xbbd93ac3, 0xebcae301,
+       0xee9938fe, 0xf764fa51, 0x5f38112b, 0x7354fe8b, 0xd08fed10, 0x479807f8,
+       0xef73f509, 0x8f7efcb3, 0x8620e2cb, 0x3edac758, 0x3078523f, 0xde642cdd,
+       0x516f7883, 0x58cffd68, 0xe0bc2cfb, 0x8a7efb44, 0xedd5eed6, 0xe45ce91b,
+       0xf7edc5d7, 0x1736b7db, 0x5b9fb79d, 0xd1aecbca, 0xeeb0dfbe, 0xc7a464f0,
+       0x24490fb9, 0x3afee797, 0xcdd200eb, 0x4db79d89, 0x055674a5, 0x8bf343e1,
+       0x6ddf17cd, 0xfeb29472, 0x778c60fd, 0x12115aab, 0x242eb82f, 0x5f4da48e,
+       0xbecf7f3e, 0x73bee1bf, 0xed2b659d, 0xff1e5fd3, 0xda2dfbe6, 0x613f0b43,
+       0xf85927e4, 0x7d6697f4, 0xad571f39, 0xb7a68718, 0x14f5ef30, 0xaf0d75ef,
+       0x1ff07aca, 0xc935ebe0, 0xe3f3579e, 0x6b95f406, 0x2a77f8da, 0x5ee799ea,
+       0xec0a78bc, 0xc0387f7e, 0x30f40f33, 0x2e4067b4, 0x6c2ef8d3, 0xd47f248e,
+       0xaab3bc3c, 0xebefef10, 0x7d79412a, 0xc9dd9761, 0x4aba5df7, 0xf31d7bf0,
+       0x78714f21, 0xb4f095ac, 0x23f5c458, 0xf582b8dd, 0xcf3e9f08, 0xb41db95a,
+       0x12a7bf18, 0xefc0f481, 0x0c79c1e7, 0xc618b7ae, 0xf51a2475, 0x99f79092,
+       0x1a09f693, 0x5dfe266d, 0x9a5f3d8e, 0x7b35cb83, 0x3513b34c, 0x174fe93f,
+       0xf4861ede, 0x657a146d, 0xcedf1adb, 0x079e3083, 0x46ebbf35, 0xdba7f12b,
+       0xf0f769b7, 0x9c7132bb, 0xd3471b6d, 0xf8976fb8, 0x0cd90ef7, 0xbf0f768b,
+       0xda11e317, 0x08bf7016, 0xfc853f7e, 0xc499b7e1, 0x7eedfc3d, 0x1edb9fd4,
+       0xb67d254b, 0xf5fe1eff, 0xab9dfe56, 0x695f5c19, 0xef4098db, 0x9390431f,
+       0x7e7dfee8, 0x31faff3f, 0x19e347a4, 0x1393d208, 0xa9fdfdc4, 0x104b4cae,
+       0xf9fe9a5c, 0x52e7b245, 0xdb78d07e, 0x3a7602a2, 0x731753c7, 0x19fe7245,
+       0x8002bf21, 0xf7e7f407, 0x5efa6e48, 0x3acf5695, 0x952fef96, 0x159eb994,
+       0x5fefc8f5, 0xf6b19863, 0x78d38c06, 0xa4b6a0dc, 0xe5dfe106, 0xf7f1c4ca,
+       0xe216b46c, 0xffdf693c, 0xf9c05e3d, 0x0a377e3a, 0x45a203e3, 0x0d63d1bb,
+       0x8c3134ba, 0x33d7bfdf, 0xed7ffb89, 0x97f26e45, 0xbba6ee81, 0x534b43cf,
+       0x26353b44, 0x0dd7dbf7, 0x17868f02, 0x59fdce56, 0xb697df3d, 0x145cb873,
+       0x88f256bf, 0x3d6cfc95, 0xf368ee42, 0x4c547401, 0xb1f05872, 0xd9fa10a8,
+       0xf4817488, 0x06a17483, 0x3e9e8fd3, 0xfdb8976e, 0x72e36ec3, 0x0e3bffb2,
+       0xbffb9e62, 0xa1f400e3, 0xefe1c77d, 0xfe24fef8, 0xbb50879d, 0x50f71b45,
+       0xc3d00b76, 0x838b6335, 0x03d085ea, 0x5fc57c53, 0x49311fb5, 0x977dd1b6,
+       0x4e614b77, 0x16efd3d4, 0x5aeee4eb, 0x630cf046, 0x1bbbe24d, 0x8dddf17e,
+       0x77b62b2e, 0x1f70005d, 0xb86f1eb4, 0x72c16164, 0xd28b0270, 0x925a27e5,
+       0x3927f574, 0x37e57552, 0x95d68e26, 0x740b514f, 0x5f64eff9, 0x5dffabad,
+       0xfe5d04e7, 0xba29d2a6, 0x335c33fa, 0x73177974, 0x3a4bf7d0, 0x5ed8f7c4,
+       0x8681f717, 0x79bc65e2, 0x2755afff, 0xbd2f29e8, 0x677e2b7c, 0xfee47c6d,
+       0x7f2153bb, 0xf2af4bef, 0x17fdb0fc, 0x2d8c1d52, 0x9e35e97d, 0x217fddcf,
+       0xbff7f20d, 0xd7f3c1d4, 0xdb2efa32, 0xde752f03, 0x3f23cdea, 0x7e718fee,
+       0x7a6a5d66, 0xf617d403, 0xdacab2e1, 0x9aed1954, 0x08f02319, 0x67ae4f54,
+       0xf3f458c9, 0x883d57c6, 0xe1bd08df, 0xea23268b, 0xe58e4f29, 0xe39df5ef,
+       0x1cefbffc, 0x2678efe7, 0x9bede707, 0x597ddaa6, 0xac351c65, 0xa2d7cf0c,
+       0x9e316e7e, 0x0027dfe9, 0x60b929fe, 0x2f88d18c, 0x8851e798, 0xfea50b2f,
+       0xfba50766, 0x3d29139b, 0x1ab2acd0, 0xe6c1e7c0, 0x350f4a6c, 0xdbf9e93b,
+       0xbe94a5cd, 0xf4a2ecd3, 0x4a0ae6dd, 0x94dd9abb, 0xdd4ca04a, 0x59e3fc89,
+       0xf2236ae7, 0x8df2af3e, 0x1b3cd9ee, 0x963cdae3, 0xbdfd0ef4, 0xc0c67d5e,
+       0xf457ba56, 0xe8af769c, 0x9fd4541f, 0x442d8a5b, 0x4ba052e7, 0xbe3afe45,
+       0xce5be788, 0x9718a975, 0x738a798f, 0x402f6a8f, 0x6f52d0b9, 0x9939e273,
+       0x24fe7396, 0x9be3275c, 0x17b44e4c, 0x398103cb, 0xdbc7aeb8, 0xc51df44c,
+       0xbf83f67d, 0x9c51fd15, 0xf8e7d3cf, 0xd67da3bd, 0xfa21d52e, 0xdfa076c1,
+       0xe3079454, 0xfdd0b1ef, 0x9ae72ded, 0xfc6ebf68, 0x7efeb69d, 0x2d7e90a5,
+       0x44efdd5f, 0x8cdfa829, 0x53be8cf3, 0xbaaafd84, 0xe932fd7e, 0xa4fce7cb,
+       0x8945f41f, 0xbe4554fb, 0xc8f3cb1c, 0x66724b1f, 0x3197eabc, 0x99b8617e,
+       0x5004d3f3, 0xf241ad2f, 0x3edbf356, 0xb38f9e7d, 0x10bfd9b7, 0xd0b953d7,
+       0x2c4dca57, 0x6327be9b, 0xef3f2308, 0xba0bf924, 0x5ec97b5f, 0x476300a9,
+       0x2deecdca, 0x9c2af764, 0xab58b0df, 0xd777eef8, 0xdea0e782, 0x7be2f17b,
+       0x59bb89c3, 0x49e1f006, 0x2879158d, 0xf113dfd7, 0x9e49e15d, 0x37ef3863,
+       0x327f01e7, 0x7dc66208, 0xe2708ad0, 0x599d7df7, 0xa57c6f74, 0xcf197d59,
+       0x29789dd2, 0x32b3eb40, 0xefc62d52, 0xe9789e2a, 0xa827cf22, 0x1577e32f,
+       0xadc0de1d, 0x26df49e5, 0xfd0a5d7e, 0x8459e28e, 0xace2beaf, 0xe7c23bee,
+       0x0eb4aac7, 0xde03f6e3, 0xe14ebe50, 0x6213c8e7, 0x3e300a9a, 0xc5a9e59b,
+       0x18c52f58, 0x7d6173a0, 0xfc15285f, 0x6220585c, 0x675f9066, 0xe83c876b,
+       0x3b2f737d, 0xcc6c7cb9, 0x0d5cf1e0, 0xa50b1689, 0x9326e71d, 0x6771527f,
+       0x32e9fda0, 0xffebe5e9, 0xcd759b01, 0x008000c3, 0x00000000, 0x00088b1f,
+       0x00000000, 0x7dd5ff00, 0xd5547c79, 0x73b9f8bd, 0xc9332667, 0xb2164c24,
+       0xb2130810, 0xc9c42010, 0x019612ca, 0x35161892, 0x18285a80, 0xcb211026,
+       0x5f6c0164, 0x3066d2da, 0xa1a8a080, 0x9d82a2a2, 0xda282020, 0x0b060341,
+       0x5c50883a, 0x5f45b11b, 0x2e25e55f, 0x0c49096c, 0x9efe8fea, 0xdfbefe7d,
+       0x333739ef, 0xf5889277, 0x1bf1febd, 0xdce1ed3f, 0xbe59ee7b, 0xbe7bf7fb,
+       0xefbbe4e7, 0xb19d37e0, 0xc61aad67, 0xdf8b19b2, 0x186c67a4, 0x598d9fc3,
+       0x9902ffe0, 0x89b27752, 0x1cfd358c, 0xefe64c1e, 0xfa7ff0cd, 0x47a88d24,
+       0xaad3c8ec, 0xbdb0dbda, 0x19b33df7, 0x04fbf798, 0x06c761ab, 0x0b2f18ad,
+       0xae64ac5e, 0x58b18924, 0x99312b56, 0x91e668b1, 0xd5630258, 0x2f3461e9,
+       0xb63045fa, 0x74d8c22b, 0x944bb43f, 0x4198d399, 0x19433325, 0xc1e3041b,
+       0x8dd7d8fb, 0xc67886ae, 0x3de118f6, 0xe1a89a7c, 0x6f0d1ee5, 0x4e640faf,
+       0x4047d403, 0x60f9419d, 0xfa6a7dba, 0x43c7ea50, 0xd287c8fd, 0xc58c4d6b,
+       0x1f8d3730, 0x1f349cc5, 0xd670dda5, 0xd33ac46a, 0x8d1724f6, 0xac8a6c67,
+       0xca945659, 0x8e0277d8, 0x759ef94a, 0x6856cdc6, 0x64ef55df, 0x9f79245f,
+       0xd4850577, 0x7ade4cb9, 0xf26f7e35, 0x7d266efd, 0x555f7ca7, 0x117d8b37,
+       0xe8f78b8e, 0x44aabc71, 0x8a95cd8d, 0xa537b1df, 0xaade7c0c, 0x7ef60a2f,
+       0x90beae77, 0xbd73fbc6, 0xeb8fca8d, 0x3a17d88b, 0xbf5afec6, 0xd5bfca88,
+       0xf9f9e9db, 0xdb2a32fa, 0xf9e96bea, 0x5475f5a7, 0x3824b9de, 0xd7fd0ecb,
+       0x5f67acb4, 0xbfd83818, 0xb955ff83, 0x9f36f675, 0x6c19b9fa, 0x095775c0,
+       0x3f173a3a, 0xca4dfbf0, 0x9f1c69fb, 0xd73377dd, 0x4d97c06e, 0xc39836cf,
+       0xd61fe3fa, 0x75f5c467, 0x6e45b307, 0x2cfed380, 0xb3ac3e40, 0x57d7863b,
+       0xb7547559, 0xfc0ed869, 0x9e967f7e, 0x534a3ff7, 0x616def86, 0xc973dfbc,
+       0xdcf98750, 0xddc6713a, 0x245b2708, 0xd6f0cf3c, 0xefe58dcf, 0x73f8c36d,
+       0xfbcabe65, 0x1a66e9a9, 0xb77bc147, 0x254fc60e, 0x95fea77a, 0x48e59ff6,
+       0x7b7fbe34, 0xd0a6a257, 0xde3c0035, 0x10f5f2b6, 0x9c3c005f, 0x3ef107c8,
+       0x216d517c, 0x50e850be, 0x74eabfa1, 0x18977d0d, 0x083ce820, 0xf88c20f8,
+       0x8d8bbe80, 0x08903e02, 0xeb06362e, 0x7e0923d9, 0x2807e7f1, 0x7e5e190d,
+       0xa140f850, 0x33e058f7, 0x8ebbcc29, 0xaaf47ea9, 0xf95b0f94, 0x83235bba,
+       0x3d78467f, 0x093333a6, 0x712203db, 0xf7de9a5e, 0x467f2097, 0xa01a5b06,
+       0x4cfbfcbb, 0xfa01aeb5, 0xe7e8a3f9, 0x9143c347, 0xa3c0830b, 0xbcf41c1f,
+       0x40e167fc, 0xedfa0e72, 0x401dfa41, 0x155b356e, 0xf7e9c5b9, 0x45edab3d,
+       0xc96ea3a4, 0x408695a8, 0xe3f4e469, 0x59fdfebf, 0x1d0a1d7c, 0x2a33a755,
+       0x099d7163, 0xb29ee5fd, 0xae75be9e, 0x12ff2462, 0x7f73f903, 0xf2eb2b3c,
+       0x5a6f7f91, 0x64f0bdb3, 0x866e9dcc, 0x4c3b867e, 0x91e3fbd6, 0xdf9c2d8e,
+       0xde2c5e86, 0xbfebbcc6, 0x79a16acd, 0x8991a53d, 0x28b6981e, 0x73ef8171,
+       0x3f365e49, 0xf81cfbd5, 0x9f01999b, 0x8803c73d, 0x561a3ddf, 0xb77c12f6,
+       0xe49cfb17, 0xe046bf5d, 0xb65177b1, 0xd9e60ea6, 0xc9c98df5, 0x5872826e,
+       0xbe0979cf, 0x63a1daef, 0x275278ce, 0xc648a4f3, 0x831d06ee, 0x1eb3aa7a,
+       0x63005384, 0x3ea1ea57, 0xbfb9da1a, 0x3ac12f3c, 0x99909e6a, 0x3f294001,
+       0x489df5f1, 0xeb8f2b4f, 0x7df001cc, 0xce478ec3, 0x685e3d20, 0x19f02c96,
+       0xe5866aeb, 0xedaafb43, 0xb4232ec1, 0xb63a802f, 0x765fb55f, 0xceae2459,
+       0x10e78c18, 0xac617de3, 0x18d2c51e, 0xcfc4f59b, 0x95f708b4, 0x828b124d,
+       0x58ee4f7e, 0xea063a7b, 0xd64a7617, 0x60d76800, 0xf38dd90c, 0xeab7902f,
+       0x8af3c187, 0x61dcfe26, 0x852cb82a, 0xb300fd40, 0x8a9c607a, 0x2756c143,
+       0xbaedc1aa, 0xbc52db4f, 0xa76cb672, 0xdcce5eba, 0x8a83a47a, 0x8ee7ea3d,
+       0x91f75083, 0x06b0ffcf, 0x9a405c47, 0xbfd2c318, 0x0f6ebc43, 0x27d6a543,
+       0x0ee9fddf, 0xd1c93bd5, 0x336e5c35, 0x02e455f6, 0xf8f95ba0, 0x9a9f71d7,
+       0xa8be7d78, 0xeafd43b7, 0x0a2f1cd7, 0xd8c5aa5c, 0x96586357, 0x7d59d61b,
+       0xc27668dc, 0x7e8fab3a, 0xff00c216, 0xb76d8135, 0x2abeff12, 0x9c02f79b,
+       0x4ec8b4b6, 0x31d56f84, 0x801a33e3, 0x0fe1f56f, 0x846096f4, 0x0602eafb,
+       0x9cccdffd, 0x48a9cc9b, 0x4ad61a27, 0xc7aad474, 0xb3d6cce7, 0x3ae9fb12,
+       0x1da3346a, 0x47eafd50, 0xfd6097a7, 0x888cc4b0, 0x446d11c7, 0x409f2b27,
+       0xcd29a586, 0x74bc7293, 0x115e2322, 0xae21eecf, 0x2ae7f800, 0x19e23bc4,
+       0x47896ef0, 0xde11d13a, 0xe9901e57, 0x068ec37d, 0xe0bfb63d, 0xf055f8e2,
+       0x23af205e, 0xe2ec573c, 0xc4f59cf8, 0x9102c7de, 0x18e80e0e, 0xbe12777e,
+       0x53bfc61b, 0x38fe81d1, 0xaf6bbfef, 0xec3a42e4, 0x01a383a3, 0xf380747d,
+       0x001d11bc, 0xbfde929f, 0x687c1d11, 0x7cd78465, 0x4f0bdbf9, 0x04d67cc1,
+       0xef48adeb, 0x69218111, 0xc0889f38, 0x67ae1738, 0x53b9e568, 0x526e3011,
+       0x312ccbf4, 0xb0e2b193, 0xd0d5aa8e, 0xfd8c416e, 0xe77f9466, 0x11b7bf67,
+       0xce7677d1, 0x3f48e9f3, 0xbdb6ba0d, 0x6703c38f, 0x79159068, 0xfe7e3bb8,
+       0x3d6057ce, 0x8f7f6179, 0xa8eb043b, 0x8cc02d79, 0x5d30b764, 0x19bf67d3,
+       0x18aa4e80, 0xbde003c7, 0x755dd71d, 0x0013c02c, 0x7ce6b3e3, 0x47bcdf5b,
+       0x74e77ea1, 0x29efaf9e, 0x31fd0d5e, 0x91c70fe8, 0x80eadc80, 0xfd8f2b94,
+       0xbe0963f1, 0x6c112c93, 0x260dd629, 0x1cfd8c8f, 0xc1f675d4, 0xcc91fa03,
+       0x473b51ef, 0x438228fa, 0x0b54d442, 0x2c352983, 0x84c0f666, 0x8c17d3ef,
+       0x9d2ec5f4, 0xd98313d0, 0x0de88393, 0xce648ec5, 0x87c8a1e1, 0x67ce0b08,
+       0x9aad6e5c, 0xea78e7c8, 0xc36b6fe7, 0x3deebc61, 0xfca5e112, 0x582bc818,
+       0xa74bb96f, 0xa2d53b92, 0x3fa445fd, 0x6725db80, 0xec8d11ed, 0x96fe5f2b,
+       0x0e38fd87, 0x91aa7ef0, 0xcc1e10ae, 0xf42058f3, 0x31d6e9d7, 0x260a97e4,
+       0xb04b4de4, 0x401963d5, 0xda69ecbe, 0x3fbbe684, 0x9d82555d, 0xa7f08b89,
+       0x7566eaaf, 0x20e9adbb, 0xdc91c677, 0xc01dff19, 0x4c09a9f7, 0xe829dfe0,
+       0x1b487530, 0xb32f4fd0, 0xeefe410c, 0xb71287d3, 0x347914e7, 0xbcb0077a,
+       0x5c63bf4f, 0x19f5a606, 0xb37edc77, 0x1dde3eaa, 0x537f6aad, 0x3ef5458b,
+       0x7aa293dd, 0xaac6799f, 0x4eb767aa, 0xf09fb554, 0x9f554db1, 0x6aa856d4,
+       0x48a97b9f, 0x854def55, 0xcf600cf5, 0xd1cde528, 0x6cfdaa92, 0xffd5518b,
+       0x555094dc, 0xe024d7bd, 0xc54cec23, 0x9d357dfe, 0xa5fe8bdb, 0xac5bdf02,
+       0xf2c071ea, 0x36dff824, 0x7cde3d51, 0x1fbc7a9b, 0xa07d978a, 0xc220b55f,
+       0xc5be83f6, 0xc07ab9f2, 0x0711f803, 0xfea9a3eb, 0x4a85bd62, 0x3d0a7d77,
+       0x4adea97f, 0x89fae6f5, 0x7e023f54, 0xc05bd609, 0x55f2c14f, 0xf9f04ff0,
+       0x5a77e08d, 0x8c467b8c, 0xf718b6fb, 0x5de9c2c7, 0xa2fbdfd1, 0x4fec56bf,
+       0x555f7de7, 0x0eb9ad98, 0xec233c7c, 0xfd0dbeb2, 0x056d3588, 0xbdef68b1,
+       0xc0ddb325, 0x3aeecc37, 0xfa811f53, 0x9da19c2d, 0xde7a8ac4, 0x70fd60d1,
+       0x0b7ef982, 0xdf0fb7ea, 0xcd5df7c7, 0xfce505b2, 0x859f2d1b, 0xd79d3f60,
+       0x0b841841, 0xc77508bd, 0xdfaa25df, 0x502def0f, 0x04087d9f, 0x373be908,
+       0x44cebbe9, 0x33d2eea5, 0x1e0e8b28, 0x2a9e23d2, 0xf7a21ff7, 0xab5f016f,
+       0x526fefde, 0x7b6337bd, 0xaeb52b28, 0x95ef8410, 0x0f3fa516, 0x4a2477b5,
+       0xafc3b436, 0x29b93fec, 0xa1f1f517, 0xe6197092, 0x83f0795f, 0x83df15c8,
+       0x9e47ab8f, 0x503d454f, 0x33fa1475, 0x3aabfb79, 0x3e7513aa, 0xa1e2477f,
+       0x1c543082, 0xe8062507, 0x91ac9d62, 0xd9575da1, 0x7281d7b2, 0x896532b6,
+       0xba7c018e, 0x8ba172dd, 0xce900cec, 0x19996768, 0xd7dcebb7, 0xbf405642,
+       0xdd4fbbaf, 0x1efc436a, 0xe382193b, 0x2acb3776, 0xc192ca7f, 0xe0c96bf1,
+       0xf3675ffe, 0xbc0b10c9, 0xc93ee2df, 0xd0f5aee1, 0xf510dffa, 0xde09286e,
+       0xbfad322d, 0x784cbafc, 0x971bfa50, 0xb37f5321, 0x7182925b, 0x7cdd675d,
+       0x0b0cecbc, 0xb13b3ff5, 0xffe714a4, 0x6ce2f476, 0x1051ec99, 0xc7c728d4,
+       0x728bddce, 0xdb2dd2b6, 0x6ef7f206, 0xd69efd16, 0x2b7d3a71, 0xc3d3e5f1,
+       0x176fee00, 0x8e93a786, 0x67a6ed10, 0xa059bd70, 0x1ea227b7, 0x04b26b39,
+       0x5bdf9d23, 0xf88c1098, 0x7c4b037d, 0xde8cf85e, 0x3345650e, 0xb9acef1f,
+       0xeee90435, 0x8ca6736c, 0xdfd28ff6, 0x1f6e3124, 0xcde1f77d, 0x732a7849,
+       0x1fb09935, 0xf3f8fe2f, 0xcd330cec, 0x07d76de3, 0x759da277, 0xec882536,
+       0x467ad393, 0x41e575fe, 0x3d9f276e, 0x7084db16, 0xcecbc650, 0x774bfee0,
+       0xdaf0868a, 0xed13a2d5, 0xaa65ec96, 0xef7fdc76, 0x8f9ea3dc, 0x10fed5d9,
+       0x5d8ee7da, 0xccf59a32, 0xc48daba1, 0xa9dc5ff5, 0x80995f9e, 0x89e743b3,
+       0x57a1f48c, 0xbe3ed1c7, 0x1f9d1131, 0x42c4f855, 0x78f054f8, 0xf3e64536,
+       0xa1700e8a, 0xb438eabf, 0x7fbae897, 0x1e35a97c, 0x7fd889fd, 0xbe295833,
+       0x5a7f0374, 0xfc7c1bb1, 0xa3fe862d, 0x5b2130ae, 0x1f6bca33, 0xadb7489c,
+       0x3f46c8ce, 0xccfc88ac, 0x5bec0cb3, 0xed0ab318, 0x972821eb, 0x8e18f6ff,
+       0x760cdbdb, 0x655b8c25, 0x39f15a38, 0x15af69d0, 0xdde60518, 0x12e753bb,
+       0xed0990fe, 0xcec295dc, 0xe7b168bd, 0xab7fa0c8, 0x7d686bd6, 0xcbb2838e,
+       0x28f18f18, 0x1eaef72e, 0xe90dbf8a, 0x364671d5, 0xcb347fa3, 0x94f0ff1d,
+       0x64efd22c, 0xb9bb56af, 0x5fbd5c9d, 0xb158bb22, 0x1d84aa43, 0xc1d84172,
+       0x70f7d617, 0xc4b8f8fb, 0x0f76811e, 0x023d8204, 0x9d4aaef3, 0x956d7643,
+       0x2c5375bc, 0x876ab7f4, 0x3f286eda, 0x46cf4276, 0x7aa39d91, 0x5d5fb95e,
+       0xebab72af, 0x44f8bf8a, 0x337f9f46, 0x7c9bfd06, 0xf2144a79, 0x57888bc3,
+       0xefe173a4, 0x8d6f1dac, 0xa2dfbe42, 0xe251ccb5, 0x9aaf0812, 0xe3972fe3,
+       0x408e5dbc, 0x751ff92b, 0x76b8207f, 0x9afdc57f, 0xeb4668ee, 0xbe1c66ef,
+       0xce9c2ddd, 0xcb92746b, 0xaea3df80, 0x920cfec0, 0xeabc3d6b, 0x9086f676,
+       0x10ac627c, 0x62cd62f9, 0x00dabfee, 0xae1768fc, 0x5fc9f215, 0xb6d34eaf,
+       0x723ea1c9, 0xb70664e2, 0xccf4f353, 0x6d6cfa8e, 0xdbf495b0, 0xd7b70348,
+       0xbdb81a47, 0xb3db523e, 0x607fc71e, 0x17b96498, 0x06913eba, 0xd5eb0e1a,
+       0x89d22b26, 0x45a25d14, 0xac303c78, 0x3ef48b44, 0x414eecd2, 0xe7a94ebf,
+       0xaf54fbe1, 0xb260507d, 0x3d9c716b, 0x93479231, 0xcc4f8de6, 0xa1759ad7,
+       0xb195fa3e, 0x995ed4f5, 0xaa24481f, 0x67e7cbff, 0xbc99f986, 0x0f7c03f3,
+       0x65afefc1, 0x886ec959, 0x9c3a0f9b, 0xc92d42e4, 0x9d9e0505, 0x8079ef40,
+       0x21198c2b, 0x9e7638dd, 0x8ab2ff20, 0xefc26eb5, 0x3af8420a, 0x583d700a,
+       0x45e5e40f, 0x3252bf21, 0x6596de39, 0x7d87edaa, 0xc84bb699, 0x8b331bb7,
+       0x97ccb03a, 0xeb09cc4d, 0x4c9ef35b, 0xdcbf9d7e, 0x4f44e787, 0x510f80d7,
+       0x2b55ddfe, 0x76551399, 0x1aafe71a, 0x8f8fa8fe, 0x867bdf2a, 0x6d3984f8,
+       0xbef029ad, 0x5efe718c, 0x27346756, 0x0d45f0fa, 0xfbda1bf2, 0x0e5ff045,
+       0xaff809c6, 0x0f3e5ccc, 0x5d7b05fd, 0xbafd19a4, 0x8f53b91a, 0xcb3fcffe,
+       0xea2d3577, 0xe9c8c7ba, 0x912c13df, 0xa994149f, 0xc138c7e6, 0xc9764d1f,
+       0xe9a87a85, 0xe78f2d5b, 0x7e28952d, 0x443c0777, 0xd87e8e3f, 0x0b866cae,
+       0x501de6f5, 0x6d8e7f45, 0xa5fe208f, 0xdb9eb097, 0xd0efbac5, 0x5ca04e7a,
+       0xc773a539, 0x54e93c63, 0xfd8ac195, 0x0860662f, 0xca5bbc81, 0x173ca95a,
+       0x43d87d54, 0x20473b9d, 0x0f647ddd, 0xd35678a0, 0x28c1dd86, 0x06d8d3df,
+       0x341485f3, 0xeffed836, 0x73b70732, 0x05d8a080, 0x1f144f05, 0x00ba246b,
+       0xe90a397b, 0x363ff013, 0x0097ea13, 0xfd19d137, 0xcbfcafbf, 0x5fc410e1,
+       0xdf2f3dc7, 0xfe8613f9, 0x51f90f57, 0x75ebb515, 0x53903838, 0x178e4a6b,
+       0x15de0aaf, 0xd5e1f5bc, 0xe2f9ff02, 0x1c34d615, 0xce7724e1, 0x3bf4b927,
+       0xbdfea199, 0xb8155e11, 0x59f8174f, 0x2fcb9475, 0x782b7c7f, 0x117309f8,
+       0xeeef413c, 0x00b13c24, 0xf4fe9792, 0x017c2370, 0x57c52e61, 0xc80222b3,
+       0x70d58d0f, 0x52bb1a79, 0x12e578a2, 0x06de3f66, 0x7f419de5, 0x0bbd11d3,
+       0x78152dbc, 0x6eb988fb, 0xdfff8949, 0xccbedbc3, 0x4399e5a2, 0x3fadf3fb,
+       0x97c60e9f, 0x4ff58b0e, 0x3174be8a, 0x7e3f47e4, 0x3ed7e3f6, 0x3fe15a3c,
+       0xebda3c1f, 0xfb2f8842, 0xfc1f2df0, 0xff117a61, 0x16ac7181, 0xff89e5c9,
+       0xc12afc01, 0x4e9f0042, 0xf0553e3f, 0xb065c0a6, 0xcc27e0b8, 0xd12cca73,
+       0xe3e70abe, 0xf6b8079f, 0x157dde4a, 0x25c4ff65, 0xf97fa4e4, 0xb84bd809,
+       0xca7f755f, 0x6768a1d9, 0xfd2bd39e, 0x0f185d18, 0xeb7d64fc, 0xfdf0d588,
+       0x79783327, 0x9f4bed0e, 0xc7902dba, 0x09893f25, 0x3e9c2270, 0x44ccc691,
+       0xf489f33d, 0x7af2b76f, 0xf582de94, 0xcd3351c5, 0x53a73f50, 0x8af798e2,
+       0xca8b83f8, 0xc84f164f, 0x7b1276a3, 0x9161e113, 0x238d1158, 0x30856149,
+       0x967e4f9f, 0x13fb8194, 0x991afb7d, 0x507f0edc, 0xee2fa3ac, 0xe2890bff,
+       0x3550cbfe, 0xccc4fee1, 0xc1470bc7, 0x4cbff3f3, 0xd37da748, 0x51f1ea35,
+       0xbc53c7ef, 0x33f51b74, 0xae8f7aed, 0xf5bf47c4, 0x2fbcdbe9, 0x6cd2f3f9,
+       0x9949d20d, 0x6c2da1c0, 0x5dcff70c, 0x7f504309, 0xf7acfa29, 0xdf26cbcc,
+       0x1165ee78, 0x8fabeeff, 0x57ce3079, 0xf7d89e1f, 0x53f63240, 0x59a677a6,
+       0xa6a5f9e1, 0x6ed0e2a7, 0x5f77db29, 0xfbd3d932, 0x5fa324b6, 0x81fbb654,
+       0x83d51b64, 0x6997e4ec, 0x5e3bbaf9, 0xfdccf498, 0xbc0dfa3e, 0x52ff9a1f,
+       0xd47c89c3, 0x5dc673db, 0x07fb88dd, 0x2894bf49, 0x6b1777fe, 0xb67a88dd,
+       0x15f38538, 0xf9206edb, 0x7ed1fd0f, 0xb731deed, 0xf07941ec, 0xba67ca76,
+       0x21776852, 0x15fd4b53, 0x28d6d733, 0x966dfb8c, 0x6de7ee28, 0x7ff6823f,
+       0xfa48364b, 0xa3d408e8, 0xafe8e9a1, 0x250cc85e, 0x9cdf2eb8, 0x179f1a7e,
+       0xe7cfe3af, 0xcf9ab804, 0xeb8f3f62, 0x242d7bad, 0xfee14687, 0x0bff3285,
+       0xdfae7a99, 0x47e44ab7, 0x3d24e328, 0xbbe4d916, 0xdc990bce, 0x3fee601e,
+       0x4db83c91, 0xbade65e0, 0x868cde0f, 0xec43ad7e, 0xde4f289d, 0xa242f47f,
+       0xf41c6187, 0x79d22a72, 0x64fede92, 0x777bae39, 0xb349c500, 0x28e562d2,
+       0xcf719f68, 0x5cb0478c, 0xc9e4aeb6, 0x3bc39472, 0x29ffe40c, 0x59235bf3,
+       0x4fa72835, 0x3964fd36, 0xa3d2edc2, 0xd7ffb206, 0x628e8d34, 0x52a9f003,
+       0xc7f80b3e, 0xf5038d0d, 0xaf9f2a06, 0xd00b3337, 0xd1f50bc3, 0xbd7dff54,
+       0x88b64a85, 0x331ad7d3, 0xf5834f97, 0x883d7997, 0xce2ec059, 0x16646cda,
+       0x86775390, 0x60b202da, 0xab63499d, 0xeb116f76, 0xd3ef824a, 0x10b3f19d,
+       0x565b590e, 0xf9d3469f, 0xe08ea65a, 0xcdd9cef5, 0x57ac2871, 0xba7f6bad,
+       0xcb4fde1c, 0xc167322a, 0x2fcec373, 0xf2714e29, 0x08c57de8, 0x01ddb2ef,
+       0xdd627d7c, 0x8e4d1e97, 0xcbe3127a, 0x6e28e96f, 0xfdb3b350, 0xae502de9,
+       0xef5abad8, 0x743fef4b, 0x7c5921bd, 0xabe2373e, 0xcff0e0c1, 0x7103d5f3,
+       0x81bb3fc4, 0x3c7f52af, 0x5bacd55f, 0xcd2bf04f, 0x70809a2a, 0xc673a4bb,
+       0x1a5d3f21, 0xdce89533, 0xf8225c79, 0xcfbc722b, 0x7ee2ceaf, 0xbdc6a575,
+       0x57bc4a75, 0xb2cd7f8e, 0x8e27be08, 0xfb464c5e, 0xc596ebf9, 0x23eebbdf,
+       0x68cf6eb0, 0xa819d78c, 0xa39f7ff4, 0x615827b7, 0x6e1a397d, 0x5fbffb37,
+       0xffc4a596, 0xfe029e79, 0x10edfe30, 0x98f40ffa, 0xc7cc0873, 0x04f24c71,
+       0xbb3ea1a6, 0xfd16b2f9, 0x3f3ff046, 0xe02fb5f5, 0x3e8fa9f7, 0x37be6c1f,
+       0x9fb1ab2a, 0x9ddcaf24, 0x7986b1f0, 0xa4f6f47c, 0xf1e640b6, 0xcfcfb719,
+       0xda7a6781, 0xb9218a77, 0x62d37880, 0x98e8ef7c, 0xacbf58dd, 0x3aec78e7,
+       0x8f14f602, 0xc7393107, 0x47cbcebb, 0xce50d23b, 0xfab7affa, 0x0fa20ed5,
+       0x5f7dcb47, 0xd9feb44a, 0x3769b597, 0x7d89ff5e, 0xbf88691d, 0x1cb6bacb,
+       0xf4badbf4, 0x8788696d, 0x79703fea, 0x41c2cffe, 0x19be5e79, 0x5e7c0216,
+       0x4e88192d, 0x8a4ee5f2, 0xe19d743f, 0xa3ea87f1, 0xed3c90cf, 0x40e3c63d,
+       0x82d69a35, 0xd49b8c28, 0x79469fb6, 0xfdcd1bd6, 0x86dfe831, 0x20929b70,
+       0x27b6a0f4, 0xb5c83e6e, 0x03d1f5df, 0x212f23f7, 0x7ec68eff, 0x03940edc,
+       0xa1882d2c, 0xf905715d, 0xd7179e19, 0x3a426fc5, 0x8a1ae4bf, 0x4ef62c11,
+       0x53557fda, 0x20f5f0dc, 0x0f764cb3, 0x5fc1f53c, 0x325c3adf, 0x8a62384f,
+       0x6cc414fd, 0xf46aed3e, 0x6ec8db96, 0x13ef9b7e, 0xfce58cd6, 0xfce55ec4,
+       0x84e1b554, 0xbfa7da3e, 0x293f0407, 0xd79ce476, 0xf2f88bff, 0x01db74a1,
+       0x28418794, 0xe8bfb10b, 0x12492e21, 0xfbbc72ed, 0x2263a6a2, 0xd328507e,
+       0x99169afb, 0x8b21fee1, 0x86fca60e, 0x45a8d642, 0x730e7b3b, 0x45f9e14f,
+       0xc2e50f6d, 0xcbafb9fb, 0xf233f799, 0xbd9f68b7, 0xb89ed020, 0x8d23ed06,
+       0xceeae024, 0xcfa3ef9a, 0x3d71662e, 0x48964535, 0x04c4f58f, 0x7b329d91,
+       0x9c52d551, 0x916ed2af, 0x7e83b789, 0xae62cec8, 0xdfdc349e, 0x349e9e65,
+       0xda55f7dc, 0x507af9dd, 0xe645e92d, 0x67d3bace, 0xcf22eb9c, 0xd3ee1ae6,
+       0x88d49d03, 0xf97ce0fd, 0x6ed0c7db, 0xef9c735f, 0xc4d39e83, 0x3941a47f,
+       0xbc46700e, 0x6d5e0076, 0xccec7fa8, 0x19fe4366, 0xfc85d43f, 0xc482f353,
+       0x3a6f18b4, 0xe31bb01a, 0xb6bad551, 0x2de7a448, 0x23d17f2d, 0xfee0d73d,
+       0x9efc78f0, 0x81bd3889, 0x998d78e4, 0x96c4fdf1, 0xbc611fd1, 0xd70ceab0,
+       0x0fda55a2, 0x72800e28, 0x6cabc71b, 0xbf7e443e, 0xefc87983, 0xd3541c77,
+       0xdf346f4d, 0x93e7f047, 0xc21659eb, 0xbd9f52bb, 0x9dc7f383, 0x7945ab32,
+       0x77dc44c7, 0xd9147476, 0x84efde25, 0x6c7728bd, 0x7ba63b44, 0xa0956494,
+       0xe740eeab, 0x9c8fb406, 0xe9aedcc9, 0xacf9ed7e, 0x5c5f2495, 0xaf310b59,
+       0xb3bdd848, 0xcad36f37, 0x7d99f33e, 0xbb39c78c, 0x11d95903, 0x387dbbc2,
+       0xf4b3e3e2, 0xf48bffa2, 0x79efadd7, 0x50e3173f, 0xf5971e1a, 0x110ac75f,
+       0xe31b78cf, 0x79dea953, 0xe58d8dcf, 0x88b98cf2, 0xf86b4e8e, 0x90de4af8,
+       0xb6517df2, 0x91dfeca4, 0x3a7a009f, 0x6bf6fbea, 0x54a89f70, 0x8a9513ec,
+       0xb152a27d, 0xf62a544f, 0x3ec54a89, 0x27d8a951, 0x44fb152a, 0xa89f62a5,
+       0x9513ec54, 0x7c227d8a, 0x954e36fe, 0xfb7f09f2, 0xd3d1ea24, 0xbcc36bc8,
+       0x7e6173f5, 0xf6ea61f5, 0x7524c2e7, 0xed44987d, 0xf6ff6547, 0xe309a749,
+       0x9f2166b0, 0x8768c12c, 0x727dc65d, 0x4786f7f0, 0xb3b253da, 0xa2e71eb1,
+       0x47c2d7fd, 0xe53f208e, 0xbf262d85, 0x5afc17b6, 0xb2cb4794, 0x036537ed,
+       0x999cce9c, 0xe48db895, 0xa9e291a4, 0x6e3a7ee7, 0xdf13c508, 0x861d3f02,
+       0xb992919c, 0x33ea0b21, 0x242d0f90, 0x522a6e2f, 0x67e84cfc, 0x2c92b1d6,
+       0x660f972d, 0x65f397b4, 0xb38e2947, 0x8998c626, 0x0ca3f872, 0x1f6ce4fb,
+       0xb6182cba, 0xa2ed112a, 0x47cb3ad3, 0xbe761718, 0x57e863a7, 0xa543f129,
+       0x198caedd, 0xd98eb885, 0x321b0929, 0x36607fb0, 0x3d367794, 0xb3f3883b,
+       0x06a48269, 0x2d165f92, 0x814283ca, 0x6e1699f7, 0x16f47b1f, 0x7dc6186d,
+       0x60446702, 0x8169c77e, 0xcf0233e7, 0xe33c0b6f, 0x125e5afe, 0x12c35fdf,
+       0xf4b0d7f7, 0xc86b8bcf, 0x4d905a2a, 0xce27b572, 0x0e6eaf37, 0x3b9717f2,
+       0xd4376871, 0x3ea9f88a, 0x979dcb9b, 0xf3168b33, 0x4fd4dcef, 0x75df88a5,
+       0x95fbd4e8, 0xefde77ca, 0xe0bf7d19, 0x7dc4e626, 0xf70af676, 0xb070d93f,
+       0xe0bea04b, 0x47922895, 0xec63a1b2, 0x0be7c0e7, 0xc03fb932, 0xede00e5e,
+       0xc8d92da2, 0x7e220d27, 0x38d2e5db, 0x551f4075, 0x61c9ad61, 0x7f0587a8,
+       0xff23f529, 0xaaa3f3cd, 0xe50ea032, 0xbebe241f, 0xc9ad05aa, 0x64bdf8a1,
+       0x7cbc50d4, 0x567f7f37, 0x28d55ff0, 0x0f589fd1, 0x10e3b833, 0x5fc7dd1f,
+       0xf50e5b89, 0x959e4dfb, 0x927bfe5c, 0x4f336e49, 0x7559e632, 0xccf3ee48,
+       0x91e3f60a, 0x31b44b71, 0xd3f70f08, 0xc8ebbf58, 0x49da25f8, 0x79d0fef8,
+       0xa1fbefb3, 0x8cc938ee, 0x7efe54f5, 0x43a7a1e8, 0xdd753ead, 0xbdf1e74b,
+       0x4bf1defe, 0xdcfda0f2, 0x7a99d700, 0x73df9ba4, 0x70be32fa, 0xadc202f8,
+       0xdfb728f2, 0xb870be67, 0xcfd425f3, 0x0f298387, 0x78ecf1e1, 0xd1c37b82,
+       0xbd22b767, 0xfbe21d75, 0xfc1ff70b, 0xa2bfd3cb, 0xedb80176, 0xb3bafd02,
+       0xfcb38c18, 0xc53f3bc8, 0xb906e771, 0xdafac2bf, 0x8f34899c, 0xaf9ce1b9,
+       0x977272eb, 0x872e1138, 0xf239f85f, 0x6021dcdf, 0x9e7ce2d8, 0xa23c5237,
+       0x7931e5e2, 0x0ae81718, 0xfec62d6e, 0xb00b9fab, 0xbc569d22, 0xf913351c,
+       0x8f364f76, 0x6d8f97af, 0xab7d438c, 0xbec0f579, 0x3b60455f, 0xd533ed23,
+       0xaf7b7184, 0x59ca6e42, 0x667bf84d, 0x74cde61f, 0xbed2301d, 0xb2c6396f,
+       0x2fbe5ea0, 0xfe05f689, 0x8acf8ff0, 0xf2f90f11, 0xfcf87dce, 0x0d463dab,
+       0xdeace1c2, 0xf22a6436, 0xf91d59e1, 0x5ea2e59d, 0xcf9c2e7e, 0x80ada827,
+       0x18d117f0, 0x22b6fa87, 0xe2b717fc, 0x8dcae7bc, 0xc3dfa34f, 0xbda00d9e,
+       0x0007cb8e, 0xe5ddf06e, 0xc40cbabd, 0x6081d772, 0x874bd22d, 0x24fc58d4,
+       0xb797bff6, 0x123630eb, 0x477b9d3c, 0xda0f1c33, 0x1dc7d431, 0xf3d536d2,
+       0x4d9f7bcb, 0xcaf4bf43, 0x3fc97373, 0xe157e855, 0x013d8a97, 0x9248bd2a,
+       0x46f29220, 0x64eccff8, 0xd5f89f26, 0x744f2395, 0xdfbcc93d, 0xf3a8395f,
+       0xe54601e8, 0xe6036c01, 0x50fc2b59, 0x21737b11, 0xd342afae, 0x4bf68c94,
+       0x315b6679, 0x2365c5f2, 0xbb434433, 0xaade8477, 0x1f3f5e68, 0xe6c1e0ed,
+       0xa3c85573, 0xfeb9a3af, 0xe8c5bafa, 0xf4e7ddf2, 0xcf56ff2f, 0x7926efcc,
+       0x06d577eb, 0xf4af2d90, 0xedde8ef7, 0x3aad7f40, 0xf38fcb8c, 0xc820fed0,
+       0xce310eb1, 0xfb753ab2, 0x7a30ecb6, 0x4b6fad5e, 0xf4a7fd46, 0x22b649ff,
+       0x5192dad7, 0x377ff95e, 0x9412cd17, 0x244bcf23, 0xa59a2a47, 0x80443976,
+       0xcf0bd234, 0x85d3830a, 0xe1034c79, 0xe0473a21, 0x45fafa01, 0x8aabe70e,
+       0x119b4683, 0x6c0ca9fa, 0xc97b410b, 0x8216dc11, 0xabd75076, 0xd02ddb32,
+       0x3ff4a117, 0x129e3bca, 0xeb772c97, 0xc681c66c, 0x9c60e583, 0x1bfe1563,
+       0xce50f140, 0x659b9228, 0x1e34412d, 0x20e5b733, 0x54ed96dd, 0x34eb877f,
+       0x5763f0fb, 0xbe9133cb, 0xce187afe, 0xed61e29b, 0xffdd37c4, 0xe90e34f8,
+       0x36c342a0, 0x15e8fee0, 0x4df706f8, 0xbc0ccea1, 0x15aafb4e, 0x910298df,
+       0xed7cae7e, 0x92ee3e20, 0x79ce48da, 0xf926cc8e, 0x236ba5d0, 0xe7387739,
+       0x6d0f5e36, 0xe5b9462b, 0x7af3b1c9, 0x05b15b4c, 0xf58d3fde, 0x6413cc18,
+       0x7fbc0764, 0xd412e564, 0x9e6573fb, 0xd19ec1bf, 0x889c7999, 0x80957bc3,
+       0xcf9b6313, 0xa21f93d5, 0xf87ea0b3, 0x1fb28e53, 0x5faef7a4, 0x1753f2f6,
+       0x8cd0bcb3, 0xa26659fc, 0x57d80fb8, 0x3b425f07, 0x15a47170, 0xe1fc43f3,
+       0x466beca6, 0x257dfd84, 0x6515c9e2, 0x1433909f, 0xc8db51f7, 0x276a00cf,
+       0x5afd543d, 0xdd9bf900, 0x287d9eba, 0xd946d6bf, 0x9e007373, 0x26eb7d0e,
+       0x753b3934, 0xb431a76d, 0x8de9073e, 0xb7a708e4, 0x6867d4ae, 0x17d947df,
+       0xc0f02b9d, 0x4269c9c0, 0x9e3890fa, 0xfcbcb64f, 0xae9bca2e, 0xd39204d6,
+       0xb974fcfe, 0x941091e5, 0x7e831f1b, 0x03c4fa77, 0x96792e3e, 0x611610f2,
+       0xcb9409fe, 0xd7d7a837, 0xf242edfb, 0x9f56d90b, 0xdb8f48e7, 0xb87f75d5,
+       0x547a5d20, 0xb824e07c, 0x837e426f, 0x6cce57f9, 0xf43846ad, 0x5d4017d5,
+       0xe1bfa9f6, 0xcf6bf757, 0xb0fdb88a, 0xfd0dff09, 0xce78463a, 0x02ff1f91,
+       0x006e33cf, 0xc3f546bd, 0xaa0f9441, 0x56f40179, 0xa85bd704, 0x5a432a2f,
+       0x75d57e29, 0x95f68038, 0x317a3def, 0xf40fd70e, 0xca9a7148, 0xa244afa3,
+       0xb678ff7f, 0xfd03c685, 0x38f94918, 0xa2468f87, 0x773ca23f, 0xe2c9dc68,
+       0xca1a43bc, 0x9579e50f, 0xf9c649ec, 0x69ad4a57, 0x3171fef8, 0xea06876f,
+       0xbcc5d632, 0xecf7ce25, 0xde724ca8, 0x8bf76f1f, 0x0f90727c, 0xf2479469,
+       0x281f8f2a, 0xc85ca0f2, 0x79f03795, 0xb37fe72a, 0x9f052fb2, 0x0fdf2396,
+       0x390c2720, 0x96ac8e02, 0x729b3be2, 0xef95bcf8, 0x7f1e5fa9, 0x7fd5f7a2,
+       0x951b48e8, 0xfa59df8a, 0xe4fb42f2, 0xbe578251, 0x26881ca0, 0x2eaf7039,
+       0xf155d612, 0x806d64b4, 0xae97ca4f, 0x6ce6802f, 0x01757695, 0x4f30d5c5,
+       0x5e7fd4d8, 0x0f1474fe, 0x2af1c173, 0xc553bec4, 0x74efbe3e, 0xedf7c745,
+       0x39d0de40, 0xeb795585, 0xeeff900b, 0xfbd2a88e, 0xea37cbfa, 0x7576e57f,
+       0xfaed557d, 0xf801a882, 0xdb6ea2bc, 0x7faca1e9, 0xa6f6e57f, 0xff4b4882,
+       0xafbccae7, 0xce799518, 0x85f50dd4, 0x05f5a2c7, 0x655ca143, 0xe0f0b1f8,
+       0x3472beeb, 0x177a83c0, 0x4ffb4be0, 0xaad7aed3, 0xea37ace2, 0x68b99caf,
+       0xf9b0641f, 0xc90e97fb, 0x4ae30e73, 0x2f6bf80c, 0x8df019f1, 0x736378cf,
+       0x6513e2fc, 0xeed12325, 0x9192f666, 0xff09f1be, 0x68f04f12, 0x49c54728,
+       0xb161f025, 0x28780075, 0xe1ca3fed, 0x82b1d671, 0xadcd878e, 0x4625e27c,
+       0x51cf9d71, 0xde760eae, 0xff90aae5, 0xcbbcf83f, 0xeede20ac, 0xf18cd1b8,
+       0x7fe3ee9f, 0xf770f8a7, 0xbe22d346, 0x316260ef, 0xf474fef0, 0x71beddf8,
+       0x702607e0, 0x71650438, 0x4526a77b, 0xa5f1fdf7, 0xf8bee0d4, 0xa91bd912,
+       0xd2dfb441, 0xf48d72d5, 0x6cb1f75b, 0x748bee33, 0xc84cbab5, 0xf8ff356f,
+       0x87a8913f, 0x417d8ebb, 0xdf5d70f9, 0xb93ca45e, 0xf15f222d, 0x6791168d,
+       0xc6096ad6, 0x9f85dde7, 0xfbbb6015, 0x2f8de945, 0x5298f8f0, 0x12b37e2a,
+       0x66fc5047, 0x2743a3f0, 0xe6bdfbc0, 0x68610f2d, 0x731a1985, 0x1f802e50,
+       0xc3fa861d, 0x44b05f1b, 0xf18f140d, 0x26242f8d, 0x9602f8f1, 0xd4485f18,
+       0xd602f8f1, 0x2580be31, 0x39f017c6, 0x8eb017c6, 0x63ac05f1, 0x18eb017c,
+       0xe312c05f, 0x2bfcf80b, 0x1ba4ee71, 0xff1e378c, 0x5ffc9134, 0x0fef97bb,
+       0xf7ce3daf, 0x4936d6b1, 0xe7862f94, 0xf60f504e, 0x166a1bcb, 0x6dee4379,
+       0x73582fb4, 0xaa22b658, 0x338a7cf0, 0x7a87f300, 0xa85c614e, 0x5d6490e6,
+       0x8be7c16f, 0x8e5b1e68, 0x14b47f65, 0x59d5ef9f, 0xd7c41635, 0xf71891d7,
+       0x97b638aa, 0x517957e2, 0xe784f5c7, 0xb8c31283, 0xdc019deb, 0xe192ae4f,
+       0xabed0669, 0x155d1d92, 0x4bfe4ad0, 0x5cc97ee5, 0x3c2fbbea, 0x13924bf1,
+       0x9578de4a, 0x1d2e68db, 0xc9450f20, 0xb1f657d3, 0xac26f257, 0x472bc94a,
+       0x3ec7c47b, 0xd7fb895a, 0x96fe5cf8, 0x8154c3ce, 0x0d2e1ba3, 0xb7e5f790,
+       0xec715daf, 0xd658a6d0, 0xefbb7f7f, 0xbedfa3bc, 0x2209a2f6, 0x9f9d3cbf,
+       0xb47c296b, 0x30c385f4, 0x00636f5e, 0xb2cb2bd9, 0xbe90cbed, 0x146ce94e,
+       0xdc75397f, 0xe7d6fe48, 0xe2ab46db, 0x70f2f92f, 0xd1ac7f8a, 0x3fc7a449,
+       0x3ddfb0ca, 0x566cf801, 0xbb8a0ae1, 0x260e8acc, 0x70e8567e, 0x2ad14657,
+       0xbc66bf7c, 0xf95ee285, 0xd467ec01, 0x8327c89f, 0xbf2df892, 0xa0697241,
+       0x74acc25e, 0x8019617e, 0x6749e893, 0x5f798cda, 0xabcf18cb, 0xcd6ae850,
+       0x0aec8936, 0xe244400a, 0xe78727be, 0xfc7f63b2, 0xac4de63b, 0x7076e008,
+       0x97ef86ac, 0xf3cfdec7, 0x7666ee6d, 0x055923ca, 0xd04b157a, 0xc1b5afb3,
+       0xf0d07b73, 0x5be76e38, 0x92ffb0a2, 0x9f9475b7, 0x4b751f9c, 0x7df49db2,
+       0x484fe51e, 0x77f2259e, 0x8e4fbee3, 0x4e27f3aa, 0x01fcb8e9, 0x75bf9278,
+       0xe295e91a, 0xdf2a763e, 0x72a32fae, 0xef973a6a, 0xba2ae7fe, 0x0872bf8f,
+       0x31afcfbf, 0x83fe1159, 0xfc0c4b9e, 0xb578f3fe, 0x562fbf22, 0x82d33673,
+       0x64c6f8f0, 0x47e47845, 0x6b73a71d, 0x87ffa209, 0x21768bd2, 0x9842d81d,
+       0xfdc7c713, 0x6f80469a, 0xc2482e01, 0x86dbba78, 0x8e7a7ee7, 0xe7ca664b,
+       0xb74f27ee, 0xa2fcc46d, 0x8cc9449a, 0xc082db71, 0xe848fcc6, 0xbc5460bf,
+       0x4d79e515, 0x76c78f0b, 0x20e9c941, 0xfc4b25d7, 0xc6246d5b, 0x3f1e39f1,
+       0x27bbb74b, 0xcf9f7b64, 0x7dd47c15, 0x63cf1aec, 0x76bc71be, 0x64eff60f,
+       0xd15eeb46, 0xdcc1d23f, 0x6e282371, 0xef51d0ab, 0x48dda8c1, 0xe04e6f47,
+       0xd2e9697a, 0x4f68740f, 0x7f699cbc, 0x5c50e11d, 0x48c6e5fa, 0xf1c0e75a,
+       0xdfff2532, 0xc8a65e3f, 0xde557ff1, 0xb5f5bbff, 0x5f5fbe54, 0xbd6b6547,
+       0x9e83de93, 0x87e13738, 0x993f5bc5, 0x95bc4030, 0x48432c19, 0xf3bf02df,
+       0x7c5fb6f8, 0xe35cf815, 0x8eb3e7c3, 0x8cdf2e85, 0xbd76c8f6, 0x7941a615,
+       0x244d6bd7, 0x3ce22e17, 0x1559c7fa, 0x2e2899b8, 0x198ccbdb, 0x2999ff08,
+       0xbc0d5a09, 0x41e052ff, 0xbf227389, 0x5f90fae0, 0xd17e44b0, 0x65f97926,
+       0x3a581e97, 0x4e07db8b, 0x848c0fb2, 0x41eb4dd7, 0x057d409e, 0x49e4ab33,
+       0x013c9fa7, 0x74a7e647, 0xcf18ed6e, 0x4ef252af, 0x3d714267, 0xe2f90063,
+       0x4465f2e6, 0x8e00fba0, 0x903aa233, 0xcf819af2, 0x6d4ebe89, 0xa57b79e1,
+       0x1dc688ac, 0x2084ce40, 0xf784563e, 0xda0a7f9c, 0x44c078af, 0x98a6ce76,
+       0x13ff3995, 0xce29d339, 0xef5e3d0b, 0xe61cf8a9, 0xa9ce2792, 0x0a59e9e5,
+       0x8135c3c5, 0xf2f907c4, 0x63f70956, 0xd2c5dcd7, 0x0179df11, 0xbce93b45,
+       0xf939f03e, 0xae2211bd, 0x7f2d6dab, 0x2367ea16, 0x8fb8ad63, 0x08fa3c36,
+       0xafcb6f9d, 0x39454c29, 0xd2359679, 0x18a0dd79, 0x1844d27b, 0xac2a6177,
+       0xb3e5e35a, 0xdda0c2a8, 0x463e13f7, 0x17de2367, 0x630e5804, 0x6275219c,
+       0x2b8c52e4, 0xc962182c, 0xea4338c6, 0x1ebce1c4, 0x592c3965, 0x5c89fdd1,
+       0xf509379a, 0x73f1b19a, 0xe55afd1f, 0x6bd5550e, 0x3f1a625a, 0xc4a7ddf7,
+       0xdd1e607f, 0x7ccb493c, 0x4c33c9f6, 0x311389f6, 0x9578501e, 0x87acf1fb,
+       0x89d4e3f4, 0x7d0e1e5c, 0x9e907983, 0xd307667b, 0x78545f7e, 0xd9c63a6d,
+       0x1b25aa58, 0x3b3d81db, 0x9ef7d70d, 0xfb1d36d5, 0xf6eb1589, 0xb6fd473f,
+       0xad3c87d8, 0xb2c52fb1, 0xa5a9c420, 0x16571ae7, 0xdc68ef96, 0xe073e0f7,
+       0x4fd8398b, 0x63e923c1, 0x1b1ea053, 0xf67ca6e0, 0xb9b6195d, 0x7489ce38,
+       0xdf7c3cdb, 0xd62fde2f, 0xc229f307, 0x63f9fef7, 0x9aac5d0a, 0x4ca7f9c8,
+       0x061a5394, 0x6ca04fbe, 0xdfde86a2, 0x5f30de68, 0x994bce3b, 0xc92c6b3f,
+       0x7cc0f9c2, 0x301e704b, 0x3258e5df, 0x3cea9853, 0x757a7f72, 0x3a71798a,
+       0xf958b905, 0x548b9739, 0xa15d6b26, 0xfb0c2f68, 0xe7142bb5, 0xc7a9ac3b,
+       0x7e50e788, 0xa231ece7, 0x75bbf0dd, 0xfe7c463d, 0x13cf1b3b, 0xb9ffeff7,
+       0x469cfc89, 0xfa1e94f2, 0x18fa247e, 0x84f41fe4, 0x5c96dda2, 0x39dea6f6,
+       0x55c7ce8a, 0xdbb2ae7e, 0x8d7f4852, 0xf234b414, 0xf4861ad7, 0x4609f230,
+       0x8bcb2a76, 0x0615f7a0, 0xbf15ffce, 0x748347be, 0xf305c634, 0xd1bfa1f6,
+       0xeabdb43b, 0xfa1ea673, 0x0dc852ae, 0xef54d3b0, 0x27cf18ab, 0x11e4261d,
+       0x414b8dda, 0xbd9554de, 0x67ca77f9, 0xfafceb70, 0xfa17bba3, 0x0dab29f2,
+       0x2cdad7f6, 0x6aa8af94, 0xafc972b7, 0x5b5fa136, 0x9e9b74b6, 0x43d2e2fc,
+       0x3874b09b, 0x3147d03e, 0xed552bb2, 0xd554aec1, 0x6fd3cdfb, 0x7cf7d51e,
+       0x806a29b9, 0x9e0e8171, 0xe8513a41, 0x3dce94e0, 0x53d4fd06, 0x7e568155,
+       0x1abdc2ce, 0x716ecbe5, 0xdf99fe3e, 0xe7e2ccce, 0xc05d39e6, 0x30ffcff7,
+       0xf6a06a3a, 0x052c99ce, 0x6546e6f9, 0x24c3ca17, 0x52743c95, 0x304e72bc,
+       0xe11ab9c9, 0x9a9755ff, 0xf8510ec9, 0x6eeb5aba, 0x22ed84df, 0x9bfe7982,
+       0x0468e416, 0xb30d33ee, 0x4f63efde, 0x40939d9c, 0x0d91d7f9, 0xdbf60f6e,
+       0xc5648b73, 0x105e71f8, 0x9af9ab97, 0x68b3c722, 0xfdf8685f, 0x7e50bb06,
+       0xc14798c8, 0x9a983def, 0xd1c3e3ce, 0xe50a6f78, 0xe9b2582f, 0x47d8b8fc,
+       0x75c5bedb, 0x7cfd19a8, 0x4ac4f5c9, 0x61de8b8c, 0xbb74f9a2, 0xac1d4e34,
+       0x23287b67, 0x717dbdb9, 0x6e9de932, 0x3574b456, 0x028b3dda, 0x3dba7e29,
+       0xee20f2d4, 0x1f2f6e97, 0x91fcf64b, 0xbefae6ff, 0x8ac1be67, 0x74f6dbf6,
+       0xd75c7acb, 0xe85b5ff6, 0xde241ffd, 0x0e41f39f, 0xf9f3ed9f, 0x8797b73a,
+       0xe0a65f91, 0x2d937b61, 0xb6ddf706, 0x473fdb44, 0xfb130fbc, 0xe1e3db8e,
+       0x498f9439, 0xc6ef8b45, 0xf9f3c67e, 0x9c21f72a, 0xc1f63c5a, 0x1e9e1c7d,
+       0x99aaffdc, 0xfb7e4c13, 0x39a189f2, 0xac55f012, 0xe03cdc16, 0xc3abdc03,
+       0x45be7c79, 0xde17baeb, 0xfb8ad70f, 0xcec2b467, 0x3303ae85, 0x0f4dbda8,
+       0x564792f5, 0xedda1b31, 0x412accb1, 0xcf0344fb, 0x18ef8217, 0x96b61896,
+       0x3c601fd1, 0x84325e4e, 0xc5125ff7, 0x42ce785c, 0xc95faa8f, 0x4dbe07ab,
+       0xff1472c4, 0xbe83243e, 0xf7f86a77, 0x23942d36, 0xdf489701, 0x48031b3d,
+       0x37dc946f, 0x7984fc82, 0x76f2d533, 0xb79e24d1, 0x272794a3, 0xdbfc4459,
+       0x74728d1a, 0x943186f9, 0x2c60d16f, 0xcc7f42aa, 0xc11042f9, 0x5dd364ab,
+       0xfce364b7, 0x9bc70c5e, 0x5b95d83d, 0xfd20e50f, 0xf8b0df2c, 0xe7817f67,
+       0x7a46fdf6, 0x1ec936de, 0xc6286931, 0x87c52cfd, 0x3bf2c1e1, 0x9f31ea4e,
+       0x7f9eeed0, 0x6f2855f5, 0x7f7a1e75, 0xd6f9c032, 0x7f6a65db, 0xf37f732b,
+       0x0deba457, 0x9c5b9c7c, 0xa1a36a5f, 0x48a65bbf, 0x8ddaee24, 0x7ff438e6,
+       0x2d3e044b, 0xdd3db893, 0xf08b6460, 0x4d9289de, 0x0e319223, 0x29e60b79,
+       0xef87200d, 0x90cfda52, 0x3bfda276, 0xbfcf1672, 0x8837da51, 0x9315dd7c,
+       0x2719feb8, 0x323ea54a, 0xdd2fb781, 0x109ed01c, 0x33cea582, 0x7387ca1a,
+       0xeb84de67, 0x158a379c, 0xffb840ec, 0xb4d3ef82, 0x22d0411b, 0x4f1def3d,
+       0x9eb3b078, 0x7d70fbf6, 0xfad1c67b, 0xe39867da, 0x3e379f48, 0xdddc764e,
+       0xdb8f2e66, 0xce71f067, 0x9182db9b, 0x1abc515e, 0xe45ed072, 0x1aea2fbf,
+       0xed009a1e, 0xd033ac56, 0x1fbbfb79, 0x9e71485d, 0x7e65db15, 0xbe6b7eee,
+       0x3cbcf7cd, 0x4f37ddd8, 0x7bb3b8c2, 0x3b6a23c6, 0xbe23f665, 0x0469027a,
+       0xab74a6e9, 0xb2377444, 0x7cc7aac1, 0xe06d9ea6, 0x52fbc14f, 0xfd112793,
+       0xd1ab52a7, 0x49c52f7a, 0xfca08f6c, 0xa42faaea, 0x700b7d92, 0x458e7986,
+       0x8879e164, 0x11dbf6c9, 0x258d252e, 0x211c62ef, 0xfb4ed528, 0xefc12309,
+       0x51f13f43, 0x00f36f41, 0x91ef74bc, 0xe3062db6, 0x1cf80146, 0xcc2f3be6,
+       0x3a226c9c, 0x5fbc3236, 0x4e675da4, 0x6fb5f9c6, 0x3fd06a34, 0xa72f779c,
+       0x8333e067, 0x83cf0336, 0xfbe440b1, 0xd2efd144, 0x26a2daf5, 0xf7070fa8,
+       0xe90c3826, 0xf9e89d29, 0x38fb5cc3, 0x5fa5c784, 0x772889b3, 0xc6dd6c57,
+       0x01e825e7, 0x773a4bec, 0x7c6f697f, 0x0a97da06, 0x3b987cfd, 0xf5df81d3,
+       0x12edc1d1, 0x73d61fe1, 0x87f2ed06, 0xc1af9773, 0x13f3c2f5, 0x66f31f48,
+       0x2baf287a, 0xcc30765f, 0x668dea8b, 0x97aa4e74, 0xddeefe71, 0xa8b925ac,
+       0x7e4515c8, 0xf0d83d00, 0xdf05055e, 0x4d3f2aff, 0x1f004f91, 0x9c8a4392,
+       0x4291e451, 0xf25c8a5f, 0x0062aba7, 0xfa0cb4f3, 0x229fe49e, 0x9a1d70f7,
+       0x523caf0c, 0x3cdbacf0, 0x0513ec83, 0xe772f9cf, 0x1c20af0b, 0xdfe44cca,
+       0x64c5c1f5, 0xe9c4b820, 0xf8048b59, 0x6b6d5869, 0xbe47cfbf, 0x9f53292f,
+       0x56abbf87, 0x597e0e7d, 0xfc1cfa9d, 0x4f0fbad2, 0x20b05da1, 0xf10fbec6,
+       0x1737fe77, 0xcf047d76, 0x2b9bf77f, 0xd93e3c49, 0xf45ef749, 0xf3140bae,
+       0x5af3e368, 0x33bd27a7, 0xf8cbf852, 0x672cbc43, 0xe24b4f9c, 0xfd47df43,
+       0x4fc457f9, 0x731bee12, 0xf8179cfc, 0x03f08e59, 0xc8d92fba, 0x4eedb6e3,
+       0xcbb8e289, 0xdd3e0837, 0xe31fbeac, 0x16d618d3, 0x0fbde094, 0x275fd3e3,
+       0x2b5f21c7, 0x37d861f7, 0xea31fb8b, 0x679f90ce, 0x7031fbc7, 0xeba9d6df,
+       0xaa47edf4, 0x58ed4d3b, 0x8a9efa9b, 0x9e9b2ca0, 0xc78cbce2, 0xbca7969f,
+       0x1b15f3c1, 0x0be63325, 0xa5e78a95, 0x39d5259b, 0x7126f7e7, 0x927035fb,
+       0x6055ca96, 0x4de5f503, 0x9025c8fa, 0xbaee741b, 0xbf5d31b4, 0x2efe47d2,
+       0xa457cf17, 0x9e54a868, 0x79e24e07, 0x6990ab3f, 0xc91cf1b2, 0x24ddfd28,
+       0xafb42cef, 0x9e5fb4a4, 0xe309b192, 0xceb7cbad, 0xfc3e6088, 0x9f38eff8,
+       0xccc7ec6c, 0xbd0063e7, 0xd5fe4c15, 0x2fbff280, 0x39ff153f, 0xfe4fe689,
+       0xcf8bc556, 0xee2af8bf, 0x0047fcbf, 0x9b8aa1e9, 0xaa529e44, 0xe521672b,
+       0xb873f0e1, 0x79ef02d5, 0x82127fcf, 0x669a9571, 0x950863c0, 0xaf5658ed,
+       0x6978a32b, 0x22f815b5, 0x9d79ffac, 0x8ffc5f37, 0xe73fbe10, 0x4c60d58c,
+       0x71627999, 0xf9bab6af, 0xa2df8a33, 0xa2ccecfd, 0x8ffce8fe, 0xd235f7ff,
+       0x0e3c21b7, 0xc9f046d8, 0x2475fe3f, 0x35f0e3cd, 0x39ac77da, 0x3ed231be,
+       0x9dfbbac0, 0x60f112eb, 0x61af5ec5, 0xfcc4bf5b, 0x85759a84, 0xb7885917,
+       0x82efff7f, 0x46738b27, 0x3a04d813, 0xfc65a467, 0x3ff081bc, 0xdf495d7a,
+       0xb35e779b, 0xefc79f83, 0x60865ad5, 0x1b37435e, 0x305a5fd8, 0xabe9eb99,
+       0xc81857c0, 0xd3283eed, 0x41f7793e, 0x7d520fbe, 0x78d391f0, 0x1ef541af,
+       0xcad9c289, 0x66eacfb9, 0xf57c1999, 0x8675e61b, 0xcacf3e0f, 0xbee983e7,
+       0x64b772b2, 0xe9f30bdb, 0x0c865835, 0x4dcf99f5, 0x557d3993, 0xb073b806,
+       0x49fe657f, 0xfcea2d93, 0xd08f63ea, 0xaed0093d, 0xdf97ec8b, 0x6f9e3107,
+       0xce3ef3d0, 0x266763b3, 0xbb9407e5, 0xfed3550f, 0xca20c1cd, 0x53a2bbff,
+       0x2b9617df, 0xcc9dcbc6, 0xcc0eb1ed, 0x5fefc73f, 0xc5bec994, 0x5e5f2279,
+       0x63bfbbf1, 0x97ce64c6, 0xbf732633, 0x4fe082fa, 0xbbb97da5, 0xda11243d,
+       0x90f96c5f, 0x7da2b9ca, 0x0d35a9b9, 0xe6c5e7f5, 0xe107ba20, 0x0553f362,
+       0xaef1807f, 0x484467ba, 0x3c567c3e, 0xafed4759, 0x39f714ee, 0xb9c5c2b8,
+       0xa7ad3740, 0x84ac60e3, 0xc8957276, 0x7e68eda3, 0x7c434439, 0x15e7e4ec,
+       0x64bc6c7e, 0xc978bf51, 0x5e31d313, 0xc5536862, 0xfab7fe4b, 0x33cf16af,
+       0x9c62454c, 0xafc8bd1e, 0xaa2bfba1, 0xb29dbccc, 0x937c559f, 0x7f7827e5,
+       0xc7477b02, 0xf2dc3df1, 0xc559fa38, 0x78a70a7f, 0x259d1add, 0xbd5feb0a,
+       0x8a0ef3cb, 0x895c8533, 0xc37ca36e, 0x476e78f6, 0xcc4b3638, 0x04ab7006,
+       0x680272fa, 0xd9992e1d, 0x3279bea1, 0x803abff7, 0x9137f5fe, 0xc07ca0bc,
+       0xe227e0f3, 0x97ce66bd, 0x638e3e78, 0xcf192794, 0xbc887773, 0x2798472c,
+       0xedfa1c39, 0x58e27414, 0x44bca1e0, 0xdd8e9f05, 0xec4bca1e, 0xf8c97914,
+       0x8e1be31e, 0x3daede0c, 0xe745dcde, 0x33070ee1, 0xaf355bb4, 0x561d1304,
+       0xeddc6b3d, 0xd1fa0e7b, 0xee2edcc9, 0xe715bf44, 0xa7cf8fb3, 0xfa91a43c,
+       0x5df414e9, 0xf348d81e, 0x97ee2f3b, 0x7af3d728, 0xd0d98ebb, 0xc039eacf,
+       0x12bb8fef, 0xc7047ad3, 0x0c6072b9, 0xc7b7efe5, 0xd0b656bb, 0x57a79e7b,
+       0x07805cf1, 0x40f975e7, 0x2ce39d30, 0xca0ecdfc, 0x13dde8d3, 0xf69c6120,
+       0xe74650f2, 0x1def2ec7, 0xb2fb7a4a, 0xa1fda164, 0x53856fcb, 0x75f5157f,
+       0x02b0ae74, 0x9fda04c4, 0xdda21650, 0x13ef7976, 0x50bfc871, 0x3b758cdf,
+       0x25fe2c6b, 0x7e7ee9f2, 0xe795d60f, 0xef8c6bfe, 0xfa52b9be, 0xf82b3fef,
+       0x161fde54, 0xe0b0ec72, 0xcd93a3e7, 0xc823ff3c, 0x5a28d8fd, 0x806fe71f,
+       0xc007f933, 0xdb3f744f, 0x48d1f779, 0x78a9fa09, 0x7a86d825, 0x49e75dbe,
+       0x10e08a7e, 0xfe3bfe44, 0xbcbc9fd0, 0x7bfc9c2f, 0x3f60e70c, 0xa78df797,
+       0x5f25573c, 0x6cda1e6f, 0x04f1c784, 0x67797cdf, 0xdafbc21a, 0x67ca209e,
+       0x826fb8ac, 0x64f7f286, 0xbc577f6e, 0xa89e62b8, 0xbbbf70db, 0x52bf97e2,
+       0x39fb45e0, 0x43be7e4a, 0xfbaad1c8, 0x79e08772, 0x9927f606, 0x69af8df2,
+       0x3fb8fe79, 0x42b9f45c, 0x45d91e8e, 0x3a00eb7c, 0x7ed387b7, 0xf2afcd05,
+       0xae971e39, 0x38fb94dc, 0x75f7c7c9, 0x744fcf0c, 0xf1091fba, 0x908f7b85,
+       0xadefde5b, 0xda12bed4, 0x09dfeff3, 0xd3ecf9a1, 0x7f0f79d1, 0xefe0fd7c,
+       0xd47f939f, 0xb06e15f7, 0xa7c80603, 0x7f5ac6b9, 0x07281ffe, 0x4ead1a0e,
+       0x9ff3ca7a, 0x95ee743b, 0x91989cfc, 0x284743e4, 0xf58bd7e7, 0x72ab0f3c,
+       0x2987dcd3, 0x21767dee, 0xe55d0d9d, 0xe1df381a, 0x48cf946b, 0x21d6e157,
+       0x805587c8, 0xf00fec0f, 0xb081f743, 0x7be8e93f, 0x287cf5ff, 0x1f1f7ae4,
+       0x95cfc0be, 0x78e30c74, 0x347178e9, 0x50f69de9, 0x5f30d74e, 0x423b57f2,
+       0x66894979, 0x73347f18, 0xe198e87a, 0x43bcff26, 0xbb65443a, 0x51577f8e,
+       0xa424edc7, 0x73bfcc53, 0xe026cd20, 0x5b5b6efd, 0x7940eed1, 0xa541939c,
+       0xe50c2027, 0x12cf3ab9, 0xbcfc98e8, 0xbea5725b, 0xc794243c, 0x8f0fd895,
+       0x9e51e9df, 0xe7dd85da, 0x9efea838, 0x5cf8117e, 0xa91cf3a2, 0x471f62b9,
+       0x725651e4, 0x9d2acf09, 0x5543e512, 0x8e5d586e, 0xbb595f74, 0x83f2096d,
+       0x2d4a8eb2, 0xa97f442b, 0x3e69925d, 0x5b2fdfe0, 0x3c7fda90, 0xbc13be05,
+       0x143e50e3, 0xb5e019e9, 0xa70b5cdc, 0x4236a823, 0xd20d8e7f, 0x5e271a56,
+       0xfaf93ff1, 0xbee13814, 0x2b83e639, 0xd6c18171, 0xb073ccaf, 0xcb96dcf9,
+       0xbc7b75e5, 0x8829e1e5, 0x9264f7ef, 0xcdbed727, 0x3df6121c, 0x767a1b76,
+       0x60aee77d, 0x19734bfe, 0x9ae4878f, 0xf9877eb9, 0x77933ce1, 0xa6e355ea,
+       0xc7d751ec, 0x53d7541e, 0xb4f5d59b, 0xf5baea63, 0x4f3d754d, 0x09c0ab8c,
+       0x4f3c62fd, 0x2b9c5fb6, 0xcf18bf43, 0x8c5fa285, 0xb18bf475, 0x9f18bf44,
+       0x758c5fa3, 0x8eb18bf4, 0x3465b17e, 0x44b18bf7, 0x3f9f18bf, 0xb5e5cb98,
+       0x31c789a3, 0x87180f11, 0x7eb94764, 0x4bf11f83, 0x2e48e2f7, 0x5fdcb57f,
+       0x254f2eec, 0xc8ddaf3b, 0x1c4a3ce3, 0x711fd953, 0x2dffd945, 0xb9e62877,
+       0xa18a6eb6, 0x64b6ac7d, 0x5e6a0fb4, 0x3f606635, 0x09a30c8e, 0x1b6d11e3,
+       0xf3426e2f, 0x7d946d64, 0xf257b61d, 0x4eeaab42, 0xd23da316, 0xa7f2deb6,
+       0x147f1ce9, 0xd2e25117, 0x50d7a825, 0xc35f836e, 0x4356d7e3, 0x955e4f91,
+       0x8fe6fe7f, 0xa9b4dbc9, 0xe091aaf8, 0x4f5d3bf4, 0xcffdca0c, 0xe2b6180e,
+       0x71133ffc, 0x40c8b634, 0x77629376, 0x3c47e5f7, 0xf6bed128, 0xfa30dcae,
+       0xd80cf7be, 0x57e803e3, 0x3d715ca5, 0xd78f7553, 0x8692ad8a, 0xb201a5ee,
+       0x4e717d24, 0xb42978e6, 0x2b5a7e91, 0x877a38e6, 0x31ff3546, 0x3d1540ae,
+       0xa61fdb8d, 0x0f778faa, 0xa9bfb553, 0x7dea9465, 0xeaac67ba, 0xebede97d,
+       0xbdffa04f, 0xaaa66b70, 0xdfe435dd, 0x51b3d42c, 0x8b4b3f24, 0xbef2fd72,
+       0xfccd3cc5, 0xd01d5ad9, 0x7b5fb40b, 0x43f48638, 0x5b17e829, 0x049fc8b8,
+       0x392718b9, 0x6f1c9137, 0xf718ac92, 0x0ff4215e, 0xe3eb53ab, 0x8bcf2d32,
+       0x47c61cf8, 0x3871d0fb, 0x5101ee8a, 0xccccafe8, 0x7819a16c, 0x0d35a24e,
+       0xb7f2cbfd, 0x7a41c99e, 0xe29b92aa, 0xf75f40cc, 0x787dae48, 0xd84affc0,
+       0xf049c8a1, 0xfed8233e, 0xa7e02e5e, 0xfbf64cf3, 0x9dce0113, 0x1f3a6507,
+       0x44f3a71a, 0x74bc9866, 0x0733a717, 0x1a9bfe22, 0x186a7df9, 0xbcc392cf,
+       0x18d4d1f4, 0xf268981e, 0x87a15bae, 0xf0cf7a91, 0x97aeb8b5, 0x8167648c,
+       0xeafa4d5d, 0xec9919da, 0x9219b2b9, 0xb15eec93, 0xbb5ce54e, 0x85cf9eb2,
+       0xb76ec87f, 0x23dd9d11, 0x398e77de, 0x75816691, 0xe25bea38, 0x9aeb9464,
+       0xa062fb83, 0x7ecc297c, 0xaca9f909, 0xbc23e929, 0x2fe2a3e7, 0xb9bcc332,
+       0x0acfb62f, 0xe7768499, 0x3ceb3a0b, 0xf8d7dfa8, 0xaf639d0c, 0xe8f4bad0,
+       0x681d96a7, 0x378af3a2, 0x56f87b8b, 0x7f212fee, 0x25ab157d, 0x7292f3bf,
+       0xa3c0479e, 0xd3b4a66c, 0x9a2ef30c, 0x996de5c2, 0x5f287fb8, 0x022a729e,
+       0x4a5fb7d7, 0x1d1769a7, 0x73c097d2, 0x6f2e14cd, 0xf7a5f9fc, 0x43f985dd,
+       0x96e50e31, 0x9e77dfac, 0x18cf0eff, 0xd7858fe2, 0xfdbca9e3, 0xc3f238fa,
+       0x3bc0c2fe, 0xea91fd42, 0xcbbeffe7, 0x8f7addf3, 0xca50fbf1, 0x85889ef4,
+       0x74d78788, 0xa02a8784, 0x7c19899f, 0x06726fdf, 0xae7d43ae, 0x482f26b2,
+       0x988bef45, 0x7f411f0f, 0x1ea1e277, 0xf3edfa9f, 0x7fed5412, 0x3f38fb72,
+       0xbef0c87e, 0x5935b927, 0xb55f7f95, 0xf7e169ce, 0x3f54cccd, 0xd11d7287,
+       0xf7d51cd9, 0xb7816c55, 0x9ef9d21d, 0x78ce080f, 0xa7fd1d5e, 0x0f3f0d32,
+       0x2edec8b4, 0x73d1b79e, 0x2f8a8858, 0x3f582647, 0xc7527ae2, 0xf8885dcf,
+       0x77fc22f6, 0x127a40c2, 0x1dc62d10, 0x8478f322, 0xb4876d5d, 0x55e1e6fa,
+       0x55517889, 0x55178f0a, 0xb8f55b39, 0xd7f0082f, 0xaa4802c6, 0x2c3ef91b,
+       0x86c437b4, 0x8cbafaf1, 0x62b3f7fe, 0xfdf1d77f, 0xf904b919, 0xb57dffc5,
+       0x1ab5e7b8, 0xa7143ce3, 0x7148bc2a, 0xd11c652a, 0xfea742bf, 0xfdfe7df9,
+       0xc2c5363d, 0x3feca9cf, 0x2e1cf744, 0x72f7e22c, 0xf9f3dc38, 0xf47e273d,
+       0x6bfdc8a6, 0x8bca1a65, 0x24f77deb, 0x996f5bd1, 0x61cfcad6, 0xaa5c3f7c,
+       0xea1e3c6d, 0x612b874f, 0x6fde785d, 0x7564b365, 0xc21dbc49, 0xa7d21867,
+       0x07627c1f, 0xaf029b80, 0xbdf9f83e, 0x98483ca7, 0x1f712ae7, 0xf8b83f4f,
+       0xb38c53c3, 0x7df8ced2, 0x8b92cdd3, 0x2fd7e5e6, 0x8fcfe89b, 0xb3ff296b,
+       0xccc4a777, 0xb1e18dd2, 0xb38f3ae0, 0xebe04c8c, 0x592c39ef, 0xf3bf6ed1,
+       0xf79e96ba, 0xcf114fd1, 0x9e7dba2b, 0xe8fb5f9a, 0xcff388a9, 0xf923d71d,
+       0x22ff00fd, 0x3d11baba, 0x8a29fb29, 0xd3f2f75c, 0x771724bd, 0xa1f9114e,
+       0xe49b2cd9, 0xe7cc0fc3, 0xe1f22918, 0x998ef4fa, 0x32e313c3, 0xec507f18,
+       0x683c3e85, 0xef7c432d, 0x3d012bed, 0xe4a4f78b, 0x7ce9c3cb, 0xffc45d87,
+       0x176d3914, 0x90da6dfd, 0xb773caa0, 0x3c51d46f, 0x387d6e36, 0x33462595,
+       0x592f7b9d, 0x7ea1172f, 0x544b74fc, 0xaba044e4, 0x22ea374f, 0x9f1741e6,
+       0x0e2b22fe, 0x74ff53ef, 0x9f953e63, 0xe4580b6d, 0xca57271b, 0x549f4293,
+       0xd263e6fd, 0xef35576b, 0xbe422c86, 0x043878db, 0x372a5753, 0x0663987e,
+       0x64ce7e7d, 0xf6853b3f, 0x9f489b5d, 0x1a537333, 0x7b14c9c6, 0x7e6362a2,
+       0xc77dea14, 0x1a7c9f7f, 0xbd7dbef5, 0xd0ed122e, 0x79e67fcb, 0xc8cfa0b4,
+       0xee24b88e, 0x37b4bb83, 0x5c55ce88, 0xf70d9892, 0x13e5ca81, 0x7e956669,
+       0x8e27763d, 0x8ca61ddf, 0x8d17daeb, 0x949d5ae3, 0x9f5f641f, 0xf8a06434,
+       0xecd65289, 0x3eddf6e0, 0xe22bde25, 0xfdc5fbc2, 0xe3d768ff, 0xd7682d3d,
+       0x7aed1d63, 0xc7aed12c, 0x9a2657e7, 0x7a1bbe39, 0xc94a3f28, 0x43b900af,
+       0xa56b1179, 0x9dca2b40, 0x1dbe78b5, 0x50e7fef1, 0xfe0567ae, 0xb533e7fc,
+       0x1f306c07, 0xdd7e9cfa, 0xadf37cc0, 0x5550b067, 0x4621967d, 0x1cdf3ed5,
+       0x737f7aaf, 0xfbd518f4, 0x557496d9, 0x24ca6e7d, 0xac5bfb55, 0xdbf55433,
+       0xb556ce26, 0xaf9b6f9f, 0x5c2c2faa, 0x477f6aac, 0xfdea8951, 0xab95164f,
+       0xafb62fde, 0x9497d556, 0xfed542fd, 0xaaf5daae, 0xa66636f7, 0xf563ac3c,
+       0xd79e5efc, 0x6b3cbdc4, 0xdd524bdf, 0x96653553, 0x78a076a6, 0x4e54cc7e,
+       0xd9a76bb7, 0xf366a622, 0x0e91537b, 0x30be6047, 0xa9e8d3d0, 0x30f7f116,
+       0x87dfca3c, 0xf1ba4189, 0x7effe76f, 0xd71bd04a, 0xdfc3802c, 0x8c5fdd4e,
+       0x4ca6ffe7, 0x01332378, 0xde3b7fea, 0x6fb9ebc3, 0xea0a3cbc, 0x2c66a617,
+       0x29be3cc3, 0x0d71bd37, 0xed7cafdf, 0x2faa629b, 0x7c6a6464, 0x6291fc75,
+       0x653c7f3c, 0x56ada8fa, 0x3b212f1e, 0x457a3068, 0x7879e038, 0x1e960384,
+       0x0dfe3e71, 0xca0107bc, 0x083dc537, 0x041ef1a7, 0x5a87e61d, 0xe2073df9,
+       0xf177841e, 0xcc24841e, 0xb2a42d8f, 0x7083dc55, 0x95117eb6, 0xd3b7ae7f,
+       0xcbeae777, 0xbeb8fca8, 0xb5ff9e96, 0xbfca8ebe, 0xf9e93bd5, 0x7c4aa9ac,
+       0x9cf3c3c1, 0x6ae7a719, 0x16fcdee5, 0x6df37bbf, 0xfb2a8f5c, 0xacb50d89,
+       0xb4f9082d, 0xc17a1b4d, 0x1c27dde0, 0xf3aaae5c, 0xdb86af3a, 0xe34a9d6e,
+       0xbed3370f, 0x9e7e7890, 0x01911c2d, 0x9c7cfa78, 0xf7c476fd, 0x362b191d,
+       0x31f9010e, 0x1d5adbfd, 0x065fcbd2, 0x3d1e8fc9, 0x73c1db95, 0x6316d9a7,
+       0xfdc4d3bf, 0xfdc4d3a3, 0x6db4d3a3, 0x1a8f280d, 0xcc1666be, 0xac1139bb,
+       0xb0d4f927, 0x38e74b45, 0xd518afa4, 0xaa3046a7, 0x2add7c37, 0x669dfca3,
+       0x7e9346b6, 0xff257511, 0x1dbf6fa6, 0x35793e7f, 0x92b7feca, 0x55f79357,
+       0x03b42cdb, 0x96f49aa6, 0x7afdbf00, 0x113ee7dc, 0x17994e7c, 0xf657979d,
+       0xcd7cf7d5, 0x65535ee8, 0xa19a7cff, 0x06e31e35, 0x5831ef53, 0x9486f37d,
+       0xabe9727d, 0x8cf51956, 0x8ca41792, 0x583bcca3, 0x7865fd0b, 0x99a67ef3,
+       0x0f98e9dd, 0xa26550d1, 0x564f30fe, 0x6ced419f, 0x4ee77d32, 0xa98d7cc7,
+       0x4995930e, 0x28f9fdde, 0x2d60eeb1, 0x57de675f, 0x984fca76, 0xb013f22a,
+       0xef7f031f, 0x46a67ec4, 0x4f306278, 0x9ead6a77, 0x25dce5ee, 0x7c95fbf2,
+       0xe41f6c01, 0x4f38c7c3, 0x1bf137ec, 0xedda2f98, 0x77c11b36, 0x27d399a1,
+       0xd0ba88b3, 0x19e3ecbb, 0xbd459754, 0x09fcc028, 0x95df83ee, 0x7489df6a,
+       0x484a5670, 0x25a917e2, 0x9fbe450c, 0xeff7ec2f, 0xa4269fa1, 0xfd39ffbb,
+       0x87de38d8, 0xf9b38a33, 0x1f8291d3, 0xbc149e85, 0x0a57460f, 0x7be4f81d,
+       0xf2fbde11, 0xfe7f44b7, 0x9d1836f4, 0xcd35f429, 0xf100e9c0, 0x0a39798c,
+       0xb95f495d, 0x0e3d689b, 0x853fe903, 0xa2e9fcae, 0x3a715d3f, 0x8199f86d,
+       0x574febfa, 0xb8407a5e, 0x6aba78fc, 0xce1ce995, 0xcb4f493f, 0x10c1587a,
+       0xdd725578, 0xa1cb1a72, 0x11a3ede3, 0x8cd82bdf, 0x66312402, 0x79d3c796,
+       0x7176bf7d, 0xff686ed8, 0xe7f4fe76, 0xbf7e5dff, 0x7d5213fe, 0x74259bbf,
+       0x7777ffa5, 0x932f1bf7, 0x31de13f2, 0xd624f92a, 0x727da09f, 0x8effc2c6,
+       0xa419e607, 0x8e427f63, 0xa4b5619f, 0x759cc177, 0x827938e2, 0xaea566a4,
+       0xcf207f22, 0xbebef034, 0xe0a54e72, 0x380da2db, 0xb508828f, 0xd8473dbd,
+       0xfc8b37eb, 0x7ee1c2ea, 0x266f53ef, 0xa24e7e3b, 0x34f079fa, 0xb3c78761,
+       0x79f39478, 0xc7e7cacc, 0x9d1d92b6, 0x563bf827, 0x45824bd0, 0x6f005366,
+       0x794eccf9, 0xe9766fdb, 0xcdefd86d, 0xcf71e78c, 0xe72a2e66, 0x73f50f32,
+       0xac22280b, 0xdd18c6df, 0xf430eb4f, 0xa295e1c4, 0x3ffdb2d5, 0x3abd4ed1,
+       0xfd1a3ec2, 0xedc207ea, 0x5c01a723, 0xbadd064f, 0x9bc606b4, 0x912b3995,
+       0xf1e739ce, 0x186f5d73, 0x44dec812, 0x7985d47e, 0xe25bc3e5, 0x7ac9e11c,
+       0x14f0ce7e, 0x3d04339e, 0x673c47fa, 0x2939f508, 0x577e19eb, 0x17e75160,
+       0x35cfdf29, 0xf0da62cf, 0xdce3f5c1, 0x31c3a3b4, 0xd09de2ff, 0x7fb879d1,
+       0x04e84ef0, 0x9de4b7ba, 0x2f0d28d0, 0x8e54f403, 0x2071257f, 0x77a1587b,
+       0x340578ef, 0x567060de, 0x4f0feae0, 0x023fce05, 0x820673ae, 0x8ca9e8eb,
+       0xc32efdff, 0x4718d5cb, 0x72e20aab, 0x304af6d5, 0x35d6fdc3, 0xca39f987,
+       0x18c538cb, 0xe9c39fec, 0xa65cbaee, 0x2cfda4cd, 0x6579c227, 0xee7a24dd,
+       0x7f63af1f, 0x9ff5419e, 0x08ae5a09, 0x79c52fb3, 0x92786674, 0x1763e2c1,
+       0x60843677, 0x17d5e89e, 0x4bfa2b65, 0xd5b2d90e, 0x77df718a, 0xfcff9e64,
+       0x6fba49ed, 0x1f09ed85, 0x18742fd0, 0xbf151c38, 0x117c6d30, 0x8fc2a5f1,
+       0x458f4f0c, 0xe1a7ed7a, 0xf4027db8, 0x1919db4b, 0x3953db83, 0x41b1efe2,
+       0x0ab7927b, 0xae3be0fe, 0x1c9fa1d7, 0x0fb19390, 0xf4ff9207, 0x7bb661db,
+       0x2f9c61a6, 0x8ffca98f, 0x115ef3be, 0x58d38e1c, 0x9f18e3f2, 0x63a33bcc,
+       0x8bdf782e, 0xa3ef8f8c, 0xef693ef9, 0x9d326b99, 0x58960c4b, 0xfb9d3c78,
+       0x10127924, 0x1f1661ad, 0x04b46079, 0x1d0f8b32, 0xa984a507, 0x61d6c1ea,
+       0x2643f6aa, 0x0fbd528e, 0xbd558db5, 0x50cc2f0f, 0x4d1687d5, 0x5a8fb556,
+       0x8f555334, 0xb551cfb1, 0xa05b2d8f, 0x2af22baa, 0x23623f96, 0xfaaa7f6a,
+       0x72dd647e, 0x6778fb55, 0x2cbdea85, 0xce566dee, 0x7e8a16b3, 0x51af3612,
+       0x3dcdc3b5, 0x09f20e4d, 0x52153dff, 0xe3f30678, 0xe92b4d0a, 0xc6a4e67e,
+       0x29e7aa5f, 0x4286d3cf, 0x2d45b379, 0xd5a3f2ff, 0x13a659f5, 0x9668ae74,
+       0x63872d59, 0x7aaab56b, 0x379134f3, 0x28d2c695, 0xfc23717e, 0xf0aac7db,
+       0xa0270fef, 0xdb07ab07, 0xe276fe83, 0xa15adebc, 0xf702fb45, 0x81d77c3b,
+       0x70be1dfb, 0xdf0efdc0, 0xf877ee3a, 0x0efdc7b6, 0xdfb8f7df, 0xf33efbe1,
+       0xd9ff1a8c, 0x4ffc6aad, 0x7f8d58f8, 0xc3072e85, 0x3536a4d3, 0x64bb307d,
+       0x4f07be97, 0xf4d497b9, 0xe99f8fe3, 0x46854e60, 0xfa243e20, 0x163f583b,
+       0x3d14575f, 0xf805f027, 0xde96fca1, 0x3f1cc1e1, 0x5bef7e1e, 0xb99919fe,
+       0x7fcbbea0, 0x5fec439d, 0xd1ff9f21, 0xf28d1192, 0xfbe33a6b, 0x8d0e05ad,
+       0xbfaf03d5, 0x3787a3f1, 0xc77fed13, 0xafc28bf6, 0x3e91e9c5, 0xd1a3ec7a,
+       0x72108dce, 0x753fc957, 0xfcfc64ce, 0x3a652fc3, 0xc35e7c2f, 0xc5046bcf,
+       0x57cc25d8, 0x4b5a965a, 0x45668beb, 0xbe625687, 0x7401ebd1, 0x48f14ccf,
+       0x6a61af71, 0x9f7cf65b, 0x58e2c0fd, 0x9c648f9e, 0x2b48fc2e, 0x4d324bcf,
+       0xb07afee7, 0xd2f94cd5, 0xb94ca925, 0x78ae3947, 0x5de3c23c, 0xc78468e3,
+       0x07dd0d76, 0xe7e3a6d6, 0xf16f9d32, 0xbed120fb, 0x84727b45, 0xfe1ae7b0,
+       0xf9c060dd, 0xf7f6ffff, 0xcf5962bf, 0x91df0813, 0xe43b8f12, 0xf7c51f4d,
+       0xdf7c2c69, 0xd0bef8b1, 0xf1b76e26, 0xbf628478, 0x76dbf92b, 0x7efec741,
+       0xf8371e81, 0xcdfa7e01, 0x4a0bd25a, 0x2fddb5fe, 0x13f15adf, 0x387fcefa,
+       0x0dfaf2fd, 0xf151ff6a, 0xbc7b1413, 0x837aef2f, 0x38baef3a, 0xa7180d80,
+       0xf73a6db9, 0xafe7fc9f, 0xfc7fcbcc, 0x5bbc9547, 0xc35eefd1, 0x96f9e7c0,
+       0x297afa0a, 0xe98ee8ad, 0x3ad3ffd0, 0xe2abc7eb, 0x1a71f9ff, 0xb189bf82,
+       0x9f1dde53, 0x868d52ff, 0xde291efe, 0xcf92f7db, 0x79d395b8, 0x19e2c89e,
+       0x1907ae82, 0xd88878a7, 0x9e95fe3f, 0x641d2b9f, 0xdb3d68dc, 0xbcc07680,
+       0xa5476099, 0x2adbdfe3, 0x7604da7a, 0x5a75d3c6, 0x4cd51f8a, 0x3399757f,
+       0x648e7bd1, 0x882bf824, 0xd055b46f, 0x936cb9cf, 0x4f0f3e69, 0x4dbee267,
+       0x3f73de45, 0x79f197b3, 0xf9e9d6f4, 0x4fe9fddf, 0xca57443f, 0xe755ffbc,
+       0xf43a1401, 0x9fe28387, 0x3e77da3e, 0x44afeb88, 0xce56fa3f, 0xeb565863,
+       0xe89b768a, 0xe621475c, 0xf9782995, 0x95cb8d87, 0xd80e0213, 0x60cae50e,
+       0x7efffced, 0xf77660dd, 0x047cf0bf, 0xf3b07dc1, 0xf9f1835d, 0xfcbbe760,
+       0x0e5fdbf9, 0x7e9dc3f8, 0x97bce03f, 0x4e451782, 0x62db58e8, 0xdfca5794,
+       0x582fbea7, 0x855797cd, 0xf0547f7c, 0x1cc5bb65, 0x74bd91a9, 0xfca3f779,
+       0xaa5ea4ef, 0x4142145b, 0xa5f82741, 0x669ceb3e, 0x0c9c8a2b, 0xd76f96ed,
+       0xae0b26b1, 0x73f48cab, 0x1fdfd389, 0xb53b21ed, 0x7e64ab74, 0x3616f312,
+       0x2aafec0f, 0xe2948df7, 0xef3017fd, 0xedd51bbb, 0xd57f0956, 0x3fe91f7f,
+       0x6a3d0ba7, 0xabb25665, 0x72809e44, 0xfd1f7c0f, 0xd1e07b88, 0x847e452f,
+       0x14ccf292, 0x5f705878, 0x075bd327, 0xa0a605b8, 0x1da0dd9e, 0x81500f30,
+       0x067cff5b, 0x8ec1c79e, 0x512fc918, 0x313a19f2, 0xabf1019f, 0xf6891bec,
+       0xfe994e9d, 0x73676d4e, 0x5fc3ed00, 0xe77bbcd5, 0x3ecf8b28, 0x29fdbf53,
+       0x18798216, 0x7e7907bd, 0xf0fc60eb, 0xfdec00ff, 0x8000fdbe, 0x00008000,
+       0x00088b1f, 0x00000000, 0x5ab5ff00, 0xf55c540b, 0x9deeff99, 0x181997b9,
+       0x1e1085c2, 0x01032646, 0x43886683, 0x7d49361e, 0xda595e5c, 0x3cd41da2,
+       0xc0ef0488, 0x11079090, 0xdd8b3c68, 0x121132ec, 0xa92b2631, 0x754d8944,
+       0x7bab3548, 0x351a0ba2, 0x131dacb5, 0x58dd39a3, 0x9ebab5b3, 0xd8c4e2c6,
+       0x3376e8f8, 0x744f76e2, 0xf7dfbabb, 0xcccdeffd, 0xcf6d3920, 0xce1ce59e,
+       0xfcffef9f, 0xffefdfde, 0x1b5118bf, 0xaf8074c0, 0xaf86e7e8, 0xe7b6c6b7,
+       0x802e19a6, 0xfcd94f4d, 0xc7b52f61, 0xf15d8a72, 0x03b74571, 0xdb78022c,
+       0x6c74b865, 0x6ec36ddb, 0x86c0366d, 0xa8f3c22f, 0x6e83b3ad, 0xab000f9b,
+       0xe0e4321c, 0xdbfc0e7e, 0xc3635003, 0x4c02164d, 0x53852b5c, 0xc8436c24,
+       0xb5b63647, 0x010a1852, 0x29b6e166, 0xf02deeb8, 0x53ee0197, 0x6a6c910f,
+       0xfae0f60f, 0x7fa7dc14, 0x8002c009, 0x4c1c7a27, 0x584b2207, 0xebbde58e,
+       0x129c5494, 0x26b5b7dd, 0xc7f9cf15, 0x0e600d1e, 0x6ab005d2, 0xd43ff904,
+       0x9ff3c793, 0x3b70f1ee, 0xe3ca53d2, 0xe7285cb7, 0xf0bd6efd, 0xae67de4d,
+       0x40cc4c8e, 0x7776fa3e, 0xae00f34a, 0xd214027a, 0xfb115443, 0x0fd3d64c,
+       0x1fe79975, 0x4b5b81d1, 0x286daebe, 0x85d56e1f, 0x5bbd3232, 0xe812870a,
+       0xba4c06cf, 0xdbdfd046, 0xe2a8e82e, 0x843297ea, 0x4225c5bc, 0x9e496a4e,
+       0x41c84562, 0x2d41c934, 0xcffd41c9, 0x3e98f8f4, 0xe998b3dc, 0xa6747be7,
+       0x72d4f48f, 0x9f8f62fb, 0xefc19bfb, 0x5f95472e, 0x26a80317, 0x57cfe09b,
+       0x05c37bf8, 0xc6975407, 0x4cc80ae9, 0xf91caba2, 0xb46bf349, 0xbff1a4c2,
+       0x6932bbca, 0xf29e5bfc, 0xa53bfa24, 0xdfe6924b, 0xa248abe8, 0x5bf8bbbf,
+       0xf5ebf349, 0x96fa24fa, 0xf9a486da, 0xa481fdcb, 0xd6ab95f1, 0x18378d27,
+       0x6df4499d, 0xcd25776d, 0x2db1d35f, 0x6ef6fc69, 0x34898209, 0x5df92ae8,
+       0xf674d0cb, 0x7f5e658f, 0x7bf9f91b, 0xa9de5f69, 0xc79d9114, 0x76df93d6,
+       0x84faa7b5, 0x856a079d, 0x761065dd, 0x9db0358e, 0xae82aab7, 0xae6ae5f1,
+       0x18cffbaf, 0xed1ab9da, 0x99da12f2, 0x99da08da, 0x6768a3da, 0x3b415f6a,
+       0x5efda357, 0x7b533b45, 0xfd4ced02, 0x533b473f, 0x4ced127b, 0xced02fed,
+       0x3b429ed4, 0x9ecbfb53, 0xaafedc55, 0x6f75e0c7, 0xfb71b4f7, 0xf7074f4e,
+       0x9ba7baff, 0x427b77db, 0x7c8e3fdc, 0x5f389504, 0xffd08673, 0x6575f412,
+       0x4130fd18, 0xd09f733f, 0x91b2e892, 0x57f9a4bc, 0x8d24f11f, 0x934a4797,
+       0xf09c17c6, 0x4e8bd125, 0xff9a4e2d, 0x24f4778d, 0x3c1bc9fa, 0xa24b5f1c,
+       0xbeeb49b5, 0x893f91f9, 0x1d081b2e, 0x6bfc98ff, 0x42bc7fff, 0x7a5d346d,
+       0x7d70d244, 0xf3d86fc4, 0xee4a7691, 0x2fe61f4c, 0x8d518569, 0x016171b4,
+       0x883cfdc7, 0x036f64c9, 0x8cdd92e7, 0x600f8408, 0x9e7d96ac, 0x2c9fe3cf,
+       0xfe7cf8d6, 0x1f97bb41, 0x129de186, 0xacbe0bf5, 0x6cd03ef5, 0xe3f35ad4,
+       0x26f3d4f4, 0xe3cd6f9f, 0x07c0997c, 0x41dcac40, 0xcd756ee7, 0x74fe89df,
+       0xf76e9650, 0xbc1d3fa3, 0x79bf6e1b, 0x1bf4bc8a, 0x688b4bca, 0x54d1e8de,
+       0x480b175c, 0xf5b803be, 0xa1387615, 0x753d27cc, 0xe3f407cc, 0x29a67ae3,
+       0x9bd2c757, 0xdf7ce2cb, 0x883b5108, 0xf187a13c, 0xa0636b9c, 0xeb9cf106,
+       0x56d413fe, 0xb854eba4, 0xeb15efdd, 0xdcdd71ea, 0x481fa490, 0x7437eff0,
+       0x4237cf89, 0xd8834b9d, 0xc750f73f, 0x5f9c56d2, 0xfdd62a97, 0x58d3a3c3,
+       0x49f5378f, 0xcf286c07, 0x1f4087b5, 0x98ef79c6, 0xa43dcf7c, 0x573e41a9,
+       0xe4135b53, 0xab77ec0b, 0x400fec1e, 0x9b2f3ab4, 0xe3c12474, 0xca1bd710,
+       0x77c90af7, 0x928a8605, 0x09f1b005, 0x0907c0e7, 0x923ed47e, 0x71df4499,
+       0x83e07f24, 0x48d9ff04, 0xa1c9a07f, 0xb754ec14, 0xdf269936, 0x77cff66c,
+       0x80ddf7f9, 0x623bb4e7, 0xbaefe92a, 0xd9359985, 0x03182768, 0xddf9095f,
+       0x19f6c0c2, 0xd61197c8, 0xe90f367d, 0xd338e3ab, 0x6699f98f, 0xf986b9f7,
+       0x27387ae3, 0x50d24524, 0x86853715, 0x6fa46ce5, 0x72536d0c, 0xf021fe68,
+       0x44a85aa1, 0xe3f3f5c1, 0x94e17972, 0x5fc894ec, 0x04f4d8e0, 0x71ccc3ff,
+       0xb94bf92b, 0x8ff2014f, 0x50a6bb7a, 0xc6a599be, 0xfc43dcce, 0x3df4ef3d,
+       0x82a3e7ce, 0x0d2efcf1, 0x5dec7acc, 0x84ea79c9, 0x0c7aa762, 0x0f1e0edd,
+       0xcfd78268, 0x21b014fa, 0x52e7813f, 0xb5e340c2, 0x9eb37ae6, 0xe06c8607,
+       0xb09dff41, 0x75422f83, 0x7c77f0fc, 0xd4da1c21, 0x1a35d6f9, 0xc293e7ea,
+       0xf24cc1f0, 0x15d1a2eb, 0x632f918b, 0x8a7ce248, 0x057a61b8, 0xfdb039da,
+       0xed0334f8, 0xcb3d0d1b, 0xbeb3e378, 0x6640d3bd, 0x78e55d3e, 0x13d4d04e,
+       0x21219218, 0x23da6add, 0x8eadb5b8, 0xe63ef094, 0xd70e7d2d, 0xcd9c88dd,
+       0x68ae32fc, 0x8fde501d, 0x6715d826, 0xa373d901, 0x6f681fb5, 0xdbf38b5f,
+       0x489dbe50, 0xd815dbad, 0x50ed4791, 0xb08dbaf2, 0xda1b53eb, 0x129f7d67,
+       0xf9c6af50, 0xb0bae610, 0xde693c3e, 0x890fdad6, 0x244f8d9f, 0x915d5ff7,
+       0x0d2e7d9e, 0x5f7de028, 0xf19bb8d9, 0x39ccf7d0, 0x2d8fd781, 0x81d3fc67,
+       0xd3f517c9, 0x21e04db8, 0x89708518, 0xec957444, 0x39f1ba44, 0xe14d27dd,
+       0xb8986f3f, 0x64ea2ea8, 0x485fd6bd, 0xf3727ce3, 0xaf4c9985, 0xedcf90b8,
+       0x8a570bca, 0x5e70177e, 0xe148d689, 0x37ff71bb, 0xfcb43c4d, 0x9f1e5cc2,
+       0x3fb2e508, 0xd33fa04f, 0x3cccf311, 0x1d2e9575, 0x53a861c3, 0x7033ed8c,
+       0x7c186ebc, 0xc257f221, 0x2affb84d, 0x29d351c2, 0x686b0a1e, 0xa095a87f,
+       0xa1e290a4, 0x8c7ff4d3, 0xa1fce007, 0xaeab5e73, 0xfcf0db0f, 0x4ca8c655,
+       0xc0e2b776, 0x13b19d08, 0x5248637d, 0x0617e83d, 0x15c46e1a, 0xf1c9f3f7,
+       0x1d0694d0, 0xe8ae0e34, 0x5643ca22, 0x6622689e, 0xa3049297, 0x34fb8e86,
+       0xcb82a621, 0xdd40474c, 0xf8c57ba7, 0xa3518afa, 0x1eff18af, 0xe4774878,
+       0x63fc79f0, 0x919c756c, 0xd5081f90, 0x5f2b51e8, 0x5def3fa0, 0xb37889a2,
+       0xe9fdf347, 0x66591768, 0xef10c57b, 0x8580a01d, 0x14b93553, 0xf9a4bb2f,
+       0x7e713d3b, 0x07caaaf4, 0xedc5172a, 0x17c66cdf, 0x146e5fc6, 0xb7bae979,
+       0xc0a61724, 0x82db5607, 0x6b38a67a, 0x29de88ca, 0x54f665a1, 0x0e8d5e80,
+       0x9c9600db, 0x059cc110, 0x67fa4dab, 0x7ed1e315, 0xe987eb17, 0xccff2fdd,
+       0x0fff7908, 0xb251b0f9, 0xf95bdc53, 0xb8cbbe70, 0x60f382af, 0x35d91974,
+       0xc9531bcd, 0xb3f5936e, 0xeec8d766, 0xc7e21e39, 0x51bd79c3, 0xe380501d,
+       0xc220ac20, 0xa8af1687, 0xb8f7602f, 0xa7674b6f, 0xd8253776, 0xddc27df1,
+       0x85e5e853, 0x09bb810a, 0x08e67b27, 0xe12d4c9c, 0xc08a4f64, 0x4e1344c9,
+       0x327096a6, 0x264e13f5, 0xd132709a, 0x26899384, 0xe12d4c9c, 0x507fea64,
+       0x83dccfd6, 0x0e587cf6, 0x7e80be8f, 0xe32ce77a, 0x0f57ca49, 0xfe0800c3,
+       0xfd0f960d, 0xc5caf386, 0x76a6853c, 0xa3f7135c, 0xcfb3eee6, 0x7f7145c9,
+       0xba7ff60a, 0x8ff471ef, 0x1485c466, 0x14bf46cf, 0x69779949, 0x43747b3f,
+       0xa3cbc72a, 0xff3957df, 0x8ea7aa36, 0xfae30a3b, 0x03fddd3c, 0x48cbe445,
+       0x5df70789, 0x51f4e1dd, 0xfcabd7fe, 0x69bf112f, 0xe5db1f5e, 0xf9e04a81,
+       0x471be657, 0x70cd6ec9, 0x9c3cd5ea, 0xaf37f4d7, 0x8efc69bb, 0xf29542b1,
+       0xf948e070, 0xad0f3c8e, 0x79a35e37, 0x12a69701, 0x97dcd8ce, 0x29b775c9,
+       0xeb8de317, 0x737dcc7e, 0xef1edc7a, 0xbf7a8855, 0x739c4aa7, 0xa12fbcde,
+       0xa4fa9482, 0x4fbea279, 0x3b02b78e, 0xe78c6484, 0xfdd2d899, 0xf517d2cf,
+       0xab8eb13b, 0x117f58f0, 0x06cd41ea, 0xebe7af5f, 0xa76cc2fa, 0x00aeb8ab,
+       0xe9165b69, 0x950be44f, 0x42565e0a, 0x996e12bc, 0x4ab49fc2, 0x5f75bfc1,
+       0x5f78bd6d, 0x25cb2ef5, 0xd247bf5c, 0xe8202dd0, 0x825cacf2, 0x0284f074,
+       0x975d2377, 0x91f351e5, 0x692bdd8e, 0x5bdec807, 0x356f39ca, 0x9f904d92,
+       0x8e12d0e0, 0xdb1860db, 0xef8e9705, 0x2b1cf6db, 0x15c909f8, 0x33e255d1,
+       0x566ae9a8, 0x1969ee02, 0x264e3890, 0x136950d3, 0x08d78571, 0x2d9adfd2,
+       0x8bb36a85, 0x974a13e8, 0x7e12e497, 0x79c3ad62, 0x57579a11, 0x5f92af04,
+       0xca2e50c5, 0xfcde745b, 0x699bfd84, 0x71f384ff, 0xd4b6e33e, 0x6bd674ca,
+       0x0bb94340, 0x4f98d5a9, 0x29eb03d4, 0xf3f71bb6, 0xf7ac39f0, 0xf1584896,
+       0x3c763f11, 0x5ad5e917, 0x9a73a158, 0xca55cafb, 0x712ec677, 0xa99fd18e,
+       0xb3ae1196, 0x22416a6b, 0x23bf43de, 0xcba46cbf, 0xcbf3367d, 0x7a883878,
+       0x9a1c22ca, 0xf5d7f885, 0x4c057d75, 0x990383fe, 0x6071f8c9, 0x69f6428f,
+       0x64caeb30, 0xfa6f5c3b, 0x855f7341, 0xaedeb40a, 0xcfe23eab, 0x3b6ff7d4,
+       0x6b013b9d, 0x43e0c349, 0xf3d2214a, 0xba1e452a, 0x5d73d4de, 0x2244a451,
+       0x7d3a743d, 0x368367c4, 0xd45ef2c0, 0x0fd45ef7, 0xcfcd13e1, 0x093f46fa,
+       0x3825ea01, 0x38df6c98, 0x6fbce93f, 0xf1c03070, 0xa86ed6b7, 0x431f225a,
+       0xa848972f, 0x7b8c0697, 0x668fea89, 0xce7fc9b8, 0x66e95ded, 0xd24f9139,
+       0xb3cfba73, 0xfb216f2c, 0xe5b5fb0d, 0x440b4d3f, 0x2de75b3c, 0x3cb3b4af,
+       0xfeb94dcb, 0xee0d38d2, 0xfc8e800a, 0x4f81e4b4, 0x9c74fe92, 0xc569f15a,
+       0x1b44036b, 0xabbddef8, 0x7c848c1e, 0xe3bbf583, 0xf3f42999, 0x6ae7c980,
+       0xcfa89ed3, 0xd69f4857, 0x3d92dff8, 0x28b1bc71, 0x3f69ee39, 0x358377da,
+       0xe929195e, 0x5be7c6f4, 0x896636e7, 0xe4ffe475, 0xf3cc1b67, 0xcf177e68,
+       0xe664f537, 0x798b968d, 0x1cf6d0e3, 0x92a31bca, 0xd746f28f, 0xbaeb816e,
+       0x77e74a9e, 0xbd75dfae, 0x38158bf0, 0x870793ef, 0x8b5e489b, 0xe44460af,
+       0x53c45689, 0x9ad63794, 0xc4ba3f75, 0x2132abb8, 0x3c0f838e, 0xc5c50575,
+       0x73f291ea, 0x3b9606bf, 0xdde6f942, 0xd6fa7ea7, 0xbebc4f52, 0xf734725a,
+       0x7012abff, 0xc84dea25, 0x19b4b3b9, 0x5ec285f4, 0xe96b0f74, 0x9fc67493,
+       0x4fe32add, 0xfd93decb, 0xdbf18020, 0x81fb8ae2, 0xe14bff65, 0x96cecb26,
+       0x5b7b2dfd, 0xdbd9607e, 0x9d5013b2, 0x16ffc04d, 0xbe4dfbdf, 0xfbfe9b57,
+       0x67d8a568, 0xbaa15b75, 0x50bde396, 0x37bf216d, 0xc9821bc7, 0xa4ed17fd,
+       0x3befcc5d, 0x46262e28, 0x76269d84, 0xf23de229, 0xe4ecd7d0, 0xf16fbaa6,
+       0x777cceb1, 0x0fdf356c, 0x18389ad7, 0xa274f4ed, 0x2a3dd69d, 0xf4f2d4ec,
+       0xd179bfeb, 0x3c89f2c3, 0xf1853bb6, 0x28c8f362, 0x7fa1abdb, 0xf388528f,
+       0x4c2caa5e, 0x1d2dd7ca, 0x3ea01ae5, 0x2b0ff757, 0x592fff14, 0x77f24ef2,
+       0x8848756c, 0x523faa23, 0xe6b3dd42, 0xc51bde53, 0x3a74b673, 0xf1d5c1a7,
+       0xfd343e73, 0x3323a5b8, 0xe96bce8b, 0xdd3dfc08, 0x3fbcac67, 0x3aceee39,
+       0xe3343c45, 0x6797147e, 0x2eee7c2b, 0x94f27bae, 0xb4dc75f5, 0xbd510fdb,
+       0x691fca4e, 0x1e924f23, 0xea91de66, 0xe2a1c5eb, 0xce9868e2, 0xbe263f25,
+       0x0e8bcc55, 0x29bc579c, 0x81f129fa, 0xeb443d10, 0xe2cf4da8, 0x3e907216,
+       0xc62f6c80, 0x5a26c8b6, 0x1f90957b, 0x0e3423c7, 0x2445d1d9, 0x75bce4ff,
+       0xf9615c29, 0xe4cfb5a7, 0xf929753c, 0xca67f8fe, 0x7cd0b677, 0xb9f52937,
+       0xd36e781d, 0xf47c73fd, 0xe4a7f48e, 0x1f515354, 0xa2f20959, 0x9ace2eb3,
+       0x7162de42, 0xbcb4ba0f, 0x53393583, 0x4e593bc8, 0xe6824e2b, 0x24e3005d,
+       0x1329ee83, 0xa833b303, 0xb0959c9e, 0xb3bae16e, 0xf8994e9d, 0xdeb2e4b6,
+       0x79f7ade9, 0x52fe1deb, 0xaa9eefef, 0x20bb812c, 0xb2784e9a, 0xff8cd531,
+       0xbfa9a088, 0xaadfa13e, 0x345ae3f7, 0x3f212b3d, 0xd661d07f, 0xa6ee8843,
+       0xd9ee8678, 0xe31def40, 0x65d36703, 0xe0a7f92f, 0x45b75acf, 0x53778df1,
+       0xe29edb9e, 0xc423f7a3, 0x3de83b4d, 0xc99435a9, 0xba6b34ef, 0xc21b9c17,
+       0xcdf4d67d, 0x37ae31f4, 0x335afe71, 0x096da5ff, 0xcd06f8ec, 0x08d42a1f,
+       0xfcbab7c7, 0xa5c3bd2a, 0x45abd60d, 0x3dc57b8c, 0xbf999d60, 0xa7e048b6,
+       0xf9475bf8, 0x7e4ae291, 0xcdea98b9, 0xff8121ba, 0x97e864eb, 0x7ab39f50,
+       0x29f2cbfd, 0x7c93ec3f, 0x3f612784, 0x3eeb51e6, 0xc363b986, 0x2ad2ff52,
+       0x447f37aa, 0xaffdc3bf, 0x236b1aa2, 0xba744679, 0x0be20277, 0x21f88792,
+       0xe268bcbd, 0x33c1f192, 0x5c6f1ee9, 0x3054b39f, 0xe93cdef8, 0xf14ba83d,
+       0xbcd266e4, 0x133cef49, 0x66464f76, 0x336cfe42, 0xf7a56a79, 0x1fe4059f,
+       0x1fe4398d, 0x0f29a441, 0x62ac18ee, 0x96f875ba, 0x5e97f21c, 0xc8f78c9a,
+       0x079a9ee0, 0x6e9fe843, 0xf6c11f53, 0x17089baa, 0xc9481db5, 0x5b8d7ba4,
+       0x7113b909, 0x1ef87068, 0x8ffce037, 0x28ab9d86, 0xf56b579f, 0xe72899d5,
+       0xe599fdda, 0xd0ba84b6, 0x6fe22556, 0x2e557b43, 0xfa6dcbbd, 0xf423d8f2,
+       0xf715aa1d, 0x3fff70d4, 0x4385a48c, 0xcf536538, 0x630db711, 0xa32c99e8,
+       0x51b8f485, 0x29415b1e, 0x7c2913f3, 0x7be79f30, 0xb7a77ca6, 0xdf7473da,
+       0xff6dff44, 0x9f7877bb, 0x6f27cbdf, 0x9bf5c06a, 0x469d9fda, 0xfbdc6cfb,
+       0xcc9a35e6, 0x54775bef, 0x877da22d, 0x5f746a0f, 0x479e1a1c, 0x6f75b8f5,
+       0x45318649, 0x26bf253e, 0x223b6cff, 0xfeacc7de, 0xc60ce135, 0x540446a1,
+       0xd3efcbcd, 0xb23f738c, 0x75d53741, 0xfd58970b, 0x7e04aadb, 0xc06328fd,
+       0x7f5ff64d, 0xd53721f0, 0x05d38f8d, 0xe57078dd, 0x190f29cf, 0xfc08a58f,
+       0xb7c6076d, 0x9781212d, 0xb8f185c1, 0x73e58c84, 0xbefc3dd0, 0x6fde34aa,
+       0xa482d0fd, 0x2f8885ef, 0x3b63ffb8, 0xb31f12d4, 0xe4e5637a, 0x91eda7cf,
+       0x69e7b256, 0xddf4a3c4, 0x4fcccda3, 0xcb6c07a7, 0x81843fa8, 0xf4e2b840,
+       0xf4e9b3c0, 0x61c2d13d, 0x7577b635, 0xe7a5e11b, 0xc3aa72a4, 0x7c53de69,
+       0xbdf3018f, 0xfc26b364, 0xca27ebad, 0x8cd999b2, 0x9367b8ab, 0x654ea23d,
+       0x6e260daf, 0x1e1f48ba, 0xa6d97be5, 0x6c170243, 0xb8c3391a, 0xed19c2c0,
+       0x3c6e9c66, 0x82718674, 0x61f36eb5, 0xc3f697a1, 0x2a503fa2, 0xba2def5b,
+       0x65f74c54, 0x2f93e989, 0x5b605bff, 0x6076fd12, 0x93e9421b, 0x1ef99a15,
+       0xbe5c6312, 0x7c97f4b3, 0x33ef699f, 0x495a45f7, 0x9c846f38, 0x9fe88672,
+       0x42f5a2ed, 0xfb78d67f, 0x8a1f7161, 0x53f6a7b4, 0xbb37d6fd, 0xb6f6d4ec,
+       0xef9eb8bb, 0xed4b90ef, 0x54b9890b, 0xa96373c6, 0x5e51e6d3, 0x6df1b19c,
+       0xe413bd27, 0x8c98ec43, 0xc6f969fd, 0x172a3a31, 0x546c2a30, 0xe1122207,
+       0xfcfff3d0, 0xffda02e1, 0xcfd159fa, 0x24efa340, 0x9df40367, 0x4caa5fe4,
+       0x05d1bc39, 0x8e33c7e4, 0x23fbbc8a, 0x5ea9fa05, 0xf40fdd81, 0x164c60fd,
+       0x45f426f8, 0xca71f86a, 0xe73ac54d, 0x99a72ecd, 0xeb3a3d38, 0x1fccc27b,
+       0x687bf311, 0xfc3973e8, 0x452bf138, 0xb3889c7e, 0x3f85aa52, 0x77c453fb,
+       0x4a4aefd1, 0x92e13fc1, 0x9a71af32, 0x645fcbe2, 0xbe472b2b, 0xe6cc4e27,
+       0x7e6f3ab8, 0x6af0b53f, 0x816c79a5, 0x2f52cf79, 0xff9173cb, 0x5e853af7,
+       0x6e875d24, 0xef6effe4, 0xfbe216d1, 0xe80398be, 0x2c655e7b, 0x2e6bdc55,
+       0xd6fae5ab, 0xfd7374eb, 0x68763c96, 0xbd47f9c4, 0xf34ec472, 0x79dfc1c1,
+       0xef0931c1, 0xd69d4eca, 0x7daf6349, 0xa67ef94e, 0x1963d3ed, 0xbfcce728,
+       0x0b947c96, 0xfdce269b, 0x1b6c0de8, 0x25181c2f, 0x37ce6e79, 0x18f640fe,
+       0x633da89f, 0xd3efc9a0, 0x513e1c46, 0x8e512047, 0x9f3ebbb1, 0xf9c72596,
+       0xf73b1f3b, 0xa90b0bd4, 0x70fbf075, 0xbc4d98e5, 0xe7e24d27, 0x3e321e7c,
+       0x7db1e79b, 0x30e4bbce, 0xc72acfdd, 0xfc43bd8e, 0x115c3a55, 0x8706e77a,
+       0xf589eff2, 0x99053c06, 0x278ae6e7, 0xc666afaf, 0xab0ef1e3, 0xdf998c2e,
+       0x7e2e63ef, 0x9de9ca9f, 0x4de57dfa, 0xef5805c2, 0xbe48cfaf, 0x16a8ce6f,
+       0x4c3341ef, 0xf994f73b, 0x5e39aa0b, 0xbefc05c2, 0xe5d1d666, 0x1d56fca6,
+       0x2fe799b6, 0xdcb0f537, 0x6fb90b25, 0xe9b7249d, 0x1ded930f, 0x613667b7,
+       0x82768b88, 0x9e3a9fef, 0x29f6c851, 0xa5d85fbb, 0xe7ea9ab4, 0x63b727e7,
+       0xff65c178, 0xcfb66dfd, 0x225d83ff, 0xc0bfc2f2, 0xed92a72e, 0x711bd392,
+       0xb0dc21ce, 0x40dc6657, 0xb8164e78, 0x52b9e04e, 0x64d0bce0, 0x41f7e54b,
+       0xd5c2f283, 0x538e0f9c, 0xc0f2b03e, 0x1968daac, 0x8071cfd5, 0xa8af8847,
+       0xebfdc23c, 0xfe388baa, 0xf953872f, 0x8af78fd4, 0x6ccf8445, 0xf55ddf8e,
+       0xc1869601, 0x2fa3c37b, 0x52bd3ee0, 0x8a5adf78, 0xfe2ee5ff, 0x2c3e74de,
+       0x673c1487, 0x1de61330, 0xd707f3c1, 0x0ddfc55f, 0xf71983ce, 0x7b8e54ab,
+       0xd377771c, 0x7f188378, 0xbbb3cbfe, 0x4ac55f09, 0x2c19e580, 0x90862b87,
+       0xe52fac1e, 0x795a9ff1, 0x58ba7763, 0xcef22f5f, 0xfe2cfae0, 0x1f878a3f,
+       0x75495f0e, 0xcf587061, 0x7ba277a7, 0xd9008cf3, 0xf09b32f1, 0xec42c1bf,
+       0xc941f6c7, 0xfb4ad0df, 0xa37e0994, 0x1f4fa90d, 0xc59cadc4, 0x7fb09a98,
+       0xbf9d3bbc, 0x6afe5a4f, 0x0acecbbd, 0x7a47d99d, 0x6942550a, 0x9effee07,
+       0xde9667e9, 0xdd734c25, 0x536cf7a8, 0x2c1d96cf, 0x454ecb7f, 0xb0fca3ff,
+       0xa85df855, 0x336794d2, 0x70bee984, 0x8692b239, 0xf14a6e7a, 0xbfdf4879,
+       0xa2ee37cd, 0x44ede8b8, 0x0e48d8fb, 0x19718761, 0xbffaa6da, 0xd96abe94,
+       0x512d5efa, 0x888134bc, 0x27f22697, 0xf46ec3f2, 0x843f04a7, 0xf499e5e8,
+       0x09fd8a9d, 0x35c8afd7, 0xb57d21ee, 0xff98baa7, 0x5e6f4bdf, 0xff278343,
+       0xffe536c7, 0x0b540cc1, 0xdd33d5fc, 0xf7e39fb8, 0x279c1557, 0xb2795c2c,
+       0xca02c3fc, 0xbd77e3cf, 0xc3b53976, 0xd01ffe79, 0xfc360ffe, 0x192a32d7,
+       0x1547e5ef, 0x86bde792, 0x9df80a2f, 0xec6beb79, 0xbf2e7fff, 0xd69b0bff,
+       0x24d00f22, 0x000024d0
 };
 
 #endif /*__BNX2X_INIT_VALUES_H__*/
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c
new file mode 100644 (file)
index 0000000..203e6b2
--- /dev/null
@@ -0,0 +1,5821 @@
+/* Copyright 2008 Broadcom Corporation
+ *
+ * Unless you and Broadcom execute a separate written software license
+ * agreement governing use of this software, this software is licensed to you
+ * under the terms of the GNU General Public License version 2, available
+ * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL").
+ *
+ * Notwithstanding the above, under no circumstances may you combine this
+ * software in any way with any other Broadcom software provided under a
+ * license other than the GPL, without Broadcom's express prior written
+ * consent.
+ *
+ * Written by Yaniv Rosner
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/pci.h>
+#include <linux/netdevice.h>
+#include <linux/delay.h>
+#include <linux/ethtool.h>
+#ifdef __LINUX_MUTEX_H  /* BNX2X_UPSTREAM */
+#include <linux/mutex.h>
+#endif
+#include <linux/version.h>
+
+#include "bnx2x.h"
+
+
+/********************************************************/
+#define ETH_HLEN               14
+#define ETH_OVREHEAD           (ETH_HLEN + 8)/* 8 for CRC + VLAN*/
+#define ETH_MIN_PACKET_SIZE    60
+#define ETH_MAX_PACKET_SIZE    1500
+#define ETH_MAX_JUMBO_PACKET_SIZE   9600
+#define MDIO_ACCESS_TIMEOUT    1000
+#define BMAC_CONTROL_RX_ENABLE      2
+
+/***********************************************************/
+/*                      Shortcut definitions              */
+/***********************************************************/
+
+#define NIG_STATUS_XGXS0_LINK10G \
+               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK10G
+#define NIG_STATUS_XGXS0_LINK_STATUS \
+               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS
+#define NIG_STATUS_XGXS0_LINK_STATUS_SIZE \
+               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_XGXS0_LINK_STATUS_SIZE
+#define NIG_STATUS_SERDES0_LINK_STATUS \
+               NIG_STATUS_INTERRUPT_PORT0_REG_STATUS_SERDES0_LINK_STATUS
+#define NIG_MASK_MI_INT \
+               NIG_MASK_INTERRUPT_PORT0_REG_MASK_EMAC0_MISC_MI_INT
+#define NIG_MASK_XGXS0_LINK10G \
+               NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK10G
+#define NIG_MASK_XGXS0_LINK_STATUS \
+               NIG_MASK_INTERRUPT_PORT0_REG_MASK_XGXS0_LINK_STATUS
+#define NIG_MASK_SERDES0_LINK_STATUS \
+               NIG_MASK_INTERRUPT_PORT0_REG_MASK_SERDES0_LINK_STATUS
+
+#define MDIO_AN_CL73_OR_37_COMPLETE \
+               (MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE | \
+                MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE)
+
+#define XGXS_RESET_BITS \
+       (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_RSTB_HW |   \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_IDDQ |      \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN |    \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_PWRDWN_SD | \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_XGXS0_TXD_FIFO_RSTB)
+
+#define SERDES_RESET_BITS \
+       (MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_RSTB_HW | \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_IDDQ |    \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN |  \
+        MISC_REGISTERS_RESET_REG_3_MISC_NIG_MUX_SERDES0_PWRDWN_SD)
+
+#define AUTONEG_CL37           SHARED_HW_CFG_AN_ENABLE_CL37
+#define AUTONEG_CL73           SHARED_HW_CFG_AN_ENABLE_CL73
+#define AUTONEG_BAM            SHARED_HW_CFG_AN_ENABLE_BAM
+#define AUTONEG_PARALLEL       \
+                               SHARED_HW_CFG_AN_ENABLE_PARALLEL_DETECTION
+#define AUTONEG_SGMII_FIBER_AUTODET \
+                               SHARED_HW_CFG_AN_EN_SGMII_FIBER_AUTO_DETECT
+#define AUTONEG_REMOTE_PHY     SHARED_HW_CFG_AN_ENABLE_REMOTE_PHY
+
+#define GP_STATUS_PAUSE_RSOLUTION_TXSIDE \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE
+#define GP_STATUS_PAUSE_RSOLUTION_RXSIDE \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE
+#define GP_STATUS_SPEED_MASK \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK
+#define GP_STATUS_10M       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M
+#define GP_STATUS_100M      MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M
+#define GP_STATUS_1G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G
+#define GP_STATUS_2_5G      MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G
+#define GP_STATUS_5G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G
+#define GP_STATUS_6G   MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G
+#define GP_STATUS_10G_HIG \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG
+#define GP_STATUS_10G_CX4 \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4
+#define GP_STATUS_12G_HIG \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG
+#define GP_STATUS_12_5G MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G
+#define GP_STATUS_13G       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G
+#define GP_STATUS_15G       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G
+#define GP_STATUS_16G       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G
+#define GP_STATUS_1G_KX MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX
+#define GP_STATUS_10G_KX4 \
+                       MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4
+
+#define LINK_10THD             LINK_STATUS_SPEED_AND_DUPLEX_10THD
+#define LINK_10TFD             LINK_STATUS_SPEED_AND_DUPLEX_10TFD
+#define LINK_100TXHD           LINK_STATUS_SPEED_AND_DUPLEX_100TXHD
+#define LINK_100T4             LINK_STATUS_SPEED_AND_DUPLEX_100T4
+#define LINK_100TXFD           LINK_STATUS_SPEED_AND_DUPLEX_100TXFD
+#define LINK_1000THD           LINK_STATUS_SPEED_AND_DUPLEX_1000THD
+#define LINK_1000TFD           LINK_STATUS_SPEED_AND_DUPLEX_1000TFD
+#define LINK_1000XFD           LINK_STATUS_SPEED_AND_DUPLEX_1000XFD
+#define LINK_2500THD           LINK_STATUS_SPEED_AND_DUPLEX_2500THD
+#define LINK_2500TFD           LINK_STATUS_SPEED_AND_DUPLEX_2500TFD
+#define LINK_2500XFD           LINK_STATUS_SPEED_AND_DUPLEX_2500XFD
+#define LINK_10GTFD            LINK_STATUS_SPEED_AND_DUPLEX_10GTFD
+#define LINK_10GXFD            LINK_STATUS_SPEED_AND_DUPLEX_10GXFD
+#define LINK_12GTFD            LINK_STATUS_SPEED_AND_DUPLEX_12GTFD
+#define LINK_12GXFD            LINK_STATUS_SPEED_AND_DUPLEX_12GXFD
+#define LINK_12_5GTFD          LINK_STATUS_SPEED_AND_DUPLEX_12_5GTFD
+#define LINK_12_5GXFD          LINK_STATUS_SPEED_AND_DUPLEX_12_5GXFD
+#define LINK_13GTFD            LINK_STATUS_SPEED_AND_DUPLEX_13GTFD
+#define LINK_13GXFD            LINK_STATUS_SPEED_AND_DUPLEX_13GXFD
+#define LINK_15GTFD            LINK_STATUS_SPEED_AND_DUPLEX_15GTFD
+#define LINK_15GXFD            LINK_STATUS_SPEED_AND_DUPLEX_15GXFD
+#define LINK_16GTFD            LINK_STATUS_SPEED_AND_DUPLEX_16GTFD
+#define LINK_16GXFD            LINK_STATUS_SPEED_AND_DUPLEX_16GXFD
+
+#define PHY_XGXS_FLAG                  0x1
+#define PHY_SGMII_FLAG                 0x2
+#define PHY_SERDES_FLAG                0x4
+
+/* */
+#define SFP_EEPROM_CON_TYPE_ADDR               0x2
+       #define SFP_EEPROM_CON_TYPE_VAL_LC              0x7
+       #define SFP_EEPROM_CON_TYPE_VAL_COPPER  0x21
+
+#define SFP_EEPROM_FC_TX_TECH_ADDR             0x8
+       #define SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE     0x8
+#define SFP_EEPROM_VENDOR_NAME_ADDR            0x14
+#define SFP_EEPROM_VENDOR_NAME_SIZE    16
+#define SFP_EEPROM_OPTIONS_ADDR                0xa0
+       #define SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK 0x1
+#define SFP_EEPROM_OPTIONS_SIZE                2
+
+/**********************************************************/
+/*                  8073 Download definitions            */
+/**********************************************************/
+/* spi Parameters.*/
+#define SPI_CTRL_1_L   0xC000
+#define SPI_CTRL_1_H   0xC002
+#define SPI_CTRL_2_L   0xC400
+#define SPI_CTRL_2_H   0xC402
+#define SPI_TXFIFO     0xD000
+#define SPI_RXFIFO     0xD400
+
+/* Input Command Messages.*/
+#define WR_CPU_CTRL_REGS    0x11    /* Write CPU/SPI Control Regs, followed
+ by Count And CPU/SPI Controller Reg add/data pairs.*/
+#define RD_CPU_CTRL_REGS    0xEE    /* Read CPU/SPI Control Regs, followed
+by Count and CPU/SPI Controller Register Add.*/
+#define WR_CPU_CTRL_FIFO    0x66    /* Write CPU/SPI Control Regs
+Continously, followed by Count and CPU/SPI Controller Reg addr and data's.*/
+/* Output Command Messages.*/
+#define DONE     0x4321
+
+/* SPI Controller Commands (known As messages).*/
+#define MSGTYPE_HWR    0x40
+#define MSGTYPE_HRD    0x80
+#define WR_OPCODE      0x02
+#define RD_OPCODE      0x03
+#define WRDI_OPCODE    0x04
+#define RDSR_OPCODE    0x05
+#define WREN_OPCODE    0x06
+#define WR_BLOCK_SIZE       0x40 /* Maximum 64 Bytes Writes.*/
+
+#define BUF_SIZE_8073  0x4000 /* Code Size is 16k bytes.*/
+#define UPGRADE_TIMEOUT_8073 1000
+/**********************************************************/
+/*                    INTERFACE                          */
+/**********************************************************/
+#define CL45_WR_OVER_CL22(_bp, _port, _phy_addr, _bank, _addr, _val) \
+       bnx2x_cl45_write(_bp, _port, 0, _phy_addr, \
+               DEFAULT_PHY_DEV_ADDR, \
+               (_bank + (_addr & 0xf)), \
+               _val)
+
+#define CL45_RD_OVER_CL22(_bp, _port, _phy_addr, _bank, _addr, _val) \
+       bnx2x_cl45_read(_bp, _port, 0, _phy_addr, \
+               DEFAULT_PHY_DEV_ADDR, \
+               (_bank + (_addr & 0xf)), \
+               _val)
+
+static void bnx2x_set_phy_mdio(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_ST +
+                  params->port*0x18, 0);
+       REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + params->port*0x18,
+                  DEFAULT_PHY_DEV_ADDR);
+}
+
+static u32 bnx2x_bits_en(struct bnx2x *bp, u32 reg, u32 bits)
+{
+       u32 val = REG_RD(bp, reg);
+
+       val |= bits;
+       REG_WR(bp, reg, val);
+       return val;
+}
+
+static u32 bnx2x_bits_dis(struct bnx2x *bp, u32 reg, u32 bits)
+{
+       u32 val = REG_RD(bp, reg);
+
+       val &= ~bits;
+       REG_WR(bp, reg, val);
+       return val;
+}
+
+static void bnx2x_emac_init(struct link_params *params,
+                          struct link_vars *vars)
+{
+       /* reset and unreset the emac core */
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+       u32 val;
+       u16 timeout;
+
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
+                  (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port));
+       udelay(5);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
+                  (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port));
+
+       /* init emac - use read-modify-write */
+       /* self clear reset */
+       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
+       EMAC_WR(bp, EMAC_REG_EMAC_MODE, (val | EMAC_MODE_RESET));
+
+       timeout = 200;
+       do {
+               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
+               DP(NETIF_MSG_LINK, "EMAC reset reg is %u\n", val);
+               if (!timeout) {
+                       DP(NETIF_MSG_LINK, "EMAC timeout!\n");
+                       return;
+               }
+               timeout--;
+       } while (val & EMAC_MODE_RESET);
+
+       /* Set mac address */
+       val = ((params->mac_addr[0] << 8) |
+               params->mac_addr[1]);
+       EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH, val);
+
+       val = ((params->mac_addr[2] << 24) |
+              (params->mac_addr[3] << 16) |
+              (params->mac_addr[4] << 8) |
+               params->mac_addr[5]);
+       EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + 4, val);
+}
+
+static u8 bnx2x_emac_enable(struct link_params *params,
+                         struct link_vars *vars, u8 lb)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+       u32 val;
+
+       DP(NETIF_MSG_LINK, "enabling EMAC\n");
+
+       /* enable emac and not bmac */
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_PORT + port*4, 1);
+
+       /* for paladium */
+       if (CHIP_REV_IS_EMUL(bp)) {
+               /* Use lane 1 (of lanes 0-3) */
+               REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1);
+               REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL +
+                           port*4, 1);
+       }
+       /* for fpga */
+       else
+
+       if (CHIP_REV_IS_FPGA(bp)) {
+               /* Use lane 1 (of lanes 0-3) */
+               DP(NETIF_MSG_LINK, "bnx2x_emac_enable: Setting FPGA\n");
+
+               REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 1);
+               REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4,
+                           0);
+       } else
+       /* ASIC */
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+               u32 ser_lane = ((params->lane_config &
+                           PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
+                           PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
+
+               DP(NETIF_MSG_LINK, "XGXS\n");
+               /* select the master lanes (out of 0-3) */
+               REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 +
+                          port*4, ser_lane);
+               /* select XGXS */
+               REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL +
+                          port*4, 1);
+
+       } else { /* SerDes */
+               DP(NETIF_MSG_LINK, "SerDes\n");
+               /* select SerDes */
+               REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL +
+                          port*4, 0);
+       }
+
+       if (CHIP_REV_IS_SLOW(bp)) {
+               /* config GMII mode */
+               val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
+               EMAC_WR(bp, EMAC_REG_EMAC_MODE,
+                           (val | EMAC_MODE_PORT_GMII));
+       } else { /* ASIC */
+               /* pause enable/disable */
+               bnx2x_bits_dis(bp, emac_base + EMAC_REG_EMAC_RX_MODE,
+                              EMAC_RX_MODE_FLOW_EN);
+               if (vars->flow_ctrl & FLOW_CTRL_RX)
+                       bnx2x_bits_en(bp, emac_base +
+                                   EMAC_REG_EMAC_RX_MODE,
+                                   EMAC_RX_MODE_FLOW_EN);
+
+               bnx2x_bits_dis(bp,  emac_base + EMAC_REG_EMAC_TX_MODE,
+                            (EMAC_TX_MODE_EXT_PAUSE_EN |
+                             EMAC_TX_MODE_FLOW_EN));
+               if (vars->flow_ctrl & FLOW_CTRL_TX)
+                       bnx2x_bits_en(bp, emac_base +
+                                   EMAC_REG_EMAC_TX_MODE,
+                                  (EMAC_TX_MODE_EXT_PAUSE_EN |
+                                   EMAC_TX_MODE_FLOW_EN));
+       }
+
+       /* KEEP_VLAN_TAG, promiscuous */
+       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_RX_MODE);
+       val |= EMAC_RX_MODE_KEEP_VLAN_TAG | EMAC_RX_MODE_PROMISCUOUS;
+       EMAC_WR(bp, EMAC_REG_EMAC_RX_MODE, val);
+
+       /* Set Loopback */
+       val = REG_RD(bp, emac_base + EMAC_REG_EMAC_MODE);
+       if (lb)
+               val |= 0x810;
+       else
+               val &= ~0x810;
+       EMAC_WR(bp, EMAC_REG_EMAC_MODE, val);
+
+       bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_RX_MODE,
+                   EMAC_RX_MODE_RESET);
+       bnx2x_bits_en(bp, emac_base + EMAC_REG_EMAC_TX_MODE,
+                   EMAC_TX_MODE_RESET);
+
+       /* enable emac */
+       REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 1);
+
+       /* enable emac for jumbo packets */
+       EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE,
+               (EMAC_RX_MTU_SIZE_JUMBO_ENA |
+                (ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD)));
+
+       /* strip CRC */
+       REG_WR(bp, NIG_REG_NIG_INGRESS_EMAC0_NO_CRC + port*4, 0x1);
+
+       /* disable the NIG in/out to the bmac */
+       REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0x0);
+       REG_WR(bp, NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, 0x0);
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0x0);
+
+       /* enable the NIG in/out to the emac */
+       REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0x1);
+       val = 0;
+       if (vars->flow_ctrl & FLOW_CTRL_TX)
+               val = 1;
+
+       REG_WR(bp, NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, val);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x1);
+
+       if (CHIP_REV_IS_EMUL(bp)) {
+               /* take the BigMac out of reset */
+               REG_WR(bp,
+                          GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
+                          (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+
+               /* enable access for bmac registers */
+               REG_WR(bp, NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1);
+       }
+
+       vars->mac_type = MAC_TYPE_EMAC;
+       return 0;
+}
+
+
+
+static u8 bnx2x_bmac_enable(struct link_params *params, struct link_vars *vars,
+                         u8 is_lb)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM :
+                              NIG_REG_INGRESS_BMAC0_MEM;
+       u32 wb_data[2];
+       u32 val;
+
+       DP(NETIF_MSG_LINK, "Enabling BigMAC\n");
+       /* reset and unreset the BigMac */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
+              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+       msleep(1);
+
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
+              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+
+       /* enable access for bmac registers */
+       REG_WR(bp, NIG_REG_BMAC0_REGS_OUT_EN + port*4, 0x1);
+
+       /* XGXS control */
+       wb_data[0] = 0x3c;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr +
+                     BIGMAC_REGISTER_BMAC_XGXS_CONTROL,
+                     wb_data, 2);
+
+       /* tx MAC SA */
+       wb_data[0] = ((params->mac_addr[2] << 24) |
+                      (params->mac_addr[3] << 16) |
+                      (params->mac_addr[4] << 8) |
+                       params->mac_addr[5]);
+       wb_data[1] = ((params->mac_addr[0] << 8) |
+                       params->mac_addr[1]);
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_SOURCE_ADDR,
+                   wb_data, 2);
+
+       /* tx control */
+       val = 0xc0;
+       if (vars->flow_ctrl & FLOW_CTRL_TX)
+               val |= 0x800000;
+       wb_data[0] = val;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_CONTROL,
+                       wb_data, 2);
+
+       /* mac control */
+       val = 0x3;
+       if (is_lb) {
+               val |= 0x4;
+               DP(NETIF_MSG_LINK, "enable bmac loopback\n");
+       }
+       wb_data[0] = val;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL,
+                   wb_data, 2);
+
+
+       /* set rx mtu */
+       wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_MAX_SIZE,
+                       wb_data, 2);
+
+       /* rx control set to don't strip crc */
+       val = 0x14;
+       if (vars->flow_ctrl & FLOW_CTRL_RX)
+               val |= 0x20;
+       wb_data[0] = val;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_CONTROL,
+                       wb_data, 2);
+
+       /* set tx mtu */
+       wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_TX_MAX_SIZE,
+                       wb_data, 2);
+
+       /* set cnt max size */
+       wb_data[0] = ETH_MAX_JUMBO_PACKET_SIZE + ETH_OVREHEAD;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_CNT_MAX_SIZE,
+                   wb_data, 2);
+
+       /* configure safc */
+       wb_data[0] = 0x1000200;
+       wb_data[1] = 0;
+       REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_RX_LLFC_MSG_FLDS,
+                   wb_data, 2);
+       /* fix for emulation */
+       if (CHIP_REV_IS_EMUL(bp)) {
+               wb_data[0] = 0xf000;
+               wb_data[1] = 0;
+               REG_WR_DMAE(bp,
+                           bmac_addr + BIGMAC_REGISTER_TX_PAUSE_THRESHOLD,
+                           wb_data, 2);
+       }
+
+       REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 0x1);
+       REG_WR(bp, NIG_REG_XGXS_LANE_SEL_P0 + port*4, 0x0);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_PORT + port*4, 0x0);
+       val = 0;
+       if (vars->flow_ctrl & FLOW_CTRL_TX)
+               val = 1;
+       REG_WR(bp, NIG_REG_BMAC0_PAUSE_OUT_EN + port*4, val);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0x0);
+       REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0x0);
+       REG_WR(bp, NIG_REG_EMAC0_PAUSE_OUT_EN + port*4, 0x0);
+       REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0x1);
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0x1);
+
+       vars->mac_type = MAC_TYPE_BMAC;
+       return 0;
+}
+
+static void bnx2x_phy_deassert(struct link_params *params, u8 phy_flags)
+{
+       struct bnx2x *bp = params->bp;
+       u32 val;
+
+       if (phy_flags & PHY_XGXS_FLAG) {
+               DP(NETIF_MSG_LINK, "bnx2x_phy_deassert:XGXS\n");
+               val = XGXS_RESET_BITS;
+
+       } else { /* SerDes */
+               DP(NETIF_MSG_LINK, "bnx2x_phy_deassert:SerDes\n");
+               val = SERDES_RESET_BITS;
+       }
+
+       val = val << (params->port*16);
+
+       /* reset and unreset the SerDes/XGXS */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR,
+                   val);
+       udelay(500);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_SET,
+                   val);
+       bnx2x_set_phy_mdio(params);
+}
+
+void bnx2x_link_status_update(struct link_params *params,
+                           struct link_vars   *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u8 link_10g;
+       u8 port = params->port;
+
+       if (params->switch_cfg ==  SWITCH_CFG_1G)
+               vars->phy_flags = PHY_SERDES_FLAG;
+       else
+               vars->phy_flags = PHY_XGXS_FLAG;
+       vars->link_status = REG_RD(bp, params->shmem_base +
+                                         offsetof(struct shmem_region,
+                                          port_mb[port].link_status));
+
+       vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP);
+
+       if (vars->link_up) {
+               DP(NETIF_MSG_LINK, "phy link up\n");
+
+               vars->phy_link_up = 1;
+               vars->duplex = DUPLEX_FULL;
+               switch (vars->link_status &
+                                       LINK_STATUS_SPEED_AND_DUPLEX_MASK) {
+                       case LINK_10THD:
+                               vars->duplex = DUPLEX_HALF;
+                               /* fall thru */
+                       case LINK_10TFD:
+                               vars->line_speed = SPEED_10;
+                               break;
+
+                       case LINK_100TXHD:
+                               vars->duplex = DUPLEX_HALF;
+                               /* fall thru */
+                       case LINK_100T4:
+                       case LINK_100TXFD:
+                               vars->line_speed = SPEED_100;
+                               break;
+
+                       case LINK_1000THD:
+                               vars->duplex = DUPLEX_HALF;
+                               /* fall thru */
+                       case LINK_1000TFD:
+                               vars->line_speed = SPEED_1000;
+                               break;
+
+                       case LINK_2500THD:
+                               vars->duplex = DUPLEX_HALF;
+                               /* fall thru */
+                       case LINK_2500TFD:
+                               vars->line_speed = SPEED_2500;
+                               break;
+
+                       case LINK_10GTFD:
+                               vars->line_speed = SPEED_10000;
+                               break;
+
+                       case LINK_12GTFD:
+                               vars->line_speed = SPEED_12000;
+                               break;
+
+                       case LINK_12_5GTFD:
+                               vars->line_speed = SPEED_12500;
+                               break;
+
+                       case LINK_13GTFD:
+                               vars->line_speed = SPEED_13000;
+                               break;
+
+                       case LINK_15GTFD:
+                               vars->line_speed = SPEED_15000;
+                               break;
+
+                       case LINK_16GTFD:
+                               vars->line_speed = SPEED_16000;
+                               break;
+
+                       default:
+                               break;
+               }
+
+               if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED)
+                       vars->flow_ctrl |= FLOW_CTRL_TX;
+               else
+                       vars->flow_ctrl &= ~FLOW_CTRL_TX;
+
+               if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED)
+                       vars->flow_ctrl |= FLOW_CTRL_RX;
+               else
+                       vars->flow_ctrl &= ~FLOW_CTRL_RX;
+
+               if (vars->phy_flags & PHY_XGXS_FLAG) {
+                       if (vars->line_speed &&
+                           ((vars->line_speed == SPEED_10) ||
+                            (vars->line_speed == SPEED_100))) {
+                               vars->phy_flags |= PHY_SGMII_FLAG;
+                       } else {
+                               vars->phy_flags &= ~PHY_SGMII_FLAG;
+                       }
+               }
+
+               /* anything 10 and over uses the bmac */
+               link_10g = ((vars->line_speed == SPEED_10000) ||
+                           (vars->line_speed == SPEED_12000) ||
+                           (vars->line_speed == SPEED_12500) ||
+                           (vars->line_speed == SPEED_13000) ||
+                           (vars->line_speed == SPEED_15000) ||
+                           (vars->line_speed == SPEED_16000));
+               if (link_10g)
+                       vars->mac_type = MAC_TYPE_BMAC;
+               else
+                       vars->mac_type = MAC_TYPE_EMAC;
+
+       } else { /* link down */
+               DP(NETIF_MSG_LINK, "phy link down\n");
+
+               vars->phy_link_up = 0;
+
+               vars->line_speed = 0;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+
+               /* indicate no mac active */
+               vars->mac_type = MAC_TYPE_NONE;
+       }
+
+       DP(NETIF_MSG_LINK, "link_status 0x%x  phy_link_up %x\n",
+                vars->link_status, vars->phy_link_up);
+       DP(NETIF_MSG_LINK, "line_speed %x  duplex %x  flow_ctrl 0x%x\n",
+                vars->line_speed, vars->duplex, vars->flow_ctrl);
+}
+
+static void bnx2x_update_mng(struct link_params *params, u32 link_status)
+{
+       struct bnx2x *bp = params->bp;
+       REG_WR(bp, params->shmem_base +
+                  offsetof(struct shmem_region,
+                           port_mb[params->port].link_status),
+                       link_status);
+}
+
+static void bnx2x_bmac_rx_disable(struct bnx2x *bp, u8 port)
+{
+       u32 bmac_addr = port ? NIG_REG_INGRESS_BMAC1_MEM :
+               NIG_REG_INGRESS_BMAC0_MEM;
+       u32 wb_data[2];
+       u32 nig_bmac_enable = REG_RD(bp, NIG_REG_BMAC0_REGS_OUT_EN +
+                                        port*4);
+
+       /* Only if the bmac is out of reset */
+       if (REG_RD(bp, MISC_REG_RESET_REG_2) &
+                       (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port) &&
+           nig_bmac_enable) {
+
+               /* Clear Rx Enable bit in BMAC_CONTROL register */
+               REG_RD_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL,
+                           wb_data, 2);
+               wb_data[0] &= ~BMAC_CONTROL_RX_ENABLE;
+               REG_WR_DMAE(bp, bmac_addr + BIGMAC_REGISTER_BMAC_CONTROL,
+                           wb_data, 2);
+
+               msleep(1);
+       }
+}
+
+static u8 bnx2x_pbf_update(struct link_params *params, u32 flow_ctrl,
+                        u32 line_speed)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u32 init_crd, crd;
+       u32 count = 1000;
+
+       /* disable port */
+       REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x1);
+
+       /* wait for init credit */
+       init_crd = REG_RD(bp, PBF_REG_P0_INIT_CRD + port*4);
+       crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
+       DP(NETIF_MSG_LINK, "init_crd 0x%x  crd 0x%x\n", init_crd, crd);
+
+       while ((init_crd != crd) && count) {
+               msleep(5);
+
+               crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
+               count--;
+       }
+       crd = REG_RD(bp, PBF_REG_P0_CREDIT + port*8);
+       if (init_crd != crd) {
+               DP(NETIF_MSG_LINK, "BUG! init_crd 0x%x != crd 0x%x\n",
+                         init_crd, crd);
+               return -EINVAL;
+       }
+
+       if (flow_ctrl & FLOW_CTRL_RX ||
+           line_speed == SPEED_10 ||
+           line_speed == SPEED_100 ||
+           line_speed == SPEED_1000 ||
+           line_speed == SPEED_2500) {
+               REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 1);
+               /* update threshold */
+               REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, 0);
+               /* update init credit */
+               init_crd = 778;         /* (800-18-4) */
+
+       } else {
+               u32 thresh = (ETH_MAX_JUMBO_PACKET_SIZE +
+                             ETH_OVREHEAD)/16;
+               REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 0);
+               /* update threshold */
+               REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, thresh);
+               /* update init credit */
+               switch (line_speed) {
+               case SPEED_10000:
+                       init_crd = thresh + 553 - 22;
+                       break;
+
+               case SPEED_12000:
+                       init_crd = thresh + 664 - 22;
+                       break;
+
+               case SPEED_13000:
+                       init_crd = thresh + 742 - 22;
+                       break;
+
+               case SPEED_16000:
+                       init_crd = thresh + 778 - 22;
+                       break;
+               default:
+                       DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n",
+                                 line_speed);
+                       return -EINVAL;
+                       break;
+               }
+       }
+       REG_WR(bp, PBF_REG_P0_INIT_CRD + port*4, init_crd);
+       DP(NETIF_MSG_LINK, "PBF updated to speed %d credit %d\n",
+                line_speed, init_crd);
+
+       /* probe the credit changes */
+       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x1);
+       msleep(5);
+       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0x0);
+
+       /* enable port */
+       REG_WR(bp, PBF_REG_DISABLE_NEW_TASK_PROC_P0 + port*4, 0x0);
+       return 0;
+}
+
+static u32 bnx2x_get_emac_base(u32 ext_phy_type, u8 port)
+{
+       u32 emac_base;
+       switch (ext_phy_type) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+               emac_base = GRCBASE_EMAC0;
+               break;
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+               emac_base = (port) ? GRCBASE_EMAC0 : GRCBASE_EMAC1;
+               break;
+       default:
+               emac_base = (port) ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+               break;
+       }
+       return emac_base;
+
+}
+
+u8 bnx2x_cl45_write(struct bnx2x *bp, u8 port, u32 ext_phy_type,
+                 u8 phy_addr, u8 devad, u16 reg, u16 val)
+{
+       u32 tmp, saved_mode;
+       u8 i, rc = 0;
+       u32 mdio_ctrl = bnx2x_get_emac_base(ext_phy_type, port);
+
+       /* set clause 45 mode, slow down the MDIO clock to 2.5MHz
+        * (a value of 49==0x31) and make sure that the AUTO poll is off
+        */
+       saved_mode = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
+       tmp = saved_mode & ~(EMAC_MDIO_MODE_AUTO_POLL |
+                            EMAC_MDIO_MODE_CLOCK_CNT);
+       tmp |= (EMAC_MDIO_MODE_CLAUSE_45 |
+               (49 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT));
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, tmp);
+       REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
+       udelay(40);
+
+       /* address */
+
+       tmp = ((phy_addr << 21) | (devad << 16) | reg |
+              EMAC_MDIO_COMM_COMMAND_ADDRESS |
+              EMAC_MDIO_COMM_START_BUSY);
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);
+
+       for (i = 0; i < 50; i++) {
+               udelay(10);
+
+               tmp = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
+               if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {
+                       udelay(5);
+                       break;
+               }
+       }
+       if (tmp & EMAC_MDIO_COMM_START_BUSY) {
+               DP(NETIF_MSG_LINK, "write phy register failed\n");
+               rc = -EFAULT;
+       } else {
+               /* data */
+               tmp = ((phy_addr << 21) | (devad << 16) | val |
+                      EMAC_MDIO_COMM_COMMAND_WRITE_45 |
+                      EMAC_MDIO_COMM_START_BUSY);
+               REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, tmp);
+
+               for (i = 0; i < 50; i++) {
+                       udelay(10);
+
+                       tmp = REG_RD(bp, mdio_ctrl +
+                                        EMAC_REG_EMAC_MDIO_COMM);
+                       if (!(tmp & EMAC_MDIO_COMM_START_BUSY)) {
+                               udelay(5);
+                               break;
+                       }
+               }
+               if (tmp & EMAC_MDIO_COMM_START_BUSY) {
+                       DP(NETIF_MSG_LINK, "write phy register failed\n");
+                       rc = -EFAULT;
+               }
+       }
+
+       /* Restore the saved mode */
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, saved_mode);
+
+       return rc;
+}
+
+u8 bnx2x_cl45_read(struct bnx2x *bp, u8 port, u32 ext_phy_type,
+                u8 phy_addr, u8 devad, u16 reg, u16 *ret_val)
+{
+       u32 val, saved_mode;
+       u16 i;
+       u8 rc = 0;
+
+       u32 mdio_ctrl = bnx2x_get_emac_base(ext_phy_type, port);
+       /* set clause 45 mode, slow down the MDIO clock to 2.5MHz
+        * (a value of 49==0x31) and make sure that the AUTO poll is off
+        */
+       saved_mode = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
+       val = saved_mode & ((EMAC_MDIO_MODE_AUTO_POLL |
+                            EMAC_MDIO_MODE_CLOCK_CNT));
+       val |= (EMAC_MDIO_MODE_CLAUSE_45 |
+               (49 << EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT));
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, val);
+       REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE);
+       udelay(40);
+
+       /* address */
+       val = ((phy_addr << 21) | (devad << 16) | reg |
+              EMAC_MDIO_COMM_COMMAND_ADDRESS |
+              EMAC_MDIO_COMM_START_BUSY);
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);
+
+       for (i = 0; i < 50; i++) {
+               udelay(10);
+
+               val = REG_RD(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM);
+               if (!(val & EMAC_MDIO_COMM_START_BUSY)) {
+                       udelay(5);
+                       break;
+               }
+       }
+       if (val & EMAC_MDIO_COMM_START_BUSY) {
+               DP(NETIF_MSG_LINK, "read phy register failed\n");
+
+               *ret_val = 0;
+               rc = -EFAULT;
+
+       } else {
+               /* data */
+               val = ((phy_addr << 21) | (devad << 16) |
+                      EMAC_MDIO_COMM_COMMAND_READ_45 |
+                      EMAC_MDIO_COMM_START_BUSY);
+               REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_COMM, val);
+
+               for (i = 0; i < 50; i++) {
+                       udelay(10);
+
+                       val = REG_RD(bp, mdio_ctrl +
+                                         EMAC_REG_EMAC_MDIO_COMM);
+                       if (!(val & EMAC_MDIO_COMM_START_BUSY)) {
+                               *ret_val = (u16)(val & EMAC_MDIO_COMM_DATA);
+                               break;
+                       }
+               }
+               if (val & EMAC_MDIO_COMM_START_BUSY) {
+                       DP(NETIF_MSG_LINK, "read phy register failed\n");
+
+                       *ret_val = 0;
+                       rc = -EFAULT;
+               }
+       }
+
+       /* Restore the saved mode */
+       REG_WR(bp, mdio_ctrl + EMAC_REG_EMAC_MDIO_MODE, saved_mode);
+
+       return rc;
+}
+
+static void bnx2x_set_aer_mmd(struct link_params *params,
+                           struct link_vars   *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u32 ser_lane;
+       u16 offset;
+
+       ser_lane = ((params->lane_config &
+                    PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
+                    PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
+
+       offset = (vars->phy_flags & PHY_XGXS_FLAG) ?
+               (params->phy_addr + ser_lane) : 0;
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_AER_BLOCK,
+                             MDIO_AER_BLOCK_AER_REG, 0x3800 + offset);
+}
+
+static void bnx2x_set_master_ln(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u16 new_master_ln, ser_lane;
+       ser_lane =  ((params->lane_config &
+                    PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
+                    PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
+
+       /* set the master_ln for AN */
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_XGXS_BLOCK2,
+                             MDIO_XGXS_BLOCK2_TEST_MODE_LANE,
+                             &new_master_ln);
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_XGXS_BLOCK2 ,
+                             MDIO_XGXS_BLOCK2_TEST_MODE_LANE,
+                             (new_master_ln | ser_lane));
+}
+
+static u8 bnx2x_reset_unicore(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u16 mii_control;
+       u16 i;
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control);
+
+       /* reset the unicore */
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL,
+                             (mii_control |
+                              MDIO_COMBO_IEEO_MII_CONTROL_RESET));
+
+       /* wait for the reset to self clear */
+       for (i = 0; i < MDIO_ACCESS_TIMEOUT; i++) {
+               udelay(5);
+
+               /* the reset erased the previous bank value */
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL,
+                             &mii_control);
+
+               if (!(mii_control & MDIO_COMBO_IEEO_MII_CONTROL_RESET)) {
+                       udelay(5);
+                       return 0;
+               }
+       }
+
+       DP(NETIF_MSG_LINK, "BUG! XGXS is still in reset!\n");
+       return -EINVAL;
+
+}
+
+static void bnx2x_set_swap_lanes(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       /* Each two bits represents a lane number:
+          No swap is 0123 => 0x1b no need to enable the swap */
+       u16 ser_lane, rx_lane_swap, tx_lane_swap;
+
+       ser_lane = ((params->lane_config &
+                        PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
+                       PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
+       rx_lane_swap = ((params->lane_config &
+                            PORT_HW_CFG_LANE_SWAP_CFG_RX_MASK) >>
+                           PORT_HW_CFG_LANE_SWAP_CFG_RX_SHIFT);
+       tx_lane_swap = ((params->lane_config &
+                            PORT_HW_CFG_LANE_SWAP_CFG_TX_MASK) >>
+                           PORT_HW_CFG_LANE_SWAP_CFG_TX_SHIFT);
+
+       if (rx_lane_swap != 0x1b) {
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                   MDIO_REG_BANK_XGXS_BLOCK2,
+                                   MDIO_XGXS_BLOCK2_RX_LN_SWAP,
+                                   (rx_lane_swap |
+                                   MDIO_XGXS_BLOCK2_RX_LN_SWAP_ENABLE |
+                                   MDIO_XGXS_BLOCK2_RX_LN_SWAP_FORCE_ENABLE));
+       } else {
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_XGXS_BLOCK2,
+                                     MDIO_XGXS_BLOCK2_RX_LN_SWAP, 0);
+       }
+
+       if (tx_lane_swap != 0x1b) {
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_XGXS_BLOCK2,
+                                     MDIO_XGXS_BLOCK2_TX_LN_SWAP,
+                                     (tx_lane_swap |
+                                      MDIO_XGXS_BLOCK2_TX_LN_SWAP_ENABLE));
+       } else {
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_XGXS_BLOCK2,
+                                     MDIO_XGXS_BLOCK2_TX_LN_SWAP, 0);
+       }
+}
+
+static void bnx2x_set_parallel_detection(struct link_params *params,
+                                      u8                phy_flags)
+{
+       struct bnx2x *bp = params->bp;
+       u16 control2;
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
+                             &control2);
+
+
+       control2 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
+
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL2,
+                             control2);
+
+       if (phy_flags & PHY_XGXS_FLAG) {
+               DP(NETIF_MSG_LINK, "XGXS\n");
+
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                               MDIO_REG_BANK_10G_PARALLEL_DETECT,
+                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK,
+                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT);
+
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                               MDIO_REG_BANK_10G_PARALLEL_DETECT,
+                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL,
+                               &control2);
+
+
+               control2 |=
+                   MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN;
+
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                               MDIO_REG_BANK_10G_PARALLEL_DETECT,
+                               MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL,
+                               control2);
+
+               /* Disable parallel detection of HiG */
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                               MDIO_REG_BANK_XGXS_BLOCK2,
+                               MDIO_XGXS_BLOCK2_UNICORE_MODE_10G,
+                               MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_CX4_XGXS |
+                               MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_HIGIG_XGXS);
+       }
+}
+
+static void bnx2x_set_autoneg(struct link_params *params,
+                           struct link_vars   *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u16 reg_val;
+
+       /* CL37 Autoneg */
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL, &reg_val);
+
+       /* CL37 Autoneg Enabled */
+       if (vars->line_speed == SPEED_AUTO_NEG)
+               reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_AN_EN;
+       else /* CL37 Autoneg Disabled */
+               reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
+                            MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN);
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL, reg_val);
+
+       /* Enable/Disable Autodetection */
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, &reg_val);
+       reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN;
+       if (vars->line_speed == SPEED_AUTO_NEG)
+               reg_val |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET;
+       else
+               reg_val &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET;
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL1, reg_val);
+
+       /* Enable TetonII and BAM autoneg */
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_BAM_NEXT_PAGE,
+                             MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL,
+                         &reg_val);
+       if (vars->line_speed == SPEED_AUTO_NEG) {
+               /* Enable BAM aneg Mode and TetonII aneg Mode */
+               reg_val |= (MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE |
+                           MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN);
+       } else {
+               /* TetonII and BAM Autoneg Disabled */
+               reg_val &= ~(MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE |
+                            MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN);
+       }
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_BAM_NEXT_PAGE,
+                             MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL,
+                             reg_val);
+
+       /* CL73 Autoneg Disabled */
+       reg_val = 0;
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_CL73_IEEEB0,
+                             MDIO_CL73_IEEEB0_CL73_AN_CONTROL, reg_val);
+}
+
+/* program SerDes, forced speed */
+static void bnx2x_program_serdes(struct link_params *params,
+                              struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u16 reg_val;
+
+       /* program duplex, disable autoneg */
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL, &reg_val);
+       reg_val &= ~(MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX |
+                    MDIO_COMBO_IEEO_MII_CONTROL_AN_EN);
+       if (params->req_duplex == DUPLEX_FULL)
+               reg_val |= MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX;
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL, reg_val);
+
+       /* program speed
+          - needed only if the speed is greater than 1G (2.5G or 10G) */
+       CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_SERDES_DIGITAL,
+                                     MDIO_SERDES_DIGITAL_MISC1, &reg_val);
+       /* clearing the speed value before setting the right speed */
+       DP(NETIF_MSG_LINK, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x\n", reg_val);
+
+       reg_val &= ~(MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK |
+                    MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL);
+
+       if (!((vars->line_speed == SPEED_1000) ||
+             (vars->line_speed == SPEED_100) ||
+             (vars->line_speed == SPEED_10))) {
+
+               reg_val |= (MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M |
+                           MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL);
+               if (vars->line_speed == SPEED_10000)
+                       reg_val |=
+                               MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4;
+               if (vars->line_speed == SPEED_13000)
+                       reg_val |=
+                               MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_13G;
+       }
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_SERDES_DIGITAL,
+                                     MDIO_SERDES_DIGITAL_MISC1, reg_val);
+
+}
+
+static void bnx2x_set_brcm_cl37_advertisment(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u16 val = 0;
+
+       /* configure the 48 bits for BAM AN */
+
+       /* set extended capabilities */
+       if (params->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G)
+               val |= MDIO_OVER_1G_UP1_2_5G;
+       if (params->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)
+               val |= MDIO_OVER_1G_UP1_10G;
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_OVER_1G,
+                             MDIO_OVER_1G_UP1, val);
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_OVER_1G,
+                             MDIO_OVER_1G_UP3, 0);
+}
+
+static void bnx2x_calc_ieee_aneg_adv(struct link_params *params, u32 *ieee_fc)
+{
+       *ieee_fc = MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX;
+       /* resolve pause mode and advertisement
+        * Please refer to Table 28B-3 of the 802.3ab-1999 spec */
+
+       switch (params->req_flow_ctrl) {
+       case FLOW_CTRL_AUTO:
+               if (params->req_fc_auto_adv == FLOW_CTRL_BOTH) {
+                       *ieee_fc |=
+                            MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
+               } else {
+                       *ieee_fc |=
+                      MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
+               }
+               break;
+       case FLOW_CTRL_TX:
+               *ieee_fc |=
+                      MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
+               break;
+
+       case FLOW_CTRL_RX:
+       case FLOW_CTRL_BOTH:
+               *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
+               break;
+
+       case FLOW_CTRL_NONE:
+       default:
+               *ieee_fc |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE;
+               break;
+       }
+}
+
+static void bnx2x_set_ieee_aneg_advertisment(struct link_params *params,
+                                          u32 ieee_fc)
+{
+       struct bnx2x *bp = params->bp;
+       /* for AN, we are always publishing full duplex */
+
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_AUTO_NEG_ADV, (u16)ieee_fc);
+}
+
+static void bnx2x_restart_autoneg(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u16 mii_control;
+       DP(NETIF_MSG_LINK, "bnx2x_restart_autoneg\n");
+       /* Enable and restart BAM/CL37 aneg */
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL,
+                             &mii_control);
+       DP(NETIF_MSG_LINK,
+                "bnx2x_restart_autoneg mii_control before = 0x%x\n",
+                mii_control);
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_COMBO_IEEE0,
+                             MDIO_COMBO_IEEE0_MII_CONTROL,
+                             (mii_control |
+                              MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
+                              MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN));
+}
+
+static void bnx2x_initialize_sgmii_process(struct link_params *params,
+                                        struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u16 control1;
+
+       /* in SGMII mode, the unicore is always slave */
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL1,
+                     &control1);
+       control1 |= MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT;
+       /* set sgmii mode (and not fiber) */
+       control1 &= ~(MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE |
+                     MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET |
+                     MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE);
+       CL45_WR_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_SERDES_DIGITAL,
+                             MDIO_SERDES_DIGITAL_A_1000X_CONTROL1,
+                             control1);
+
+       /* if forced speed */
+       if (!(vars->line_speed == SPEED_AUTO_NEG)) {
+               /* set speed, disable autoneg */
+               u16 mii_control;
+
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_COMBO_IEEE0,
+                                     MDIO_COMBO_IEEE0_MII_CONTROL,
+                                     &mii_control);
+               mii_control &= ~(MDIO_COMBO_IEEO_MII_CONTROL_AN_EN |
+                                MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK|
+                                MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX);
+
+               switch (vars->line_speed) {
+               case SPEED_100:
+                       mii_control |=
+                               MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100;
+                       break;
+               case SPEED_1000:
+                       mii_control |=
+                               MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000;
+                       break;
+               case SPEED_10:
+                       /* there is nothing to set for 10M */
+                       break;
+               default:
+                       /* invalid speed for SGMII */
+                       DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n",
+                                 vars->line_speed);
+                       break;
+               }
+
+               /* setting the full duplex */
+               if (params->req_duplex == DUPLEX_FULL)
+                       mii_control |=
+                               MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX;
+               CL45_WR_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_COMBO_IEEE0,
+                                     MDIO_COMBO_IEEE0_MII_CONTROL,
+                                     mii_control);
+
+       } else { /* AN mode */
+               /* enable and restart AN */
+               bnx2x_restart_autoneg(params);
+       }
+}
+
+
+/*
+ * link management
+ */
+
+static void bnx2x_pause_resolve(struct link_vars *vars, u32 pause_result)
+{                                              /*  LD      LP   */
+       switch (pause_result) {                 /* ASYM P ASYM P */
+       case 0xb:                               /*   1  0   1  1 */
+               vars->flow_ctrl = FLOW_CTRL_TX;
+               break;
+
+       case 0xe:                               /*   1  1   1  0 */
+               vars->flow_ctrl = FLOW_CTRL_RX;
+               break;
+
+       case 0x5:                               /*   0  1   0  1 */
+       case 0x7:                               /*   0  1   1  1 */
+       case 0xd:                               /*   1  1   0  1 */
+       case 0xf:                               /*   1  1   1  1 */
+               vars->flow_ctrl = FLOW_CTRL_BOTH;
+               break;
+
+       default:
+               break;
+       }
+}
+
+static u8 bnx2x_ext_phy_resove_fc(struct link_params *params,
+                                 struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u8 ext_phy_addr;
+       u16 ld_pause;   /* local */
+       u16 lp_pause;   /* link partner */
+       u16 an_complete; /* AN complete */
+       u16 pause_result;
+       u8 ret = 0;
+       u32 ext_phy_type;
+       u8 port = params->port;
+       ext_phy_addr = ((params->ext_phy_config &
+                        PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+       ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       /* read twice */
+
+       bnx2x_cl45_read(bp, port,
+                     ext_phy_type,
+                     ext_phy_addr,
+                     MDIO_AN_DEVAD,
+                     MDIO_AN_REG_STATUS, &an_complete);
+       bnx2x_cl45_read(bp, port,
+                     ext_phy_type,
+                     ext_phy_addr,
+                     MDIO_AN_DEVAD,
+                     MDIO_AN_REG_STATUS, &an_complete);
+
+       if (an_complete & MDIO_AN_REG_STATUS_AN_COMPLETE) {
+               ret = 1;
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_AN_DEVAD,
+                             MDIO_AN_REG_ADV_PAUSE, &ld_pause);
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_AN_DEVAD,
+                             MDIO_AN_REG_LP_AUTO_NEG, &lp_pause);
+               pause_result = (ld_pause &
+                               MDIO_AN_REG_ADV_PAUSE_MASK) >> 8;
+               pause_result |= (lp_pause &
+                                MDIO_AN_REG_ADV_PAUSE_MASK) >> 10;
+               DP(NETIF_MSG_LINK, "Ext PHY pause result 0x%x \n",
+                  pause_result);
+               bnx2x_pause_resolve(vars, pause_result);
+               if (vars->flow_ctrl == FLOW_CTRL_NONE &&
+                    ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) {
+                       bnx2x_cl45_read(bp, port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_AN_DEVAD,
+                                     MDIO_AN_REG_CL37_FC_LD, &ld_pause);
+
+                       bnx2x_cl45_read(bp, port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_AN_DEVAD,
+                                     MDIO_AN_REG_CL37_FC_LP, &lp_pause);
+                       pause_result = (ld_pause &
+                               MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 5;
+                       pause_result |= (lp_pause &
+                               MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) >> 7;
+
+                       bnx2x_pause_resolve(vars, pause_result);
+                       DP(NETIF_MSG_LINK, "Ext PHY CL37 pause result 0x%x \n",
+                                pause_result);
+               }
+       }
+       return ret;
+}
+
+
+static void bnx2x_flow_ctrl_resolve(struct link_params *params,
+                                 struct link_vars *vars,
+                                 u32 gp_status)
+{
+       struct bnx2x *bp = params->bp;
+       u16 ld_pause;   /* local driver */
+       u16 lp_pause;   /* link partner */
+       u16 pause_result;
+
+       vars->flow_ctrl = FLOW_CTRL_NONE;
+
+       /* resolve from gp_status in case of AN complete and not sgmii */
+       if ((params->req_flow_ctrl == FLOW_CTRL_AUTO) &&
+           (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) &&
+           (!(vars->phy_flags & PHY_SGMII_FLAG)) &&
+           (XGXS_EXT_PHY_TYPE(params->ext_phy_config) ==
+            PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT)) {
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_COMBO_IEEE0,
+                                     MDIO_COMBO_IEEE0_AUTO_NEG_ADV,
+                                     &ld_pause);
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                       MDIO_REG_BANK_COMBO_IEEE0,
+                       MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1,
+                       &lp_pause);
+               pause_result = (ld_pause &
+                               MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>5;
+               pause_result |= (lp_pause &
+                                MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK)>>7;
+               DP(NETIF_MSG_LINK, "pause_result 0x%x\n", pause_result);
+               bnx2x_pause_resolve(vars, pause_result);
+       } else if ((params->req_flow_ctrl == FLOW_CTRL_AUTO) &&
+                  (bnx2x_ext_phy_resove_fc(params, vars))) {
+               return;
+       } else {
+               if (params->req_flow_ctrl == FLOW_CTRL_AUTO)
+                       vars->flow_ctrl = params->req_fc_auto_adv;
+               else
+                       vars->flow_ctrl = params->req_flow_ctrl;
+       }
+       DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl);
+}
+
+
+static u8 bnx2x_link_settings_status(struct link_params *params,
+                                     struct link_vars *vars,
+                                     u32 gp_status)
+{
+       struct bnx2x *bp = params->bp;
+       u16 new_line_speed;
+       u8 rc = 0;
+       vars->link_status = 0;
+
+
+       if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) {
+               DP(NETIF_MSG_LINK, "phy link up gp_status=0x%x\n",
+                        gp_status);
+
+               vars->phy_link_up = 1;
+               vars->link_status |= LINK_STATUS_LINK_UP;
+
+               if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS)
+                       vars->duplex = DUPLEX_FULL;
+               else
+                       vars->duplex = DUPLEX_HALF;
+
+               bnx2x_flow_ctrl_resolve(params, vars, gp_status);
+
+               switch (gp_status & GP_STATUS_SPEED_MASK) {
+               case GP_STATUS_10M:
+                       new_line_speed = SPEED_10;
+                       if (vars->duplex == DUPLEX_FULL)
+                               vars->link_status |= LINK_10TFD;
+                       else
+                               vars->link_status |= LINK_10THD;
+                       break;
+
+               case GP_STATUS_100M:
+                       new_line_speed = SPEED_100;
+                       if (vars->duplex == DUPLEX_FULL)
+                               vars->link_status |= LINK_100TXFD;
+                       else
+                               vars->link_status |= LINK_100TXHD;
+                       break;
+
+               case GP_STATUS_1G:
+               case GP_STATUS_1G_KX:
+                       new_line_speed = SPEED_1000;
+                       if (vars->duplex == DUPLEX_FULL)
+                               vars->link_status |= LINK_1000TFD;
+                       else
+                               vars->link_status |= LINK_1000THD;
+                       break;
+
+               case GP_STATUS_2_5G:
+                       new_line_speed = SPEED_2500;
+                       if (vars->duplex == DUPLEX_FULL)
+                               vars->link_status |= LINK_2500TFD;
+                       else
+                               vars->link_status |= LINK_2500THD;
+                       break;
+
+               case GP_STATUS_5G:
+               case GP_STATUS_6G:
+                       DP(NETIF_MSG_LINK,
+                                "link speed unsupported  gp_status 0x%x\n",
+                                 gp_status);
+                       return -EINVAL;
+                       break;
+               case GP_STATUS_10G_KX4:
+               case GP_STATUS_10G_HIG:
+               case GP_STATUS_10G_CX4:
+                       new_line_speed = SPEED_10000;
+                       vars->link_status |= LINK_10GTFD;
+                       break;
+
+               case GP_STATUS_12G_HIG:
+                       new_line_speed = SPEED_12000;
+                       vars->link_status |= LINK_12GTFD;
+                       break;
+
+               case GP_STATUS_12_5G:
+                       new_line_speed = SPEED_12500;
+                       vars->link_status |= LINK_12_5GTFD;
+                       break;
+
+               case GP_STATUS_13G:
+                       new_line_speed = SPEED_13000;
+                       vars->link_status |= LINK_13GTFD;
+                       break;
+
+               case GP_STATUS_15G:
+                       new_line_speed = SPEED_15000;
+                       vars->link_status |= LINK_15GTFD;
+                       break;
+
+               case GP_STATUS_16G:
+                       new_line_speed = SPEED_16000;
+                       vars->link_status |= LINK_16GTFD;
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK,
+                                 "link speed unsupported gp_status 0x%x\n",
+                                 gp_status);
+               return -EINVAL;
+                       break;
+               }
+
+               /* Upon link speed change set the NIG into drain mode.
+               Comes to deals with possible FIFO glitch due to clk change
+               when speed is decreased without link down indicator */
+               if (new_line_speed != vars->line_speed) {
+                       REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE
+                                   + params->port*4, 0);
+               }
+               vars->line_speed = new_line_speed;
+               vars->link_status |= LINK_STATUS_SERDES_LINK;
+
+               if ((params->req_line_speed == SPEED_AUTO_NEG) &&
+                   ((XGXS_EXT_PHY_TYPE(params->ext_phy_config) ==
+                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) ||
+                   (XGXS_EXT_PHY_TYPE(params->ext_phy_config) ==
+                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) ||
+                   (XGXS_EXT_PHY_TYPE(params->ext_phy_config) ==
+                    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726))) {
+                       vars->autoneg = AUTO_NEG_ENABLED;
+
+                       if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) {
+                               vars->autoneg |= AUTO_NEG_COMPLETE;
+                               vars->link_status |=
+                                       LINK_STATUS_AUTO_NEGOTIATE_COMPLETE;
+                       }
+
+                       vars->autoneg |= AUTO_NEG_PARALLEL_DETECTION_USED;
+                       vars->link_status |=
+                               LINK_STATUS_PARALLEL_DETECTION_USED;
+
+               }
+               if (vars->flow_ctrl & FLOW_CTRL_TX)
+                       vars->link_status |=
+                               LINK_STATUS_TX_FLOW_CONTROL_ENABLED;
+
+               if (vars->flow_ctrl & FLOW_CTRL_RX)
+                       vars->link_status |=
+                               LINK_STATUS_RX_FLOW_CONTROL_ENABLED;
+
+       } else { /* link_down */
+               DP(NETIF_MSG_LINK, "phy link down\n");
+
+               vars->phy_link_up = 0;
+
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+               vars->autoneg = AUTO_NEG_DISABLED;
+               vars->mac_type = MAC_TYPE_NONE;
+       }
+
+       DP(NETIF_MSG_LINK, "gp_status 0x%x  phy_link_up %x line_speed %x \n",
+                gp_status, vars->phy_link_up, vars->line_speed);
+       DP(NETIF_MSG_LINK, "duplex %x  flow_ctrl 0x%x"
+                " autoneg 0x%x\n",
+                vars->duplex,
+                vars->flow_ctrl, vars->autoneg);
+       DP(NETIF_MSG_LINK, "link_status 0x%x\n", vars->link_status);
+
+       return rc;
+}
+
+static void bnx2x_set_gmii_tx_driver(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u16 lp_up2;
+       u16 tx_driver;
+       u16 bank;
+
+       /* read precomp */
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_OVER_1G,
+                             MDIO_OVER_1G_LP_UP2, &lp_up2);
+
+       /* bits [10:7] at lp_up2, positioned at [15:12] */
+       lp_up2 = (((lp_up2 & MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK) >>
+                  MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT) <<
+                 MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT);
+
+       if (lp_up2 == 0)
+               return;
+
+       for (bank = MDIO_REG_BANK_TX0; bank <= MDIO_REG_BANK_TX3;
+             bank += (MDIO_REG_BANK_TX1 - MDIO_REG_BANK_TX0)) {
+               CL45_RD_OVER_CL22(bp, params->port,
+                                     params->phy_addr,
+                                     bank,
+                                     MDIO_TX0_TX_DRIVER, &tx_driver);
+
+               /* replace tx_driver bits [15:12] */
+               if (lp_up2 !=
+                   (tx_driver & MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK)) {
+                       tx_driver &= ~MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK;
+                       tx_driver |= lp_up2;
+                       CL45_WR_OVER_CL22(bp, params->port,
+                                             params->phy_addr,
+                                             bank,
+                                             MDIO_TX0_TX_DRIVER, tx_driver);
+               }
+       }
+}
+
+static u8 bnx2x_emac_program(struct link_params *params,
+                          u32 line_speed, u32 duplex)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u16 mode = 0;
+
+       DP(NETIF_MSG_LINK, "setting link speed & duplex\n");
+       bnx2x_bits_dis(bp, GRCBASE_EMAC0 + port*0x400 +
+                    EMAC_REG_EMAC_MODE,
+                    (EMAC_MODE_25G_MODE |
+                    EMAC_MODE_PORT_MII_10M |
+                    EMAC_MODE_HALF_DUPLEX));
+       switch (line_speed) {
+       case SPEED_10:
+               mode |= EMAC_MODE_PORT_MII_10M;
+               break;
+
+       case SPEED_100:
+               mode |= EMAC_MODE_PORT_MII;
+               break;
+
+       case SPEED_1000:
+               mode |= EMAC_MODE_PORT_GMII;
+               break;
+
+       case SPEED_2500:
+               mode |= (EMAC_MODE_25G_MODE | EMAC_MODE_PORT_GMII);
+               break;
+
+       default:
+               /* 10G not valid for EMAC */
+               DP(NETIF_MSG_LINK, "Invalid line_speed 0x%x\n", line_speed);
+               return -EINVAL;
+       }
+
+       if (duplex == DUPLEX_HALF)
+               mode |= EMAC_MODE_HALF_DUPLEX;
+       bnx2x_bits_en(bp,
+                   GRCBASE_EMAC0 + port*0x400 + EMAC_REG_EMAC_MODE,
+                   mode);
+
+       bnx2x_set_led(bp, params->port, LED_MODE_OPER,
+                   line_speed, params->hw_led_mode, params->chip_id);
+       return 0;
+}
+
+/*****************************************************************************/
+/*                          External Phy section                            */
+/*****************************************************************************/
+static void bnx2x_hw_reset(struct bnx2x *bp, u8 port)
+{
+       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                      MISC_REGISTERS_GPIO_OUTPUT_LOW, port);
+       msleep(1);
+       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                     MISC_REGISTERS_GPIO_OUTPUT_HIGH, port);
+}
+
+static void bnx2x_ext_phy_reset(struct link_params *params,
+                             struct link_vars   *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u32 ext_phy_type;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                          PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       DP(NETIF_MSG_LINK, "Port %x: bnx2x_ext_phy_reset\n", params->port);
+       ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       /* The PHY reset is controled by GPIO 1
+        * Give it 1ms of reset pulse
+        */
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+                       DP(NETIF_MSG_LINK, "XGXS Direct\n");
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+                       DP(NETIF_MSG_LINK, "XGXS 8705/8706\n");
+
+                       /* Restore normal power mode*/
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                     MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       /* HW reset */
+                       bnx2x_hw_reset(bp, params->port);
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_CTRL, 0xa040);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+
+                       /* Restore normal power mode*/
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                         MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                                         MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_CTRL,
+                                      1<<15);
+
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+                       /* Unset Low Power Mode and SW reset */
+                       /* Restore normal power mode*/
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                     MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       DP(NETIF_MSG_LINK, "XGXS 8072\n");
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_CTRL,
+                                      1<<15);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+                       {
+
+                       /* Restore normal power mode*/
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                         MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                                         MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       DP(NETIF_MSG_LINK, "XGXS 8073\n");
+                       }
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       DP(NETIF_MSG_LINK, "XGXS SFX7101\n");
+
+                       /* Restore normal power mode*/
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                     MISC_REGISTERS_GPIO_OUTPUT_HIGH,
+                                         params->port);
+
+                       /* HW reset */
+                       bnx2x_hw_reset(bp, params->port);
+
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+                       DP(NETIF_MSG_LINK, "XGXS PHY Failure detected\n");
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
+                          params->ext_phy_config);
+                       break;
+               }
+
+       } else { /* SerDes */
+               ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
+                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
+                       break;
+
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
+                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
+                       bnx2x_hw_reset(bp, params->port);
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK,
+                                "BAD SerDes ext_phy_config 0x%x\n",
+                                params->ext_phy_config);
+                       break;
+               }
+       }
+}
+
+static void bnx2x_bcm8072_external_rom_boot(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       u16 fw_ver1, fw_ver2;
+
+       /* Need to wait 200ms after reset */
+       msleep(200);
+       /* Boot port from external ROM
+        * Set ser_boot_ctl bit in the MISC_CTRL1 register
+        */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                           MDIO_PMA_DEVAD,
+                           MDIO_PMA_REG_MISC_CTRL1, 0x0001);
+
+       /* Reset internal microprocessor */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                         MDIO_PMA_DEVAD,
+                         MDIO_PMA_REG_GEN_CTRL,
+                         MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP);
+       /* set micro reset = 0 */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                           MDIO_PMA_DEVAD,
+                           MDIO_PMA_REG_GEN_CTRL,
+                           MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET);
+       /* Reset internal microprocessor */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                         MDIO_PMA_DEVAD,
+                         MDIO_PMA_REG_GEN_CTRL,
+                         MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP);
+       /* wait for 100ms for code download via SPI port */
+       msleep(100);
+
+       /* Clear ser_boot_ctl bit */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                           MDIO_PMA_DEVAD,
+                           MDIO_PMA_REG_MISC_CTRL1, 0x0000);
+       /* Wait 100ms */
+       msleep(100);
+
+       /* Print the PHY FW version */
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                           MDIO_PMA_DEVAD,
+                           MDIO_PMA_REG_ROM_VER1, &fw_ver1);
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                           MDIO_PMA_DEVAD,
+                           MDIO_PMA_REG_ROM_VER2, &fw_ver2);
+       DP(NETIF_MSG_LINK, "8072 FW version 0x%x:0x%x\n", fw_ver1, fw_ver2);
+}
+
+static u8 bnx2x_8073_is_snr_needed(struct link_params *params)
+{
+       /* This is only required for 8073A1, version 102 only */
+
+       struct bnx2x *bp = params->bp;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u16 val;
+
+       /* Read 8073 HW revision*/
+       bnx2x_cl45_read(bp, params->port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     0xc801, &val);
+
+       if (val != 1) {
+               /* No need to workaround in 8073 A1 */
+               return 0;
+       }
+
+       bnx2x_cl45_read(bp, params->port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_ROM_VER2, &val);
+
+       /* SNR should be applied only for version 0x102 */
+       if (val != 0x102)
+               return 0;
+
+       return 1;
+}
+
+static u8 bnx2x_bcm8073_xaui_wa(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u16 val, cnt, cnt1 ;
+
+       bnx2x_cl45_read(bp, params->port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     0xc801, &val);
+
+       if (val > 0) {
+               /* No need to workaround in 8073 A1 */
+               return 0;
+       }
+       /* XAUI workaround in 8073 A0: */
+
+       /* After loading the boot ROM and restarting Autoneg,
+       poll Dev1, Reg $C820: */
+
+       for (cnt = 0; cnt < 1000; cnt++) {
+               bnx2x_cl45_read(bp, params->port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             0xc820, &val);
+                 /* If bit [14] = 0 or bit [13] = 0, continue on with
+                  system initialization (XAUI work-around not required,
+                   as these bits indicate 2.5G or 1G link up). */
+               if (!(val & (1<<14)) || !(val & (1<<13))) {
+                       DP(NETIF_MSG_LINK, "XAUI work-around not required\n");
+                       return 0;
+               } else if (!(val & (1<<15))) {
+                       DP(NETIF_MSG_LINK, "clc bit 15 went off\n");
+                        /* If bit 15 is 0, then poll Dev1, Reg $C841 until
+                         it's MSB (bit 15) goes to 1 (indicating that the
+                         XAUI workaround has completed),
+                         then continue on with system initialization.*/
+                       for (cnt1 = 0; cnt1 < 1000; cnt1++) {
+                               bnx2x_cl45_read(bp, params->port,
+                                       PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                                       ext_phy_addr,
+                                       MDIO_PMA_DEVAD,
+                                       0xc841, &val);
+                               if (val & (1<<15)) {
+                                       DP(NETIF_MSG_LINK,
+                                         "XAUI workaround has completed\n");
+                                       return 0;
+                                }
+                                msleep(3);
+                       }
+                       break;
+               }
+               msleep(3);
+       }
+       DP(NETIF_MSG_LINK, "Warning: XAUI work-around timeout !!!\n");
+       return -EINVAL;
+
+}
+
+static void bnx2x_bcm8073_external_rom_boot(struct bnx2x *bp, u8 port,
+                                         u8 ext_phy_addr)
+{
+       u16 fw_ver1, fw_ver2;
+       /* Boot port from external ROM  */
+       /* EDC grst */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      0x0001);
+
+       /* ucode reboot and rst */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      0x008c);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, 0x0001);
+
+       /* Reset internal microprocessor */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET);
+
+       /* Release srst bit */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP);
+
+       /* wait for 100ms for code download via SPI port */
+       msleep(100);
+
+       /* Clear ser_boot_ctl bit */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, 0x0000);
+
+       bnx2x_cl45_read(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_ROM_VER1, &fw_ver1);
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_ROM_VER2, &fw_ver2);
+       DP(NETIF_MSG_LINK, "8073 FW version 0x%x:0x%x\n", fw_ver1, fw_ver2);
+
+}
+
+static void bnx2x_bcm8726_external_rom_boot(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       u16 fw_ver1, fw_ver2;
+
+       /* Need to wait 100ms after reset */
+       msleep(100);
+
+       /* Set serial boot control for external load */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, 0x0001);
+
+       /* Micro controller re-boot */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP);
+
+       /* Set soft reset */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET);
+
+       /* Clear soft reset.
+       Will automatically reset micro-controller re-boot */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_GEN_CTRL,
+                      MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP);
+
+       /* wait for 100ms for microcode load */
+       msleep(100);
+
+       /* Disable serial boot control, tristates pins SS_N, SCK, MOSI, MISO */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, 0x0000);
+
+       msleep(200);
+       /* Print the PHY FW version */
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_ROM_VER1, &fw_ver1);
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_ROM_VER2, &fw_ver2);
+       DP(NETIF_MSG_LINK, "8726 FW version 0x%x:0x%x\n", fw_ver1, fw_ver2);
+}
+
+static void bnx2x_bcm8726_set_transmitter(struct link_params *params, u8 tx_en)
+{
+       struct bnx2x *bp = params->bp;
+       u16 val;
+       u8 port = params->port;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                          PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       DP(NETIF_MSG_LINK, "bnx2x_bcm8726_set_transmitter port %x tx_en:%x\n",
+                port, tx_en);
+       /* Disable transmitter */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_PHY_IDENTIFIER,
+                     &val);
+
+       if (tx_en)
+               val &= ~(1<<15);
+       else
+               val |= (1<<15);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_PHY_IDENTIFIER,
+                      val);
+}
+
+
+static u8 bnx2x_read_sfp_module_eeprom(struct link_params *params, u16 addr,
+                                    u8 byte_cnt, u8 *o_buf) {
+       struct bnx2x *bp = params->bp;
+       u16 val, i;
+       u8 port = params->port;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                          PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       if (byte_cnt > 16) {
+               DP(NETIF_MSG_LINK, "bnx2x_bcm8726_read_eeprom: byte count"
+                           " is limited to 0xf\n");
+               return -EINVAL;
+       }
+       /* Set the read command byte count */
+       bnx2x_cl45_write(bp, port,
+                      ext_phy_type,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_8726_TWO_WIRE_BYTE_CNT,
+                      (byte_cnt | 0xa000));
+
+       /* Set the read command address */
+       bnx2x_cl45_write(bp, port,
+                      ext_phy_type,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_8726_TWO_WIRE_MEM_ADDR,
+                      addr);
+
+       /* Activate read command */
+       bnx2x_cl45_write(bp, port,
+                      ext_phy_type,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_8726_TWO_WIRE_CTRL,
+                      0x2c0f);
+
+       /* Wait up to 500us for command complete status */
+       for (i = 0; i < 100; i++) {
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_8726_TWO_WIRE_CTRL, &val);
+               if ((val & MDIO_PMA_REG_8726_TWO_WIRE_CTRL_STATUS_MASK) ==
+                   MDIO_PMA_REG_8726_TWO_WIRE_STATUS_COMPLETE)
+                       break;
+               udelay(5);
+       }
+
+       if ((val & MDIO_PMA_REG_8726_TWO_WIRE_CTRL_STATUS_MASK) !=
+                   MDIO_PMA_REG_8726_TWO_WIRE_STATUS_COMPLETE) {
+               DP(NETIF_MSG_LINK, "bnx2x_bcm8726_read_eeprom: Bad status: 0x%x\n",
+                        (val & MDIO_PMA_REG_8726_TWO_WIRE_CTRL_STATUS_MASK));
+               return -EINVAL;
+       }
+
+       /* Read the buffer */
+       for (i = 0; i < byte_cnt; i++) {
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_8726_TWO_WIRE_DATA_BUF + i, &val);
+               o_buf[i] = (u8)(val & MDIO_PMA_REG_8726_TWO_WIRE_DATA_MASK);
+       }
+
+       for (i = 0; i < 100; i++) {
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_8726_TWO_WIRE_CTRL, &val);
+               if ((val & MDIO_PMA_REG_8726_TWO_WIRE_CTRL_STATUS_MASK) ==
+                   MDIO_PMA_REG_8726_TWO_WIRE_STATUS_IDLE)
+                       return 0;;
+               msleep(1);
+       }
+       return -EINVAL;
+}
+
+/* This function read the relevant field from the module ( SFP+ ),
+       and verify it is compliant with this board */
+static u8 bnx2x_verify_sfp_module(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 *str_p, *tmp_buf;
+       u16 i;
+#define COMPLIANCE_STR_CNT 5
+       u8 *compliance_str[] = {"Broadcom", "JDSU", "Molex Inc", "PICOLIGHT",
+               "FINISAR CORP.   "};
+       u8 buf[SFP_EEPROM_VENDOR_NAME_SIZE];
+       /* Passive Copper cables are allowed to participate,
+       since the module is hardwired to the copper cable */
+
+       /* First check for copper cable */
+       if (bnx2x_read_sfp_module_eeprom(params,
+                                      SFP_EEPROM_CON_TYPE_ADDR,
+                                      1,
+                                      buf) != 0) {
+               DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module: Failed to read "
+                           "from module\n");
+               return -EINVAL;
+       }
+       if (buf[0] == SFP_EEPROM_CON_TYPE_VAL_COPPER) {
+               /* Check if its active cable( includes SFP+ module)
+               of passive cable*/
+               if (bnx2x_read_sfp_module_eeprom(params,
+                                              SFP_EEPROM_FC_TX_TECH_ADDR,
+                                              1,
+                                              buf) != 0) {
+                       DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module: Failed to read "
+                               "from module\n");
+                       return -EINVAL;
+               }
+               if (buf[0] & SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE) {
+                       DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module:"
+                                   " Active Copper cable Detected."
+                                   "Proceed verification...\n");
+               } else {
+                       DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module:"
+                                   " Passive Copper cable verified\n");
+                       return 0;
+               }
+       }
+       /* In case of non copper cable or Active copper cable,
+               verify that the SFP+ module is compliant with this board*/
+       if (bnx2x_read_sfp_module_eeprom(params,
+                                      SFP_EEPROM_VENDOR_NAME_ADDR,
+                                      SFP_EEPROM_VENDOR_NAME_SIZE,
+                                      buf) != 0) {
+               DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module:"
+                           " Failed to read from module");
+               return -EINVAL;
+       }
+       for (i = 0; i < COMPLIANCE_STR_CNT; i++) {
+               str_p = compliance_str[i];
+               tmp_buf = buf;
+               while (*str_p) {
+                       if ((u8)(*tmp_buf) != (u8)(*str_p))
+                               break;
+                       str_p++;
+                       tmp_buf++;
+               }
+
+               if (!(*str_p)) {
+                       DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module: "
+                                "Module verified, index=%x.\n", i);
+                       return 0;
+               }
+       }
+       DP(NETIF_MSG_LINK, "bnx2x_verify_sfp_module: Incompliant module. "
+                   "Disable module !!!\n");
+       return -EINVAL;
+}
+
+static u8 bnx2x_bcm8726_set_limiting_mode(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 options[SFP_EEPROM_OPTIONS_SIZE];
+       u8 limiting_mode;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                          PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+       if (bnx2x_read_sfp_module_eeprom(params,
+                                      SFP_EEPROM_OPTIONS_ADDR,
+                                      SFP_EEPROM_OPTIONS_SIZE,
+                                      options) != 0) {
+               DP(NETIF_MSG_LINK, "bnx2x_bcm8726_set_limiting_mode:"
+                           " Failed to read from module");
+               return -EINVAL;
+       }
+       limiting_mode = !(options[0] &
+                         SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK);
+       if (limiting_mode) {
+               DP(NETIF_MSG_LINK, "Module options = 0x%x.Setting LIMITING MODE\n",
+                        options[0]);
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                              ext_phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_ROM_VER2,
+                              0x0044);
+       } else { /* LRM mode ( default )*/
+               DP(NETIF_MSG_LINK, "Module options = 0x%x.Setting LRM MODE\n",
+                        options[0]);
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                              ext_phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_LRM_MODE,
+                              0);
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                              ext_phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_ROM_VER2,
+                              0x123);
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                              ext_phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_MISC_CTRL0,
+                              0x4008);
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726,
+                              ext_phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_LRM_MODE,
+                              0xaaaa);
+       }
+       return 0;
+}
+
+static void bnx2x_bcm807x_force_10G(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+
+       /* Force KR or KX */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_CTRL,
+                      0x2040);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_10G_CTRL2,
+                      0x000b);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_BCM_CTRL,
+                      0x0000);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_AN_DEVAD,
+                      MDIO_AN_REG_CTRL,
+                      0x0000);
+}
+static void bnx2x_bcm8073_set_xaui_low_power_mode(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u16 val;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                            PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                           PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+
+       bnx2x_cl45_read(bp, params->port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     0xc801, &val);
+
+       if (val == 0) {
+               /* Mustn't set low power mode in 8073 A0 */
+               return;
+       }
+
+       /* Disable PLL sequencer (use read-modify-write to clear bit 13) */
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD,
+                      MDIO_XS_PLL_SEQUENCER, &val);
+       val &= ~(1<<13);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, MDIO_XS_PLL_SEQUENCER, val);
+
+       /* PLL controls */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x805E, 0x1077);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x805D, 0x0000);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x805C, 0x030B);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x805B, 0x1240);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x805A, 0x2490);
+
+       /* Tx Controls */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80A7, 0x0C74);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80A6, 0x9041);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80A5, 0x4640);
+
+       /* Rx Controls */
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80FE, 0x01C4);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80FD, 0x9249);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, 0x80FC, 0x2015);
+
+       /* Enable PLL sequencer  (use read-modify-write to set bit 13) */
+       bnx2x_cl45_read(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD,
+                      MDIO_XS_PLL_SEQUENCER, &val);
+       val |= (1<<13);
+       bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr,
+                      MDIO_XS_DEVAD, MDIO_XS_PLL_SEQUENCER, val);
+}
+
+static void bnx2x_8073_set_pause_cl37(struct link_params *params,
+                                 struct link_vars *vars)
+{
+
+       struct bnx2x *bp = params->bp;
+       u16 cl37_val;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+
+       bnx2x_cl45_read(bp, params->port,
+                     ext_phy_type,
+                     ext_phy_addr,
+                     MDIO_AN_DEVAD,
+                     MDIO_AN_REG_CL37_FC_LD, &cl37_val);
+
+       cl37_val &= ~MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
+       /* Please refer to Table 28B-3 of 802.3ab-1999 spec. */
+
+       if ((vars->ieee_fc &
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC) ==
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC) {
+               cl37_val |=  MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC;
+       }
+       if ((vars->ieee_fc &
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) ==
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) {
+               cl37_val |=  MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC;
+       }
+       if ((vars->ieee_fc &
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) ==
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
+               cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
+       }
+       DP(NETIF_MSG_LINK,
+                "Ext phy AN advertize cl37 0x%x\n", cl37_val);
+
+       bnx2x_cl45_write(bp, params->port,
+                      ext_phy_type,
+                      ext_phy_addr,
+                      MDIO_AN_DEVAD,
+                      MDIO_AN_REG_CL37_FC_LD, cl37_val);
+       msleep(500);
+}
+
+static void bnx2x_ext_phy_set_pause(struct link_params *params,
+                                 struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u16 val;
+       u8 ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+
+       /* read modify write pause advertizing */
+       bnx2x_cl45_read(bp, params->port,
+                     ext_phy_type,
+                     ext_phy_addr,
+                     MDIO_AN_DEVAD,
+                     MDIO_AN_REG_ADV_PAUSE, &val);
+
+       val &= ~MDIO_AN_REG_ADV_PAUSE_BOTH;
+
+       /* Please refer to Table 28B-3 of 802.3ab-1999 spec. */
+
+       if ((vars->ieee_fc &
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) ==
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) {
+               val |=  MDIO_AN_REG_ADV_PAUSE_ASYMMETRIC;
+       }
+       if ((vars->ieee_fc &
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) ==
+           MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) {
+               val |=
+                MDIO_AN_REG_ADV_PAUSE_PAUSE;
+       }
+       DP(NETIF_MSG_LINK,
+                "Ext phy AN advertize 0x%x\n", val);
+       bnx2x_cl45_write(bp, params->port,
+                      ext_phy_type,
+                      ext_phy_addr,
+                      MDIO_AN_DEVAD,
+                      MDIO_AN_REG_ADV_PAUSE, val);
+}
+static void bnx2x_set_preemphasis(struct link_params *params)
+{
+       u16 bank, i = 0;
+       struct bnx2x *bp = params->bp;
+
+       for (bank = MDIO_REG_BANK_RX0, i = 0; bank <= MDIO_REG_BANK_RX3;
+             bank += (MDIO_REG_BANK_RX1-MDIO_REG_BANK_RX0), i++) {
+                       CL45_WR_OVER_CL22(bp, params->port,
+                                             params->phy_addr,
+                                             bank,
+                                             MDIO_RX0_RX_EQ_BOOST,
+                                             params->xgxs_config_rx[i]);
+       }
+
+       for (bank = MDIO_REG_BANK_TX0, i = 0; bank <= MDIO_REG_BANK_TX3;
+                     bank += (MDIO_REG_BANK_TX1 - MDIO_REG_BANK_TX0), i++) {
+                       CL45_WR_OVER_CL22(bp, params->port,
+                                             params->phy_addr,
+                                             bank,
+                                             MDIO_TX0_TX_DRIVER,
+                                             params->xgxs_config_tx[i]);
+       }
+}
+
+static void bnx2x_init_internal_phy(struct link_params *params,
+                               struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       if (!(vars->phy_flags & PHY_SGMII_FLAG)) {
+               if ((params->feature_config_flags &
+                   FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED))
+                       bnx2x_set_preemphasis(params);
+
+               /* forced speed requested? */
+               if (vars->line_speed != SPEED_AUTO_NEG) {
+                       DP(NETIF_MSG_LINK, "not SGMII, no AN\n");
+
+                       /* disable autoneg */
+                       bnx2x_set_autoneg(params, vars);
+
+                       /* program speed and duplex */
+                       bnx2x_program_serdes(params, vars);
+
+               } else { /* AN_mode */
+                       DP(NETIF_MSG_LINK, "not SGMII, AN\n");
+
+                       /* AN enabled */
+                       bnx2x_set_brcm_cl37_advertisment(params);
+
+                       /* program duplex & pause advertisement (for aneg) */
+                       bnx2x_set_ieee_aneg_advertisment(params,
+                                                      vars->ieee_fc);
+
+                       /* enable autoneg */
+                       bnx2x_set_autoneg(params, vars);
+
+                       /* enable and restart AN */
+                       bnx2x_restart_autoneg(params);
+               }
+
+       } else { /* SGMII mode */
+               DP(NETIF_MSG_LINK, "SGMII\n");
+
+               bnx2x_initialize_sgmii_process(params, vars);
+       }
+}
+
+static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u32 ext_phy_type;
+       u8 ext_phy_addr;
+       u16 cnt;
+       u16 ctrl = 0;
+       u16 val = 0;
+       u8 rc = 0;
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+               ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+               ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+               /* Make sure that the soft reset is off (expect for the 8072:
+                * due to the lock, it will be done inside the specific
+                * handling)
+                */
+               if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) &&
+                  (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073)) {
+                       /* Wait for soft reset to get cleared upto 1 sec */
+                       for (cnt = 0; cnt < 1000; cnt++) {
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_PMA_DEVAD,
+                                             MDIO_PMA_REG_CTRL, &ctrl);
+                               if (!(ctrl & (1<<15)))
+                                       break;
+                               msleep(1);
+                       }
+                       DP(NETIF_MSG_LINK, "control reg 0x%x (after %d ms)\n",
+                                ctrl, cnt);
+               }
+
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+                       DP(NETIF_MSG_LINK, "XGXS 8705\n");
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_MISC_CTRL,
+                                      0x8288);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_PHY_IDENTIFIER,
+                                      0x7fbf);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_CMU_PLL_BYPASS,
+                                      0x0100);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_WIS_DEVAD,
+                                      MDIO_WIS_REG_LASI_CNTL, 0x1);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+                       DP(NETIF_MSG_LINK, "XGXS 8706\n");
+
+                       msleep(10);
+                       /* Force speed */
+                       /* First enable LASI */
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_RX_ALARM_CTRL,
+                                      0x0400);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_LASI_CTRL, 0x0004);
+
+                       if (params->req_line_speed == SPEED_10000) {
+                               DP(NETIF_MSG_LINK, "XGXS 8706 force 10Gbps\n");
+
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_PMA_DEVAD,
+                                              MDIO_PMA_REG_DIGITAL_CTRL,
+                                              0x400);
+                       } else {
+                               /* Force 1Gbps using autoneg with 1G
+                               advertisment */
+
+                               /* Allow CL37 through CL73 */
+                               DP(NETIF_MSG_LINK, "XGXS 8706 AutoNeg\n");
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_CL37_CL73,
+                                              0x040c);
+
+                               /* Enable Full-Duplex advertisment on CL37 */
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_CL37_FC_LP,
+                                              0x0020);
+                               /* Enable CL37 AN */
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_CL37_AN,
+                                              0x1000);
+                               /* 1G support */
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_ADV, (1<<5));
+
+                               /* Enable clause 73 AN */
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_CTRL,
+                                              0x1200);
+
+                       }
+
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+                       DP(NETIF_MSG_LINK, "Initializing BCM8726\n");
+                       bnx2x_bcm8726_external_rom_boot(params);
+                       /* Enable LASI */
+                       bnx2x_bcm8726_set_transmitter(params, 1);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_LASI_CTRL, 1);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+               {
+                       u16 tmp1;
+                       u16 rx_alarm_ctrl_val;
+                       u16 lasi_ctrl_val;
+                       if (ext_phy_type ==
+                           PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) {
+                               rx_alarm_ctrl_val = 0x400;
+                               lasi_ctrl_val = 0x0004;
+                       } else {
+                               rx_alarm_ctrl_val = (1<<2);
+                               lasi_ctrl_val = 0x0004;
+                       }
+
+                       /* enable LASI */
+                       bnx2x_cl45_write(bp, params->port,
+                                  ext_phy_type,
+                                  ext_phy_addr,
+                                  MDIO_PMA_DEVAD,
+                                  MDIO_PMA_REG_RX_ALARM_CTRL,
+                                  rx_alarm_ctrl_val);
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_LASI_CTRL,
+                                      lasi_ctrl_val);
+
+                       bnx2x_8073_set_pause_cl37(params, vars);
+
+                       if (ext_phy_type ==
+                           PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072){
+                               bnx2x_bcm8072_external_rom_boot(params);
+                       } else {
+
+                               /* In case of 8073 with long xaui lines,
+                               don't set the 8073 xaui low power*/
+                               bnx2x_bcm8073_set_xaui_low_power_mode(params);
+                       }
+
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     0xca13,
+                                     &tmp1);
+
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_RX_ALARM, &tmp1);
+
+                       DP(NETIF_MSG_LINK, "Before rom RX_ALARM(port1):"
+                                            "0x%x\n", tmp1);
+
+                       /* If this is forced speed, set to KR or KX
+                        * (all other are not supported)
+                        */
+                       if (params->loopback_mode == LOOPBACK_EXT) {
+                               bnx2x_bcm807x_force_10G(params);
+                               DP(NETIF_MSG_LINK,
+                                       "Forced speed 10G on 807X\n");
+                               break;
+                       } else {
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type, ext_phy_addr,
+                                              MDIO_PMA_DEVAD,
+                                              MDIO_PMA_REG_BCM_CTRL,
+                                              0x0002);
+                       }
+                       if (params->req_line_speed != SPEED_AUTO_NEG) {
+                               if (params->req_line_speed == SPEED_10000) {
+                                       val = (1<<7);
+                               } else if (params->req_line_speed ==
+                                          SPEED_2500) {
+                                       val = (1<<5);
+                                       /* Note that 2.5G works only
+                                       when used with 1G advertisment */
+                               } else
+                                       val = (1<<5);
+                       } else {
+
+                               val = 0;
+                               if (params->speed_cap_mask &
+                                       PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)
+                                       val |= (1<<7);
+
+                               /* Note that 2.5G works only when
+                               used with 1G advertisment */
+                               if (params->speed_cap_mask &
+                                       (PORT_HW_CFG_SPEED_CAPABILITY_D0_1G |
+                                        PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
+                                       val |= (1<<5);
+                               DP(NETIF_MSG_LINK,
+                                        "807x autoneg val = 0x%x\n", val);
+                       }
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_ADV, val);
+
+                       if (ext_phy_type ==
+                           PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) {
+
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_AN_DEVAD,
+                                             0x8329, &tmp1);
+
+                               if (((params->speed_cap_mask &
+                                     PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) &&
+                                    (params->req_line_speed ==
+                                     SPEED_AUTO_NEG)) ||
+                                   (params->req_line_speed ==
+                                    SPEED_2500)) {
+                                       u16 phy_ver;
+                                       /* Allow 2.5G for A1 and above */
+                                       bnx2x_cl45_read(bp, params->port,
+                                        PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                                        ext_phy_addr,
+                                        MDIO_PMA_DEVAD,
+                                        0xc801, &phy_ver);
+                                       DP(NETIF_MSG_LINK, "Add 2.5G\n");
+                                       if (phy_ver > 0)
+                                               tmp1 |= 1;
+                                       else
+                                               tmp1 &= 0xfffe;
+                               } else {
+                                       DP(NETIF_MSG_LINK, "Disable 2.5G\n");
+                                       tmp1 &= 0xfffe;
+                               }
+
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              0x8329, tmp1);
+                       }
+
+                       /* Add support for CL37 (passive mode) II */
+
+                       bnx2x_cl45_read(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_CL37_FC_LD,
+                                      &tmp1);
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_CL37_FC_LD, (tmp1 |
+                                      ((params->req_duplex == DUPLEX_FULL) ?
+                                      0x20 : 0x40)));
+
+                       /* Add support for CL37 (passive mode) III */
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_CL37_AN, 0x1000);
+
+                       if (ext_phy_type ==
+                           PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) {
+                               /* The SNR will improve about 2db by changing
+                               BW and FEE main tap. Rest commands are executed
+                               after link is up*/
+                               /*Change FFE main cursor to 5 in EDC register*/
+                               if (bnx2x_8073_is_snr_needed(params))
+                                       bnx2x_cl45_write(bp, params->port,
+                                                   ext_phy_type,
+                                                   ext_phy_addr,
+                                                   MDIO_PMA_DEVAD,
+                                                   MDIO_PMA_REG_EDC_FFE_MAIN,
+                                                   0xFB0C);
+
+                               /* Enable FEC (Forware Error Correction)
+                               Request in the AN */
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_AN_DEVAD,
+                                             MDIO_AN_REG_ADV2, &tmp1);
+
+                               tmp1 |= (1<<15);
+
+                               bnx2x_cl45_write(bp, params->port,
+                                              ext_phy_type,
+                                              ext_phy_addr,
+                                              MDIO_AN_DEVAD,
+                                              MDIO_AN_REG_ADV2, tmp1);
+
+                       }
+
+                       bnx2x_ext_phy_set_pause(params, vars);
+
+                       /* Restart autoneg */
+                       msleep(500);
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_CTRL, 0x1200);
+                       DP(NETIF_MSG_LINK, "807x Autoneg Restart: "
+                          "Advertise 1G=%x, 10G=%x\n",
+                          ((val & (1<<5)) > 0),
+                          ((val & (1<<7)) > 0));
+                       break;
+               }
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       DP(NETIF_MSG_LINK,
+                               "Setting the SFX7101 LASI indication\n");
+
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_LASI_CTRL, 0x1);
+                       DP(NETIF_MSG_LINK,
+                         "Setting the SFX7101 LED to blink on traffic\n");
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_7107_LED_CNTL, (1<<3));
+
+                       bnx2x_ext_phy_set_pause(params, vars);
+                       /* Restart autoneg */
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_AN_DEVAD,
+                                     MDIO_AN_REG_CTRL, &val);
+                       val |= 0x200;
+                       bnx2x_cl45_write(bp, params->port,
+                                      ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_AN_DEVAD,
+                                      MDIO_AN_REG_CTRL, val);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+                       DP(NETIF_MSG_LINK,
+                                "XGXS PHY Failure detected 0x%x\n",
+                                params->ext_phy_config);
+                       rc = -EINVAL;
+                       break;
+               default:
+                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
+                                 params->ext_phy_config);
+                       rc = -EINVAL;
+                       break;
+               }
+
+       } else { /* SerDes */
+
+               ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
+                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
+                       break;
+
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
+                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK, "BAD SerDes ext_phy_config 0x%x\n",
+                          params->ext_phy_config);
+                       break;
+               }
+       }
+       return rc;
+}
+
+
+static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
+                                struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u32 ext_phy_type;
+       u8 ext_phy_addr;
+       u16 val1 = 0, val2;
+       u16 rx_sd, pcs_status;
+       u8 ext_phy_link_up = 0;
+       u8 port = params->port;
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+               ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+               ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+                       DP(NETIF_MSG_LINK, "XGXS Direct\n");
+                       ext_phy_link_up = 1;
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+                       DP(NETIF_MSG_LINK, "XGXS 8705\n");
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_WIS_DEVAD,
+                                     MDIO_WIS_REG_LASI_STATUS, &val1);
+                       DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1);
+
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_WIS_DEVAD,
+                                     MDIO_WIS_REG_LASI_STATUS, &val1);
+                       DP(NETIF_MSG_LINK, "8705 LASI status 0x%x\n", val1);
+
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_RX_SD, &rx_sd);
+                       DP(NETIF_MSG_LINK, "8705 rx_sd 0x%x\n", rx_sd);
+                       ext_phy_link_up = (rx_sd & 0x1);
+                       if (ext_phy_link_up)
+                               vars->line_speed = SPEED_10000;
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+                       DP(NETIF_MSG_LINK, "XGXS 8706\n");
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val1);
+                       DP(NETIF_MSG_LINK, "8706 LASI status 0x%x\n", val1);
+
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val1);
+                       DP(NETIF_MSG_LINK, "8706 LASI status 0x%x\n", val1);
+
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_RX_SD, &rx_sd);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_STATUS, &pcs_status);
+
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_AN_DEVAD,
+                                     MDIO_AN_REG_LINK_STATUS, &val2);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_AN_DEVAD,
+                                     MDIO_AN_REG_LINK_STATUS, &val2);
+
+                       DP(NETIF_MSG_LINK, "8706 rx_sd 0x%x"
+                          "  pcs_status 0x%x 1Gbps link_status 0x%x\n",
+                          rx_sd, pcs_status, val2);
+                       /* link is up if both bit 0 of pmd_rx_sd and
+                        * bit 0 of pcs_status are set, or if the autoneg bit
+                          1 is set
+                        */
+                       ext_phy_link_up = ((rx_sd & pcs_status & 0x1) ||
+                                          (val2 & (1<<1)));
+                       if (ext_phy_link_up) {
+                               if (val2 & (1<<1))
+                                       vars->line_speed = SPEED_1000;
+                               else
+                                       vars->line_speed = SPEED_10000;
+                       }
+
+                       /* clear LASI indication*/
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_RX_ALARM, &val2);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+                       DP(NETIF_MSG_LINK, "XGXS 8726\n");
+                       /* clear LASI indication*/
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val1);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val2);
+                       DP(NETIF_MSG_LINK, "8726 LASI status 0x%x-->0x%x\n",
+                                val1, val2);
+                       if (bnx2x_verify_sfp_module(params) !=
+                                   0) {
+                               bnx2x_bcm8726_set_transmitter(params, 0);
+                               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0,
+                                                 MISC_REGISTERS_GPIO_HIGH,
+                                                 params->port);
+                               return 0;
+                       }
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0,
+                                         MISC_REGISTERS_GPIO_LOW,
+                                         params->port);
+                       /* Check and set limiting mode / LRM mode */
+                       if (bnx2x_bcm8726_set_limiting_mode(params) !=
+                                   0) {
+                               return 0;
+                       }
+                       bnx2x_bcm8726_set_transmitter(params, 1);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val1);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val2);
+                       ext_phy_link_up = ((val2 & (1<<2)) == (1<<2));
+                       DP(NETIF_MSG_LINK, "8726 LINK status 0x%x-->0x%x\n",
+                                val1, val2);
+                       if (ext_phy_link_up)
+                               vars->line_speed = SPEED_10000;
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+               {
+                       u16 link_status = 0;
+                       u16 an1000_status = 0;
+                       if (ext_phy_type ==
+                            PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) {
+                               bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_LASI_STATUS, &val1);
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_LASI_STATUS, &val2);
+                       DP(NETIF_MSG_LINK,
+                                "870x LASI status 0x%x->0x%x\n",
+                                 val1, val2);
+
+                       } else {
+                               /* In 8073, port1 is directed through emac0 and
+                                * port0 is directed through emac1
+                                */
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_PMA_DEVAD,
+                                             MDIO_PMA_REG_LASI_STATUS, &val1);
+
+                               DP(NETIF_MSG_LINK,
+                                        "8703 LASI status 0x%x\n",
+                                         val1);
+                       }
+
+                       /* clear the interrupt LASI status register */
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_STATUS, &val2);
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_STATUS, &val1);
+                       DP(NETIF_MSG_LINK, "807x PCS status 0x%x->0x%x\n",
+                          val2, val1);
+                       /* Clear MSG-OUT */
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     0xca13,
+                                     &val1);
+
+                       /* Check the LASI */
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_RX_ALARM, &val2);
+
+                       DP(NETIF_MSG_LINK, "KR 0x9003 0x%x\n", val2);
+
+                       /* Check the link status */
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PCS_DEVAD,
+                                     MDIO_PCS_REG_STATUS, &val2);
+                       DP(NETIF_MSG_LINK, "KR PCS status 0x%x\n", val2);
+
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val2);
+                       bnx2x_cl45_read(bp, params->port,
+                                     ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val1);
+                       ext_phy_link_up = ((val1 & 4) == 4);
+                       DP(NETIF_MSG_LINK, "PMA_REG_STATUS=0x%x\n", val1);
+                       if (ext_phy_type ==
+                           PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) {
+
+                               if (ext_phy_link_up &&
+                                   ((params->req_line_speed !=
+                                       SPEED_10000))) {
+                                       if (bnx2x_bcm8073_xaui_wa(params)
+                                            != 0) {
+                                               ext_phy_link_up = 0;
+                                               break;
+                                       }
+                               }
+                               bnx2x_cl45_read(bp, params->port,
+                                                     ext_phy_type,
+                                                     ext_phy_addr,
+                                                     MDIO_AN_DEVAD,
+                                                     0x8304,
+                                                     &an1000_status);
+                               bnx2x_cl45_read(bp, params->port,
+                                                     ext_phy_type,
+                                                     ext_phy_addr,
+                                                     MDIO_AN_DEVAD,
+                                                     0x8304,
+                                                     &an1000_status);
+
+                               /* Check the link status on 1.1.2 */
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_PMA_DEVAD,
+                                             MDIO_PMA_REG_STATUS, &val2);
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_PMA_DEVAD,
+                                             MDIO_PMA_REG_STATUS, &val1);
+                               DP(NETIF_MSG_LINK, "KR PMA status 0x%x->0x%x,"
+                                            "an_link_status=0x%x\n",
+                                         val2, val1, an1000_status);
+
+                                       ext_phy_link_up = (((val1 & 4) == 4) ||
+                                               (an1000_status & (1<<1)));
+                               if (ext_phy_link_up &&
+                                   bnx2x_8073_is_snr_needed(params)) {
+                                       /* The SNR will improve about 2dbby
+                                       changing the BW and FEE main tap.*/
+
+                                       /* The 1st write to change FFE main
+                                       tap is set before restart AN */
+                                       /* Change PLL Bandwidth in EDC
+                                       register */
+                                       bnx2x_cl45_write(bp, port, ext_phy_type,
+                                                   ext_phy_addr,
+                                                   MDIO_PMA_DEVAD,
+                                                   MDIO_PMA_REG_PLL_BANDWIDTH,
+                                                   0x26BC);
+
+                                       /* Change CDR Bandwidth in EDC
+                                       register */
+                                       bnx2x_cl45_write(bp, port, ext_phy_type,
+                                                   ext_phy_addr,
+                                                   MDIO_PMA_DEVAD,
+                                                   MDIO_PMA_REG_CDR_BANDWIDTH,
+                                                   0x0333);
+
+
+                               }
+                               bnx2x_cl45_read(bp, params->port,
+                                                     ext_phy_type,
+                                                     ext_phy_addr,
+                                                     MDIO_PMA_DEVAD,
+                                                     0xc820,
+                                                     &link_status);
+
+                               /* Bits 0..2 --> speed detected,
+                                  bits 13..15--> link is down */
+                               if ((link_status & (1<<2)) &&
+                                   (!(link_status & (1<<15)))) {
+                                       ext_phy_link_up = 1;
+                                       vars->line_speed = SPEED_10000;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " up in 10G\n", params->port);
+                               } else if ((link_status & (1<<1)) &&
+                                          (!(link_status & (1<<14)))) {
+                                       ext_phy_link_up = 1;
+                                       vars->line_speed = SPEED_2500;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " up in 2.5G\n", params->port);
+                               } else if ((link_status & (1<<0)) &&
+                                          (!(link_status & (1<<13)))) {
+                                       ext_phy_link_up = 1;
+                                       vars->line_speed = SPEED_1000;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " up in 1G\n", params->port);
+                               } else {
+                                       ext_phy_link_up = 0;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " is down\n", params->port);
+                               }
+                       } else {
+                               /* See if 1G link is up for the 8072 */
+                               bnx2x_cl45_read(bp, params->port,
+                                                     ext_phy_type,
+                                                     ext_phy_addr,
+                                                     MDIO_AN_DEVAD,
+                                                     0x8304,
+                                                     &an1000_status);
+                               bnx2x_cl45_read(bp, params->port,
+                                                     ext_phy_type,
+                                                     ext_phy_addr,
+                                                     MDIO_AN_DEVAD,
+                                                     0x8304,
+                                                     &an1000_status);
+                               if (an1000_status & (1<<1)) {
+                                       ext_phy_link_up = 1;
+                                       vars->line_speed = SPEED_1000;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " up in 1G\n", params->port);
+                               } else if (ext_phy_link_up) {
+                                       ext_phy_link_up = 1;
+                                       vars->line_speed = SPEED_10000;
+                                       DP(NETIF_MSG_LINK,
+                                                "port %x: External link"
+                                                " up in 10G\n", params->port);
+                               }
+                       }
+
+
+                       break;
+               }
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val2);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_LASI_STATUS, &val1);
+                       DP(NETIF_MSG_LINK,
+                                "10G-base-T LASI status 0x%x->0x%x\n",
+                                 val2, val1);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val2);
+                       bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                                     ext_phy_addr,
+                                     MDIO_PMA_DEVAD,
+                                     MDIO_PMA_REG_STATUS, &val1);
+                       DP(NETIF_MSG_LINK,
+                                "10G-base-T PMA status 0x%x->0x%x\n",
+                                val2, val1);
+                       ext_phy_link_up = ((val1 & 4) == 4);
+                       /* if link is up
+                        * print the AN outcome of the SFX7101 PHY
+                        */
+                       if (ext_phy_link_up) {
+                               bnx2x_cl45_read(bp, params->port,
+                                             ext_phy_type,
+                                             ext_phy_addr,
+                                             MDIO_AN_DEVAD,
+                                             MDIO_AN_REG_MASTER_STATUS,
+                                             &val2);
+                               vars->line_speed = SPEED_10000;
+                               DP(NETIF_MSG_LINK,
+                                        "SFX7101 AN status 0x%x->Master=%x\n",
+                                         val2,
+                                        (val2 & (1<<14)));
+                       }
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
+                          params->ext_phy_config);
+                       ext_phy_link_up = 0;
+                       break;
+               }
+
+       } else { /* SerDes */
+               ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
+                       DP(NETIF_MSG_LINK, "SerDes Direct\n");
+                       ext_phy_link_up = 1;
+                       break;
+
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
+                       DP(NETIF_MSG_LINK, "SerDes 5482\n");
+                       ext_phy_link_up = 1;
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK,
+                                "BAD SerDes ext_phy_config 0x%x\n",
+                                params->ext_phy_config);
+                       ext_phy_link_up = 0;
+                       break;
+               }
+       }
+
+       return ext_phy_link_up;
+}
+
+static void bnx2x_link_int_enable(struct link_params *params)
+{
+       u8 port = params->port;
+       u32 ext_phy_type;
+       u32 mask;
+       struct bnx2x *bp = params->bp;
+       /* setting the status to report on link up
+          for either XGXS or SerDes */
+
+       if (params->switch_cfg == SWITCH_CFG_10G) {
+               mask = (NIG_MASK_XGXS0_LINK10G |
+                       NIG_MASK_XGXS0_LINK_STATUS);
+               DP(NETIF_MSG_LINK, "enabled XGXS interrupt\n");
+               ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+               if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) &&
+                   (ext_phy_type !=
+                               PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN)) {
+                       mask |= NIG_MASK_MI_INT;
+                       DP(NETIF_MSG_LINK, "enabled external phy int\n");
+               }
+
+       } else { /* SerDes */
+               mask = NIG_MASK_SERDES0_LINK_STATUS;
+               DP(NETIF_MSG_LINK, "enabled SerDes interrupt\n");
+               ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config);
+               if ((ext_phy_type !=
+                               PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT) &&
+                   (ext_phy_type !=
+                               PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN)) {
+                       mask |= NIG_MASK_MI_INT;
+                       DP(NETIF_MSG_LINK, "enabled external phy int\n");
+               }
+       }
+       bnx2x_bits_en(bp,
+                     NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
+                     mask);
+       DP(NETIF_MSG_LINK, "port %x, is_xgxs=%x, int_status 0x%x\n", port,
+                (params->switch_cfg == SWITCH_CFG_10G),
+                REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4));
+
+       DP(NETIF_MSG_LINK, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x\n",
+                REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4),
+                REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port*0x18),
+                REG_RD(bp, NIG_REG_SERDES0_STATUS_LINK_STATUS+port*0x3c));
+       DP(NETIF_MSG_LINK, " 10G %x, XGXS_LINK %x\n",
+          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68),
+          REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68));
+}
+
+
+/*
+ * link management
+ */
+static void bnx2x_link_int_ack(struct link_params *params,
+                            struct link_vars *vars, u8 is_10g)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+
+       /* first reset all status
+        * we assume only one line will be change at a time */
+       bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
+                    (NIG_STATUS_XGXS0_LINK10G |
+                     NIG_STATUS_XGXS0_LINK_STATUS |
+                     NIG_STATUS_SERDES0_LINK_STATUS));
+       if (vars->phy_link_up) {
+               if (is_10g) {
+                       /* Disable the 10G link interrupt
+                        * by writing 1 to the status register
+                        */
+                       DP(NETIF_MSG_LINK, "10G XGXS phy link up\n");
+                       bnx2x_bits_en(bp,
+                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
+                                     NIG_STATUS_XGXS0_LINK10G);
+
+               } else if (params->switch_cfg == SWITCH_CFG_10G) {
+                       /* Disable the link interrupt
+                        * by writing 1 to the relevant lane
+                        * in the status register
+                        */
+                       u32 ser_lane = ((params->lane_config &
+                                   PORT_HW_CFG_LANE_SWAP_CFG_MASTER_MASK) >>
+                                   PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
+
+                       DP(NETIF_MSG_LINK, "1G XGXS phy link up\n");
+                       bnx2x_bits_en(bp,
+                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
+                                     ((1 << ser_lane) <<
+                                      NIG_STATUS_XGXS0_LINK_STATUS_SIZE));
+
+               } else { /* SerDes */
+                       DP(NETIF_MSG_LINK, "SerDes phy link up\n");
+                       /* Disable the link interrupt
+                        * by writing 1 to the status register
+                        */
+                       bnx2x_bits_en(bp,
+                                     NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
+                                     NIG_STATUS_SERDES0_LINK_STATUS);
+               }
+
+       } else { /* link_down */
+       }
+}
+
+static u8 bnx2x_format_ver(u32 num, u8 *str, u16 len)
+{
+       u8 *str_ptr = str;
+       u32 mask = 0xf0000000;
+       u8 shift = 8*4;
+       u8 digit;
+       if (len < 10) {
+               /* Need more then 10chars for this format */
+               *str_ptr = '\0';
+               return -EINVAL;
+       }
+       while (shift > 0) {
+
+               shift -= 4;
+               digit = ((num & mask) >> shift);
+               if (digit < 0xa)
+                       *str_ptr = digit + '0';
+               else
+                       *str_ptr = digit - 0xa + 'a';
+               str_ptr++;
+               mask = mask >> 4;
+               if (shift == 4*4) {
+                       *str_ptr = ':';
+                       str_ptr++;
+               }
+       }
+       *str_ptr = '\0';
+       return 0;
+}
+
+
+static void bnx2x_turn_on_ef(struct bnx2x *bp, u8 port, u8 ext_phy_addr,
+                          u32 ext_phy_type)
+{
+       u32 cnt = 0;
+       u16 ctrl = 0;
+       /* Enable EMAC0 in to enable MDIO */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET,
+              (MISC_REGISTERS_RESET_REG_2_RST_EMAC0_HARD_CORE << port));
+       msleep(5);
+
+       /* take ext phy out of reset */
+       bnx2x_set_gpio(bp,
+                         MISC_REGISTERS_GPIO_2,
+                         MISC_REGISTERS_GPIO_HIGH,
+                         port);
+
+       bnx2x_set_gpio(bp,
+                         MISC_REGISTERS_GPIO_1,
+                         MISC_REGISTERS_GPIO_HIGH,
+                         port);
+
+       /* wait for 5ms */
+       msleep(5);
+
+       for (cnt = 0; cnt < 1000; cnt++) {
+               msleep(1);
+               bnx2x_cl45_read(bp, port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_CTRL,
+                              &ctrl);
+               if (!(ctrl & (1<<15))) {
+                       DP(NETIF_MSG_LINK, "Reset completed\n\n");
+                               break;
+               }
+       }
+}
+
+static void bnx2x_turn_off_sf(struct bnx2x *bp, u8 port)
+{
+       /* put sf to reset */
+       bnx2x_set_gpio(bp,
+                         MISC_REGISTERS_GPIO_1,
+                         MISC_REGISTERS_GPIO_LOW,
+                         port);
+       bnx2x_set_gpio(bp,
+                         MISC_REGISTERS_GPIO_2,
+                         MISC_REGISTERS_GPIO_LOW,
+                         port);
+}
+
+u8 bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 driver_loaded,
+                             u8 *version, u16 len)
+{
+       struct bnx2x *bp = params->bp;
+       u32 ext_phy_type = 0;
+       u16 val = 0;
+       u8 ext_phy_addr = 0 ;
+       u8 status = 0 ;
+       u32 ver_num;
+
+       if (version == NULL || params == NULL)
+               return -EINVAL;
+
+       /* reset the returned value to zero */
+       ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       ext_phy_addr = ((params->ext_phy_config &
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                               PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+       switch (ext_phy_type) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+
+               if (len < 5)
+                       return -EINVAL;
+
+               /* Take ext phy out of reset */
+               if (!driver_loaded)
+                       bnx2x_turn_on_ef(bp, params->port, ext_phy_addr,
+                                      ext_phy_type);
+
+               /*  wait for 1ms */
+               msleep(1);
+
+               bnx2x_cl45_read(bp, params->port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_7101_VER1, &val);
+               version[2] = (val & 0xFF);
+               version[3] = ((val & 0xFF00)>>8);
+
+               bnx2x_cl45_read(bp, params->port,
+                             ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD, MDIO_PMA_REG_7101_VER2,
+                             &val);
+               version[0] = (val & 0xFF);
+               version[1] = ((val & 0xFF00)>>8);
+               version[4] = '\0';
+
+               if (!driver_loaded)
+                       bnx2x_turn_off_sf(bp, params->port);
+               break;
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+       {
+               /* Take ext phy out of reset */
+               if (!driver_loaded)
+                       bnx2x_turn_on_ef(bp, params->port, ext_phy_addr,
+                                      ext_phy_type);
+
+               bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_ROM_VER1, &val);
+               ver_num = val<<16;
+               bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_ROM_VER2, &val);
+               ver_num |= val;
+               status = bnx2x_format_ver(ver_num, version, len);
+               break;
+       }
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+
+               bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_ROM_VER1, &val);
+               ver_num = val<<16;
+               bnx2x_cl45_read(bp, params->port, ext_phy_type,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_ROM_VER2, &val);
+               ver_num |= val;
+               status = bnx2x_format_ver(ver_num, version, len);
+               break;
+
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+               break;
+
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+               DP(NETIF_MSG_LINK, "bnx2x_get_ext_phy_fw_version:"
+                                   " type is FAILURE!\n");
+               status = -EINVAL;
+               break;
+
+       default:
+               break;
+       }
+       return status;
+}
+
+static void bnx2x_set_xgxs_loopback(struct link_params *params,
+                                 struct link_vars *vars,
+                                 u8 is_10g)
+{
+       u8 port = params->port;
+       struct bnx2x *bp = params->bp;
+
+       if (is_10g) {
+               u32 md_devad;
+
+               DP(NETIF_MSG_LINK, "XGXS 10G loopback enable\n");
+
+               /* change the uni_phy_addr in the nig */
+               md_devad = REG_RD(bp, (NIG_REG_XGXS0_CTRL_MD_DEVAD +
+                                         port*0x18));
+
+               REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18, 0x5);
+
+               bnx2x_cl45_write(bp, port, 0,
+                              params->phy_addr,
+                              5,
+                              (MDIO_REG_BANK_AER_BLOCK +
+                               (MDIO_AER_BLOCK_AER_REG & 0xf)),
+                              0x2800);
+
+               bnx2x_cl45_write(bp, port, 0,
+                              params->phy_addr,
+                              5,
+                              (MDIO_REG_BANK_CL73_IEEEB0 +
+                               (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)),
+                              0x6041);
+
+               /* set aer mmd back */
+               bnx2x_set_aer_mmd(params, vars);
+
+               /* and md_devad */
+               REG_WR(bp, NIG_REG_XGXS0_CTRL_MD_DEVAD + port*0x18,
+                           md_devad);
+
+       } else {
+               u16 mii_control;
+
+               DP(NETIF_MSG_LINK, "XGXS 1G loopback enable\n");
+
+               CL45_RD_OVER_CL22(bp, port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_COMBO_IEEE0,
+                                     MDIO_COMBO_IEEE0_MII_CONTROL,
+                                     &mii_control);
+
+               CL45_WR_OVER_CL22(bp, port,
+                                     params->phy_addr,
+                                     MDIO_REG_BANK_COMBO_IEEE0,
+                                     MDIO_COMBO_IEEE0_MII_CONTROL,
+                                     (mii_control |
+                                      MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK));
+       }
+}
+
+
+static void bnx2x_ext_phy_loopback(struct link_params *params)
+{
+       struct bnx2x *bp = params->bp;
+       u8 ext_phy_addr;
+       u32 ext_phy_type;
+
+       if (params->switch_cfg == SWITCH_CFG_10G) {
+               ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+               /* CL37 Autoneg Enabled */
+               ext_phy_addr = ((params->ext_phy_config &
+                                       PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                                       PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN:
+                       DP(NETIF_MSG_LINK,
+                               "ext_phy_loopback: We should not get here\n");
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+                       DP(NETIF_MSG_LINK, "ext_phy_loopback: 8705\n");
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+                       DP(NETIF_MSG_LINK, "ext_phy_loopback: 8706\n");
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+                       DP(NETIF_MSG_LINK, "PMA/PMD ext_phy_loopback: 8726\n");
+                       bnx2x_cl45_write(bp, params->port, ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_PMA_DEVAD,
+                                      MDIO_PMA_REG_CTRL,
+                                      0x0001);
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       /* SFX7101_XGXS_TEST1 */
+                       bnx2x_cl45_write(bp, params->port, ext_phy_type,
+                                      ext_phy_addr,
+                                      MDIO_XS_DEVAD,
+                                      MDIO_XS_SFX7101_XGXS_TEST1,
+                                      0x100);
+                       DP(NETIF_MSG_LINK,
+                               "ext_phy_loopback: set ext phy loopback\n");
+                       break;
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+
+                       break;
+               } /* switch external PHY type */
+       } else {
+               /* serdes */
+               ext_phy_type = SERDES_EXT_PHY_TYPE(params->ext_phy_config);
+               ext_phy_addr = (params->ext_phy_config  &
+               PORT_HW_CFG_SERDES_EXT_PHY_ADDR_MASK)
+               >> PORT_HW_CFG_SERDES_EXT_PHY_ADDR_SHIFT;
+       }
+}
+
+
+/*
+ *------------------------------------------------------------------------
+ * bnx2x_override_led_value -
+ *
+ * Override the led value of the requsted led
+ *
+ *------------------------------------------------------------------------
+ */
+u8 bnx2x_override_led_value(struct bnx2x *bp, u8 port,
+                         u32 led_idx, u32 value)
+{
+       u32 reg_val;
+
+       /* If port 0 then use EMAC0, else use EMAC1*/
+       u32 emac_base = (port) ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+
+       DP(NETIF_MSG_LINK,
+                "bnx2x_override_led_value() port %x led_idx %d value %d\n",
+                port, led_idx, value);
+
+       switch (led_idx) {
+       case 0: /* 10MB led */
+               /* Read the current value of the LED register in
+               the EMAC block */
+               reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED);
+               /* Set the OVERRIDE bit to 1 */
+               reg_val |= EMAC_LED_OVERRIDE;
+               /* If value is 1, set the 10M_OVERRIDE bit,
+               otherwise reset it.*/
+               reg_val = (value == 1) ? (reg_val | EMAC_LED_10MB_OVERRIDE) :
+                       (reg_val & ~EMAC_LED_10MB_OVERRIDE);
+               REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val);
+               break;
+       case 1: /*100MB led    */
+               /*Read the current value of the LED register in
+               the EMAC block */
+               reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED);
+               /*  Set the OVERRIDE bit to 1 */
+               reg_val |= EMAC_LED_OVERRIDE;
+               /*  If value is 1, set the 100M_OVERRIDE bit,
+               otherwise reset it.*/
+               reg_val = (value == 1) ? (reg_val | EMAC_LED_100MB_OVERRIDE) :
+                       (reg_val & ~EMAC_LED_100MB_OVERRIDE);
+               REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val);
+               break;
+       case 2: /* 1000MB led */
+               /* Read the current value of the LED register in the
+               EMAC block */
+               reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED);
+               /* Set the OVERRIDE bit to 1 */
+               reg_val |= EMAC_LED_OVERRIDE;
+               /* If value is 1, set the 1000M_OVERRIDE bit, otherwise
+               reset it. */
+               reg_val = (value == 1) ? (reg_val | EMAC_LED_1000MB_OVERRIDE) :
+                       (reg_val & ~EMAC_LED_1000MB_OVERRIDE);
+               REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val);
+               break;
+       case 3: /* 2500MB led */
+               /*  Read the current value of the LED register in the
+               EMAC block*/
+               reg_val = REG_RD(bp, emac_base + EMAC_REG_EMAC_LED);
+               /* Set the OVERRIDE bit to 1 */
+               reg_val |= EMAC_LED_OVERRIDE;
+               /*  If value is 1, set the 2500M_OVERRIDE bit, otherwise
+               reset it.*/
+               reg_val = (value == 1) ? (reg_val | EMAC_LED_2500MB_OVERRIDE) :
+                       (reg_val & ~EMAC_LED_2500MB_OVERRIDE);
+               REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val);
+               break;
+       case 4: /*10G led */
+               if (port == 0) {
+                       REG_WR(bp, NIG_REG_LED_10G_P0,
+                                   value);
+               } else {
+                       REG_WR(bp, NIG_REG_LED_10G_P1,
+                                   value);
+               }
+               break;
+       case 5: /* TRAFFIC led */
+               /* Find if the traffic control is via BMAC or EMAC */
+               if (port == 0)
+                       reg_val = REG_RD(bp, NIG_REG_NIG_EMAC0_EN);
+               else
+                       reg_val = REG_RD(bp, NIG_REG_NIG_EMAC1_EN);
+
+               /*  Override the traffic led in the EMAC:*/
+               if (reg_val == 1) {
+                       /* Read the current value of the LED register in
+                       the EMAC block */
+                       reg_val = REG_RD(bp, emac_base +
+                                            EMAC_REG_EMAC_LED);
+                       /* Set the TRAFFIC_OVERRIDE bit to 1 */
+                       reg_val |= EMAC_LED_OVERRIDE;
+                       /* If value is 1, set the TRAFFIC bit, otherwise
+                       reset it.*/
+                       reg_val = (value == 1) ? (reg_val | EMAC_LED_TRAFFIC) :
+                               (reg_val & ~EMAC_LED_TRAFFIC);
+                       REG_WR(bp, emac_base + EMAC_REG_EMAC_LED, reg_val);
+               } else { /* Override the traffic led in the BMAC: */
+                       REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0
+                                  + port*4, 1);
+                       REG_WR(bp, NIG_REG_LED_CONTROL_TRAFFIC_P0 + port*4,
+                                   value);
+               }
+               break;
+       default:
+               DP(NETIF_MSG_LINK,
+                        "bnx2x_override_led_value() unknown led index %d "
+                        "(should be 0-5)\n", led_idx);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+
+u8 bnx2x_set_led(struct bnx2x *bp, u8 port, u8 mode, u32 speed,
+              u16 hw_led_mode, u32 chip_id)
+{
+       u8 rc = 0;
+       u32 tmp;
+       u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+       DP(NETIF_MSG_LINK, "bnx2x_set_led: port %x, mode %d\n", port, mode);
+       DP(NETIF_MSG_LINK, "speed 0x%x, hw_led_mode 0x%x\n",
+                speed, hw_led_mode);
+       switch (mode) {
+       case LED_MODE_OFF:
+               REG_WR(bp, NIG_REG_LED_10G_P0 + port*4, 0);
+               REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4,
+                          SHARED_HW_CFG_LED_MAC1);
+
+               tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED);
+               EMAC_WR(bp, EMAC_REG_EMAC_LED, (tmp | EMAC_LED_OVERRIDE));
+               break;
+
+       case LED_MODE_OPER:
+               REG_WR(bp, NIG_REG_LED_MODE_P0 + port*4, hw_led_mode);
+               REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0 +
+                          port*4, 0);
+               /* Set blinking rate to ~15.9Hz */
+               REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_RATE_P0 + port*4,
+                          LED_BLINK_RATE_VAL);
+               REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_RATE_ENA_P0 +
+                          port*4, 1);
+               tmp = EMAC_RD(bp, EMAC_REG_EMAC_LED);
+               EMAC_WR(bp, EMAC_REG_EMAC_LED,
+                           (tmp & (~EMAC_LED_OVERRIDE)));
+
+               if (!CHIP_IS_E1H(bp) &&
+                   ((speed == SPEED_2500) ||
+                    (speed == SPEED_1000) ||
+                    (speed == SPEED_100) ||
+                    (speed == SPEED_10))) {
+                       /* On Everest 1 Ax chip versions for speeds less than
+                       10G LED scheme is different */
+                       REG_WR(bp, NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0
+                                  + port*4, 1);
+                       REG_WR(bp, NIG_REG_LED_CONTROL_TRAFFIC_P0 +
+                                  port*4, 0);
+                       REG_WR(bp, NIG_REG_LED_CONTROL_BLINK_TRAFFIC_P0 +
+                                  port*4, 1);
+               }
+               break;
+
+       default:
+               rc = -EINVAL;
+               DP(NETIF_MSG_LINK, "bnx2x_set_led: Invalid led mode %d\n",
+                        mode);
+               break;
+       }
+       return rc;
+
+}
+
+u8 bnx2x_test_link(struct link_params *params, struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u16 gp_status = 0;
+
+       CL45_RD_OVER_CL22(bp, params->port,
+                             params->phy_addr,
+                             MDIO_REG_BANK_GP_STATUS,
+                             MDIO_GP_STATUS_TOP_AN_STATUS1,
+                             &gp_status);
+       /* link is up only if both local phy and external phy are up */
+       if ((gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) &&
+           bnx2x_ext_phy_is_link_up(params, vars))
+               return 0;
+
+       return -ESRCH;
+}
+
+static u8 bnx2x_link_initialize(struct link_params *params,
+                             struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 rc = 0;
+       u8 non_ext_phy;
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+       /* Activate the external PHY */
+       bnx2x_ext_phy_reset(params, vars);
+
+       bnx2x_set_aer_mmd(params, vars);
+
+       if (vars->phy_flags & PHY_XGXS_FLAG)
+               bnx2x_set_master_ln(params);
+
+       rc = bnx2x_reset_unicore(params);
+       /* reset the SerDes and wait for reset bit return low */
+       if (rc != 0)
+               return rc;
+
+       bnx2x_set_aer_mmd(params, vars);
+
+       /* setting the masterLn_def again after the reset */
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+               bnx2x_set_master_ln(params);
+               bnx2x_set_swap_lanes(params);
+       }
+
+       if (vars->phy_flags & PHY_XGXS_FLAG) {
+               if (params->req_line_speed &&
+                   ((params->req_line_speed == SPEED_100) ||
+                    (params->req_line_speed == SPEED_10))) {
+                       vars->phy_flags |= PHY_SGMII_FLAG;
+               } else {
+                       vars->phy_flags &= ~PHY_SGMII_FLAG;
+               }
+       }
+       /* In case of external phy existance, the line speed would be the
+        line speed linked up by the external phy. In case it is direct only,
+         then the line_speed during initialization will be equal to the
+          req_line_speed*/
+       vars->line_speed = params->req_line_speed;
+
+       bnx2x_calc_ieee_aneg_adv(params, &vars->ieee_fc);
+
+       /* init ext phy and enable link state int */
+       non_ext_phy = ((ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) ||
+                      (params->loopback_mode == LOOPBACK_XGXS_10) ||
+                      (params->loopback_mode == LOOPBACK_EXT_PHY));
+
+       if (non_ext_phy ||
+           (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) ||
+           (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726)) {
+               if (params->req_line_speed == SPEED_AUTO_NEG)
+                       bnx2x_set_parallel_detection(params, vars->phy_flags);
+               bnx2x_init_internal_phy(params, vars);
+       }
+
+       if (!non_ext_phy)
+               rc |= bnx2x_ext_phy_init(params, vars);
+
+       bnx2x_bits_dis(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4,
+                    (NIG_STATUS_XGXS0_LINK10G |
+                     NIG_STATUS_XGXS0_LINK_STATUS |
+                     NIG_STATUS_SERDES0_LINK_STATUS));
+
+       return rc;
+
+}
+
+
+u8 bnx2x_phy_init(struct link_params *params, struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+
+       u32 val;
+       DP(NETIF_MSG_LINK, "Phy Initialization started \n");
+       DP(NETIF_MSG_LINK, "req_speed = %d, req_flowctrl=%d\n",
+                 params->req_line_speed, params->req_flow_ctrl);
+       vars->link_status = 0;
+       vars->phy_link_up = 0;
+       vars->link_up = 0;
+       vars->line_speed = 0;
+       vars->duplex = DUPLEX_FULL;
+       vars->flow_ctrl = FLOW_CTRL_NONE;
+       vars->mac_type = MAC_TYPE_NONE;
+
+       if (params->switch_cfg ==  SWITCH_CFG_1G)
+               vars->phy_flags = PHY_SERDES_FLAG;
+       else
+               vars->phy_flags = PHY_XGXS_FLAG;
+
+
+       /* disable attentions */
+       bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + params->port*4,
+                      (NIG_MASK_XGXS0_LINK_STATUS |
+                       NIG_MASK_XGXS0_LINK10G |
+                       NIG_MASK_SERDES0_LINK_STATUS |
+                       NIG_MASK_MI_INT));
+
+       bnx2x_emac_init(params, vars);
+
+       if (CHIP_REV_IS_FPGA(bp)) {
+               vars->link_up = 1;
+               vars->line_speed = SPEED_10000;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+               vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD);
+               /* enable on E1.5 FPGA */
+               if (CHIP_IS_E1H(bp)) {
+                       vars->flow_ctrl |=
+                               (FLOW_CTRL_TX | FLOW_CTRL_RX);
+                       vars->link_status |=
+                                       (LINK_STATUS_TX_FLOW_CONTROL_ENABLED |
+                                        LINK_STATUS_RX_FLOW_CONTROL_ENABLED);
+               }
+
+               bnx2x_emac_enable(params, vars, 0);
+               bnx2x_pbf_update(params, vars->flow_ctrl, vars->line_speed);
+               /* disable drain */
+               REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE
+                                   + params->port*4, 0);
+
+               /* update shared memory */
+               bnx2x_update_mng(params, vars->link_status);
+
+               return 0;
+
+       } else
+       if (CHIP_REV_IS_EMUL(bp)) {
+
+               vars->link_up = 1;
+               vars->line_speed = SPEED_10000;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+               vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD);
+
+               bnx2x_bmac_enable(params, vars, 0);
+
+               bnx2x_pbf_update(params, vars->flow_ctrl, vars->line_speed);
+               /* Disable drain */
+               REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE
+                                   + params->port*4, 0);
+
+               /* update shared memory */
+               bnx2x_update_mng(params, vars->link_status);
+
+               return 0;
+
+       } else
+       if (params->loopback_mode == LOOPBACK_BMAC) {
+               vars->link_up = 1;
+               vars->line_speed = SPEED_10000;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+               vars->mac_type = MAC_TYPE_BMAC;
+
+               vars->phy_flags = PHY_XGXS_FLAG;
+
+               bnx2x_phy_deassert(params, vars->phy_flags);
+               /* set bmac loopback */
+               bnx2x_bmac_enable(params, vars, 1);
+
+               REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE +
+                   params->port*4, 0);
+       } else if (params->loopback_mode == LOOPBACK_EMAC) {
+               vars->link_up = 1;
+               vars->line_speed = SPEED_1000;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+               vars->mac_type = MAC_TYPE_EMAC;
+
+               vars->phy_flags = PHY_XGXS_FLAG;
+
+               bnx2x_phy_deassert(params, vars->phy_flags);
+               /* set bmac loopback */
+               bnx2x_emac_enable(params, vars, 1);
+               bnx2x_emac_program(params, vars->line_speed,
+                                             vars->duplex);
+               REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE +
+                   params->port*4, 0);
+       } else if ((params->loopback_mode == LOOPBACK_XGXS_10) ||
+                 (params->loopback_mode == LOOPBACK_EXT_PHY)) {
+               vars->link_up = 1;
+               vars->line_speed = SPEED_10000;
+               vars->duplex = DUPLEX_FULL;
+               vars->flow_ctrl = FLOW_CTRL_NONE;
+
+               vars->phy_flags = PHY_XGXS_FLAG;
+
+               val = REG_RD(bp,
+                                NIG_REG_XGXS0_CTRL_PHY_ADDR+
+                                params->port*0x18);
+               params->phy_addr = (u8)val;
+
+               bnx2x_phy_deassert(params, vars->phy_flags);
+               bnx2x_link_initialize(params, vars);
+
+               vars->mac_type = MAC_TYPE_BMAC;
+
+               bnx2x_bmac_enable(params, vars, 0);
+
+               if (params->loopback_mode == LOOPBACK_XGXS_10) {
+                       /* set 10G XGXS loopback */
+                       bnx2x_set_xgxs_loopback(params, vars, 1);
+               } else {
+                       /* set external phy loopback */
+                       bnx2x_ext_phy_loopback(params);
+               }
+               REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE +
+                           params->port*4, 0);
+       } else
+       /* No loopback */
+       {
+
+               bnx2x_phy_deassert(params, vars->phy_flags);
+               switch (params->switch_cfg) {
+               case SWITCH_CFG_1G:
+                       vars->phy_flags |= PHY_SERDES_FLAG;
+                       if ((params->ext_phy_config &
+                            PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK) ==
+                            PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482) {
+                               vars->phy_flags |=
+                                       PHY_SGMII_FLAG;
+                       }
+
+                       val = REG_RD(bp,
+                                        NIG_REG_SERDES0_CTRL_PHY_ADDR+
+                                        params->port*0x10);
+
+                       params->phy_addr = (u8)val;
+
+                       break;
+               case SWITCH_CFG_10G:
+                       vars->phy_flags |= PHY_XGXS_FLAG;
+                       val = REG_RD(bp,
+                                NIG_REG_XGXS0_CTRL_PHY_ADDR+
+                                params->port*0x18);
+                       params->phy_addr = (u8)val;
+
+                       break;
+               default:
+                       DP(NETIF_MSG_LINK, "Invalid switch_cfg\n");
+                       return -EINVAL;
+                       break;
+               }
+
+               bnx2x_link_initialize(params, vars);
+               msleep(30);
+               bnx2x_link_int_enable(params);
+       }
+       return 0;
+}
+
+u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars)
+{
+
+       struct bnx2x *bp = params->bp;
+       u32 ext_phy_config = params->ext_phy_config;
+       u16 hw_led_mode = params->hw_led_mode;
+       u32 chip_id = params->chip_id;
+       u8 port = params->port;
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(ext_phy_config);
+       /* disable attentions */
+
+       vars->link_status = 0;
+       bnx2x_update_mng(params, vars->link_status);
+       bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
+                    (NIG_MASK_XGXS0_LINK_STATUS |
+                     NIG_MASK_XGXS0_LINK10G |
+                     NIG_MASK_SERDES0_LINK_STATUS |
+                     NIG_MASK_MI_INT));
+
+       /* activate nig drain */
+       REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
+
+       /* disable nig egress interface */
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0);
+
+       /* Stop BigMac rx */
+       bnx2x_bmac_rx_disable(bp, port);
+
+       /* disable emac */
+       REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
+
+       msleep(10);
+       /* The PHY reset is controled by GPIO 1
+        * Hold it as vars low
+        */
+        /* clear link led */
+       bnx2x_set_led(bp, port, LED_MODE_OFF, 0, hw_led_mode, chip_id);
+       if (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) {
+               if ((ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) &&
+                   (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726)) {
+                       /* HW reset */
+
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                                         MISC_REGISTERS_GPIO_OUTPUT_LOW,
+                                         port);
+
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                         MISC_REGISTERS_GPIO_OUTPUT_LOW,
+                                         port);
+
+                       DP(NETIF_MSG_LINK, "reset external PHY\n");
+               } else if (ext_phy_type ==
+                          PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073) {
+                               DP(NETIF_MSG_LINK, "Setting 8073 port %d into "
+                                        "low power mode\n",
+                                        port);
+                               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                       MISC_REGISTERS_GPIO_OUTPUT_LOW,
+                                                 port);
+               }
+       }
+       /* reset the SerDes/XGXS */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR,
+              (0x1ff << (port*16)));
+
+       /* reset BigMac */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
+              (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+
+       /* disable nig ingress interface */
+       REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0);
+       vars->link_up = 0;
+       return 0;
+}
+
+static u8 bnx2x_update_link_down(struct link_params *params,
+                              struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       DP(NETIF_MSG_LINK, "Port %x: Link is down\n", port);
+       bnx2x_set_led(bp, port, LED_MODE_OFF,
+                   0, params->hw_led_mode,
+                   params->chip_id);
+
+       /* indicate no mac active */
+       vars->mac_type = MAC_TYPE_NONE;
+
+       /* update shared memory */
+       vars->link_status = 0;
+       vars->line_speed = 0;
+       bnx2x_update_mng(params, vars->link_status);
+
+       /* activate nig drain */
+       REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
+
+       /* disable emac */
+       REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
+
+       /* reset BigMac */
+       bnx2x_bmac_rx_disable(bp, params->port);
+       REG_WR(bp, GRCBASE_MISC +
+                  MISC_REGISTERS_RESET_REG_2_CLEAR,
+                  (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+       return 0;
+}
+
+static u8 bnx2x_update_link_up(struct link_params *params,
+                            struct link_vars *vars,
+                            u8 link_10g, u32 gp_status)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u8 rc = 0;
+       vars->link_status |= LINK_STATUS_LINK_UP;
+       if (link_10g) {
+               bnx2x_bmac_enable(params, vars, 0);
+               bnx2x_set_led(bp, port, LED_MODE_OPER,
+                           SPEED_10000, params->hw_led_mode,
+                           params->chip_id);
+
+       } else {
+               bnx2x_emac_enable(params, vars, 0);
+               rc = bnx2x_emac_program(params, vars->line_speed,
+                                     vars->duplex);
+
+               /* AN complete? */
+               if (gp_status & MDIO_AN_CL73_OR_37_COMPLETE) {
+                       if (!(vars->phy_flags &
+                             PHY_SGMII_FLAG))
+                               bnx2x_set_gmii_tx_driver(params);
+               }
+       }
+
+       /* PBF - link up */
+       rc |= bnx2x_pbf_update(params, vars->flow_ctrl,
+                             vars->line_speed);
+
+       /* disable drain */
+       REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 0);
+
+       /* update shared memory */
+       bnx2x_update_mng(params, vars->link_status);
+       msleep(20);
+       return rc;
+}
+/* This function should called upon link interrupt */
+/* In case vars->link_up, driver needs to
+       1. Update the pbf
+       2. Disable drain
+       3. Update the shared memory
+       4. Indicate link up
+       5. Set LEDs
+   Otherwise,
+       1. Update shared memory
+       2. Reset BigMac
+       3. Report link down
+       4. Unset LEDs
+*/
+u8 bnx2x_link_update(struct link_params *params, struct link_vars *vars)
+{
+       struct bnx2x *bp = params->bp;
+       u8 port = params->port;
+       u16 gp_status;
+       u8 link_10g;
+       u8 ext_phy_link_up, rc = 0;
+       u32 ext_phy_type;
+
+       DP(NETIF_MSG_LINK, "port %x, XGXS?%x, int_status 0x%x\n",
+        port,
+       (vars->phy_flags & PHY_XGXS_FLAG),
+        REG_RD(bp, NIG_REG_STATUS_INTERRUPT_PORT0 + port*4));
+
+       DP(NETIF_MSG_LINK, "int_mask 0x%x MI_INT %x, SERDES_LINK %x\n",
+       REG_RD(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4),
+       REG_RD(bp, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port*0x18),
+       REG_RD(bp, NIG_REG_SERDES0_STATUS_LINK_STATUS + port*0x3c));
+
+       DP(NETIF_MSG_LINK, " 10G %x, XGXS_LINK %x\n",
+         REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68),
+         REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68));
+
+       /* disable emac */
+       REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
+
+       ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
+
+       /* Check external link change only for non-direct */
+       ext_phy_link_up = bnx2x_ext_phy_is_link_up(params, vars);
+
+       /* Read gp_status */
+       CL45_RD_OVER_CL22(bp, port, params->phy_addr,
+                             MDIO_REG_BANK_GP_STATUS,
+                             MDIO_GP_STATUS_TOP_AN_STATUS1,
+                             &gp_status);
+
+       rc = bnx2x_link_settings_status(params, vars, gp_status);
+       if (rc != 0)
+               return rc;
+
+       /* anything 10 and over uses the bmac */
+       link_10g = ((vars->line_speed == SPEED_10000) ||
+                   (vars->line_speed == SPEED_12000) ||
+                   (vars->line_speed == SPEED_12500) ||
+                   (vars->line_speed == SPEED_13000) ||
+                   (vars->line_speed == SPEED_15000) ||
+                   (vars->line_speed == SPEED_16000));
+
+       bnx2x_link_int_ack(params, vars, link_10g);
+
+       /* In case external phy link is up, and internal link is down
+       ( not initialized yet probably after link initialization, it needs
+       to be initialized.
+       Note that after link down-up as result of cable plug,
+       the xgxs link would probably become up again without the need to
+       initialize it*/
+
+       if ((ext_phy_type != PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT) &&
+           (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) &&
+           (ext_phy_type != PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726) &&
+           (ext_phy_link_up && !vars->phy_link_up))
+               bnx2x_init_internal_phy(params, vars);
+
+       /* link is up only if both local phy and external phy are up */
+       vars->link_up = (ext_phy_link_up && vars->phy_link_up);
+
+       if (vars->link_up)
+               rc = bnx2x_update_link_up(params, vars, link_10g, gp_status);
+       else
+               rc = bnx2x_update_link_down(params, vars);
+
+       return rc;
+}
+
+static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp, u32 shmem_base)
+{
+       u8 ext_phy_addr[PORT_MAX];
+       u16 val;
+       s8 port;
+
+       /* PART1 - Reset both phys */
+       for (port = PORT_MAX - 1; port >= PORT_0; port--) {
+               /* Extract the ext phy address for the port */
+               u32 ext_phy_config = REG_RD(bp, shmem_base +
+                                       offsetof(struct shmem_region,
+                  dev_info.port_hw_config[port].external_phy_config));
+
+               /* disable attentions */
+               bnx2x_bits_dis(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4,
+                            (NIG_MASK_XGXS0_LINK_STATUS |
+                             NIG_MASK_XGXS0_LINK10G |
+                             NIG_MASK_SERDES0_LINK_STATUS |
+                             NIG_MASK_MI_INT));
+
+               ext_phy_addr[port] =
+                       ((ext_phy_config &
+                             PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                             PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+               /* Need to take the phy out of low power mode in order
+                       to write to access its registers */
+               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                 MISC_REGISTERS_GPIO_OUTPUT_HIGH, port);
+
+               /* Reset the phy */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                              ext_phy_addr[port],
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_CTRL,
+                              1<<15);
+       }
+
+       /* Add delay of 150ms after reset */
+       msleep(150);
+
+       /* PART2 - Download firmware to both phys */
+       for (port = PORT_MAX - 1; port >= PORT_0; port--) {
+               u16 fw_ver1;
+
+               bnx2x_bcm8073_external_rom_boot(bp, port,
+                                             ext_phy_addr[port]);
+
+               bnx2x_cl45_read(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr[port],
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_ROM_VER1, &fw_ver1);
+               if (fw_ver1 == 0 || fw_ver1 == 0x4321) {
+                       DP(NETIF_MSG_LINK,
+                                "bnx2x_8073_common_init_phy port %x:"
+                                "Download failed. fw version = 0x%x\n",
+                                port, fw_ver1);
+                       return -EINVAL;
+               }
+
+               /* Only set bit 10 = 1 (Tx power down) */
+               bnx2x_cl45_read(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr[port],
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_TX_POWER_DOWN, &val);
+
+               /* Phase1 of TX_POWER_DOWN reset */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                              ext_phy_addr[port],
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_TX_POWER_DOWN,
+                              (val | 1<<10));
+       }
+
+       /* Toggle Transmitter: Power down and then up with 600ms
+          delay between */
+       msleep(600);
+
+       /* PART3 - complete TX_POWER_DOWN process, and set GPIO2 back to low */
+       for (port = PORT_MAX - 1; port >= PORT_0; port--) {
+               /* Phase2 of POWER_DOWN_RESET */
+               /* Release bit 10 (Release Tx power down) */
+               bnx2x_cl45_read(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr[port],
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_TX_POWER_DOWN, &val);
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                              ext_phy_addr[port],
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_TX_POWER_DOWN, (val & (~(1<<10))));
+               msleep(15);
+
+               /* Read modify write the SPI-ROM version select register */
+               bnx2x_cl45_read(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr[port],
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_EDC_FFE_MAIN, &val);
+               bnx2x_cl45_write(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr[port],
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_EDC_FFE_MAIN, (val | (1<<12)));
+
+               /* set GPIO2 back to LOW */
+               bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                 MISC_REGISTERS_GPIO_OUTPUT_LOW, port);
+       }
+       return 0;
+
+}
+
+u8 bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base)
+{
+       u8 rc = 0;
+       u32 ext_phy_type;
+
+       DP(NETIF_MSG_LINK, "bnx2x_common_init_phy\n");
+
+       /* Read the ext_phy_type for arbitrary port(0) */
+       ext_phy_type = XGXS_EXT_PHY_TYPE(
+                       REG_RD(bp, shmem_base +
+                          offsetof(struct shmem_region,
+                            dev_info.port_hw_config[0].external_phy_config)));
+
+       switch (ext_phy_type) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+       {
+               rc = bnx2x_8073_common_init_phy(bp, shmem_base);
+               break;
+       }
+       default:
+               DP(NETIF_MSG_LINK,
+                        "bnx2x_common_init_phy: ext_phy 0x%x not required\n",
+                        ext_phy_type);
+               break;
+       }
+
+       return rc;
+}
+
+
+
+static void bnx2x_sfx7101_sp_sw_reset(struct bnx2x *bp, u8 port, u8 phy_addr)
+{
+       u16 val, cnt;
+
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                     phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_7101_RESET, &val);
+
+       for (cnt = 0; cnt < 10; cnt++) {
+               msleep(50);
+               /* Writes a self-clearing reset */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              phy_addr,
+                              MDIO_PMA_DEVAD,
+                              MDIO_PMA_REG_7101_RESET,
+                              (val | (1<<15)));
+               /* Wait for clear */
+               bnx2x_cl45_read(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                             phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_7101_RESET, &val);
+
+               if ((val & (1<<15)) == 0)
+                       break;
+       }
+}
+#define RESERVED_SIZE 256
+/* max application is 160K bytes - data at end of RAM */
+#define MAX_APP_SIZE (160*1024 - RESERVED_SIZE)
+
+/* Header is 14 bytes */
+#define HEADER_SIZE 14
+#define DATA_OFFSET HEADER_SIZE
+
+#define SPI_START_TRANSFER(bp, port, ext_phy_addr) \
+       bnx2x_cl45_write(bp, port, PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101, \
+                       ext_phy_addr, \
+                       MDIO_PCS_DEVAD, \
+                       MDIO_PCS_REG_7101_SPI_CTRL_ADDR, 1)
+
+/************************************************************************/
+/*   Function: bnx2x_8073_flash_download                               */
+/*   Description   : Load SPI EEPROM through BCM8073.                  */
+/*                                                                     */
+/************************************************************************/
+
+#define WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wrdata, rddata) \
+       {if (write_message_8073(bp, port, ext_phy_addr, wrdata, rddata) \
+            != 0) \
+               return -EINVAL; }
+
+static u8 write_message_8073(struct bnx2x *bp, u8 port,
+                       u8 ext_phy_addr,
+                       u16 wrdata, u16 *rddata)
+{
+       u16 tmp_data = 0;
+       u16 i = 0;
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_M8051_MSGOUT_REG, &tmp_data);
+
+       /* Write SPI Control Register Write Command.*/
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_M8051_MSGIN_REG, wrdata);
+
+       /* Wait For LASI To be asserted when M8051 writes Next Parameter To
+       MSG_OUT Register TBD  wait (xlasi_ch1 === 1'b0);
+       Above wait can also be done by polling 9005, bit 2 As bellow. */
+
+       for (i = 0; i < UPGRADE_TIMEOUT_8073; i++) {
+               bnx2x_cl45_read(bp, port,
+                             PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                             ext_phy_addr,
+                             MDIO_PMA_DEVAD,
+                             MDIO_PMA_REG_LASI_STATUS, &tmp_data);
+               if ((tmp_data & (1<<2)) != 0) {/* bit 2 is Rx Alarm for LASI.*/
+                       break;
+               }
+               msleep(60);
+       }
+
+       if (i == UPGRADE_TIMEOUT_8073) {
+               DP(NETIF_MSG_LINK, "Failed to get LASI indication. Aborting\n");
+               return -EINVAL;
+       }
+
+       /* Read Message out register. 1.CA13 */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_M8051_MSGOUT_REG, &tmp_data);
+       *rddata = tmp_data;
+
+       /* Clear LASI Message Out Status. 1.9003*/
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_RX_ALARM, &tmp_data);
+       return 0;
+}
+
+/* Programs an image to DSP's flash via the SPI port*/
+static u8 bnx2x_8073_flash_download(struct bnx2x *bp, u8 port,
+                                 u8 ext_phy_addr,
+                                 char *code_ptr, u32 size) {
+
+       u16 tmp, rd_data, wr_data;
+       u8 count, spi_ready, rc = 0;
+       u32 i, data_index;
+       u16 misc_ctrl;
+       u16 retry_count1, retry_count2, retry_count3;
+
+       /* disable attentions */
+       REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0);
+
+       /* activate nig drain */
+       REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
+
+       /* disable nig egress interface */
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0);
+
+       /* Stop BigMac rx */
+       bnx2x_bmac_rx_disable(bp, port);
+
+       /* disable emac */
+       REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
+
+       msleep(10);
+       /* The PHY reset is controled by GPIO 1
+        * Hold it as vars low
+        */
+
+       /* reset the SerDes/XGXS */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_3_CLEAR,
+                  (0x1ff << (port*16)));
+
+       /* reset BigMac */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
+                  (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << port));
+
+       /* disable nig ingress interface */
+       REG_WR(bp, NIG_REG_BMAC0_IN_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EMAC0_IN_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_BMAC0_OUT_EN + port*4, 0);
+       REG_WR(bp, NIG_REG_EGRESS_EMAC0_OUT_EN + port*4, 0);
+
+       DP(NETIF_MSG_LINK, "bnx2x_8073_flash_download: size=0x%x\n", size);
+
+       bnx2x_cl45_write(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_AN_DEVAD,
+                     MDIO_AN_REG_CTRL, 0);
+
+       /* Enable the LASI For Message out */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_MISC_CTRL1, &misc_ctrl);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, (misc_ctrl | (1<<0)));
+
+       /* Read LASI Status registers To clear initial Failure status. */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_RX_ALARM, &tmp);
+
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_TX_ALARM, &tmp);
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_LASI_STATUS, &tmp);
+
+       /* Enable the LASI For Message out */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_RX_ALARM_CTRL, 0x4);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_LASI_CTRL, 0x4);
+
+
+       /*  Read Any Residual Message out register.1.CA13*/
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_M8051_MSGOUT_REG, &rd_data);
+
+       /*  Clear LASI Message Out Status. 1.9003 */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_RX_ALARM, &rd_data);
+
+       for (data_index = 0; data_index < BUF_SIZE_8073;
+             data_index += WR_BLOCK_SIZE) {
+               /* Setup SPI Controller
+               Write SPI Control Register Write Command. */
+
+               count = 2; /* Write to C400, C401, C402, C403 Registers.*/
+               wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -2 Register Address.*/
+               wr_data = SPI_CTRL_2_L;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -2 Register Word-1 */
+               /* C400 = 0 for 0 Fill Byte. C401 = 02 for SPI Clcok to
+               be divide by 2 and little endian fifo.*/
+               wr_data = 0x8200;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -2 Register Word-2.*/
+               /* C402 = 0, clear all status. C403 = 1,
+               to enable Done Status.*/
+               wr_data = 0x0100;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Fill-up SPI Transmit Fifo.*/
+               /* Write SPI Control Register Write Command. */
+               /* Write To Transmit Fifo D000-onwards.*/
+               count = 4 + (WR_BLOCK_SIZE/2);
+               wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write Tx Fifo Register Address.*/
+               wr_data = SPI_TXFIFO;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Tx Fifo Control Word-1.*/
+               /* {8'h1, MSGTYPE_HWR}; // D000 = Only 1 byte Message
+               ( 1byte to transmit for WREN opcode).*/
+               wr_data = ((1*0x0100) | MSGTYPE_HWR);
+               /* D001 = Write Message And  Higher byte of Transfer Size */
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+               /* Write SPI Tx Fifo Control Word-2.*/
+               /* D002 = WREN Opcode For transmit.*/
+               wr_data = ((MSGTYPE_HWR*0x0100) | WREN_OPCODE);
+               /* D003 = Total byte To be transmited
+               (64 + 3 For command, And address).*/
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Tx Fifo Control Word-3.*/
+               /* D004 = Second Message is also WRITE Message.*/
+               wr_data = ((WR_OPCODE*0x0100) | (0x3 + WR_BLOCK_SIZE));
+               /* D005 = Write Opcode.*/
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Tx Fifo Control Word-4. */
+               /* D006 = SPI EEPROM Dest Addr (higher byte sent out first).*/
+               /* D007 = SPI EEPROM Dest Addr (lower byte sent out later).*/
+               wr_data = (((data_index & 0x00FF)*0x0100) |
+                          ((data_index & 0xFF00)/0x0100));
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               for (i = 0; i < WR_BLOCK_SIZE; i += 2) {
+                       /* Write SPI Tx Fifo Data Word-4.*/
+                       /* D008 = Low Byte. D009 = High Byte.*/
+                       wr_data = (u16)((code_ptr[i+data_index+1]*0x0100) |
+                                       (code_ptr[i+data_index] & 0x00FF));
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data,
+                                          &rd_data);
+               }
+
+               DP(NETIF_MSG_LINK, " 64bytes filled in SPIfifo is done 0x%x\n",
+                        data_index);
+
+               /* Let the user know something's going on every 1024 bytes.*/
+               if ((data_index % 1024) == 0)
+                       DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size);
+
+               /* Set-up SPI Controller To Transmit.*/
+               /* Write SPI Control Register Write Command.*/
+               /* Write to SPI Control Register C000 onwards.*/
+               count = 2;
+               /* {CLC_WR_CPU_CTRL_FIFO, count};*/
+               wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -1 Register Address.*/
+               wr_data = SPI_CTRL_1_L;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -1 Register Word-1.*/
+               /* C000 = 1 to clear CMD Done Status. C001 = 1 to clear CMD Done
+               INT Status.*/
+               wr_data = 0x0501;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Write SPI Control -1 Register Word-2.*/
+               /* C002 = 3, Start Immidiate Command. C003 = 0, No Prepend byte
+               for Write.*/
+               wr_data = 0x0003;
+               WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+               /* Wait For 64 bytes To be written.*/
+               rd_data = 0;
+               retry_count1 = UPGRADE_TIMEOUT_8073;
+               while (((rd_data & 0x0100) == 0) && (retry_count1 > 0)) {
+                       /* Write SPI Control Register Read Command.*/
+                       retry_count1--;
+                       count = 1;/* Read from SPI Controller register C000.*/
+                       wr_data = ((RD_CPU_CTRL_REGS*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data,
+                                          &rd_data);
+
+                       /* Write SPI Control -1 Register Address.*/
+                       wr_data = SPI_CTRL_1_L;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data,
+                                          &rd_data);
+                       msleep(50);
+                       DP(NETIF_MSG_LINK, "INFO -- Status Register = 0x%x\n",
+                                rd_data);
+               }
+               if (retry_count1 == 0) {
+                       DP(NETIF_MSG_LINK,
+                               "Error: Too many retries writing of SPI"
+                               "Controller\n");
+                       return -EINVAL;
+               }
+               spi_ready = 1;
+               retry_count2 = UPGRADE_TIMEOUT_8073;
+               while ((spi_ready == 1) && (retry_count2 > 0)) {
+                       retry_count2--;
+                       /* Set-up SPI Controller To Receive SPI EEPROM Status.*/
+                       /* Write SPI Control Register Write Command. */
+                       /* Write to SPI Control Register C000 onwards.*/
+                       count = 1;
+                       wr_data = ((WR_CPU_CTRL_REGS*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -2 Register Address.*/
+                       wr_data = SPI_CTRL_2_H;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -2 Register Word-2.*/
+                       /* C402 = 0, clear all status. C403 = 1, to
+                       wr_data = 0x0100 ;
+                       enable Done Status.*/
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Fill-up SPI Transmit Fifo To check SPI Status.*/
+                       /* Write SPI Control Register Write Command.*/
+                       count = 2;   /* Write to Transmit Fifo D000-onwards.*/
+                       wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write Tx Fifo Register Address.*/
+                       wr_data = SPI_TXFIFO;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Tx Fifo Control Word-1.*/
+                       /* D000 = Only 1 byte
+                       wr_data = ((1*0x0100) | MSGTYPE_HRD);
+                       Message ( 1byte to transmit for RDSR opcode).*/
+
+                       /* D001 = Write Message And  Higher byte
+                          of Transfer Size.*/
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Tx Fifo Control Word-2.*/
+                       /* D002 = RDSR Opcode for transmit*/
+                       wr_data = RDSR_OPCODE;
+
+                       /* D003 = NOP */
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control Register Write Command.*/
+                       /* Write to SPI Control Register C000 onwards.*/
+                       count = 2;
+                       wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Address.*/
+                       wr_data = SPI_CTRL_1_L;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Word-1.*/
+                       wr_data = 0x0101; /* C000 = 1 to clear CMD Done Status.
+                       C001 = 1 to clear CMD Done INT Status.*/
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Word-2.*/
+                       wr_data = 0x0100;/* C002 = 0, No Command. C003 = 1, 1
+                       byte prepend for Read.*/
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control Register Write Command.*/
+                       /* Write to SPI Control Register C000 onwards.*/
+                       count = 1;
+                       wr_data = ((WR_CPU_CTRL_REGS*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Address.*/
+                       wr_data = SPI_CTRL_1_H;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Word-2.*/
+                       wr_data = 0x0103; /* C002 = 3, Start Immidiate Command.
+                       C003 = 1, 1 byte prepend for Read.*/
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       DP(NETIF_MSG_LINK,
+                                "***Wait for 64 bytes to be written 0x%x\n",
+                                data_index);
+
+                       /* Wait For 64 bytes To be written. */
+                       rd_data = 0x0000;
+                       retry_count3 = UPGRADE_TIMEOUT_8073;
+                       while (((rd_data & 0x0100) == 0) &&
+                              (retry_count3 > 0)) {
+                               retry_count3--;
+                               /* Write SPI Control Register Read Command.*/
+                               /*Read from SPI Controller register C000.*/
+                               count = 1;
+                               wr_data = ((RD_CPU_CTRL_REGS*0x0100) |
+                                          count);
+                               WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                                  wr_data, &rd_data);
+
+                               /* Write SPI Control -1 Register Address.*/
+                               wr_data = SPI_CTRL_1_L;
+                               WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                                  wr_data, &rd_data);
+                               msleep(50);
+                               DP(NETIF_MSG_LINK,
+                                        "INFO -- Status Register = 0x%x\n",
+                                        rd_data);
+                       }
+                       if (retry_count3 == 0) {
+                               DP(NETIF_MSG_LINK,
+                                       "Too many retries waiting for 64 bytes"
+                                       " to be written\n");
+                               return -EINVAL;
+                       }
+                       DP(NETIF_MSG_LINK,
+                                "Write SPI CTRl Read command 0x%x\n",
+                                data_index);
+                       /* Write SPI Control Register Read Command.*/
+                       /* Read from SPI Controller register C000.*/
+                       count   = 1;
+                       wr_data = ((RD_CPU_CTRL_REGS*0x0100) | count);
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       /* Write SPI Control -1 Register Address. */
+                       wr_data = SPI_RXFIFO;
+                       WRITE_MESSAGE_8073(bp, port, ext_phy_addr,
+                                          wr_data, &rd_data);
+
+                       DP(NETIF_MSG_LINK,
+                                "INFO -- SPI Status Register = 0x%x\n",
+                                rd_data);
+
+                       if ((rd_data & 0x1) == 0)
+                               spi_ready = 0;
+
+                       msleep(50);
+               } /* spi_ready*/
+               if (retry_count2 == 0) {
+                       DP(NETIF_MSG_LINK, "ERROR: Too many retries to get"
+                                   "spi_ready\n");
+                       return -EINVAL;
+               }
+
+       } /* SPI_WRITE */
+
+       DP(NETIF_MSG_LINK, "*** SPI_READ and WRITE COMPLETE 0x%x\n",
+                data_index);
+
+       /* Disable SPI EEPROM.*/
+       /* Write SPI Control Register Write Command.*/
+       count   = 2; /* Write to C400, C401, C402, C403 Registers.*/
+       wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Control -2 Register Address.*/
+       wr_data = SPI_CTRL_2_L;
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Control -2 Register Word-1.*/
+       wr_data = 0x8200; /* C400 = 0 for 0 Fill Byte. C401 = 02 for
+       SPI Clcok to be divide by 2 and little endian fifo.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Control -2 Register Word-2.*/
+       wr_data = 0x0100; /* C402 = 0, clear all status. C403 = 1, to
+       enable Done Status.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Fill-up SPI Transmit Fifo With SPI EEPROM Messages.*/
+       /* Write SPI Control Register Write Command.*/
+       count   = 2;  /* Write to Transmit Fifo D000-onwards.*/
+               wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /*Write Tx Fifo Register Address.*/
+       wr_data = SPI_TXFIFO;       /* D000.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Tx Fifo Control Word-1.*/
+       wr_data = ((0x1*0x0100) | MSGTYPE_HWR); /* D000 = Only 1
+       byte Message ( 1byte to transmit for WRDI opcode).*/
+
+       /* D001 = Write Message And  Higher byte of Transfer Size.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Tx Fifo Control Word-2.*/
+       wr_data = WRDI_OPCODE; /* D002 = WRDI Opcode for transmit.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /*Write SPI Control Register Write Command.*/
+       count   = 2;       /* Write to SPI Control Register C000 onwards.*/
+       wr_data = ((WR_CPU_CTRL_FIFO*0x0100) | count);
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+       /* Write SPI Control -1 Register Address.*/
+       wr_data = SPI_CTRL_1_L;
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Control -1 Register Word-1.*/
+       wr_data = 0x0101;  /* C000 = 1 to clear CMD Done Status.
+       C001 = 1 to clear CMD Done INT Status.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+
+       /* Write SPI Control -1 Register Word-2.*/
+       wr_data = 0x0003; /* C002 = 3, Start Immidiate Command.
+       C003 = 0, No Prepend byte for Write.*/
+       WRITE_MESSAGE_8073(bp, port, ext_phy_addr, wr_data, &rd_data);
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
+                      ext_phy_addr,
+                      MDIO_PMA_DEVAD,
+                      MDIO_PMA_REG_MISC_CTRL1, (misc_ctrl & ~(1<<0)));
+       DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size);
+       return rc;
+}
+
+/* Programs an image to DSP's flash via the SPI port*/
+static u8 bnx2x_sfx7101_flash_download(struct bnx2x *bp, u8 port,
+                                    u8 ext_phy_addr,
+                                    char data[], u32 size)
+{
+       const u16 num_trans = size/4; /* 4 bytes can be sent at a time */
+       /* Doesn't include last trans!*/
+       const u16 last_trans_size = size%4; /* Num bytes on last trans */
+       u16 trans_cnt, byte_cnt;
+       u32 data_index;
+       u16 tmp;
+       u16 code_started = 0;
+       u16 image_revision1, image_revision2;
+       u16 cnt;
+
+       DP(NETIF_MSG_LINK, "bnx2x_sfx7101_flash_download file_size=%d\n", size);
+       /* Going to flash*/
+       if ((size-HEADER_SIZE) > MAX_APP_SIZE) {
+               /* This very often will be the case, because the image is built
+               with 160Kbytes size whereas the total image size must actually
+               be 160Kbytes-RESERVED_SIZE */
+               DP(NETIF_MSG_LINK, "Warning, file size was %d bytes "
+                        "truncated to %d bytes\n", size, MAX_APP_SIZE);
+               size = MAX_APP_SIZE+HEADER_SIZE;
+       }
+       DP(NETIF_MSG_LINK, "File version is %c%c\n", data[0x14e], data[0x14f]);
+       DP(NETIF_MSG_LINK, "          %c%c\n", data[0x150], data[0x151]);
+       /* Put the DSP in download mode by setting FLASH_CFG[2] to 1
+          and issuing a reset.*/
+
+       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0,
+                         MISC_REGISTERS_GPIO_HIGH, port);
+
+       bnx2x_sfx7101_sp_sw_reset(bp, port, ext_phy_addr);
+
+       /* wait 0.5 sec */
+       for (cnt = 0; cnt < 100; cnt++)
+               msleep(5);
+
+       /* Make sure we can access the DSP
+          And it's in the correct mode (waiting for download) */
+
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                     ext_phy_addr,
+                     MDIO_PCS_DEVAD,
+                     MDIO_PCS_REG_7101_DSP_ACCESS, &tmp);
+
+       if (tmp != 0x000A) {
+               DP(NETIF_MSG_LINK, "DSP is not in waiting on download mode. "
+                        "Expected 0x000A, read 0x%04X\n", tmp);
+               DP(NETIF_MSG_LINK, "Download failed\n");
+               return -EINVAL;
+       }
+
+       /* Mux the SPI interface away from the internal processor */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_MUX, 1);
+
+       /* Reset the SPI port */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_CTRL_ADDR, 0);
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_CTRL_ADDR,
+                      (1<<MDIO_PCS_REG_7101_SPI_RESET_BIT));
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_CTRL_ADDR, 0);
+
+       /* Erase the flash */
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                      MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                      1);
+
+       SPI_START_TRANSFER(bp, port, ext_phy_addr);
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                      MDIO_PCS_REG_7101_SPI_FIFO_ADDR_BULK_ERASE_CMD);
+
+       bnx2x_cl45_write(bp, port,
+                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                      ext_phy_addr,
+                      MDIO_PCS_DEVAD,
+                      MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                      1);
+       SPI_START_TRANSFER(bp, port, ext_phy_addr);
+
+       /* Wait 10 seconds, the maximum time for the erase to complete */
+       DP(NETIF_MSG_LINK, "Erasing flash, this takes 10 seconds...\n");
+       for (cnt = 0; cnt < 1000; cnt++)
+               msleep(10);
+
+       DP(NETIF_MSG_LINK, "Downloading flash, please wait...\n");
+       data_index = 0;
+       for (trans_cnt = 0; trans_cnt < num_trans; trans_cnt++) {
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                            ext_phy_addr,
+                            MDIO_PCS_DEVAD,
+                            MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                            MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD);
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                              1);
+               SPI_START_TRANSFER(bp, port, ext_phy_addr);
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                            MDIO_PCS_REG_7101_SPI_FIFO_ADDR_PAGE_PROGRAM_CMD);
+
+               /* Bits 23-16 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              (data_index>>16));
+               /* Bits 15-8 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              (data_index>>8));
+
+               /* Bits 7-0 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              ((u16)data_index));
+
+               byte_cnt = 0;
+               while (byte_cnt < 4 && data_index < size) {
+                       bnx2x_cl45_write(bp, port,
+                                      PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                                      ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              data[data_index++]);
+                       byte_cnt++;
+               }
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                              byte_cnt+4);
+
+               SPI_START_TRANSFER(bp, port, ext_phy_addr);
+               msleep(5); /* Wait 5 ms minimum between transs */
+
+               /* Let the user know something's going on.*/
+               /* a pacifier ever 4K */
+               if ((data_index % 1023) == 0)
+                       DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size);
+       }
+
+       DP(NETIF_MSG_LINK, "\n");
+       /* Transfer the last block if there is data remaining */
+       if (last_trans_size) {
+               bnx2x_cl45_write(bp, port,
+                       PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                       ext_phy_addr,
+                       MDIO_PCS_DEVAD,
+                       MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                       MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD);
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                              1);
+
+               SPI_START_TRANSFER(bp, port, ext_phy_addr);
+
+               bnx2x_cl45_write(bp, port,
+                            PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                            ext_phy_addr,
+                            MDIO_PCS_DEVAD,
+                            MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                            MDIO_PCS_REG_7101_SPI_FIFO_ADDR_PAGE_PROGRAM_CMD);
+
+               /* Bits 23-16 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              (data_index>>16));
+               /* Bits 15-8 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              (data_index>>8));
+
+               /* Bits 7-0 of address */
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                              ((u16)data_index));
+
+               byte_cnt = 0;
+               while (byte_cnt < last_trans_size && data_index < size) {
+                       /* Bits 7-0 of address */
+                       bnx2x_cl45_write(bp, port,
+                               PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                               ext_phy_addr,
+                               MDIO_PCS_DEVAD,
+                               MDIO_PCS_REG_7101_SPI_FIFO_ADDR,
+                               data[data_index++]);
+                       byte_cnt++;
+               }
+
+               bnx2x_cl45_write(bp, port,
+                              PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                              ext_phy_addr,
+                              MDIO_PCS_DEVAD,
+                              MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR,
+                              byte_cnt+4);
+
+               SPI_START_TRANSFER(bp, port, ext_phy_addr);
+       }
+
+       /* DSP Remove Download Mode */
+       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_0,
+                         MISC_REGISTERS_GPIO_LOW, port);
+
+       bnx2x_sfx7101_sp_sw_reset(bp, port, ext_phy_addr);
+
+       /* wait 0.5 sec to allow it to run */
+       for (cnt = 0; cnt < 100; cnt++)
+               msleep(5);
+
+       bnx2x_hw_reset(bp, port);
+
+       for (cnt = 0; cnt < 100; cnt++)
+               msleep(5);
+
+       /* Check that the code is started. In case the download
+       checksum failed, the code won't be started. */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                     ext_phy_addr,
+                     MDIO_PCS_DEVAD,
+                     MDIO_PCS_REG_7101_DSP_ACCESS,
+                     &tmp);
+
+       code_started = (tmp & (1<<4));
+       if (!code_started) {
+               DP(NETIF_MSG_LINK, "Download failed. Please check file.\n");
+               return -EINVAL;
+       }
+
+       /* Verify that the file revision is now equal to the image
+       revision within the DSP */
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_7101_VER1,
+                     &image_revision1);
+
+       bnx2x_cl45_read(bp, port,
+                     PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101,
+                     ext_phy_addr,
+                     MDIO_PMA_DEVAD,
+                     MDIO_PMA_REG_7101_VER2,
+                     &image_revision2);
+
+       if (data[0x14e] != (image_revision2&0xFF) ||
+           data[0x14f] != ((image_revision2&0xFF00)>>8) ||
+           data[0x150] != (image_revision1&0xFF) ||
+           data[0x151] != ((image_revision1&0xFF00)>>8)) {
+               DP(NETIF_MSG_LINK, "Download failed.\n");
+               return -EINVAL;
+       }
+       DP(NETIF_MSG_LINK, "Download %d%%\n", data_index/size);
+       return 0;
+}
+
+u8 bnx2x_flash_download(struct bnx2x *bp, u8 port, u32 ext_phy_config,
+                     u8 driver_loaded, char data[], u32 size)
+{
+       u8 rc = 0;
+       u32 ext_phy_type;
+       u8 ext_phy_addr;
+       ext_phy_addr = ((ext_phy_config &
+                       PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >>
+                       PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT);
+
+       ext_phy_type = XGXS_EXT_PHY_TYPE(ext_phy_config);
+
+       switch (ext_phy_type) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+               DP(NETIF_MSG_LINK,
+                       "Flash download not supported for this ext phy\n");
+               rc = -EINVAL;
+               break;
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+               if (!driver_loaded)
+                       bnx2x_turn_on_ef(bp, port, ext_phy_addr, ext_phy_type);
+
+               rc = bnx2x_8073_flash_download(bp, port, ext_phy_addr,
+                                            data, size);
+               break;
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+               /* Take ext phy out of reset */
+               if (!driver_loaded)
+                       bnx2x_turn_on_ef(bp, port, ext_phy_addr, ext_phy_type);
+               rc = bnx2x_sfx7101_flash_download(bp, port, ext_phy_addr,
+                                               data, size);
+               if (!driver_loaded)
+                       bnx2x_turn_off_sf(bp, port);
+               break;
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_NOT_CONN:
+       default:
+               DP(NETIF_MSG_LINK, "Invalid ext phy type\n");
+               rc = -EINVAL;
+               break;
+       }
+       return rc;
+}
+
diff --git a/drivers/net/bnx2x_link.h b/drivers/net/bnx2x_link.h
new file mode 100644 (file)
index 0000000..ad3ca27
--- /dev/null
@@ -0,0 +1,175 @@
+/* Copyright 2008 Broadcom Corporation
+ *
+ * Unless you and Broadcom execute a separate written software license
+ * agreement governing use of this software, this software is licensed to you
+ * under the terms of the GNU General Public License version 2, available
+ * at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html (the "GPL").
+ *
+ * Notwithstanding the above, under no circumstances may you combine this
+ * software in any way with any other Broadcom software provided under a
+ * license other than the GPL, without Broadcom's express prior written
+ * consent.
+ *
+ * Written by Yaniv Rosner
+ *
+ */
+
+#ifndef BNX2X_LINK_H
+#define BNX2X_LINK_H
+
+
+
+/***********************************************************/
+/*                         Defines                         */
+/***********************************************************/
+#define DEFAULT_PHY_DEV_ADDR 3
+
+
+
+#define FLOW_CTRL_AUTO         PORT_FEATURE_FLOW_CONTROL_AUTO
+#define FLOW_CTRL_TX           PORT_FEATURE_FLOW_CONTROL_TX
+#define FLOW_CTRL_RX           PORT_FEATURE_FLOW_CONTROL_RX
+#define FLOW_CTRL_BOTH         PORT_FEATURE_FLOW_CONTROL_BOTH
+#define FLOW_CTRL_NONE         PORT_FEATURE_FLOW_CONTROL_NONE
+
+#define SPEED_AUTO_NEG     0
+#define SPEED_12000            12000
+#define SPEED_12500            12500
+#define SPEED_13000            13000
+#define SPEED_15000            15000
+#define SPEED_16000            16000
+
+
+/***********************************************************/
+/*                         Structs                         */
+/***********************************************************/
+/* Inputs parameters to the CLC */
+struct link_params {
+
+       u8 port;
+
+       /* Default / User Configuration */
+       u8 loopback_mode;
+#define LOOPBACK_NONE  0
+#define LOOPBACK_EMAC  1
+#define LOOPBACK_BMAC  2
+#define LOOPBACK_XGXS_10       3
+#define LOOPBACK_EXT_PHY       4
+#define LOOPBACK_EXT       5
+
+       u16 req_duplex;
+       u16 req_flow_ctrl;
+       u16 req_fc_auto_adv; /* Should be set to TX / BOTH when
+       req_flow_ctrl is set to AUTO */
+       u16 req_line_speed; /* Also determine AutoNeg */
+
+       /* Device parameters */
+       u8 mac_addr[6];
+
+       /* shmem parameters */
+       u32 shmem_base;
+       u32 speed_cap_mask;
+       u32 switch_cfg;
+#define SWITCH_CFG_1G          PORT_FEATURE_CON_SWITCH_1G_SWITCH
+#define SWITCH_CFG_10G         PORT_FEATURE_CON_SWITCH_10G_SWITCH
+#define SWITCH_CFG_AUTO_DETECT PORT_FEATURE_CON_SWITCH_AUTO_DETECT
+
+       u16 hw_led_mode; /* part of the hw_config read from the shmem */
+       u32 lane_config;
+       u32 ext_phy_config;
+#define XGXS_EXT_PHY_TYPE(ext_phy_config)      (ext_phy_config & \
+                                       PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK)
+#define SERDES_EXT_PHY_TYPE(ext_phy_config)    (ext_phy_config & \
+                                       PORT_HW_CFG_SERDES_EXT_PHY_TYPE_MASK)
+       /* Phy register parameter */
+       u32 chip_id;
+
+       /* phy_addr populated by the CLC */
+       u8 phy_addr;
+       u16 xgxs_config_rx[4]; /* preemphasis values for the rx side */
+
+       u16 xgxs_config_tx[4]; /* preemphasis values for the tx side */
+       u32 feature_config_flags;
+#define FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED (1<<0)
+       /* Device pointer passed to all callback functions */
+       struct bnx2x *bp;
+};
+
+/* Output parameters */
+struct link_vars {
+       u8 phy_link_up; /* internal phy link indication */
+       u8 link_up;
+       u16 duplex;
+       u16 flow_ctrl;
+       u32 ieee_fc;
+       u8 mac_type;
+
+#define MAC_TYPE_NONE  0
+#define MAC_TYPE_EMAC  1
+#define MAC_TYPE_BMAC  2
+       u16 line_speed;
+       u32 autoneg;
+#define AUTO_NEG_DISABLED                      0x0
+#define AUTO_NEG_ENABLED                       0x1
+#define AUTO_NEG_COMPLETE                      0x2
+#define AUTO_NEG_PARALLEL_DETECTION_USED       0x3
+
+       u8 phy_flags;
+
+       /* The same definitions as the shmem parameter */
+       u32 link_status;
+};
+
+/***********************************************************/
+/*                         Functions                       */
+/***********************************************************/
+
+/* Initialize the phy */
+u8 bnx2x_phy_init(struct link_params *input, struct link_vars *output);
+
+/* Reset the link. Should be called when driver or interface goes down */
+u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars);
+
+/* bnx2x_link_update should be called upon link interrupt */
+u8 bnx2x_link_update(struct link_params *input, struct link_vars *output);
+
+/* use the following cl45 functions to read/write from external_phy
+  In order to use it to read/write internal phy registers, use
+  DEFAULT_PHY_DEV_ADDR as devad, and (_bank + (_addr & 0xf)) as
+  Use ext_phy_type of 0 in case of cl22 over cl45
+  the register */
+u8 bnx2x_cl45_read(struct bnx2x *bp, u8 port, u32 ext_phy_type,
+                u8 phy_addr, u8 devad, u16 reg, u16 *ret_val);
+
+u8 bnx2x_cl45_write(struct bnx2x *bp, u8 port, u32 ext_phy_type,
+                 u8 phy_addr, u8 devad, u16 reg, u16 val);
+
+/* Reads the link_status from the shmem,
+   and update the link vars accordingly */
+void bnx2x_link_status_update(struct link_params *input,
+                           struct link_vars *output);
+/* returns string representing the fw_version of the external phy */
+u8 bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 driver_loaded,
+                             u8 *version, u16 len);
+
+/* Set/Unset the led
+   Basically, the CLC takes care of the led for the link, but in case one needs
+   to set/unset the led unnaturally, set the "mode" to LED_MODE_OPER to
+   blink the led, and LED_MODE_OFF to set the led off.*/
+u8 bnx2x_set_led(struct bnx2x *bp, u8 port, u8 mode, u32 speed,
+              u16 hw_led_mode, u32 chip_id);
+#define LED_MODE_OFF   0
+#define LED_MODE_OPER  2
+
+u8 bnx2x_override_led_value(struct bnx2x *bp, u8 port, u32 led_idx, u32 value);
+
+u8 bnx2x_flash_download(struct bnx2x *bp, u8 port, u32 ext_phy_config,
+                     u8 driver_loaded, char data[], u32 size);
+/* Get the actual link status. In case it returns 0, link is up,
+       otherwise link is down*/
+u8 bnx2x_test_link(struct link_params *input, struct link_vars *vars);
+
+/* One-time initialization for external phy after power up */
+u8 bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base);
+
+#endif /* BNX2X_LINK_H */
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c
new file mode 100644 (file)
index 0000000..12344a8
--- /dev/null
@@ -0,0 +1,11704 @@
+/* bnx2x_main.c: Broadcom Everest network driver.
+ *
+ * Copyright (c) 2007-2008 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * Maintained by: Eilon Greenstein <eilong@broadcom.com>
+ * Written by: Eliezer Tamir
+ * Based on code from Michael Chan's bnx2 driver
+ * UDP CSUM errata workaround by Arik Gendelman
+ * Slowpath rework by Vladislav Zolotarov
+ * Statistics and Link management by Yitchak Gertner
+ *
+ */
+
+#include <linux/version.h>
+#include <linux/module.h>
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+#include <linux/moduleparam.h>
+#endif
+#include <linux/kernel.h>
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+#include <linux/device.h>  /* for dev_info() */
+#endif
+#include <linux/timer.h>
+#include <linux/errno.h>
+#include <linux/ioport.h>
+#include <linux/slab.h>
+#include <linux/vmalloc.h>
+#include <linux/interrupt.h>
+#include <linux/pci.h>
+#include <linux/init.h>
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/skbuff.h>
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+#include <linux/dma-mapping.h>
+#endif
+#include <linux/bitops.h>
+#include <linux/irq.h>
+#include <linux/delay.h>
+#include <asm/byteorder.h>
+#include <linux/time.h>
+#include <linux/ethtool.h>
+#include <linux/mii.h>
+#ifdef NETIF_F_HW_VLAN_TX
+       #include <linux/if_vlan.h>
+#endif
+#include <net/ip.h>
+#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */
+#include <net/ipv6.h>
+#endif
+#include <net/tcp.h>
+#include <net/checksum.h>
+#if (LINUX_VERSION_CODE > 0x020607) /* BNX2X_UPSTREAM */
+#include <net/ip6_checksum.h>
+#endif
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+#include <linux/workqueue.h>
+#endif
+#include <linux/crc32.h>
+#if (LINUX_VERSION_CODE > 0x020605) && (!defined(BNX2X_DRIVER_DISK)) /* BNX2X_UPSTREAM */
+#if !defined(__VMKLNX__)
+#include <linux/crc32c.h>
+#endif
+#endif
+#include <linux/prefetch.h>
+#include <linux/zlib.h>
+#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */
+#include <linux/io.h>
+#else
+#include <asm/io.h>
+#endif
+
+#if defined(__VMKLNX__) /* ! BNX2X_UPSTREAM */
+#define __NO_TPA__             1
+#define KERN_CONT              KERN_INFO
+#endif /* defined(__VMKLNX__) */
+#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */
+#define __NO_TPA__             1
+#endif
+
+#include "bnx2x.h"
+#include "bnx2x_init.h"
+#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
+#include "bnx2x_self_test.h"
+#endif
+
+#define DRV_MODULE_VERSION     "1.46.8"
+#define DRV_MODULE_RELDATE     "$DateTime: 2008/10/07 10:26:45 $"
+#define BNX2X_BC_VER           0x040200
+
+/* Time in jiffies before concluding the transmitter is hung */
+#define TX_TIMEOUT             (5*HZ)
+
+static char version[] __devinitdata =
+       "Broadcom NetXtreme II 5771x 10Gigabit Ethernet Driver "
+       DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
+
+MODULE_AUTHOR("Eliezer Tamir");
+MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710/57711/57711E Driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_MODULE_VERSION);
+#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
+#if (LINUX_VERSION_CODE >= 0x020600) /* ! BNX2X_UPSTREAM */
+MODULE_INFO(cvs_version, "$Revision: #125 $");
+#endif
+#endif
+
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+static int multi_mode = 1;
+module_param(multi_mode, int, 0);
+MODULE_PARM_DESC(multi_mode,
+                " Multi queue mode (1 per-CPU; 2 VLAN PRI; 4 IP DSCP)");
+
+static int pri_map;
+module_param(pri_map, int, 0);
+MODULE_PARM_DESC(pri_map, " Priority to HW queue mapping");
+#else
+static int multi_mode;
+static int pri_map;
+#endif
+
+#if defined(__NO_TPA__)
+static int disable_tpa = 1;
+#else
+static int disable_tpa;
+module_param(disable_tpa, int, 0);
+MODULE_PARM_DESC(disable_tpa, " Disable the TPA (LRO) feature");
+#endif
+
+static int int_mode;
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+module_param(int_mode, int, 0);
+MODULE_PARM_DESC(int_mode, " Force interrupt mode (1 INT#x; 2 MSI)");
+#endif
+
+static int poll;
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+module_param(poll, int, 0);
+MODULE_PARM_DESC(poll, " Use polling (for debug)");
+#endif
+
+static int debug;
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, " Default debug msglevel");
+#endif
+
+static int load_count[3]; /* 0-common, 1-port0, 2-port1 */
+
+enum bnx2x_board_type {
+       BCM57710 = 0,
+       BCM57711 = 1,
+       BCM57711E = 2,
+};
+
+/* indexed by board_type, above */
+static struct {
+       char *name;
+} board_info[] __devinitdata = {
+       { "Broadcom NetXtreme II BCM57710 XGb" },
+       { "Broadcom NetXtreme II BCM57711 XGb" },
+       { "Broadcom NetXtreme II BCM57711E XGb" }
+};
+
+#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
+#ifndef PCI_DEVICE_ID_NX2_57710
+#define PCI_DEVICE_ID_NX2_57710                0x164e
+#endif
+#ifndef PCI_DEVICE_ID_NX2_57711
+#define PCI_DEVICE_ID_NX2_57711                0x164f
+#endif
+#ifndef PCI_DEVICE_ID_NX2_57711E
+#define PCI_DEVICE_ID_NX2_57711E       0x1650
+#endif
+#endif
+
+static const struct pci_device_id bnx2x_pci_tbl[] = {
+       { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57710,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM57710 },
+       { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57711,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM57711 },
+       { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57711E,
+               PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM57711E },
+       { 0 }
+};
+
+MODULE_DEVICE_TABLE(pci, bnx2x_pci_tbl);
+
+/****************************************************************************
+* General service functions
+****************************************************************************/
+
+/* used only at init
+ * locking is done by mcp
+ */
+static void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val)
+{
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr);
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_DATA, val);
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
+                              PCICFG_VENDOR_ID_OFFSET);
+}
+
+static u32 bnx2x_reg_rd_ind(struct bnx2x *bp, u32 addr)
+{
+       u32 val;
+
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, addr);
+       pci_read_config_dword(bp->pdev, PCICFG_GRC_DATA, &val);
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
+                              PCICFG_VENDOR_ID_OFFSET);
+
+       return val;
+}
+
+static const u32 dmae_reg_go_c[] = {
+       DMAE_REG_GO_C0, DMAE_REG_GO_C1, DMAE_REG_GO_C2, DMAE_REG_GO_C3,
+       DMAE_REG_GO_C4, DMAE_REG_GO_C5, DMAE_REG_GO_C6, DMAE_REG_GO_C7,
+       DMAE_REG_GO_C8, DMAE_REG_GO_C9, DMAE_REG_GO_C10, DMAE_REG_GO_C11,
+       DMAE_REG_GO_C12, DMAE_REG_GO_C13, DMAE_REG_GO_C14, DMAE_REG_GO_C15
+};
+
+/* copy command into DMAE command memory and set DMAE command go */
+static void bnx2x_post_dmae(struct bnx2x *bp, struct dmae_command *dmae,
+                           int idx)
+{
+       u32 cmd_offset;
+       int i;
+
+       cmd_offset = (DMAE_REG_CMD_MEM + sizeof(struct dmae_command) * idx);
+       for (i = 0; i < (sizeof(struct dmae_command)/4); i++) {
+               REG_WR(bp, cmd_offset + i*4, *(((u32 *)dmae) + i));
+
+               DP(BNX2X_MSG_OFF, "DMAE cmd[%d].%d (0x%08x) : 0x%08x\n",
+                  idx, i, cmd_offset + i*4, *(((u32 *)dmae) + i));
+       }
+       REG_WR(bp, dmae_reg_go_c[idx], 1);
+}
+
+void bnx2x_write_dmae(struct bnx2x *bp, dma_addr_t dma_addr, u32 dst_addr,
+                     u32 len32)
+{
+       struct dmae_command *dmae = &bp->init_dmae;
+       u32 *wb_comp = bnx2x_sp(bp, wb_comp);
+       int cnt = 200;
+
+       if (!bp->dmae_ready) {
+               u32 *data = bnx2x_sp(bp, wb_data[0]);
+
+               DP(BNX2X_MSG_OFF, "DMAE is not ready (dst_addr %08x  len32 %d)"
+                  "  using indirect\n", dst_addr, len32);
+               bnx2x_init_ind_wr(bp, dst_addr, data, len32);
+               return;
+       }
+
+       mutex_lock(&bp->dmae_mutex);
+
+       memset(dmae, 0, sizeof(struct dmae_command));
+
+       dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
+                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
+                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                       DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                       (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                       (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+       dmae->src_addr_lo = U64_LO(dma_addr);
+       dmae->src_addr_hi = U64_HI(dma_addr);
+       dmae->dst_addr_lo = dst_addr >> 2;
+       dmae->dst_addr_hi = 0;
+       dmae->len = len32;
+       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp));
+       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp));
+       dmae->comp_val = DMAE_COMP_VAL;
+
+       DP(BNX2X_MSG_OFF, "dmae: opcode 0x%08x\n"
+          DP_LEVEL "src_addr  [%x:%08x]  len [%d *4]  "
+                   "dst_addr [%x:%08x (%08x)]\n"
+          DP_LEVEL "comp_addr [%x:%08x]  comp_val 0x%08x\n",
+          dmae->opcode, dmae->src_addr_hi, dmae->src_addr_lo,
+          dmae->len, dmae->dst_addr_hi, dmae->dst_addr_lo, dst_addr,
+          dmae->comp_addr_hi, dmae->comp_addr_lo, dmae->comp_val);
+       DP(BNX2X_MSG_OFF, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n",
+          bp->slowpath->wb_data[0], bp->slowpath->wb_data[1],
+          bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]);
+
+       *wb_comp = 0;
+
+       bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp));
+
+       udelay(5);
+
+       while (*wb_comp != DMAE_COMP_VAL) {
+               DP(BNX2X_MSG_OFF, "wb_comp 0x%08x\n", *wb_comp);
+
+               if (!cnt) {
+                       BNX2X_ERR("dmae timeout!\n");
+                       break;
+               }
+               cnt--;
+               /* adjust delay for emulation/FPGA */
+               if (CHIP_REV_IS_SLOW(bp))
+                       msleep(100);
+               else
+                       udelay(5);
+       }
+
+       mutex_unlock(&bp->dmae_mutex);
+}
+
+void bnx2x_read_dmae(struct bnx2x *bp, u32 src_addr, u32 len32)
+{
+       struct dmae_command *dmae = &bp->init_dmae;
+       u32 *wb_comp = bnx2x_sp(bp, wb_comp);
+       int cnt = 200;
+
+       if (!bp->dmae_ready) {
+               u32 *data = bnx2x_sp(bp, wb_data[0]);
+               int i;
+
+               DP(BNX2X_MSG_OFF, "DMAE is not ready (src_addr %08x  len32 %d)"
+                  "  using indirect\n", src_addr, len32);
+               for (i = 0; i < len32; i++)
+                       data[i] = bnx2x_reg_rd_ind(bp, src_addr + i*4);
+               return;
+       }
+
+       mutex_lock(&bp->dmae_mutex);
+
+       memset(bnx2x_sp(bp, wb_data[0]), 0, sizeof(u32) * 4);
+       memset(dmae, 0, sizeof(struct dmae_command));
+
+       dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
+                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
+                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                       DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                       (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                       (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+       dmae->src_addr_lo = src_addr >> 2;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_data));
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_data));
+       dmae->len = len32;
+       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, wb_comp));
+       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, wb_comp));
+       dmae->comp_val = DMAE_COMP_VAL;
+
+       DP(BNX2X_MSG_OFF, "dmae: opcode 0x%08x\n"
+          DP_LEVEL "src_addr  [%x:%08x]  len [%d *4]  "
+                   "dst_addr [%x:%08x (%08x)]\n"
+          DP_LEVEL "comp_addr [%x:%08x]  comp_val 0x%08x\n",
+          dmae->opcode, dmae->src_addr_hi, dmae->src_addr_lo,
+          dmae->len, dmae->dst_addr_hi, dmae->dst_addr_lo, src_addr,
+          dmae->comp_addr_hi, dmae->comp_addr_lo, dmae->comp_val);
+
+       *wb_comp = 0;
+
+       bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp));
+
+       udelay(5);
+
+       while (*wb_comp != DMAE_COMP_VAL) {
+
+               if (!cnt) {
+                       BNX2X_ERR("dmae timeout!\n");
+                       break;
+               }
+               cnt--;
+               /* adjust delay for emulation/FPGA */
+               if (CHIP_REV_IS_SLOW(bp))
+                       msleep(100);
+               else
+                       udelay(5);
+       }
+       DP(BNX2X_MSG_OFF, "data [0x%08x 0x%08x 0x%08x 0x%08x]\n",
+          bp->slowpath->wb_data[0], bp->slowpath->wb_data[1],
+          bp->slowpath->wb_data[2], bp->slowpath->wb_data[3]);
+
+       mutex_unlock(&bp->dmae_mutex);
+}
+
+/* used only for slowpath so not inlined */
+static void bnx2x_wb_wr(struct bnx2x *bp, int reg, u32 val_hi, u32 val_lo)
+{
+       u32 wb_write[2];
+
+       wb_write[0] = val_hi;
+       wb_write[1] = val_lo;
+       REG_WR_DMAE(bp, reg, wb_write, 2);
+}
+
+#ifdef USE_WB_RD
+static u64 bnx2x_wb_rd(struct bnx2x *bp, int reg)
+{
+       u32 wb_data[2];
+
+       REG_RD_DMAE(bp, reg, wb_data, 2);
+
+       return HILO_U64(wb_data[0], wb_data[1]);
+}
+#endif
+
+static int bnx2x_mc_assert(struct bnx2x *bp)
+{
+       char last_idx;
+       int i, rc = 0;
+       u32 row0, row1, row2, row3;
+
+       /* XSTORM */
+       last_idx = REG_RD8(bp, BAR_XSTRORM_INTMEM +
+                          XSTORM_ASSERT_LIST_INDEX_OFFSET);
+       if (last_idx)
+               BNX2X_ERR("XSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx);
+
+       /* print the asserts */
+       for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) {
+
+               row0 = REG_RD(bp, BAR_XSTRORM_INTMEM +
+                             XSTORM_ASSERT_LIST_OFFSET(i));
+               row1 = REG_RD(bp, BAR_XSTRORM_INTMEM +
+                             XSTORM_ASSERT_LIST_OFFSET(i) + 4);
+               row2 = REG_RD(bp, BAR_XSTRORM_INTMEM +
+                             XSTORM_ASSERT_LIST_OFFSET(i) + 8);
+               row3 = REG_RD(bp, BAR_XSTRORM_INTMEM +
+                             XSTORM_ASSERT_LIST_OFFSET(i) + 12);
+
+               if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
+                       BNX2X_ERR("XSTORM_ASSERT_INDEX 0x%x = 0x%08x"
+                                 " 0x%08x 0x%08x 0x%08x\n",
+                                 i, row3, row2, row1, row0);
+                       rc++;
+               } else {
+                       break;
+               }
+       }
+
+       /* TSTORM */
+       last_idx = REG_RD8(bp, BAR_TSTRORM_INTMEM +
+                          TSTORM_ASSERT_LIST_INDEX_OFFSET);
+       if (last_idx)
+               BNX2X_ERR("TSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx);
+
+       /* print the asserts */
+       for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) {
+
+               row0 = REG_RD(bp, BAR_TSTRORM_INTMEM +
+                             TSTORM_ASSERT_LIST_OFFSET(i));
+               row1 = REG_RD(bp, BAR_TSTRORM_INTMEM +
+                             TSTORM_ASSERT_LIST_OFFSET(i) + 4);
+               row2 = REG_RD(bp, BAR_TSTRORM_INTMEM +
+                             TSTORM_ASSERT_LIST_OFFSET(i) + 8);
+               row3 = REG_RD(bp, BAR_TSTRORM_INTMEM +
+                             TSTORM_ASSERT_LIST_OFFSET(i) + 12);
+
+               if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
+                       BNX2X_ERR("TSTORM_ASSERT_INDEX 0x%x = 0x%08x"
+                                 " 0x%08x 0x%08x 0x%08x\n",
+                                 i, row3, row2, row1, row0);
+                       rc++;
+               } else {
+                       break;
+               }
+       }
+
+       /* CSTORM */
+       last_idx = REG_RD8(bp, BAR_CSTRORM_INTMEM +
+                          CSTORM_ASSERT_LIST_INDEX_OFFSET);
+       if (last_idx)
+               BNX2X_ERR("CSTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx);
+
+       /* print the asserts */
+       for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) {
+
+               row0 = REG_RD(bp, BAR_CSTRORM_INTMEM +
+                             CSTORM_ASSERT_LIST_OFFSET(i));
+               row1 = REG_RD(bp, BAR_CSTRORM_INTMEM +
+                             CSTORM_ASSERT_LIST_OFFSET(i) + 4);
+               row2 = REG_RD(bp, BAR_CSTRORM_INTMEM +
+                             CSTORM_ASSERT_LIST_OFFSET(i) + 8);
+               row3 = REG_RD(bp, BAR_CSTRORM_INTMEM +
+                             CSTORM_ASSERT_LIST_OFFSET(i) + 12);
+
+               if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
+                       BNX2X_ERR("CSTORM_ASSERT_INDEX 0x%x = 0x%08x"
+                                 " 0x%08x 0x%08x 0x%08x\n",
+                                 i, row3, row2, row1, row0);
+                       rc++;
+               } else {
+                       break;
+               }
+       }
+
+       /* USTORM */
+       last_idx = REG_RD8(bp, BAR_USTRORM_INTMEM +
+                          USTORM_ASSERT_LIST_INDEX_OFFSET);
+       if (last_idx)
+               BNX2X_ERR("USTORM_ASSERT_LIST_INDEX 0x%x\n", last_idx);
+
+       /* print the asserts */
+       for (i = 0; i < STROM_ASSERT_ARRAY_SIZE; i++) {
+
+               row0 = REG_RD(bp, BAR_USTRORM_INTMEM +
+                             USTORM_ASSERT_LIST_OFFSET(i));
+               row1 = REG_RD(bp, BAR_USTRORM_INTMEM +
+                             USTORM_ASSERT_LIST_OFFSET(i) + 4);
+               row2 = REG_RD(bp, BAR_USTRORM_INTMEM +
+                             USTORM_ASSERT_LIST_OFFSET(i) + 8);
+               row3 = REG_RD(bp, BAR_USTRORM_INTMEM +
+                             USTORM_ASSERT_LIST_OFFSET(i) + 12);
+
+               if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
+                       BNX2X_ERR("USTORM_ASSERT_INDEX 0x%x = 0x%08x"
+                                 " 0x%08x 0x%08x 0x%08x\n",
+                                 i, row3, row2, row1, row0);
+                       rc++;
+               } else {
+                       break;
+               }
+       }
+
+       return rc;
+}
+
+static void bnx2x_fw_dump(struct bnx2x *bp)
+{
+       u32 mark, offset;
+       u32 data[9];
+       int word;
+
+       mark = REG_RD(bp, MCP_REG_MCPR_SCRATCH + 0xf104);
+       mark = ((mark + 0x3) & ~0x3);
+       printk(KERN_ERR PFX "begin fw dump (mark 0x%x)\n" KERN_ERR, mark);
+
+       for (offset = mark - 0x08000000; offset <= 0xF900; offset += 0x8*4) {
+               for (word = 0; word < 8; word++)
+                       data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH +
+                                                 offset + 4*word));
+               data[8] = 0x0;
+               printk(KERN_CONT "%s", (char *)data);
+       }
+       for (offset = 0xF108; offset <= mark - 0x08000000; offset += 0x8*4) {
+               for (word = 0; word < 8; word++)
+                       data[word] = htonl(REG_RD(bp, MCP_REG_MCPR_SCRATCH +
+                                                 offset + 4*word));
+               data[8] = 0x0;
+               printk(KERN_CONT "%s", (char *)data);
+       }
+       printk("\n" KERN_ERR PFX "end of fw dump\n");
+}
+
+static void bnx2x_panic_dump(struct bnx2x *bp)
+{
+       int i;
+       u16 j, start, end;
+
+       bp->stats_state = STATS_STATE_DISABLED;
+       DP(BNX2X_MSG_STATS, "stats_state - DISABLED\n");
+
+       BNX2X_ERR("begin crash dump -----------------\n");
+
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+               struct eth_tx_db_data *hw_prods = fp->hw_tx_prods;
+
+               BNX2X_ERR("queue[%d]: tx_pkt_prod(%x)  tx_pkt_cons(%x)"
+                         "  tx_bd_prod(%x)  tx_bd_cons(%x)  *tx_cons_sb(%x)\n",
+                         i, fp->tx_pkt_prod, fp->tx_pkt_cons, fp->tx_bd_prod,
+                         fp->tx_bd_cons, le16_to_cpu(*fp->tx_cons_sb));
+               BNX2X_ERR("          rx_bd_prod(%x)  rx_bd_cons(%x)"
+                         "  *rx_bd_cons_sb(%x)  rx_comp_prod(%x)"
+                         "  rx_comp_cons(%x)  *rx_cons_sb(%x)\n",
+                         fp->rx_bd_prod, fp->rx_bd_cons,
+                         le16_to_cpu(*fp->rx_bd_cons_sb), fp->rx_comp_prod,
+                         fp->rx_comp_cons, le16_to_cpu(*fp->rx_cons_sb));
+               BNX2X_ERR("          rx_sge_prod(%x)  last_max_sge(%x)"
+                         "  fp_c_idx(%x)  *sb_c_idx(%x)  fp_u_idx(%x)"
+                         "  *sb_u_idx(%x)  bd data(%x,%x)\n",
+                         fp->rx_sge_prod, fp->last_max_sge, fp->fp_c_idx,
+                         fp->status_blk->c_status_block.status_block_index,
+                         fp->fp_u_idx,
+                         fp->status_blk->u_status_block.status_block_index,
+                         hw_prods->packets_prod, hw_prods->bds_prod);
+
+               start = TX_BD(le16_to_cpu(*fp->tx_cons_sb) - 10);
+               end = TX_BD(le16_to_cpu(*fp->tx_cons_sb) + 245);
+               for (j = start; j < end; j++) {
+                       struct sw_tx_bd *sw_bd = &fp->tx_buf_ring[j];
+
+                       BNX2X_ERR("packet[%x]=[%p,%x]\n", j,
+                                 sw_bd->skb, sw_bd->first_bd);
+               }
+
+               start = TX_BD(fp->tx_bd_cons - 10);
+               end = TX_BD(fp->tx_bd_cons + 254);
+               for (j = start; j < end; j++) {
+                       u32 *tx_bd = (u32 *)&fp->tx_desc_ring[j];
+
+                       BNX2X_ERR("tx_bd[%x]=[%x:%x:%x:%x]\n",
+                                 j, tx_bd[0], tx_bd[1], tx_bd[2], tx_bd[3]);
+               }
+
+               start = RX_BD(le16_to_cpu(*fp->rx_cons_sb) - 10);
+               end = RX_BD(le16_to_cpu(*fp->rx_cons_sb) + 503);
+               for (j = start; j < end; j++) {
+                       u32 *rx_bd = (u32 *)&fp->rx_desc_ring[j];
+                       struct sw_rx_bd *sw_bd = &fp->rx_buf_ring[j];
+
+                       BNX2X_ERR("rx_bd[%x]=[%x:%x]  sw_bd=[%p]\n",
+                                 j, rx_bd[1], rx_bd[0], sw_bd->skb);
+               }
+
+               start = RX_SGE(fp->rx_sge_prod);
+               end = RX_SGE(fp->last_max_sge);
+               for (j = start; j < end; j++) {
+                       u32 *rx_sge = (u32 *)&fp->rx_sge_ring[j];
+                       struct sw_rx_page *sw_page = &fp->rx_page_ring[j];
+
+                       BNX2X_ERR("rx_sge[%x]=[%x:%x]  sw_page=[%p]\n",
+                                 j, rx_sge[1], rx_sge[0], sw_page->page);
+               }
+
+               start = RCQ_BD(fp->rx_comp_cons - 10);
+               end = RCQ_BD(fp->rx_comp_cons + 503);
+               for (j = start; j < end; j++) {
+                       u32 *cqe = (u32 *)&fp->rx_comp_ring[j];
+
+                       BNX2X_ERR("cqe[%x]=[%x:%x:%x:%x]\n",
+                                 j, cqe[0], cqe[1], cqe[2], cqe[3]);
+               }
+       }
+
+       BNX2X_ERR("def_c_idx(%u)  def_u_idx(%u)  def_x_idx(%u)"
+                 "  def_t_idx(%u)  def_att_idx(%u)  attn_state(%u)"
+                 "  spq_prod_idx(%u)\n",
+                 bp->def_c_idx, bp->def_u_idx, bp->def_x_idx, bp->def_t_idx,
+                 bp->def_att_idx, bp->attn_state, bp->spq_prod_idx);
+
+       bnx2x_fw_dump(bp);
+#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
+       bp->msglevel |= NETIF_MSG_PROBE;
+       BNX2X_ERR("Idle check (1st round) ----------\n");
+       bnx2x_idle_chk(bp);
+       BNX2X_ERR("Idle check (2nd round) ----------\n");
+       bnx2x_idle_chk(bp);
+#endif
+       bnx2x_mc_assert(bp);
+       BNX2X_ERR("end crash dump -----------------\n");
+}
+
+static void bnx2x_int_enable(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0;
+       u32 val = REG_RD(bp, addr);
+       int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0;
+       int msi = (bp->flags & USING_MSI_FLAG) ? 1 : 0;
+
+       if (msix) {
+               val &= ~(HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
+                        HC_CONFIG_0_REG_INT_LINE_EN_0);
+               val |= (HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
+                       HC_CONFIG_0_REG_ATTN_BIT_EN_0);
+       } else if (msi) {
+               val &= ~HC_CONFIG_0_REG_INT_LINE_EN_0;
+               val |= (HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
+                       HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
+                       HC_CONFIG_0_REG_ATTN_BIT_EN_0);
+       } else {
+               val |= (HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
+                       HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
+                       HC_CONFIG_0_REG_INT_LINE_EN_0 |
+                       HC_CONFIG_0_REG_ATTN_BIT_EN_0);
+
+               DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)\n",
+                  val, port, addr);
+
+               REG_WR(bp, addr, val);
+
+               val &= ~HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0;
+       }
+
+       DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)  mode %s\n",
+          val, port, addr, (msix ? "MSI-X" : (msi ? "MSI" : "INTx")));
+
+       REG_WR(bp, addr, val);
+
+       if (CHIP_IS_E1H(bp)) {
+               /* init leading/trailing edge */
+               if (IS_E1HMF(bp)) {
+                       val = (0xfe0f | (1 << (BP_E1HVN(bp) + 4)));
+                       if (bp->port.pmf)
+                               /* enable nig attention */
+                               val |= 0x0100;
+               } else
+                       val = 0xffff;
+
+               REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, val);
+               REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, val);
+       }
+}
+
+static void bnx2x_int_disable(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 addr = port ? HC_REG_CONFIG_1 : HC_REG_CONFIG_0;
+       u32 val = REG_RD(bp, addr);
+
+       val &= ~(HC_CONFIG_0_REG_SINGLE_ISR_EN_0 |
+                HC_CONFIG_0_REG_MSI_MSIX_INT_EN_0 |
+                HC_CONFIG_0_REG_INT_LINE_EN_0 |
+                HC_CONFIG_0_REG_ATTN_BIT_EN_0);
+
+       DP(NETIF_MSG_INTR, "write %x to HC %d (addr 0x%x)\n",
+          val, port, addr);
+
+       REG_WR(bp, addr, val);
+       if (REG_RD(bp, addr) != val)
+               BNX2X_ERR("BUG! proper val not read from IGU!\n");
+}
+
+static void bnx2x_int_disable_sync(struct bnx2x *bp, int disable_hw)
+{
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       int msix = (bp->flags & USING_MSIX_FLAG) ? 1 : 0;
+       int i, offset;
+#endif
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+       int j;
+#endif
+
+       /* disable interrupt handling */
+       atomic_inc(&bp->intr_sem);
+       if (disable_hw)
+               /* prevent the HW from sending interrupts */
+               bnx2x_int_disable(bp);
+
+       /* make sure all ISRs are done */
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       if (msix) {
+               synchronize_irq(bp->msix_table[0].vector);
+               offset = 1;
+#ifdef BCM_CNIC
+               offset++;
+#endif
+               for_each_queue(bp, i)
+                       synchronize_irq(bp->msix_table[i + offset].vector);
+       } else
+#endif
+               synchronize_irq(bp->pdev->irq);
+
+       /* make sure sp_task is not running */
+#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */
+       cancel_work_sync(&bp->sp_task);
+#else
+       j = 0;
+       smp_mb(); /* sp_running is set by sp_task */
+       while (bp->sp_running) {
+               if (!(++j % 1000))
+                       BNX2X_ERR("sp_running (j %d)\n", j);
+               msleep(1);
+               smp_mb();
+       }
+#endif
+}
+
+/* fast path */
+
+/*
+ * General service functions
+ */
+
+static inline void bnx2x_ack_sb(struct bnx2x *bp, u8 sb_id,
+                               u8 storm, u16 index, u8 op, u8 update)
+{
+       u32 hc_addr = (HC_REG_COMMAND_REG + BP_PORT(bp)*32 +
+                      COMMAND_REG_INT_ACK);
+       struct igu_ack_register igu_ack;
+
+       igu_ack.status_block_index = index;
+       igu_ack.sb_id_and_flags =
+                       ((sb_id << IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT) |
+                        (storm << IGU_ACK_REGISTER_STORM_ID_SHIFT) |
+                        (update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) |
+                        (op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT));
+
+#if (LINUX_VERSION_CODE < 0x020600) /* ! BNX2X_UPSTREAM */
+       /* x86's writel() in 2.4.x does not have barrier(). */
+       barrier();
+#endif
+
+       DP(BNX2X_MSG_OFF, "write 0x%08x to HC addr 0x%x\n",
+          (*(u32 *)&igu_ack), hc_addr);
+       REG_WR(bp, hc_addr, (*(u32 *)&igu_ack));
+}
+
+static inline u16 bnx2x_update_fpsb_idx(struct bnx2x_fastpath *fp)
+{
+       struct host_status_block *fpsb = fp->status_blk;
+       u16 rc = 0;
+
+       barrier(); /* status block is written to by the chip */
+       if (fp->fp_c_idx != fpsb->c_status_block.status_block_index) {
+               fp->fp_c_idx = fpsb->c_status_block.status_block_index;
+               rc |= 1;
+       }
+       if (fp->fp_u_idx != fpsb->u_status_block.status_block_index) {
+               fp->fp_u_idx = fpsb->u_status_block.status_block_index;
+               rc |= 2;
+       }
+       return rc;
+}
+
+static u16 bnx2x_ack_int(struct bnx2x *bp)
+{
+       u32 hc_addr = (HC_REG_COMMAND_REG + BP_PORT(bp)*32 +
+                      COMMAND_REG_SIMD_MASK);
+       u32 result = REG_RD(bp, hc_addr);
+
+       DP(BNX2X_MSG_OFF, "read 0x%08x from HC addr 0x%x\n",
+          result, hc_addr);
+
+       return result;
+}
+
+
+/*
+ * fast path service functions
+ */
+
+/* free skb in the packet ring at pos idx
+ * return idx of last bd freed
+ */
+static u16 bnx2x_free_tx_pkt(struct bnx2x *bp, struct bnx2x_fastpath *fp,
+                            u16 idx)
+{
+       struct sw_tx_bd *tx_buf = &fp->tx_buf_ring[idx];
+       struct eth_tx_bd *tx_bd;
+       struct sk_buff *skb = tx_buf->skb;
+       u16 bd_idx = TX_BD(tx_buf->first_bd), new_cons;
+       int nbd;
+
+       DP(BNX2X_MSG_OFF, "pkt_idx %d  buff @(%p)->skb %p\n",
+          idx, tx_buf, skb);
+
+       /* unmap first bd */
+       DP(BNX2X_MSG_OFF, "free bd_idx %d\n", bd_idx);
+       tx_bd = &fp->tx_desc_ring[bd_idx];
+       pci_unmap_single(bp->pdev, BD_UNMAP_ADDR(tx_bd),
+                        BD_UNMAP_LEN(tx_bd), PCI_DMA_TODEVICE);
+
+       nbd = le16_to_cpu(tx_bd->nbd) - 1;
+       new_cons = nbd + tx_buf->first_bd;
+#ifdef BNX2X_STOP_ON_ERROR
+       if (nbd > (MAX_SKB_FRAGS + 2)) {
+               BNX2X_ERR("BAD nbd!\n");
+               bnx2x_panic();
+       }
+#endif
+
+       /* Skip a parse bd and the TSO split header bd
+          since they have no mapping */
+       if (nbd)
+               bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
+
+       if (tx_bd->bd_flags.as_bitfield & (ETH_TX_BD_FLAGS_IP_CSUM |
+                                          ETH_TX_BD_FLAGS_TCP_CSUM |
+                                          ETH_TX_BD_FLAGS_SW_LSO)) {
+               if (--nbd)
+                       bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
+               tx_bd = &fp->tx_desc_ring[bd_idx];
+               /* is this a TSO split header bd? */
+               if (tx_bd->bd_flags.as_bitfield & ETH_TX_BD_FLAGS_SW_LSO) {
+                       if (--nbd)
+                               bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
+               }
+       }
+
+       /* now free frags */
+       while (nbd > 0) {
+
+               DP(BNX2X_MSG_OFF, "free frag bd_idx %d\n", bd_idx);
+               tx_bd = &fp->tx_desc_ring[bd_idx];
+               pci_unmap_page(bp->pdev, BD_UNMAP_ADDR(tx_bd),
+                              BD_UNMAP_LEN(tx_bd), PCI_DMA_TODEVICE);
+               if (--nbd)
+                       bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
+       }
+
+       /* release skb */
+       WARN_ON(!skb);
+       dev_kfree_skb(skb);
+       tx_buf->first_bd = 0;
+       tx_buf->skb = NULL;
+
+       return new_cons;
+}
+
+static inline u16 bnx2x_tx_avail(struct bnx2x_fastpath *fp)
+{
+       s16 used;
+       u16 prod;
+       u16 cons;
+
+       barrier(); /* Tell compiler that prod and cons can change */
+       prod = fp->tx_bd_prod;
+       cons = fp->tx_bd_cons;
+
+       /* NUM_TX_RINGS = number of "next-page" entries
+          It will be used as a threshold */
+       used = SUB_S16(prod, cons) + (s16)NUM_TX_RINGS;
+
+#ifdef BNX2X_STOP_ON_ERROR
+       WARN_ON(used < 0);
+       WARN_ON(used > fp->bp->tx_ring_size);
+       WARN_ON((fp->bp->tx_ring_size - used) > MAX_TX_AVAIL);
+#endif
+
+       return (s16)(fp->bp->tx_ring_size) - used;
+}
+
+static void bnx2x_tx_int(struct bnx2x_fastpath *fp, int work)
+{
+       struct bnx2x *bp = fp->bp;
+       u16 hw_cons, sw_cons, bd_cons = fp->tx_bd_cons;
+       int done = 0;
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return;
+#endif
+
+       hw_cons = le16_to_cpu(*fp->tx_cons_sb);
+       sw_cons = fp->tx_pkt_cons;
+
+       while (sw_cons != hw_cons) {
+               u16 pkt_cons;
+
+               pkt_cons = TX_BD(sw_cons);
+
+               /* prefetch(bp->tx_buf_ring[pkt_cons].skb); */
+
+               DP(NETIF_MSG_TX_DONE, "hw_cons %u  sw_cons %u  pkt_cons %u\n",
+                  hw_cons, sw_cons, pkt_cons);
+
+/*             if (NEXT_TX_IDX(sw_cons) != hw_cons) {
+                       rmb();
+                       prefetch(fp->tx_buf_ring[NEXT_TX_IDX(sw_cons)].skb);
+               }
+*/
+               bd_cons = bnx2x_free_tx_pkt(bp, fp, pkt_cons);
+               sw_cons++;
+               done++;
+
+               if (done == work)
+                       break;
+       }
+
+       fp->tx_pkt_cons = sw_cons;
+       fp->tx_bd_cons = bd_cons;
+
+       /* Need to make the tx_bd_cons update visible to start_xmit()
+        * before checking for netif_queue_stopped().  Without the
+        * memory barrier, there is a small possibility that start_xmit()
+        * will miss it and cause the queue to be stopped forever.
+        */
+       smp_mb();
+
+       /* TBD need a thresh? */
+       if (unlikely(netif_queue_stopped(bp->dev))) {
+
+               netif_tx_lock(bp->dev);
+
+               if (netif_queue_stopped(bp->dev) &&
+                   (bp->state == BNX2X_STATE_OPEN) &&
+                   (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3))
+                       netif_wake_queue(bp->dev);
+
+               netif_tx_unlock(bp->dev);
+       }
+}
+
+#ifdef BCM_CNIC
+static void bnx2x_cnic_cfc_comp(struct bnx2x *bp, int cid);
+#endif
+
+static void bnx2x_sp_event(struct bnx2x_fastpath *fp,
+                          union eth_rx_cqe *rr_cqe)
+{
+       struct bnx2x *bp = fp->bp;
+       int cid = SW_CID(rr_cqe->ramrod_cqe.conn_and_cmd_data);
+       int command = CQE_CMD(rr_cqe->ramrod_cqe.conn_and_cmd_data);
+
+       DP(BNX2X_MSG_SP,
+          "fp %d  cid %d  got ramrod #%d  state is %x  type is %d\n",
+          FP_IDX(fp), cid, command, bp->state,
+          rr_cqe->ramrod_cqe.ramrod_type);
+
+       bp->spq_left++;
+
+       if (FP_IDX(fp)) {
+               switch (command | fp->state) {
+               case (RAMROD_CMD_ID_ETH_CLIENT_SETUP |
+                                               BNX2X_FP_STATE_OPENING):
+                       DP(NETIF_MSG_IFUP, "got MULTI[%d] setup ramrod\n",
+                          cid);
+                       fp->state = BNX2X_FP_STATE_OPEN;
+                       break;
+
+               case (RAMROD_CMD_ID_ETH_HALT | BNX2X_FP_STATE_HALTING):
+                       DP(NETIF_MSG_IFDOWN, "got MULTI[%d] halt ramrod\n",
+                          cid);
+                       fp->state = BNX2X_FP_STATE_HALTED;
+                       break;
+
+               default:
+                       BNX2X_ERR("unexpected MC reply (%d)  "
+                                 "fp->state is %x\n", command, fp->state);
+                       break;
+               }
+               mb(); /* force bnx2x_wait_ramrod() to see the change */
+               return;
+       }
+
+       switch (command | bp->state) {
+       case (RAMROD_CMD_ID_ETH_PORT_SETUP | BNX2X_STATE_OPENING_WAIT4_PORT):
+               DP(NETIF_MSG_IFUP, "got setup ramrod\n");
+               bp->state = BNX2X_STATE_OPEN;
+               break;
+
+       case (RAMROD_CMD_ID_ETH_HALT | BNX2X_STATE_CLOSING_WAIT4_HALT):
+               DP(NETIF_MSG_IFDOWN, "got halt ramrod\n");
+               bp->state = BNX2X_STATE_CLOSING_WAIT4_DELETE;
+               fp->state = BNX2X_FP_STATE_HALTED;
+               break;
+
+       case (RAMROD_CMD_ID_ETH_CFC_DEL | BNX2X_STATE_CLOSING_WAIT4_HALT):
+               DP(NETIF_MSG_IFDOWN, "got delete ramrod for MULTI[%d]\n", cid);
+               bnx2x_fp(bp, cid, state) = BNX2X_FP_STATE_CLOSED;
+               break;
+
+#ifdef BCM_CNIC
+       case (RAMROD_CMD_ID_ETH_CFC_DEL | BNX2X_STATE_OPEN):
+               DP(NETIF_MSG_IFDOWN, "got delete ramrod for CID %d\n", cid);
+               bnx2x_cnic_cfc_comp(bp, cid);
+               break;
+#endif
+
+       case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_OPEN):
+       case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_DIAG):
+               DP(NETIF_MSG_IFUP, "got set mac ramrod\n");
+               bp->set_mac_pending = 0;
+               break;
+
+       case (RAMROD_CMD_ID_ETH_SET_MAC | BNX2X_STATE_CLOSING_WAIT4_HALT):
+               DP(NETIF_MSG_IFDOWN, "got (un)set mac ramrod\n");
+               break;
+
+       default:
+               BNX2X_ERR("unexpected MC reply (%d)  bp->state is %x\n",
+                         command, bp->state);
+               break;
+       }
+       mb(); /* force bnx2x_wait_ramrod() to see the change */
+}
+
+static inline void bnx2x_free_rx_sge(struct bnx2x *bp,
+                                    struct bnx2x_fastpath *fp, u16 index)
+{
+       struct sw_rx_page *sw_buf = &fp->rx_page_ring[index];
+       struct page *page = sw_buf->page;
+       struct eth_rx_sge *sge = &fp->rx_sge_ring[index];
+
+       /* Skip "next page" elements */
+       if (!page)
+               return;
+
+       pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping),
+                      BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE);
+       __free_pages(page, PAGES_PER_SGE_SHIFT);
+
+       sw_buf->page = NULL;
+       sge->addr_hi = 0;
+       sge->addr_lo = 0;
+}
+
+static inline void bnx2x_free_rx_sge_range(struct bnx2x *bp,
+                                          struct bnx2x_fastpath *fp, int last)
+{
+       int i;
+
+       for (i = 0; i < last; i++)
+               bnx2x_free_rx_sge(bp, fp, i);
+}
+
+static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp,
+                                    struct bnx2x_fastpath *fp, u16 index)
+{
+       struct page *page = alloc_pages(GFP_ATOMIC, PAGES_PER_SGE_SHIFT);
+       struct sw_rx_page *sw_buf = &fp->rx_page_ring[index];
+       struct eth_rx_sge *sge = &fp->rx_sge_ring[index];
+       dma_addr_t mapping;
+
+       if (unlikely(page == NULL))
+               return -ENOMEM;
+
+       mapping = pci_map_page(bp->pdev, page, 0, BCM_PAGE_SIZE*PAGES_PER_SGE,
+                              PCI_DMA_FROMDEVICE);
+#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */
+       if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
+#else
+       if (unlikely(dma_mapping_error(mapping))) {
+#endif
+               __free_pages(page, PAGES_PER_SGE_SHIFT);
+               return -ENOMEM;
+       }
+
+       sw_buf->page = page;
+       pci_unmap_addr_set(sw_buf, mapping, mapping);
+
+       sge->addr_hi = cpu_to_le32(U64_HI(mapping));
+       sge->addr_lo = cpu_to_le32(U64_LO(mapping));
+
+       return 0;
+}
+
+static inline int bnx2x_alloc_rx_skb(struct bnx2x *bp,
+                                    struct bnx2x_fastpath *fp, u16 index)
+{
+       struct sk_buff *skb;
+       struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[index];
+       struct eth_rx_bd *rx_bd = &fp->rx_desc_ring[index];
+       dma_addr_t mapping;
+
+       skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size);
+       if (unlikely(skb == NULL))
+               return -ENOMEM;
+
+       mapping = pci_map_single(bp->pdev, skb->data, bp->rx_buf_size,
+                                PCI_DMA_FROMDEVICE);
+#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */
+       if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
+#else
+       if (unlikely(dma_mapping_error(mapping))) {
+#endif
+               dev_kfree_skb(skb);
+               return -ENOMEM;
+       }
+
+       rx_buf->skb = skb;
+       pci_unmap_addr_set(rx_buf, mapping, mapping);
+
+       rx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+       rx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+
+       return 0;
+}
+
+/* note that we are not allocating a new skb,
+ * we are just moving one from cons to prod
+ * we are not creating a new mapping,
+ * so there is no need to check for dma_mapping_error().
+ */
+static void bnx2x_reuse_rx_skb(struct bnx2x_fastpath *fp,
+                              struct sk_buff *skb, u16 cons, u16 prod)
+{
+       struct bnx2x *bp = fp->bp;
+       struct sw_rx_bd *cons_rx_buf = &fp->rx_buf_ring[cons];
+       struct sw_rx_bd *prod_rx_buf = &fp->rx_buf_ring[prod];
+       struct eth_rx_bd *cons_bd = &fp->rx_desc_ring[cons];
+       struct eth_rx_bd *prod_bd = &fp->rx_desc_ring[prod];
+
+       pci_dma_sync_single_for_device(bp->pdev,
+                                      pci_unmap_addr(cons_rx_buf, mapping),
+                                      RX_COPY_THRESH, PCI_DMA_FROMDEVICE);
+
+       prod_rx_buf->skb = cons_rx_buf->skb;
+       pci_unmap_addr_set(prod_rx_buf, mapping,
+                          pci_unmap_addr(cons_rx_buf, mapping));
+       *prod_bd = *cons_bd;
+}
+
+#if !defined(__NO_TPA__)
+static inline void bnx2x_update_last_max_sge(struct bnx2x_fastpath *fp,
+                                            u16 idx)
+{
+       u16 last_max = fp->last_max_sge;
+
+       if (SUB_S16(idx, last_max) > 0)
+               fp->last_max_sge = idx;
+}
+
+static void bnx2x_clear_sge_mask_next_elems(struct bnx2x_fastpath *fp)
+{
+       int i, j;
+
+       for (i = 1; i <= NUM_RX_SGE_PAGES; i++) {
+               int idx = RX_SGE_CNT * i - 1;
+
+               for (j = 0; j < 2; j++) {
+                       SGE_MASK_CLEAR_BIT(fp, idx);
+                       idx--;
+               }
+       }
+}
+
+static void bnx2x_update_sge_prod(struct bnx2x_fastpath *fp,
+                                 struct eth_fast_path_rx_cqe *fp_cqe)
+{
+       struct bnx2x *bp = fp->bp;
+       u16 sge_len = BCM_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) -
+                                    le16_to_cpu(fp_cqe->len_on_bd)) >>
+                     BCM_PAGE_SHIFT;
+       u16 last_max, last_elem, first_elem;
+       u16 delta = 0;
+       u16 i;
+
+       if (!sge_len)
+               return;
+
+       /* First mark all used pages */
+       for (i = 0; i < sge_len; i++)
+               SGE_MASK_CLEAR_BIT(fp, RX_SGE(le16_to_cpu(fp_cqe->sgl[i])));
+
+       DP(NETIF_MSG_RX_STATUS, "fp_cqe->sgl[%d] = %d\n",
+          sge_len - 1, le16_to_cpu(fp_cqe->sgl[sge_len - 1]));
+
+       /* Here we assume that the last SGE index is the biggest */
+       prefetch((void *)(fp->sge_mask));
+       bnx2x_update_last_max_sge(fp, le16_to_cpu(fp_cqe->sgl[sge_len - 1]));
+
+       last_max = RX_SGE(fp->last_max_sge);
+       last_elem = last_max >> RX_SGE_MASK_ELEM_SHIFT;
+       first_elem = RX_SGE(fp->rx_sge_prod) >> RX_SGE_MASK_ELEM_SHIFT;
+
+       /* If ring is not full */
+       if (last_elem + 1 != first_elem)
+               last_elem++;
+
+       /* Now update the prod */
+       for (i = first_elem; i != last_elem; i = NEXT_SGE_MASK_ELEM(i)) {
+               if (likely(fp->sge_mask[i]))
+                       break;
+
+               fp->sge_mask[i] = RX_SGE_MASK_ELEM_ONE_MASK;
+               delta += RX_SGE_MASK_ELEM_SZ;
+       }
+
+       if (delta > 0) {
+               fp->rx_sge_prod += delta;
+               /* clear page-end entries */
+               bnx2x_clear_sge_mask_next_elems(fp);
+       }
+
+       DP(NETIF_MSG_RX_STATUS,
+          "fp->last_max_sge = %d  fp->rx_sge_prod = %d\n",
+          fp->last_max_sge, fp->rx_sge_prod);
+}
+
+static inline void bnx2x_init_sge_ring_bit_mask(struct bnx2x_fastpath *fp)
+{
+       /* Set the mask to all 1-s: it's faster to compare to 0 than to 0xf-s */
+       memset(fp->sge_mask, 0xff,
+              (NUM_RX_SGE >> RX_SGE_MASK_ELEM_SHIFT)*sizeof(u64));
+
+       /* Clear the two last indices in the page to 1:
+          these are the indices that correspond to the "next" element,
+          hence will never be indicated and should be removed from
+          the calculations. */
+       bnx2x_clear_sge_mask_next_elems(fp);
+}
+
+static void bnx2x_tpa_start(struct bnx2x_fastpath *fp, u16 queue,
+                           struct sk_buff *skb, u16 cons, u16 prod)
+{
+       struct bnx2x *bp = fp->bp;
+       struct sw_rx_bd *cons_rx_buf = &fp->rx_buf_ring[cons];
+       struct sw_rx_bd *prod_rx_buf = &fp->rx_buf_ring[prod];
+       struct eth_rx_bd *prod_bd = &fp->rx_desc_ring[prod];
+       dma_addr_t mapping;
+
+       /* move empty skb from pool to prod and map it */
+       prod_rx_buf->skb = fp->tpa_pool[queue].skb;
+       mapping = pci_map_single(bp->pdev, fp->tpa_pool[queue].skb->data,
+                                bp->rx_buf_size, PCI_DMA_FROMDEVICE);
+       pci_unmap_addr_set(prod_rx_buf, mapping, mapping);
+
+       /* move partial skb from cons to pool (don't unmap yet) */
+       fp->tpa_pool[queue] = *cons_rx_buf;
+
+       /* mark bin state as start - print error if current state != stop */
+       if (fp->tpa_state[queue] != BNX2X_TPA_STOP)
+               BNX2X_ERR("start of bin not in stop [%d]\n", queue);
+
+       fp->tpa_state[queue] = BNX2X_TPA_START;
+
+       /* point prod_bd to new skb */
+       prod_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+       prod_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+
+#ifdef BNX2X_STOP_ON_ERROR
+       fp->tpa_queue_used |= (1 << queue);
+#ifdef __powerpc64__
+       DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%lx\n",
+#else
+       DP(NETIF_MSG_RX_STATUS, "fp->tpa_queue_used = 0x%llx\n",
+#endif
+          fp->tpa_queue_used);
+#endif
+}
+
+static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
+                              struct sk_buff *skb,
+                              struct eth_fast_path_rx_cqe *fp_cqe,
+                              u16 cqe_idx)
+{
+       struct sw_rx_page *rx_pg, old_rx_pg;
+       struct page *sge;
+       u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd);
+       u32 i, frag_len, frag_size, pages;
+       int err;
+       int j;
+
+       frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd;
+       pages = BCM_PAGE_ALIGN(frag_size) >> BCM_PAGE_SHIFT;
+
+       /* This is needed in order to enable forwarding support */
+       if (frag_size)
+               skb_shinfo(skb)->gso_size = min((u32)BCM_PAGE_SIZE,
+                                              max(frag_size, (u32)len_on_bd));
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (pages > 8*PAGES_PER_SGE) {
+               BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n",
+                         pages, cqe_idx);
+               BNX2X_ERR("fp_cqe->pkt_len = %d  fp_cqe->len_on_bd = %d\n",
+                         fp_cqe->pkt_len, len_on_bd);
+               bnx2x_panic();
+               return -EINVAL;
+       }
+#endif
+
+       /* Run through the SGL and compose the fragmented skb */
+       for (i = 0, j = 0; i < pages; i += PAGES_PER_SGE, j++) {
+               u16 sge_idx = RX_SGE(le16_to_cpu(fp_cqe->sgl[j]));
+
+               /* FW gives the indices of the SGE as if the ring is an array
+                  (meaning that "next" element will consume 2 indices) */
+               frag_len = min(frag_size, (u32)(BCM_PAGE_SIZE*PAGES_PER_SGE));
+               rx_pg = &fp->rx_page_ring[sge_idx];
+               sge = rx_pg->page;
+               old_rx_pg = *rx_pg;
+
+               /* If we fail to allocate a substitute page, we simply stop
+                  where we are and drop the whole packet */
+               err = bnx2x_alloc_rx_sge(bp, fp, sge_idx);
+               if (unlikely(err)) {
+                       bp->eth_stats.rx_skb_alloc_failed++;
+                       return err;
+               }
+
+               /* Unmap the page as we r going to pass it to the stack */
+               pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping),
+                             BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE);
+
+               /* Add one frag and update the appropriate fields in the skb */
+               skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len);
+
+               skb->data_len += frag_len;
+               skb->truesize += frag_len;
+               skb->len += frag_len;
+
+               frag_size -= frag_len;
+       }
+
+       return 0;
+}
+
+static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
+                          u16 queue, int pad, int len, union eth_rx_cqe *cqe,
+                          u16 cqe_idx)
+{
+       struct sw_rx_bd *rx_buf = &fp->tpa_pool[queue];
+       struct sk_buff *skb = rx_buf->skb;
+       /* alloc new skb */
+       struct sk_buff *new_skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size);
+
+       /* Unmap skb in the pool anyway, as we are going to change
+          pool entry status to BNX2X_TPA_STOP even if new skb allocation
+          fails. */
+       pci_unmap_single(bp->pdev, pci_unmap_addr(rx_buf, mapping),
+                        bp->rx_buf_size, PCI_DMA_FROMDEVICE);
+
+       if (likely(new_skb)) {
+               /* fix ip xsum and give it to the stack */
+               /* (no need to map the new skb) */
+
+               prefetch(skb);
+               prefetch(((char *)(skb)) + 128);
+
+#ifdef BNX2X_STOP_ON_ERROR
+               if (pad + len > bp->rx_buf_size) {
+                       BNX2X_ERR("skb_put is about to fail...  "
+                                 "pad %d  len %d  rx_buf_size %d\n",
+                                 pad, len, bp->rx_buf_size);
+                       bnx2x_panic();
+                       return;
+               }
+#endif
+
+               skb_reserve(skb, pad);
+               skb_put(skb, len);
+
+               skb->protocol = eth_type_trans(skb, bp->dev);
+               skb->ip_summed = CHECKSUM_UNNECESSARY;
+
+               {
+                       struct iphdr *iph;
+
+                       iph = (struct iphdr *)skb->data;
+                       iph->check = 0;
+                       iph->check = ip_fast_csum((u8 *)iph, iph->ihl);
+               }
+
+               if (!bnx2x_fill_frag_skb(bp, fp, skb,
+                                        &cqe->fast_path_cqe, cqe_idx)) {
+#ifdef BCM_VLAN
+                       if ((bp->vlgrp != NULL) &&
+                           (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
+                            PARSING_FLAGS_VLAN))
+                               vlan_hwaccel_receive_skb(skb, bp->vlgrp,
+                                               le16_to_cpu(cqe->fast_path_cqe.
+                                                           vlan_tag));
+                       else
+#endif
+                               netif_receive_skb(skb);
+               } else {
+                       DP(NETIF_MSG_RX_STATUS, "Failed to allocate new pages"
+                          " - dropping packet!\n");
+                       dev_kfree_skb(skb);
+               }
+
+               bp->dev->last_rx = jiffies;
+
+               /* put new skb in bin */
+               fp->tpa_pool[queue].skb = new_skb;
+
+       } else {
+               /* else drop the packet and keep the buffer in the bin */
+               DP(NETIF_MSG_RX_STATUS,
+                  "Failed to allocate new skb - dropping packet!\n");
+               bp->eth_stats.rx_skb_alloc_failed++;
+       }
+
+       fp->tpa_state[queue] = BNX2X_TPA_STOP;
+}
+#endif
+
+static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
+                                       struct bnx2x_fastpath *fp,
+                                       u16 bd_prod, u16 rx_comp_prod,
+                                       u16 rx_sge_prod)
+{
+       struct ustorm_eth_rx_producers rx_prods = {0};
+       int i;
+
+       /* Update producers */
+       rx_prods.bd_prod = bd_prod;
+       rx_prods.cqe_prod = rx_comp_prod;
+       rx_prods.sge_prod = rx_sge_prod;
+
+       for (i = 0; i < sizeof(struct ustorm_eth_rx_producers)/4; i++)
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_RX_PRODS_OFFSET(BP_PORT(bp), FP_CL_ID(fp)) + i*4,
+                      ((u32 *)&rx_prods)[i]);
+
+       DP(NETIF_MSG_RX_STATUS,
+          "Wrote: bd_prod %u  cqe_prod %u  sge_prod %u\n",
+          bd_prod, rx_comp_prod, rx_sge_prod);
+}
+
+static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
+{
+       struct bnx2x *bp = fp->bp;
+       u16 bd_cons, bd_prod, bd_prod_fw, comp_ring_cons;
+       u16 hw_comp_cons, sw_comp_cons, sw_comp_prod;
+       int rx_pkt = 0;
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return 0;
+#endif
+
+       /* CQ "next element" is of the size of the regular element,
+          that's why it's ok here */
+       hw_comp_cons = le16_to_cpu(*fp->rx_cons_sb);
+       if ((hw_comp_cons & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
+               hw_comp_cons++;
+
+       bd_cons = fp->rx_bd_cons;
+       bd_prod = fp->rx_bd_prod;
+       bd_prod_fw = bd_prod;
+       sw_comp_cons = fp->rx_comp_cons;
+       sw_comp_prod = fp->rx_comp_prod;
+
+       /* Memory barrier necessary as speculative reads of the rx
+        * buffer can be ahead of the index in the status block
+        */
+       rmb();
+
+       DP(NETIF_MSG_RX_STATUS,
+          "queue[%d]:  hw_comp_cons %u  sw_comp_cons %u\n",
+          FP_IDX(fp), hw_comp_cons, sw_comp_cons);
+
+       while (sw_comp_cons != hw_comp_cons) {
+               struct sw_rx_bd *rx_buf = NULL;
+               struct sk_buff *skb;
+               union eth_rx_cqe *cqe;
+               u8 cqe_fp_flags;
+               u16 len, pad;
+
+               comp_ring_cons = RCQ_BD(sw_comp_cons);
+               bd_prod = RX_BD(bd_prod);
+               bd_cons = RX_BD(bd_cons);
+
+               cqe = &fp->rx_comp_ring[comp_ring_cons];
+               cqe_fp_flags = cqe->fast_path_cqe.type_error_flags;
+
+               DP(NETIF_MSG_RX_STATUS, "CQE type %x  err %x  status %x"
+                  "  queue %x  vlan %x  len %u\n", CQE_TYPE(cqe_fp_flags),
+                  cqe_fp_flags, cqe->fast_path_cqe.status_flags,
+                  cqe->fast_path_cqe.rss_hash_result,
+                  le16_to_cpu(cqe->fast_path_cqe.vlan_tag),
+                  le16_to_cpu(cqe->fast_path_cqe.pkt_len));
+
+               /* is this a slowpath msg? */
+               if (unlikely(CQE_TYPE(cqe_fp_flags))) {
+                       bnx2x_sp_event(fp, cqe);
+                       goto next_cqe;
+
+               /* this is an rx packet */
+               } else {
+                       rx_buf = &fp->rx_buf_ring[bd_cons];
+                       skb = rx_buf->skb;
+                       len = le16_to_cpu(cqe->fast_path_cqe.pkt_len);
+                       pad = cqe->fast_path_cqe.placement_offset;
+
+#if !defined(__NO_TPA__)
+                       /* If CQE is marked both TPA_START and TPA_END
+                          it is a non-TPA CQE */
+                       if ((!fp->disable_tpa) &&
+                           (TPA_TYPE(cqe_fp_flags) !=
+                                       (TPA_TYPE_START | TPA_TYPE_END))) {
+                               u16 queue = cqe->fast_path_cqe.queue_index;
+
+                               if (TPA_TYPE(cqe_fp_flags) == TPA_TYPE_START) {
+                                       DP(NETIF_MSG_RX_STATUS,
+                                          "calling tpa_start on queue %d\n",
+                                          queue);
+
+                                       bnx2x_tpa_start(fp, queue, skb,
+                                                       bd_cons, bd_prod);
+                                       goto next_rx;
+                               }
+
+                               if (TPA_TYPE(cqe_fp_flags) == TPA_TYPE_END) {
+                                       DP(NETIF_MSG_RX_STATUS,
+                                          "calling tpa_stop on queue %d\n",
+                                          queue);
+
+                                       if (!BNX2X_RX_SUM_FIX(cqe))
+                                               BNX2X_ERR("STOP on none TCP "
+                                                         "data\n");
+
+                                       /* This is a size of the linear data
+                                          on this skb */
+                                       len = le16_to_cpu(cqe->fast_path_cqe.
+                                                               len_on_bd);
+                                       bnx2x_tpa_stop(bp, fp, queue, pad,
+                                                   len, cqe, comp_ring_cons);
+#ifdef BNX2X_STOP_ON_ERROR
+                                       if (bp->panic)
+                                               return -EINVAL;
+#endif
+
+                                       bnx2x_update_sge_prod(fp,
+                                                       &cqe->fast_path_cqe);
+                                       goto next_cqe;
+                               }
+                       }
+#endif
+
+                       pci_dma_sync_single_for_device(bp->pdev,
+                                       pci_unmap_addr(rx_buf, mapping),
+                                                      pad + RX_COPY_THRESH,
+                                                      PCI_DMA_FROMDEVICE);
+                       prefetch(skb);
+                       prefetch(((char *)(skb)) + 128);
+
+                       /* is this an error packet? */
+                       if (unlikely(cqe_fp_flags & ETH_RX_ERROR_FALGS)) {
+                               DP(NETIF_MSG_RX_ERR,
+                                  "ERROR  flags %x  rx packet %u\n",
+                                  cqe_fp_flags, sw_comp_cons);
+                               bp->eth_stats.rx_err_discard_pkt++;
+                               goto reuse_rx;
+                       }
+
+                       /* Since we don't have a jumbo ring
+                        * copy small packets if mtu > 1500
+                        */
+                       if ((bp->dev->mtu > ETH_MAX_PACKET_SIZE) &&
+                           (len <= RX_COPY_THRESH)) {
+                               struct sk_buff *new_skb;
+
+                               new_skb = netdev_alloc_skb(bp->dev,
+                                                          len + pad);
+                               if (new_skb == NULL) {
+                                       DP(NETIF_MSG_RX_ERR,
+                                          "ERROR  packet dropped "
+                                          "because of alloc failure\n");
+                                       bp->eth_stats.rx_skb_alloc_failed++;
+                                       goto reuse_rx;
+                               }
+
+                               /* aligned copy */
+                               skb_copy_from_linear_data_offset(skb, pad,
+                                                   new_skb->data + pad, len);
+                               skb_reserve(new_skb, pad);
+                               skb_put(new_skb, len);
+
+                               bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod);
+
+                               skb = new_skb;
+
+                       } else if (bnx2x_alloc_rx_skb(bp, fp, bd_prod) == 0) {
+                               pci_unmap_single(bp->pdev,
+                                       pci_unmap_addr(rx_buf, mapping),
+                                                bp->rx_buf_size,
+                                                PCI_DMA_FROMDEVICE);
+                               skb_reserve(skb, pad);
+                               skb_put(skb, len);
+
+                       } else {
+                               DP(NETIF_MSG_RX_ERR,
+                                  "ERROR  packet dropped because "
+                                  "of alloc failure\n");
+                               bp->eth_stats.rx_skb_alloc_failed++;
+reuse_rx:
+                               bnx2x_reuse_rx_skb(fp, skb, bd_cons, bd_prod);
+                               goto next_rx;
+                       }
+
+                       skb->protocol = eth_type_trans(skb, bp->dev);
+
+                       skb->ip_summed = CHECKSUM_NONE;
+                       if (bp->rx_csum) {
+                               if (likely(BNX2X_RX_CSUM_OK(cqe)))
+                                       skb->ip_summed = CHECKSUM_UNNECESSARY;
+                               else
+                                       bp->eth_stats.hw_csum_err++;
+                       }
+               }
+
+#ifdef BCM_VLAN
+               if ((bp->vlgrp != NULL) &&
+                   (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
+                    PARSING_FLAGS_VLAN))
+                       vlan_hwaccel_receive_skb(skb, bp->vlgrp,
+                               le16_to_cpu(cqe->fast_path_cqe.vlan_tag));
+               else
+#endif
+                       netif_receive_skb(skb);
+
+               bp->dev->last_rx = jiffies;
+
+next_rx:
+               rx_buf->skb = NULL;
+
+               bd_cons = NEXT_RX_IDX(bd_cons);
+               bd_prod = NEXT_RX_IDX(bd_prod);
+               bd_prod_fw = NEXT_RX_IDX(bd_prod_fw);
+               rx_pkt++;
+next_cqe:
+               sw_comp_prod = NEXT_RCQ_IDX(sw_comp_prod);
+               sw_comp_cons = NEXT_RCQ_IDX(sw_comp_cons);
+
+               if (rx_pkt == budget)
+                       break;
+       } /* while */
+
+       fp->rx_bd_cons = bd_cons;
+       fp->rx_bd_prod = bd_prod_fw;
+       fp->rx_comp_cons = sw_comp_cons;
+       fp->rx_comp_prod = sw_comp_prod;
+
+       /* Update producers */
+       bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod,
+                            fp->rx_sge_prod);
+       mmiowb(); /* keep prod updates ordered */
+
+       fp->rx_pkt += rx_pkt;
+       fp->rx_calls++;
+
+       return rx_pkt;
+}
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+#if (LINUX_VERSION_CODE < 0x20613)
+static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie,
+                                    struct pt_regs *regs)
+#else /* BNX2X_UPSTREAM */
+static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie)
+#endif
+{
+       struct bnx2x_fastpath *fp = fp_cookie;
+       struct bnx2x *bp = fp->bp;
+       struct net_device *dev = bp->dev;
+       int index = FP_IDX(fp);
+
+       /* Return here if interrupt is disabled */
+       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
+               DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n");
+               return IRQ_HANDLED;
+       }
+
+       DP(BNX2X_MSG_FP, "got an MSI-X interrupt on IDX:SB [%d:%d]\n",
+          index, FP_SB_ID(fp));
+       bnx2x_ack_sb(bp, FP_SB_ID(fp), USTORM_ID, 0, IGU_INT_DISABLE, 0);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return IRQ_HANDLED;
+#endif
+
+       prefetch(fp->rx_cons_sb);
+       prefetch(fp->tx_cons_sb);
+       prefetch(&fp->status_blk->c_status_block.status_block_index);
+       prefetch(&fp->status_blk->u_status_block.status_block_index);
+
+       netif_rx_schedule(dev, &bnx2x_fp(bp, index, napi));
+
+       return IRQ_HANDLED;
+}
+#endif
+
+#if (LINUX_VERSION_CODE < 0x20613)
+static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance,
+                                  struct pt_regs *regs)
+#else /* BNX2X_UPSTREAM */
+static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance)
+#endif
+{
+       struct net_device *dev = dev_instance;
+       struct bnx2x *bp = netdev_priv(dev);
+       u16 status = bnx2x_ack_int(bp);
+       u16 mask;
+
+       /* Return here if interrupt is shared and it's not for us */
+       if (unlikely(status == 0)) {
+               DP(NETIF_MSG_INTR, "not our interrupt!\n");
+               return IRQ_NONE;
+       }
+       DP(NETIF_MSG_INTR, "got an interrupt  status 0x%x\n", status);
+
+       /* Return here if interrupt is disabled */
+       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
+               DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n");
+               return IRQ_HANDLED;
+       }
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return IRQ_HANDLED;
+#endif
+
+       mask = 0x2 << bp->fp[0].sb_id;
+       if (status & mask) {
+               struct bnx2x_fastpath *fp = &bp->fp[0];
+
+               prefetch(fp->rx_cons_sb);
+               prefetch(fp->tx_cons_sb);
+               prefetch(&fp->status_blk->c_status_block.status_block_index);
+               prefetch(&fp->status_blk->u_status_block.status_block_index);
+
+               netif_rx_schedule(dev, &bnx2x_fp(bp, 0, napi));
+
+               status &= ~mask;
+       }
+
+#ifdef BCM_CNIC
+       mask = 0x2 << CNIC_SB_ID;
+       if (status & mask) {
+               struct cnic_ops *c_ops = NULL;
+
+               rcu_read_lock();
+               c_ops = rcu_dereference(bp->cnic_ops);
+               if (c_ops)
+                       c_ops->cnic_handler(bp->cnic_data, NULL);
+               rcu_read_unlock();
+
+               status &= ~mask;
+       }
+#endif
+
+       if (unlikely(status & 0x1)) {
+               schedule_work(&bp->sp_task);
+
+               status &= ~0x1;
+               if (!status)
+                       return IRQ_HANDLED;
+       }
+
+       if (status)
+               DP(NETIF_MSG_INTR, "got an unknown interrupt! (status %u)\n",
+                  status);
+
+       return IRQ_HANDLED;
+}
+
+/* end of fast path */
+
+static void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event);
+
+/* Link */
+
+/*
+ * General service functions
+ */
+
+static int bnx2x_acquire_hw_lock(struct bnx2x *bp, u32 resource)
+{
+       u32 lock_status;
+       u32 resource_bit = (1 << resource);
+       int func = BP_FUNC(bp);
+       u32 hw_lock_control_reg;
+       int cnt;
+
+       /* Validating that the resource is within range */
+       if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
+               DP(NETIF_MSG_HW,
+                  "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n",
+                  resource, HW_LOCK_MAX_RESOURCE_VALUE);
+               return -EINVAL;
+       }
+
+       if (func <= 5) {
+               hw_lock_control_reg = (MISC_REG_DRIVER_CONTROL_1 + func*8);
+       } else {
+               hw_lock_control_reg =
+                               (MISC_REG_DRIVER_CONTROL_7 + (func - 6)*8);
+       }
+
+       /* Validating that the resource is not already taken */
+       lock_status = REG_RD(bp, hw_lock_control_reg);
+       if (lock_status & resource_bit) {
+               DP(NETIF_MSG_HW, "lock_status 0x%x  resource_bit 0x%x\n",
+                  lock_status, resource_bit);
+               return -EEXIST;
+       }
+
+       /* Try for 5 second every 5ms */
+       for (cnt = 0; cnt < 1000; cnt++) {
+               /* Try to acquire the lock */
+               REG_WR(bp, hw_lock_control_reg + 4, resource_bit);
+               lock_status = REG_RD(bp, hw_lock_control_reg);
+               if (lock_status & resource_bit)
+                       return 0;
+
+               msleep(5);
+       }
+       DP(NETIF_MSG_HW, "Timeout\n");
+       return -EAGAIN;
+}
+
+static int bnx2x_release_hw_lock(struct bnx2x *bp, u32 resource)
+{
+       u32 lock_status;
+       u32 resource_bit = (1 << resource);
+       int func = BP_FUNC(bp);
+       u32 hw_lock_control_reg;
+
+       /* Validating that the resource is within range */
+       if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
+               DP(NETIF_MSG_HW,
+                  "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)\n",
+                  resource, HW_LOCK_MAX_RESOURCE_VALUE);
+               return -EINVAL;
+       }
+
+       if (func <= 5) {
+               hw_lock_control_reg = (MISC_REG_DRIVER_CONTROL_1 + func*8);
+       } else {
+               hw_lock_control_reg =
+                               (MISC_REG_DRIVER_CONTROL_7 + (func - 6)*8);
+       }
+
+       /* Validating that the resource is currently taken */
+       lock_status = REG_RD(bp, hw_lock_control_reg);
+       if (!(lock_status & resource_bit)) {
+               DP(NETIF_MSG_HW, "lock_status 0x%x  resource_bit 0x%x\n",
+                  lock_status, resource_bit);
+               return -EFAULT;
+       }
+
+       REG_WR(bp, hw_lock_control_reg, resource_bit);
+       return 0;
+}
+
+/* HW Lock for shared dual port PHYs */
+static void bnx2x_acquire_phy_lock(struct bnx2x *bp)
+{
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+
+       mutex_lock(&bp->port.phy_mutex);
+
+       if ((ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) ||
+           (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073))
+               bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_8072_MDIO);
+}
+
+static void bnx2x_release_phy_lock(struct bnx2x *bp)
+{
+       u32 ext_phy_type = XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+
+       if ((ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072) ||
+           (ext_phy_type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073))
+               bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_8072_MDIO);
+
+       mutex_unlock(&bp->port.phy_mutex);
+}
+
+int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode, u8 port)
+{
+       /* The GPIO should be swapped if swap register is set and active */
+       int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) &&
+                        REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port;
+       int gpio_shift = gpio_num +
+                       (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0);
+       u32 gpio_mask = (1 << gpio_shift);
+       u32 gpio_reg;
+
+       if (gpio_num > MISC_REGISTERS_GPIO_3) {
+               BNX2X_ERR("Invalid GPIO %d\n", gpio_num);
+               return -EINVAL;
+       }
+
+       bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);
+       /* read GPIO and mask except the float bits */
+       gpio_reg = (REG_RD(bp, MISC_REG_GPIO) & MISC_REGISTERS_GPIO_FLOAT);
+
+       switch (mode) {
+       case MISC_REGISTERS_GPIO_OUTPUT_LOW:
+               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output low\n",
+                  gpio_num, gpio_shift);
+               /* clear FLOAT and set CLR */
+               gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
+               gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_CLR_POS);
+               break;
+
+       case MISC_REGISTERS_GPIO_OUTPUT_HIGH:
+               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> output high\n",
+                  gpio_num, gpio_shift);
+               /* clear FLOAT and set SET */
+               gpio_reg &= ~(gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
+               gpio_reg |=  (gpio_mask << MISC_REGISTERS_GPIO_SET_POS);
+               break;
+
+       case MISC_REGISTERS_GPIO_INPUT_HI_Z:
+               DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> input\n",
+                  gpio_num, gpio_shift);
+               /* set FLOAT */
+               gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_FLOAT_POS);
+               break;
+
+       default:
+               break;
+       }
+
+       REG_WR(bp, MISC_REG_GPIO, gpio_reg);
+       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_GPIO);
+
+       return 0;
+}
+
+static int bnx2x_set_spio(struct bnx2x *bp, int spio_num, u32 mode)
+{
+       u32 spio_mask = (1 << spio_num);
+       u32 spio_reg;
+
+       if ((spio_num < MISC_REGISTERS_SPIO_4) ||
+           (spio_num > MISC_REGISTERS_SPIO_7)) {
+               BNX2X_ERR("Invalid SPIO %d\n", spio_num);
+               return -EINVAL;
+       }
+
+       bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_SPIO);
+       /* read SPIO and mask except the float bits */
+       spio_reg = (REG_RD(bp, MISC_REG_SPIO) & MISC_REGISTERS_SPIO_FLOAT);
+
+       switch (mode) {
+       case MISC_REGISTERS_SPIO_OUTPUT_LOW:
+               DP(NETIF_MSG_LINK, "Set SPIO %d -> output low\n", spio_num);
+               /* clear FLOAT and set CLR */
+               spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
+               spio_reg |=  (spio_mask << MISC_REGISTERS_SPIO_CLR_POS);
+               break;
+
+       case MISC_REGISTERS_SPIO_OUTPUT_HIGH:
+               DP(NETIF_MSG_LINK, "Set SPIO %d -> output high\n", spio_num);
+               /* clear FLOAT and set SET */
+               spio_reg &= ~(spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
+               spio_reg |=  (spio_mask << MISC_REGISTERS_SPIO_SET_POS);
+               break;
+
+       case MISC_REGISTERS_SPIO_INPUT_HI_Z:
+               DP(NETIF_MSG_LINK, "Set SPIO %d -> input\n", spio_num);
+               /* set FLOAT */
+               spio_reg |= (spio_mask << MISC_REGISTERS_SPIO_FLOAT_POS);
+               break;
+
+       default:
+               break;
+       }
+
+       REG_WR(bp, MISC_REG_SPIO, spio_reg);
+       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_SPIO);
+
+       return 0;
+}
+
+static void bnx2x_calc_fc_adv(struct bnx2x *bp)
+{
+       switch (bp->link_vars.ieee_fc) {
+       case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE:
+               bp->port.advertising &= ~(ADVERTISED_Asym_Pause |
+                                         ADVERTISED_Pause);
+               break;
+       case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH:
+               bp->port.advertising |= (ADVERTISED_Asym_Pause |
+                                        ADVERTISED_Pause);
+               break;
+       case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC:
+               bp->port.advertising |= ADVERTISED_Asym_Pause;
+               break;
+       default:
+               bp->port.advertising &= ~(ADVERTISED_Asym_Pause |
+                                         ADVERTISED_Pause);
+               break;
+       }
+}
+
+static void bnx2x_link_report(struct bnx2x *bp)
+{
+       if (bp->link_vars.link_up) {
+               if (bp->state == BNX2X_STATE_OPEN)
+                       netif_carrier_on(bp->dev);
+               printk(KERN_INFO PFX "%s NIC Link is Up, ", bp->dev->name);
+
+               printk("%d Mbps ", bp->link_vars.line_speed);
+
+               if (bp->link_vars.duplex == DUPLEX_FULL)
+                       printk("full duplex");
+               else
+                       printk("half duplex");
+
+               if (bp->link_vars.flow_ctrl != FLOW_CTRL_NONE) {
+                       if (bp->link_vars.flow_ctrl & FLOW_CTRL_RX) {
+                               printk(", receive ");
+                               if (bp->link_vars.flow_ctrl & FLOW_CTRL_TX)
+                                       printk("& transmit ");
+                       } else {
+                               printk(", transmit ");
+                       }
+                       printk("flow control ON");
+               }
+               printk("\n");
+
+       } else { /* link_down */
+               netif_carrier_off(bp->dev);
+               printk(KERN_ERR PFX "%s NIC Link is Down\n", bp->dev->name);
+       }
+}
+
+static u8 bnx2x_initial_phy_init(struct bnx2x *bp)
+{
+       if (!BP_NOMCP(bp)) {
+               u8 rc;
+
+               /* Initialize link parameters structure variables */
+               /* It is recommended to turn off RX FC for jumbo frames
+                  for better performance */
+               if (IS_E1HMF(bp))
+                       bp->link_params.req_fc_auto_adv = FLOW_CTRL_BOTH;
+               else if (bp->dev->mtu > 5000)
+                       bp->link_params.req_fc_auto_adv = FLOW_CTRL_TX;
+               else
+                       bp->link_params.req_fc_auto_adv = FLOW_CTRL_BOTH;
+
+               bnx2x_acquire_phy_lock(bp);
+               rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars);
+               bnx2x_release_phy_lock(bp);
+
+               if (bp->link_vars.link_up)
+                       bnx2x_link_report(bp);
+
+               bnx2x_calc_fc_adv(bp);
+
+               return rc;
+       }
+       BNX2X_ERR("Bootcode is missing -not initializing link\n");
+       return -EINVAL;
+}
+
+static void bnx2x_link_set(struct bnx2x *bp)
+{
+       if (!BP_NOMCP(bp)) {
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_phy_init(&bp->link_params, &bp->link_vars);
+               bnx2x_release_phy_lock(bp);
+
+               bnx2x_calc_fc_adv(bp);
+       } else
+               BNX2X_ERR("Bootcode is missing -not setting link\n");
+}
+
+static void bnx2x__link_reset(struct bnx2x *bp)
+{
+       if (!BP_NOMCP(bp)) {
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_link_reset(&bp->link_params, &bp->link_vars);
+               bnx2x_release_phy_lock(bp);
+       } else
+               BNX2X_ERR("Bootcode is missing -not resetting link\n");
+}
+
+static u8 bnx2x_link_test(struct bnx2x *bp)
+{
+       u8 rc;
+
+       bnx2x_acquire_phy_lock(bp);
+       rc = bnx2x_test_link(&bp->link_params, &bp->link_vars);
+       bnx2x_release_phy_lock(bp);
+
+       return rc;
+}
+
+static void bnx2x_init_port_minmax(struct bnx2x *bp)
+{
+       u32 r_param = bp->link_vars.line_speed / 8;
+       u32 fair_periodic_timeout_usec;
+       u32 t_fair;
+
+       memset(&(bp->cmng.rs_vars), 0,
+              sizeof(struct rate_shaping_vars_per_port));
+       memset(&(bp->cmng.fair_vars), 0, sizeof(struct fairness_vars_per_port));
+
+       /* 100 usec in SDM ticks = 25 since each tick is 4 usec */
+       bp->cmng.rs_vars.rs_periodic_timeout = RS_PERIODIC_TIMEOUT_USEC / 4;
+
+       /* this is the threshold below which no timer arming will occur
+          1.25 coefficient is for the threshold to be a little bigger
+          than the real time, to compensate for timer in-accuracy */
+       bp->cmng.rs_vars.rs_threshold =
+                               (RS_PERIODIC_TIMEOUT_USEC * r_param * 5) / 4;
+
+       /* resolution of fairness timer */
+       fair_periodic_timeout_usec = QM_ARB_BYTES / r_param;
+       /* for 10G it is 1000usec. for 1G it is 10000usec. */
+       t_fair = T_FAIR_COEF / bp->link_vars.line_speed;
+
+       /* this is the threshold below which we won't arm the timer anymore */
+       bp->cmng.fair_vars.fair_threshold = QM_ARB_BYTES;
+
+       /* we multiply by 1e3/8 to get bytes/msec.
+          We don't want the credits to pass a credit
+          of the T_FAIR*FAIR_MEM (algorithm resolution) */
+       bp->cmng.fair_vars.upper_bound = r_param * t_fair * FAIR_MEM;
+       /* since each tick is 4 usec */
+       bp->cmng.fair_vars.fairness_timeout = fair_periodic_timeout_usec / 4;
+}
+
+static void bnx2x_init_vn_minmax(struct bnx2x *bp, int func)
+{
+       struct rate_shaping_vars_per_vn m_rs_vn;
+       struct fairness_vars_per_vn m_fair_vn;
+       u32 vn_cfg = SHMEM_RD(bp, mf_cfg.func_mf_config[func].config);
+       u16 vn_min_rate, vn_max_rate;
+       int i;
+
+       /* If function is hidden - set min and max to zeroes */
+       if (vn_cfg & FUNC_MF_CFG_FUNC_HIDE) {
+               vn_min_rate = 0;
+               vn_max_rate = 0;
+
+       } else {
+               vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >>
+                               FUNC_MF_CFG_MIN_BW_SHIFT) * 100;
+               /* If FAIRNESS is enabled (not all min rates are zeroes) and
+                  if current min rate is zero - set it to 1.
+                  This is a requirement of the algorithm. */
+               if (bp->wsum && (vn_min_rate == 0))
+                       vn_min_rate = DEF_MIN_RATE;
+               vn_max_rate = ((vn_cfg & FUNC_MF_CFG_MAX_BW_MASK) >>
+                               FUNC_MF_CFG_MAX_BW_SHIFT) * 100;
+       }
+
+       DP(NETIF_MSG_IFUP, "func %d: vn_min_rate=%d  vn_max_rate=%d  "
+          "wsum=%d\n", func, vn_min_rate, vn_max_rate, bp->wsum);
+
+       memset(&m_rs_vn, 0, sizeof(struct rate_shaping_vars_per_vn));
+       memset(&m_fair_vn, 0, sizeof(struct fairness_vars_per_vn));
+
+       /* global vn counter - maximal Mbps for this vn */
+       m_rs_vn.vn_counter.rate = vn_max_rate;
+
+       /* quota - number of bytes transmitted in this period */
+       m_rs_vn.vn_counter.quota =
+                               (vn_max_rate * RS_PERIODIC_TIMEOUT_USEC) / 8;
+
+#ifdef BNX2X_PER_PROT_QOS
+       /* per protocol counter */
+       for (protocol = 0; protocol < NUM_OF_PROTOCOLS; protocol++) {
+               /* maximal Mbps for this protocol */
+               m_rs_vn.protocol_counters[protocol].rate =
+                                               protocol_max_rate[protocol];
+               /* the quota in each timer period -
+                  number of bytes transmitted in this period */
+               m_rs_vn.protocol_counters[protocol].quota =
+                       (u32)(rs_periodic_timeout_usec *
+                         ((double)m_rs_vn.
+                                  protocol_counters[protocol].rate/8));
+       }
+#endif
+
+       if (bp->wsum) {
+               /* credit for each period of the fairness algorithm:
+                  number of bytes in T_FAIR (the vn share the port rate).
+                  wsum should not be larger than 10000, thus
+                  T_FAIR_COEF / (8 * wsum) will always be grater than zero */
+               m_fair_vn.vn_credit_delta =
+                       max((u32)(vn_min_rate * (T_FAIR_COEF / (8 * bp->wsum))),
+                           (u32)(bp->cmng.fair_vars.fair_threshold * 2));
+               DP(NETIF_MSG_IFUP, "m_fair_vn.vn_credit_delta=%d\n",
+                  m_fair_vn.vn_credit_delta);
+       }
+
+#ifdef BNX2X_PER_PROT_QOS
+       do {
+               u32 protocolWeightSum = 0;
+
+               for (protocol = 0; protocol < NUM_OF_PROTOCOLS; protocol++)
+                       protocolWeightSum +=
+                                       drvInit.protocol_min_rate[protocol];
+               /* per protocol counter -
+                  NOT NEEDED IF NO PER-PROTOCOL CONGESTION MANAGEMENT */
+               if (protocolWeightSum > 0) {
+                       for (protocol = 0;
+                            protocol < NUM_OF_PROTOCOLS; protocol++)
+                               /* credit for each period of the
+                                  fairness algorithm - number of bytes in
+                                  T_FAIR (the protocol share the vn rate) */
+                               m_fair_vn.protocol_credit_delta[protocol] =
+                                       (u32)((vn_min_rate / 8) * t_fair *
+                                       protocol_min_rate / protocolWeightSum);
+               }
+       } while (0);
+#endif
+
+       /* Store it to internal memory */
+       for (i = 0; i < sizeof(struct rate_shaping_vars_per_vn)/4; i++)
+               REG_WR(bp, BAR_XSTRORM_INTMEM +
+                      XSTORM_RATE_SHAPING_PER_VN_VARS_OFFSET(func) + i * 4,
+                      ((u32 *)(&m_rs_vn))[i]);
+
+       for (i = 0; i < sizeof(struct fairness_vars_per_vn)/4; i++)
+               REG_WR(bp, BAR_XSTRORM_INTMEM +
+                      XSTORM_FAIRNESS_PER_VN_VARS_OFFSET(func) + i * 4,
+                      ((u32 *)(&m_fair_vn))[i]);
+}
+
+/* This function is called upon link interrupt */
+static void bnx2x_link_attn(struct bnx2x *bp)
+{
+       /* Make sure that we are synced with the current statistics */
+       bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+
+       bnx2x_link_update(&bp->link_params, &bp->link_vars);
+
+       if (bp->link_vars.link_up) {
+
+               if (bp->link_vars.mac_type == MAC_TYPE_BMAC) {
+                       struct host_port_stats *pstats;
+
+                       pstats = bnx2x_sp(bp, port_stats);
+                       /* reset old bmac stats */
+                       memset(&(pstats->mac_stx[0]), 0,
+                              sizeof(struct mac_stx));
+               }
+               if ((bp->state == BNX2X_STATE_OPEN) ||
+                   (bp->state == BNX2X_STATE_DISABLED))
+                       bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP);
+       }
+
+       /* indicate link status */
+       bnx2x_link_report(bp);
+
+       if (IS_E1HMF(bp)) {
+               int port = BP_PORT(bp);
+               int func;
+               int vn;
+
+               for (vn = VN_0; vn < E1HVN_MAX; vn++) {
+                       if (vn == BP_E1HVN(bp))
+                               continue;
+
+                       func = ((vn << 1) | port);
+
+                       /* Set the attention towards other drivers
+                          on the same port */
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_0 +
+                              (LINK_SYNC_ATTENTION_BIT_FUNC_0 + func)*4, 1);
+               }
+
+               if (bp->link_vars.link_up) {
+                       int i;
+
+                       /* Init RATE SHAPING and FAIRNESS contexts */
+                       bnx2x_init_port_minmax(bp);
+
+                       for (vn = VN_0; vn < E1HVN_MAX; vn++)
+                               bnx2x_init_vn_minmax(bp, 2*vn + port);
+
+                       /* Store it to internal memory */
+                       for (i = 0;
+                            i < sizeof(struct cmng_struct_per_port) / 4; i++)
+                               REG_WR(bp, BAR_XSTRORM_INTMEM +
+                                 XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i*4,
+                                      ((u32 *)(&bp->cmng))[i]);
+               }
+       }
+}
+
+static void bnx2x__link_status_update(struct bnx2x *bp)
+{
+       if (bp->state != BNX2X_STATE_OPEN)
+               return;
+
+       bnx2x_link_status_update(&bp->link_params, &bp->link_vars);
+
+       if (bp->link_vars.link_up)
+               bnx2x_stats_handle(bp, STATS_EVENT_LINK_UP);
+       else
+               bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+
+       /* indicate link status */
+       bnx2x_link_report(bp);
+}
+
+static void bnx2x_pmf_update(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 val;
+
+       bp->port.pmf = 1;
+       DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf);
+
+       /* enable nig attention */
+       val = (0xff0f | (1 << (BP_E1HVN(bp) + 4)));
+       REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, val);
+       REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, val);
+
+       bnx2x_stats_handle(bp, STATS_EVENT_PMF);
+}
+
+/* end of Link */
+
+/* slow path */
+
+/*
+ * General service functions
+ */
+
+/* the slow path queue is odd since completions arrive on the fastpath ring */
+static int bnx2x_sp_post(struct bnx2x *bp, int command, int cid,
+                        u32 data_hi, u32 data_lo, int common)
+{
+       int func = BP_FUNC(bp);
+
+       DP(BNX2X_MSG_SP/*NETIF_MSG_TIMER*/,
+          "SPQE (%x:%x)  command %d  hw_cid %x  data (%x:%x)  left %x\n",
+          (u32)U64_HI(bp->spq_mapping), (u32)(U64_LO(bp->spq_mapping) +
+          (void *)bp->spq_prod_bd - (void *)bp->spq), command,
+          HW_CID(bp, cid), data_hi, data_lo, bp->spq_left);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return -EIO;
+#endif
+
+       spin_lock_bh(&bp->spq_lock);
+
+       if (!bp->spq_left) {
+               BNX2X_ERR("BUG! SPQ ring full!\n");
+               spin_unlock_bh(&bp->spq_lock);
+               bnx2x_panic();
+               return -EBUSY;
+       }
+
+       /* CID needs port number to be encoded int it */
+       bp->spq_prod_bd->hdr.conn_and_cmd_data =
+                       cpu_to_le32(((command << SPE_HDR_CMD_ID_SHIFT) |
+                                    HW_CID(bp, cid)));
+       bp->spq_prod_bd->hdr.type = cpu_to_le16(ETH_CONNECTION_TYPE);
+       if (common)
+               bp->spq_prod_bd->hdr.type |=
+                       cpu_to_le16((1 << SPE_HDR_COMMON_RAMROD_SHIFT));
+
+       bp->spq_prod_bd->data.mac_config_addr.hi = cpu_to_le32(data_hi);
+       bp->spq_prod_bd->data.mac_config_addr.lo = cpu_to_le32(data_lo);
+
+       bp->spq_left--;
+
+       if (bp->spq_prod_bd == bp->spq_last_bd) {
+               bp->spq_prod_bd = bp->spq;
+               bp->spq_prod_idx = 0;
+               DP(NETIF_MSG_TIMER, "end of spq\n");
+
+       } else {
+               bp->spq_prod_bd++;
+               bp->spq_prod_idx++;
+       }
+
+       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func),
+              bp->spq_prod_idx);
+
+       spin_unlock_bh(&bp->spq_lock);
+       return 0;
+}
+
+/* acquire split MCP access lock register */
+static int bnx2x_acquire_alr(struct bnx2x *bp)
+{
+       u32 i, j, val;
+       int rc = 0;
+
+       might_sleep();
+       i = 100;
+       for (j = 0; j < i*10; j++) {
+               val = (1UL << 31);
+               REG_WR(bp, GRCBASE_MCP + 0x9c, val);
+               val = REG_RD(bp, GRCBASE_MCP + 0x9c);
+               if (val & (1L << 31))
+                       break;
+
+               msleep(5);
+       }
+       if (!(val & (1L << 31))) {
+               BNX2X_ERR("Cannot acquire MCP access lock register\n");
+               rc = -EBUSY;
+       }
+
+       return rc;
+}
+
+/* release split MCP access lock register */
+static void bnx2x_release_alr(struct bnx2x *bp)
+{
+       u32 val = 0;
+
+       REG_WR(bp, GRCBASE_MCP + 0x9c, val);
+}
+
+static inline u16 bnx2x_update_dsb_idx(struct bnx2x *bp)
+{
+       struct host_def_status_block *def_sb = bp->def_status_blk;
+       u16 rc = 0;
+
+       barrier(); /* status block is written to by the chip */
+       if (bp->def_att_idx != le16_to_cpu(def_sb->atten_status_block.
+                                                       attn_bits_index)) {
+               bp->def_att_idx = le16_to_cpu(def_sb->atten_status_block.
+                                                       attn_bits_index);
+               rc |= 1;
+       }
+       if (bp->def_c_idx != def_sb->c_def_status_block.status_block_index) {
+               bp->def_c_idx = def_sb->c_def_status_block.status_block_index;
+               rc |= 2;
+       }
+       if (bp->def_u_idx != def_sb->u_def_status_block.status_block_index) {
+               bp->def_u_idx = def_sb->u_def_status_block.status_block_index;
+               rc |= 4;
+       }
+       if (bp->def_x_idx != def_sb->x_def_status_block.status_block_index) {
+               bp->def_x_idx = def_sb->x_def_status_block.status_block_index;
+               rc |= 8;
+       }
+       if (bp->def_t_idx != def_sb->t_def_status_block.status_block_index) {
+               bp->def_t_idx = def_sb->t_def_status_block.status_block_index;
+               rc |= 16;
+       }
+       return rc;
+}
+
+/*
+ * slow path service functions
+ */
+
+static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted)
+{
+       int port = BP_PORT(bp);
+       u32 hc_addr = (HC_REG_COMMAND_REG + port*32 +
+                      COMMAND_REG_ATTN_BITS_SET);
+       u32 aeu_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
+                             MISC_REG_AEU_MASK_ATTN_FUNC_0;
+       u32 nig_int_mask_addr = port ? NIG_REG_MASK_INTERRUPT_PORT1 :
+                                      NIG_REG_MASK_INTERRUPT_PORT0;
+       u32 aeu_mask;
+       u32 nig_mask = 0;
+
+       if (bp->attn_state & asserted)
+               BNX2X_ERR("IGU ERROR\n");
+
+       bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
+       aeu_mask = REG_RD(bp, aeu_addr);
+
+       DP(NETIF_MSG_HW, "aeu_mask %x  newly asserted %x\n",
+          aeu_mask, asserted);
+       aeu_mask &= ~(asserted & 0xff);
+       DP(NETIF_MSG_HW, "new mask %x\n", aeu_mask);
+
+       REG_WR(bp, aeu_addr, aeu_mask);
+       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
+
+       DP(NETIF_MSG_HW, "attn_state %x\n", bp->attn_state);
+       bp->attn_state |= asserted;
+       DP(NETIF_MSG_HW, "new state %x\n", bp->attn_state);
+
+       if (asserted & ATTN_HARD_WIRED_MASK) {
+               if (asserted & ATTN_NIG_FOR_FUNC) {
+
+                       bnx2x_acquire_phy_lock(bp);
+
+                       /* save nig interrupt mask */
+                       nig_mask = REG_RD(bp, nig_int_mask_addr);
+                       REG_WR(bp, nig_int_mask_addr, 0);
+
+                       bnx2x_link_attn(bp);
+
+                       /* handle unicore attn? */
+               }
+               if (asserted & ATTN_SW_TIMER_4_FUNC)
+                       DP(NETIF_MSG_HW, "ATTN_SW_TIMER_4_FUNC!\n");
+
+               if (asserted & GPIO_2_FUNC)
+                       DP(NETIF_MSG_HW, "GPIO_2_FUNC!\n");
+
+               if (asserted & GPIO_3_FUNC)
+                       DP(NETIF_MSG_HW, "GPIO_3_FUNC!\n");
+
+               if (asserted & GPIO_4_FUNC)
+                       DP(NETIF_MSG_HW, "GPIO_4_FUNC!\n");
+
+               if (port == 0) {
+                       if (asserted & ATTN_GENERAL_ATTN_1) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_1!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_1, 0x0);
+                       }
+                       if (asserted & ATTN_GENERAL_ATTN_2) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_2!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_2, 0x0);
+                       }
+                       if (asserted & ATTN_GENERAL_ATTN_3) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_3!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_3, 0x0);
+                       }
+               } else {
+                       if (asserted & ATTN_GENERAL_ATTN_4) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_4!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_4, 0x0);
+                       }
+                       if (asserted & ATTN_GENERAL_ATTN_5) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_5!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_5, 0x0);
+                       }
+                       if (asserted & ATTN_GENERAL_ATTN_6) {
+                               DP(NETIF_MSG_HW, "ATTN_GENERAL_ATTN_6!\n");
+                               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_6, 0x0);
+                       }
+               }
+
+       } /* if hardwired */
+
+       DP(NETIF_MSG_HW, "about to mask 0x%08x at HC addr 0x%x\n",
+          asserted, hc_addr);
+       REG_WR(bp, hc_addr, asserted);
+
+       /* now set back the mask */
+       if (asserted & ATTN_NIG_FOR_FUNC) {
+               REG_WR(bp, nig_int_mask_addr, nig_mask);
+               bnx2x_release_phy_lock(bp);
+       }
+}
+
+static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn)
+{
+       int port = BP_PORT(bp);
+       int reg_offset;
+       u32 val;
+
+       reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :
+                            MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
+
+       if (attn & AEU_INPUTS_ATTN_BITS_SPIO5) {
+
+               val = REG_RD(bp, reg_offset);
+               val &= ~AEU_INPUTS_ATTN_BITS_SPIO5;
+               REG_WR(bp, reg_offset, val);
+
+               BNX2X_ERR("SPIO5 hw attention\n");
+
+               switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       /* Fan failure attention */
+
+                       /* The PHY reset is controlled by GPIO 1 */
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1,
+                                      MISC_REGISTERS_GPIO_OUTPUT_LOW, port);
+                       /* Low power mode is controlled by GPIO 2 */
+                       bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2,
+                                      MISC_REGISTERS_GPIO_OUTPUT_LOW, port);
+                       /* mark the failure */
+                       bp->link_params.ext_phy_config &=
+                                       ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK;
+                       bp->link_params.ext_phy_config |=
+                                       PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE;
+                       SHMEM_WR(bp,
+                                dev_info.port_hw_config[port].
+                                                       external_phy_config,
+                                bp->link_params.ext_phy_config);
+                       /* log the failure */
+                       printk(KERN_ERR PFX "Fan Failure on Network"
+                              " Controller %s has caused the driver to"
+                              " shutdown the card to prevent permanent"
+                              " damage.  Please contact Dell Support for"
+                              " assistance\n", bp->dev->name);
+                       break;
+
+               default:
+                       break;
+               }
+       }
+
+       if (attn & HW_INTERRUT_ASSERT_SET_0) {
+
+               val = REG_RD(bp, reg_offset);
+               val &= ~(attn & HW_INTERRUT_ASSERT_SET_0);
+               REG_WR(bp, reg_offset, val);
+
+               BNX2X_ERR("FATAL HW block attention set0 0x%x\n",
+                         (attn & HW_INTERRUT_ASSERT_SET_0));
+               bnx2x_panic();
+       }
+}
+
+static inline void bnx2x_attn_int_deasserted1(struct bnx2x *bp, u32 attn)
+{
+       u32 val;
+
+       if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) {
+
+               val = REG_RD(bp, DORQ_REG_DORQ_INT_STS_CLR);
+               BNX2X_ERR("DB hw attention 0x%x\n", val);
+               /* DORQ discard attention */
+               if (val & 0x2)
+                       BNX2X_ERR("FATAL error from DORQ\n");
+       }
+
+       if (attn & HW_INTERRUT_ASSERT_SET_1) {
+
+               int port = BP_PORT(bp);
+               int reg_offset;
+
+               reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1 :
+                                    MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1);
+
+               val = REG_RD(bp, reg_offset);
+               val &= ~(attn & HW_INTERRUT_ASSERT_SET_1);
+               REG_WR(bp, reg_offset, val);
+
+               BNX2X_ERR("FATAL HW block attention set1 0x%x\n",
+                         (attn & HW_INTERRUT_ASSERT_SET_1));
+               bnx2x_panic();
+       }
+}
+
+static inline void bnx2x_attn_int_deasserted2(struct bnx2x *bp, u32 attn)
+{
+       u32 val;
+
+       if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) {
+
+               val = REG_RD(bp, CFC_REG_CFC_INT_STS_CLR);
+               BNX2X_ERR("CFC hw attention 0x%x\n", val);
+               /* CFC error attention */
+               if (val & 0x2)
+                       BNX2X_ERR("FATAL error from CFC\n");
+       }
+
+       if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) {
+
+               val = REG_RD(bp, PXP_REG_PXP_INT_STS_CLR_0);
+               BNX2X_ERR("PXP hw attention 0x%x\n", val);
+               /* RQ_USDMDP_FIFO_OVERFLOW */
+               if (val & 0x18000)
+                       BNX2X_ERR("FATAL error from PXP\n");
+       }
+
+       if (attn & HW_INTERRUT_ASSERT_SET_2) {
+
+               int port = BP_PORT(bp);
+               int reg_offset;
+
+               reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_2 :
+                                    MISC_REG_AEU_ENABLE1_FUNC_0_OUT_2);
+
+               val = REG_RD(bp, reg_offset);
+               val &= ~(attn & HW_INTERRUT_ASSERT_SET_2);
+               REG_WR(bp, reg_offset, val);
+
+               BNX2X_ERR("FATAL HW block attention set2 0x%x\n",
+                         (attn & HW_INTERRUT_ASSERT_SET_2));
+               bnx2x_panic();
+       }
+}
+
+static inline void bnx2x_attn_int_deasserted3(struct bnx2x *bp, u32 attn)
+{
+       u32 val;
+
+       if (attn & EVEREST_GEN_ATTN_IN_USE_MASK) {
+
+               if (attn & BNX2X_PMF_LINK_ASSERT) {
+                       int func = BP_FUNC(bp);
+
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0);
+                       bnx2x__link_status_update(bp);
+                       if (SHMEM_RD(bp, func_mb[func].drv_status) &
+                                                       DRV_STATUS_PMF)
+                               bnx2x_pmf_update(bp);
+
+               } else if (attn & BNX2X_MC_ASSERT_BITS) {
+
+                       BNX2X_ERR("MC assert!\n");
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_10, 0);
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_9, 0);
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_8, 0);
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_7, 0);
+                       bnx2x_panic();
+
+               } else if (attn & BNX2X_MCP_ASSERT) {
+
+                       BNX2X_ERR("MCP assert!\n");
+                       REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_11, 0);
+                       bnx2x_fw_dump(bp);
+
+               } else
+                       BNX2X_ERR("Unknown HW assert! (attn 0x%x)\n", attn);
+       }
+
+       if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) {
+               BNX2X_ERR("LATCHED attention 0x%08x (masked)\n", attn);
+               if (attn & BNX2X_GRC_TIMEOUT) {
+                       val = CHIP_IS_E1H(bp) ?
+                               REG_RD(bp, MISC_REG_GRC_TIMEOUT_ATTN) : 0;
+                       BNX2X_ERR("GRC time-out 0x%08x\n", val);
+               }
+               if (attn & BNX2X_GRC_RSV) {
+                       val = CHIP_IS_E1H(bp) ?
+                               REG_RD(bp, MISC_REG_GRC_RSV_ATTN) : 0;
+                       BNX2X_ERR("GRC reserved 0x%08x\n", val);
+               }
+               REG_WR(bp, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff);
+       }
+}
+
+static void bnx2x_attn_int_deasserted(struct bnx2x *bp, u32 deasserted)
+{
+       struct attn_route attn;
+       struct attn_route group_mask;
+       int port = BP_PORT(bp);
+       int index;
+       u32 reg_addr;
+       u32 val;
+       u32 aeu_mask;
+
+       /* need to take HW lock because MCP or other port might also
+          try to handle this event */
+       bnx2x_acquire_alr(bp);
+
+       attn.sig[0] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0 + port*4);
+       attn.sig[1] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0 + port*4);
+       attn.sig[2] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0 + port*4);
+       attn.sig[3] = REG_RD(bp, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0 + port*4);
+       DP(NETIF_MSG_HW, "attn: %08x %08x %08x %08x\n",
+          attn.sig[0], attn.sig[1], attn.sig[2], attn.sig[3]);
+
+       for (index = 0; index < MAX_DYNAMIC_ATTN_GRPS; index++) {
+               if (deasserted & (1 << index)) {
+                       group_mask = bp->attn_group[index];
+
+                       DP(NETIF_MSG_HW, "group[%d]: %08x %08x %08x %08x\n",
+                          index, group_mask.sig[0], group_mask.sig[1],
+                          group_mask.sig[2], group_mask.sig[3]);
+
+                       bnx2x_attn_int_deasserted3(bp,
+                                       attn.sig[3] & group_mask.sig[3]);
+                       bnx2x_attn_int_deasserted1(bp,
+                                       attn.sig[1] & group_mask.sig[1]);
+                       bnx2x_attn_int_deasserted2(bp,
+                                       attn.sig[2] & group_mask.sig[2]);
+                       bnx2x_attn_int_deasserted0(bp,
+                                       attn.sig[0] & group_mask.sig[0]);
+
+                       if ((attn.sig[0] & group_mask.sig[0] &
+                                               HW_PRTY_ASSERT_SET_0) ||
+                           (attn.sig[1] & group_mask.sig[1] &
+                                               HW_PRTY_ASSERT_SET_1) ||
+                           (attn.sig[2] & group_mask.sig[2] &
+                                               HW_PRTY_ASSERT_SET_2))
+                               BNX2X_ERR("FATAL HW block parity attention\n");
+               }
+       }
+
+       bnx2x_release_alr(bp);
+
+       reg_addr = (HC_REG_COMMAND_REG + port*32 + COMMAND_REG_ATTN_BITS_CLR);
+
+       val = ~deasserted;
+       DP(NETIF_MSG_HW, "about to mask 0x%08x at HC addr 0x%x\n",
+          val, reg_addr);
+       REG_WR(bp, reg_addr, val);
+
+       if (~bp->attn_state & deasserted)
+               BNX2X_ERR("IGU ERROR\n");
+
+       reg_addr = port ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
+                         MISC_REG_AEU_MASK_ATTN_FUNC_0;
+
+       bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
+       aeu_mask = REG_RD(bp, reg_addr);
+
+       DP(NETIF_MSG_HW, "aeu_mask %x  newly deasserted %x\n",
+          aeu_mask, deasserted);
+       aeu_mask |= (deasserted & 0xff);
+       DP(NETIF_MSG_HW, "new mask %x\n", aeu_mask);
+
+       REG_WR(bp, reg_addr, aeu_mask);
+       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_PORT0_ATT_MASK + port);
+
+       DP(NETIF_MSG_HW, "attn_state %x\n", bp->attn_state);
+       bp->attn_state &= ~deasserted;
+       DP(NETIF_MSG_HW, "new state %x\n", bp->attn_state);
+}
+
+static void bnx2x_attn_int(struct bnx2x *bp)
+{
+       /* read local copy of bits */
+       u32 attn_bits = le32_to_cpu(bp->def_status_blk->atten_status_block.
+                                                               attn_bits);
+       u32 attn_ack = le32_to_cpu(bp->def_status_blk->atten_status_block.
+                                                               attn_bits_ack);
+       u32 attn_state = bp->attn_state;
+
+       /* look for changed bits */
+       u32 asserted   =  attn_bits & ~attn_ack & ~attn_state;
+       u32 deasserted = ~attn_bits &  attn_ack &  attn_state;
+
+       DP(NETIF_MSG_HW,
+          "attn_bits %x  attn_ack %x  asserted %x  deasserted %x\n",
+          attn_bits, attn_ack, asserted, deasserted);
+
+       if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state))
+               BNX2X_ERR("BAD attention state\n");
+
+       /* handle bits that were raised */
+       if (asserted)
+               bnx2x_attn_int_asserted(bp, asserted);
+
+       if (deasserted)
+               bnx2x_attn_int_deasserted(bp, deasserted);
+}
+
+#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) /* BNX2X_UPSTREAM */
+static void bnx2x_sp_task(struct work_struct *work)
+{
+       struct bnx2x *bp = container_of(work, struct bnx2x, sp_task);
+#else
+static void bnx2x_sp_task(void *data)
+{
+       struct bnx2x *bp = (struct bnx2x *)data;
+#endif
+       u16 status;
+
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+       bp->sp_running = 1;
+       smp_mb(); /* make sure close can see this */
+#endif
+
+       /* Return here if interrupt is disabled */
+       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
+               DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n");
+#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */
+               return;
+#else
+               goto sp_task_exit;
+#endif
+       }
+
+       status = bnx2x_update_dsb_idx(bp);
+/*     if (status == 0)                                     */
+/*             BNX2X_ERR("spurious slowpath interrupt!\n"); */
+
+       DP(NETIF_MSG_INTR, "got a slowpath interrupt (updated %x)\n", status);
+
+       /* HW attentions */
+       if (status & 0x1)
+               bnx2x_attn_int(bp);
+
+       /* CStorm events: query_stats, port delete ramrod */
+       if (status & 0x2)
+               bp->stats_pending = 0;
+
+       bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, bp->def_att_idx,
+                    IGU_INT_NOP, 1);
+       bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx),
+                    IGU_INT_NOP, 1);
+       bnx2x_ack_sb(bp, DEF_SB_ID, CSTORM_ID, le16_to_cpu(bp->def_c_idx),
+                    IGU_INT_NOP, 1);
+       bnx2x_ack_sb(bp, DEF_SB_ID, XSTORM_ID, le16_to_cpu(bp->def_x_idx),
+                    IGU_INT_NOP, 1);
+       bnx2x_ack_sb(bp, DEF_SB_ID, TSTORM_ID, le16_to_cpu(bp->def_t_idx),
+                    IGU_INT_ENABLE, 1);
+
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+sp_task_exit:
+       bp->sp_running = 0;
+       smp_mb(); /* make sure close can see this */
+#endif
+}
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+#if (LINUX_VERSION_CODE < 0x20613)
+static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance,
+                                    struct pt_regs *regs)
+#else /* BNX2X_UPSTREAM */
+static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance)
+#endif
+{
+       struct net_device *dev = dev_instance;
+       struct bnx2x *bp = netdev_priv(dev);
+
+       /* Return here if interrupt is disabled */
+       if (unlikely(atomic_read(&bp->intr_sem) != 0)) {
+               DP(NETIF_MSG_INTR, "called but intr_sem not 0, returning\n");
+               return IRQ_HANDLED;
+       }
+
+       bnx2x_ack_sb(bp, DEF_SB_ID, TSTORM_ID, 0, IGU_INT_DISABLE, 0);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return IRQ_HANDLED;
+#endif
+
+       schedule_work(&bp->sp_task);
+
+       return IRQ_HANDLED;
+}
+#endif
+
+/* end of slow path */
+
+/* Statistics */
+
+/****************************************************************************
+* Macros
+****************************************************************************/
+
+/* sum[hi:lo] += add[hi:lo] */
+#define ADD_64(s_hi, a_hi, s_lo, a_lo) \
+       do { \
+               s_lo += a_lo; \
+               s_hi += a_hi + (s_lo < a_lo) ? 1 : 0; \
+       } while (0)
+
+/* difference = minuend - subtrahend */
+#define DIFF_64(d_hi, m_hi, s_hi, d_lo, m_lo, s_lo) \
+       do { \
+               if (m_lo < s_lo) { \
+                       /* underflow */ \
+                       d_hi = m_hi - s_hi; \
+                       if (d_hi > 0) { \
+                               /* we can 'loan' 1 */ \
+                               d_hi--; \
+                               d_lo = m_lo + (UINT_MAX - s_lo) + 1; \
+                       } else { \
+                               /* m_hi <= s_hi */ \
+                               d_hi = 0; \
+                               d_lo = 0; \
+                       } \
+               } else { \
+                       /* m_lo >= s_lo */ \
+                       if (m_hi < s_hi) { \
+                               d_hi = 0; \
+                               d_lo = 0; \
+                       } else { \
+                               /* m_hi >= s_hi */ \
+                               d_hi = m_hi - s_hi; \
+                               d_lo = m_lo - s_lo; \
+                       } \
+               } \
+       } while (0)
+
+#define UPDATE_STAT64(s, t) \
+       do { \
+               DIFF_64(diff.hi, new->s##_hi, pstats->mac_stx[0].t##_hi, \
+                       diff.lo, new->s##_lo, pstats->mac_stx[0].t##_lo); \
+               pstats->mac_stx[0].t##_hi = new->s##_hi; \
+               pstats->mac_stx[0].t##_lo = new->s##_lo; \
+               ADD_64(pstats->mac_stx[1].t##_hi, diff.hi, \
+                      pstats->mac_stx[1].t##_lo, diff.lo); \
+       } while (0)
+
+#define UPDATE_STAT64_NIG(s, t) \
+       do { \
+               DIFF_64(diff.hi, new->s##_hi, old->s##_hi, \
+                       diff.lo, new->s##_lo, old->s##_lo); \
+               ADD_64(estats->t##_hi, diff.hi, \
+                      estats->t##_lo, diff.lo); \
+       } while (0)
+
+/* sum[hi:lo] += add */
+#define ADD_EXTEND_64(s_hi, s_lo, a) \
+       do { \
+               s_lo += a; \
+               s_hi += (s_lo < a) ? 1 : 0; \
+       } while (0)
+
+#define UPDATE_EXTEND_STAT(s) \
+       do { \
+               ADD_EXTEND_64(pstats->mac_stx[1].s##_hi, \
+                             pstats->mac_stx[1].s##_lo, \
+                             new->s); \
+       } while (0)
+
+#define UPDATE_EXTEND_TSTAT(s, t) \
+       do { \
+               diff = le32_to_cpu(tclient->s) - old_tclient->s; \
+               old_tclient->s = le32_to_cpu(tclient->s); \
+               ADD_EXTEND_64(fstats->t##_hi, fstats->t##_lo, diff); \
+       } while (0)
+
+#define UPDATE_EXTEND_XSTAT(s, t) \
+       do { \
+               diff = le32_to_cpu(xclient->s) - old_xclient->s; \
+               old_xclient->s = le32_to_cpu(xclient->s); \
+               ADD_EXTEND_64(fstats->t##_hi, fstats->t##_lo, diff); \
+       } while (0)
+
+/*
+ * General service functions
+ */
+
+static inline long bnx2x_hilo(u32 *hiref)
+{
+       u32 lo = *(hiref + 1);
+#if (BITS_PER_LONG == 64)
+       u32 hi = *hiref;
+
+       return HILO_U64(hi, lo);
+#else
+       return lo;
+#endif
+}
+
+/*
+ * Init service functions
+ */
+
+static void bnx2x_storm_stats_post(struct bnx2x *bp)
+{
+       if (!bp->stats_pending) {
+               struct eth_query_ramrod_data ramrod_data = {0};
+               int rc;
+
+               ramrod_data.drv_counter = bp->stats_counter++;
+               ramrod_data.collect_port = bp->port.pmf ? 1 : 0;
+               ramrod_data.ctr_id_vector = (1 << BP_CL_ID(bp));
+
+               rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_STAT_QUERY, 0,
+                                  ((u32 *)&ramrod_data)[1],
+                                  ((u32 *)&ramrod_data)[0], 0);
+               if (rc == 0) {
+                       /* stats ramrod has it's own slot on the spq */
+                       bp->spq_left++;
+                       bp->stats_pending = 1;
+               }
+       }
+}
+
+static void bnx2x_stats_init(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+
+       bp->executer_idx = 0;
+       bp->stats_counter = 0;
+
+       /* port stats */
+       if (!BP_NOMCP(bp))
+               bp->port.port_stx = SHMEM_RD(bp, port_mb[port].port_stx);
+       else
+               bp->port.port_stx = 0;
+       DP(BNX2X_MSG_STATS, "port_stx 0x%x\n", bp->port.port_stx);
+
+       memset(&(bp->port.old_nig_stats), 0, sizeof(struct nig_stats));
+       bp->port.old_nig_stats.brb_discard =
+                       REG_RD(bp, NIG_REG_STAT0_BRB_DISCARD + port*0x38);
+       bp->port.old_nig_stats.brb_truncate =
+                       REG_RD(bp, NIG_REG_STAT0_BRB_TRUNCATE + port*0x38);
+       REG_RD_DMAE(bp, NIG_REG_STAT0_EGRESS_MAC_PKT0 + port*0x50,
+                   &(bp->port.old_nig_stats.egress_mac_pkt0_lo), 2);
+       REG_RD_DMAE(bp, NIG_REG_STAT0_EGRESS_MAC_PKT1 + port*0x50,
+                   &(bp->port.old_nig_stats.egress_mac_pkt1_lo), 2);
+
+       /* function stats */
+#if (LINUX_VERSION_CODE >= 0x20618) /* BNX2X_UPSTREAM */
+       memset(&bp->dev->stats, 0, sizeof(struct net_device_stats));
+#else
+       memset(&bp->net_stats, 0, sizeof(struct net_device_stats));
+#endif
+       memset(&bp->old_tclient, 0, sizeof(struct tstorm_per_client_stats));
+       memset(&bp->old_xclient, 0, sizeof(struct xstorm_per_client_stats));
+       memset(&bp->eth_stats, 0, sizeof(struct bnx2x_eth_stats));
+
+       bp->stats_state = STATS_STATE_DISABLED;
+       if (IS_E1HMF(bp) && bp->port.pmf && bp->port.port_stx)
+               bnx2x_stats_handle(bp, STATS_EVENT_PMF);
+}
+
+static void bnx2x_hw_stats_post(struct bnx2x *bp)
+{
+       struct dmae_command *dmae = &bp->stats_dmae;
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+
+       *stats_comp = DMAE_COMP_VAL;
+
+       /* loader */
+       if (bp->executer_idx) {
+               int loader_idx = PMF_DMAE_C(bp);
+
+               memset(dmae, 0, sizeof(struct dmae_command));
+
+               dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
+                               DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE |
+                               DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                               DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                               DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                               (BP_PORT(bp) ? DMAE_CMD_PORT_1 :
+                                              DMAE_CMD_PORT_0) |
+                               (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, dmae[0]));
+               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, dmae[0]));
+               dmae->dst_addr_lo = (DMAE_REG_CMD_MEM +
+                                    sizeof(struct dmae_command) *
+                                    (loader_idx + 1)) >> 2;
+               dmae->dst_addr_hi = 0;
+               dmae->len = sizeof(struct dmae_command) >> 2;
+               if (CHIP_IS_E1(bp))
+                       dmae->len--;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx + 1] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+
+               *stats_comp = 0;
+               bnx2x_post_dmae(bp, dmae, loader_idx);
+
+       } else if (bp->func_stx) {
+               *stats_comp = 0;
+               bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp));
+       }
+}
+
+static int bnx2x_stats_comp(struct bnx2x *bp)
+{
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+       int cnt = 10;
+
+       might_sleep();
+       while (*stats_comp != DMAE_COMP_VAL) {
+               if (!cnt) {
+                       BNX2X_ERR("timeout waiting for stats finished\n");
+                       break;
+               }
+               cnt--;
+               msleep(1);
+       }
+       return 1;
+}
+
+/*
+ * Statistics service functions
+ */
+
+static void bnx2x_stats_pmf_update(struct bnx2x *bp)
+{
+       struct dmae_command *dmae;
+       u32 opcode;
+       int loader_idx = PMF_DMAE_C(bp);
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+
+       /* sanity */
+       if (!IS_E1HMF(bp) || !bp->port.pmf || !bp->port.port_stx) {
+               BNX2X_ERR("BUG!\n");
+               return;
+       }
+
+       bp->executer_idx = 0;
+
+       opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
+                 DMAE_CMD_C_ENABLE |
+                 DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                 DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                 DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                 (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                 (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+
+       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+       dmae->opcode = (opcode | DMAE_CMD_C_DST_GRC);
+       dmae->src_addr_lo = bp->port.port_stx >> 2;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats));
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats));
+       dmae->len = DMAE_LEN32_RD_MAX;
+       dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+       dmae->comp_addr_hi = 0;
+       dmae->comp_val = 1;
+
+       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+       dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI);
+       dmae->src_addr_lo = (bp->port.port_stx >> 2) + DMAE_LEN32_RD_MAX;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats) +
+                                  DMAE_LEN32_RD_MAX * 4);
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats) +
+                                  DMAE_LEN32_RD_MAX * 4);
+       dmae->len = (sizeof(struct host_port_stats) >> 2) - DMAE_LEN32_RD_MAX;
+       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_val = DMAE_COMP_VAL;
+
+       *stats_comp = 0;
+       bnx2x_hw_stats_post(bp);
+       bnx2x_stats_comp(bp);
+}
+
+static void bnx2x_port_stats_init(struct bnx2x *bp)
+{
+       struct dmae_command *dmae;
+       int port = BP_PORT(bp);
+       int vn = BP_E1HVN(bp);
+       u32 opcode;
+       int loader_idx = PMF_DMAE_C(bp);
+       u32 mac_addr;
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+
+       /* sanity */
+       if (!bp->link_vars.link_up || !bp->port.pmf) {
+               BNX2X_ERR("BUG!\n");
+               return;
+       }
+
+       bp->executer_idx = 0;
+
+       /* MCP */
+       opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
+                 DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE |
+                 DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                 DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                 DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                 (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                 (vn << DMAE_CMD_E1HVN_SHIFT));
+
+       if (bp->port.port_stx) {
+
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats));
+               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats));
+               dmae->dst_addr_lo = bp->port.port_stx >> 2;
+               dmae->dst_addr_hi = 0;
+               dmae->len = sizeof(struct host_port_stats) >> 2;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+       }
+
+       if (bp->func_stx) {
+
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats));
+               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats));
+               dmae->dst_addr_lo = bp->func_stx >> 2;
+               dmae->dst_addr_hi = 0;
+               dmae->len = sizeof(struct host_func_stats) >> 2;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+       }
+
+       /* MAC */
+       opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
+                 DMAE_CMD_C_DST_GRC | DMAE_CMD_C_ENABLE |
+                 DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                 DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                 DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                 (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                 (vn << DMAE_CMD_E1HVN_SHIFT));
+
+       if (bp->link_vars.mac_type == MAC_TYPE_BMAC) {
+
+               mac_addr = (port ? NIG_REG_INGRESS_BMAC1_MEM :
+                                  NIG_REG_INGRESS_BMAC0_MEM);
+
+               /* BIGMAC_REGISTER_TX_STAT_GTPKT ..
+                  BIGMAC_REGISTER_TX_STAT_GTBYT */
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = (mac_addr +
+                                    BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2;
+               dmae->src_addr_hi = 0;
+               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats));
+               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats));
+               dmae->len = (8 + BIGMAC_REGISTER_TX_STAT_GTBYT -
+                            BIGMAC_REGISTER_TX_STAT_GTPKT) >> 2;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+
+               /* BIGMAC_REGISTER_RX_STAT_GR64 ..
+                  BIGMAC_REGISTER_RX_STAT_GRIPJ */
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = (mac_addr +
+                                    BIGMAC_REGISTER_RX_STAT_GR64) >> 2;
+               dmae->src_addr_hi = 0;
+               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
+                               offsetof(struct bmac_stats, rx_stat_gr64_lo));
+               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
+                               offsetof(struct bmac_stats, rx_stat_gr64_lo));
+               dmae->len = (8 + BIGMAC_REGISTER_RX_STAT_GRIPJ -
+                            BIGMAC_REGISTER_RX_STAT_GR64) >> 2;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+
+       } else if (bp->link_vars.mac_type == MAC_TYPE_EMAC) {
+
+               mac_addr = (port ? GRCBASE_EMAC1 : GRCBASE_EMAC0);
+
+               /* EMAC_REG_EMAC_RX_STAT_AC (EMAC_REG_EMAC_RX_STAT_AC_COUNT)*/
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = (mac_addr +
+                                    EMAC_REG_EMAC_RX_STAT_AC) >> 2;
+               dmae->src_addr_hi = 0;
+               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats));
+               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats));
+               dmae->len = EMAC_REG_EMAC_RX_STAT_AC_COUNT;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+
+               /* EMAC_REG_EMAC_RX_STAT_AC_28 */
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = (mac_addr +
+                                    EMAC_REG_EMAC_RX_STAT_AC_28) >> 2;
+               dmae->src_addr_hi = 0;
+               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
+                    offsetof(struct emac_stats, rx_stat_falsecarriererrors));
+               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
+                    offsetof(struct emac_stats, rx_stat_falsecarriererrors));
+               dmae->len = 1;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+
+               /* EMAC_REG_EMAC_TX_STAT_AC (EMAC_REG_EMAC_TX_STAT_AC_COUNT)*/
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = opcode;
+               dmae->src_addr_lo = (mac_addr +
+                                    EMAC_REG_EMAC_TX_STAT_AC) >> 2;
+               dmae->src_addr_hi = 0;
+               dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, mac_stats) +
+                       offsetof(struct emac_stats, tx_stat_ifhcoutoctets));
+               dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, mac_stats) +
+                       offsetof(struct emac_stats, tx_stat_ifhcoutoctets));
+               dmae->len = EMAC_REG_EMAC_TX_STAT_AC_COUNT;
+               dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+               dmae->comp_addr_hi = 0;
+               dmae->comp_val = 1;
+       }
+
+       /* NIG */
+       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+       dmae->opcode = opcode;
+       dmae->src_addr_lo = (port ? NIG_REG_STAT1_BRB_DISCARD :
+                                   NIG_REG_STAT0_BRB_DISCARD) >> 2;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats));
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats));
+       dmae->len = (sizeof(struct nig_stats) - 4*sizeof(u32)) >> 2;
+       dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+       dmae->comp_addr_hi = 0;
+       dmae->comp_val = 1;
+
+       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+       dmae->opcode = opcode;
+       dmae->src_addr_lo = (port ? NIG_REG_STAT1_EGRESS_MAC_PKT0 :
+                                   NIG_REG_STAT0_EGRESS_MAC_PKT0) >> 2;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats) +
+                       offsetof(struct nig_stats, egress_mac_pkt0_lo));
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats) +
+                       offsetof(struct nig_stats, egress_mac_pkt0_lo));
+       dmae->len = (2*sizeof(u32)) >> 2;
+       dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+       dmae->comp_addr_hi = 0;
+       dmae->comp_val = 1;
+
+       dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+       dmae->opcode = (DMAE_CMD_SRC_GRC | DMAE_CMD_DST_PCI |
+                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
+                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                       DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                       (port ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                       (vn << DMAE_CMD_E1HVN_SHIFT));
+       dmae->src_addr_lo = (port ? NIG_REG_STAT1_EGRESS_MAC_PKT1 :
+                                   NIG_REG_STAT0_EGRESS_MAC_PKT1) >> 2;
+       dmae->src_addr_hi = 0;
+       dmae->dst_addr_lo = U64_LO(bnx2x_sp_mapping(bp, nig_stats) +
+                       offsetof(struct nig_stats, egress_mac_pkt1_lo));
+       dmae->dst_addr_hi = U64_HI(bnx2x_sp_mapping(bp, nig_stats) +
+                       offsetof(struct nig_stats, egress_mac_pkt1_lo));
+       dmae->len = (2*sizeof(u32)) >> 2;
+       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_val = DMAE_COMP_VAL;
+
+       *stats_comp = 0;
+}
+
+static void bnx2x_func_stats_init(struct bnx2x *bp)
+{
+       struct dmae_command *dmae = &bp->stats_dmae;
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+
+       /* sanity */
+       if (!bp->func_stx) {
+               BNX2X_ERR("BUG!\n");
+               return;
+       }
+
+       bp->executer_idx = 0;
+       memset(dmae, 0, sizeof(struct dmae_command));
+
+       dmae->opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
+                       DMAE_CMD_C_DST_PCI | DMAE_CMD_C_ENABLE |
+                       DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                       DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                       DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                       (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                       (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+       dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats));
+       dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats));
+       dmae->dst_addr_lo = bp->func_stx >> 2;
+       dmae->dst_addr_hi = 0;
+       dmae->len = sizeof(struct host_func_stats) >> 2;
+       dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp));
+       dmae->comp_val = DMAE_COMP_VAL;
+
+       *stats_comp = 0;
+}
+
+static void bnx2x_stats_start(struct bnx2x *bp)
+{
+       if (bp->port.pmf)
+               bnx2x_port_stats_init(bp);
+
+       else if (bp->func_stx)
+               bnx2x_func_stats_init(bp);
+
+       bnx2x_hw_stats_post(bp);
+       bnx2x_storm_stats_post(bp);
+}
+
+static void bnx2x_stats_pmf_start(struct bnx2x *bp)
+{
+       bnx2x_stats_comp(bp);
+       bnx2x_stats_pmf_update(bp);
+       bnx2x_stats_start(bp);
+}
+
+static void bnx2x_stats_restart(struct bnx2x *bp)
+{
+       bnx2x_stats_comp(bp);
+       bnx2x_stats_start(bp);
+}
+
+static void bnx2x_bmac_stats_update(struct bnx2x *bp)
+{
+       struct bmac_stats *new = bnx2x_sp(bp, mac_stats.bmac_stats);
+       struct host_port_stats *pstats = bnx2x_sp(bp, port_stats);
+       struct regpair diff;
+
+       UPDATE_STAT64(rx_stat_grerb, rx_stat_ifhcinbadoctets);
+       UPDATE_STAT64(rx_stat_grfcs, rx_stat_dot3statsfcserrors);
+       UPDATE_STAT64(rx_stat_grund, rx_stat_etherstatsundersizepkts);
+       UPDATE_STAT64(rx_stat_grovr, rx_stat_dot3statsframestoolong);
+       UPDATE_STAT64(rx_stat_grfrg, rx_stat_etherstatsfragments);
+       UPDATE_STAT64(rx_stat_grjbr, rx_stat_etherstatsjabbers);
+       UPDATE_STAT64(rx_stat_grxcf, rx_stat_maccontrolframesreceived);
+       UPDATE_STAT64(rx_stat_grxpf, rx_stat_xoffstateentered);
+       UPDATE_STAT64(rx_stat_grxpf, rx_stat_xoffpauseframesreceived);
+       UPDATE_STAT64(tx_stat_gtxpf, tx_stat_outxoffsent);
+       UPDATE_STAT64(tx_stat_gtxpf, tx_stat_flowcontroldone);
+       UPDATE_STAT64(tx_stat_gt64, tx_stat_etherstatspkts64octets);
+       UPDATE_STAT64(tx_stat_gt127,
+                               tx_stat_etherstatspkts65octetsto127octets);
+       UPDATE_STAT64(tx_stat_gt255,
+                               tx_stat_etherstatspkts128octetsto255octets);
+       UPDATE_STAT64(tx_stat_gt511,
+                               tx_stat_etherstatspkts256octetsto511octets);
+       UPDATE_STAT64(tx_stat_gt1023,
+                               tx_stat_etherstatspkts512octetsto1023octets);
+       UPDATE_STAT64(tx_stat_gt1518,
+                               tx_stat_etherstatspkts1024octetsto1522octets);
+       UPDATE_STAT64(tx_stat_gt2047, tx_stat_bmac_2047);
+       UPDATE_STAT64(tx_stat_gt4095, tx_stat_bmac_4095);
+       UPDATE_STAT64(tx_stat_gt9216, tx_stat_bmac_9216);
+       UPDATE_STAT64(tx_stat_gt16383, tx_stat_bmac_16383);
+       UPDATE_STAT64(tx_stat_gterr,
+                               tx_stat_dot3statsinternalmactransmiterrors);
+       UPDATE_STAT64(tx_stat_gtufl, tx_stat_bmac_ufl);
+}
+
+static void bnx2x_emac_stats_update(struct bnx2x *bp)
+{
+       struct emac_stats *new = bnx2x_sp(bp, mac_stats.emac_stats);
+       struct host_port_stats *pstats = bnx2x_sp(bp, port_stats);
+
+       UPDATE_EXTEND_STAT(rx_stat_ifhcinbadoctets);
+       UPDATE_EXTEND_STAT(tx_stat_ifhcoutbadoctets);
+       UPDATE_EXTEND_STAT(rx_stat_dot3statsfcserrors);
+       UPDATE_EXTEND_STAT(rx_stat_dot3statsalignmenterrors);
+       UPDATE_EXTEND_STAT(rx_stat_dot3statscarriersenseerrors);
+       UPDATE_EXTEND_STAT(rx_stat_falsecarriererrors);
+       UPDATE_EXTEND_STAT(rx_stat_etherstatsundersizepkts);
+       UPDATE_EXTEND_STAT(rx_stat_dot3statsframestoolong);
+       UPDATE_EXTEND_STAT(rx_stat_etherstatsfragments);
+       UPDATE_EXTEND_STAT(rx_stat_etherstatsjabbers);
+       UPDATE_EXTEND_STAT(rx_stat_maccontrolframesreceived);
+       UPDATE_EXTEND_STAT(rx_stat_xoffstateentered);
+       UPDATE_EXTEND_STAT(rx_stat_xonpauseframesreceived);
+       UPDATE_EXTEND_STAT(rx_stat_xoffpauseframesreceived);
+       UPDATE_EXTEND_STAT(tx_stat_outxonsent);
+       UPDATE_EXTEND_STAT(tx_stat_outxoffsent);
+       UPDATE_EXTEND_STAT(tx_stat_flowcontroldone);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatscollisions);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statssinglecollisionframes);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statsmultiplecollisionframes);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statsdeferredtransmissions);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statsexcessivecollisions);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statslatecollisions);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts64octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts65octetsto127octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts128octetsto255octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts256octetsto511octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts512octetsto1023octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspkts1024octetsto1522octets);
+       UPDATE_EXTEND_STAT(tx_stat_etherstatspktsover1522octets);
+       UPDATE_EXTEND_STAT(tx_stat_dot3statsinternalmactransmiterrors);
+}
+
+static int bnx2x_hw_stats_update(struct bnx2x *bp)
+{
+       struct nig_stats *new = bnx2x_sp(bp, nig_stats);
+       struct nig_stats *old = &(bp->port.old_nig_stats);
+       struct host_port_stats *pstats = bnx2x_sp(bp, port_stats);
+       struct bnx2x_eth_stats *estats = &bp->eth_stats;
+       struct regpair diff;
+       u32 nig_timer_max;
+
+       if (bp->link_vars.mac_type == MAC_TYPE_BMAC)
+               bnx2x_bmac_stats_update(bp);
+
+       else if (bp->link_vars.mac_type == MAC_TYPE_EMAC)
+               bnx2x_emac_stats_update(bp);
+
+       else { /* unreached */
+               BNX2X_ERR("stats updated by dmae but no MAC active\n");
+               return -1;
+       }
+
+       ADD_EXTEND_64(pstats->brb_drop_hi, pstats->brb_drop_lo,
+                     new->brb_discard - old->brb_discard);
+       ADD_EXTEND_64(estats->brb_truncate_hi, estats->brb_truncate_lo,
+                     new->brb_truncate - old->brb_truncate);
+
+       UPDATE_STAT64_NIG(egress_mac_pkt0,
+                                       etherstatspkts1024octetsto1522octets);
+       UPDATE_STAT64_NIG(egress_mac_pkt1, etherstatspktsover1522octets);
+
+       memcpy(old, new, sizeof(struct nig_stats));
+
+       memcpy(&(estats->rx_stat_ifhcinbadoctets_hi), &(pstats->mac_stx[1]),
+              sizeof(struct mac_stx));
+       estats->brb_drop_hi = pstats->brb_drop_hi;
+       estats->brb_drop_lo = pstats->brb_drop_lo;
+
+       pstats->host_port_stats_start = ++pstats->host_port_stats_end;
+
+       nig_timer_max = SHMEM_RD(bp, port_mb[BP_PORT(bp)].stat_nig_timer);
+       if (nig_timer_max != estats->nig_timer_max) {
+               estats->nig_timer_max = nig_timer_max;
+               BNX2X_ERR("NIG timer max (%u)\n", estats->nig_timer_max);
+       }
+
+       return 0;
+}
+
+static int bnx2x_storm_stats_update(struct bnx2x *bp)
+{
+       struct eth_stats_query *stats = bnx2x_sp(bp, fw_stats);
+       int cl_id = BP_CL_ID(bp);
+       struct tstorm_per_port_stats *tport =
+                               &stats->tstorm_common.port_statistics;
+       struct tstorm_per_client_stats *tclient =
+                       &stats->tstorm_common.client_statistics[cl_id];
+       struct tstorm_per_client_stats *old_tclient = &bp->old_tclient;
+       struct ustorm_per_client_stats *uclient =
+                       &stats->ustorm_common.client_statistics[cl_id];
+       struct xstorm_per_client_stats *xclient =
+                       &stats->xstorm_common.client_statistics[cl_id];
+       struct xstorm_per_client_stats *old_xclient = &bp->old_xclient;
+       struct host_func_stats *fstats = bnx2x_sp(bp, func_stats);
+       struct bnx2x_eth_stats *estats = &bp->eth_stats;
+       u32 diff;
+
+       /* are storm stats valid? */
+       if ((u16)(le16_to_cpu(tclient->stats_counter) + 1) !=
+                                                       bp->stats_counter) {
+               DP(BNX2X_MSG_STATS, "stats not updated by tstorm"
+                  "  tstorm counter (%d) != stats_counter (%d)\n",
+                  tclient->stats_counter, bp->stats_counter);
+               return -1;
+       }
+       if ((u16)(le16_to_cpu(uclient->stats_counter) + 1) !=
+                                                       bp->stats_counter) {
+               DP(BNX2X_MSG_STATS, "stats not updated by ustorm"
+                  "  ustorm counter (%d) != stats_counter (%d)\n",
+                  uclient->stats_counter, bp->stats_counter);
+               return -2;
+       }
+       if ((u16)(le16_to_cpu(xclient->stats_counter) + 1) !=
+                                                       bp->stats_counter) {
+               DP(BNX2X_MSG_STATS, "stats not updated by xstorm"
+                  "  xstorm counter (%d) != stats_counter (%d)\n",
+                  xclient->stats_counter, bp->stats_counter);
+               return -4;
+       }
+
+       fstats->total_bytes_received_hi =
+       fstats->valid_bytes_received_hi =
+                               le32_to_cpu(tclient->total_rcv_bytes.hi);
+       fstats->total_bytes_received_lo =
+       fstats->valid_bytes_received_lo =
+                               le32_to_cpu(tclient->total_rcv_bytes.lo);
+
+       estats->error_bytes_received_hi =
+                               le32_to_cpu(tclient->rcv_error_bytes.hi);
+       estats->error_bytes_received_lo =
+                               le32_to_cpu(tclient->rcv_error_bytes.lo);
+       ADD_64(estats->error_bytes_received_hi,
+              estats->rx_stat_ifhcinbadoctets_hi,
+              estats->error_bytes_received_lo,
+              estats->rx_stat_ifhcinbadoctets_lo);
+
+       ADD_64(fstats->total_bytes_received_hi,
+              estats->error_bytes_received_hi,
+              fstats->total_bytes_received_lo,
+              estats->error_bytes_received_lo);
+
+       UPDATE_EXTEND_TSTAT(rcv_unicast_pkts, total_unicast_packets_received);
+       UPDATE_EXTEND_TSTAT(rcv_multicast_pkts,
+                               total_multicast_packets_received);
+       UPDATE_EXTEND_TSTAT(rcv_broadcast_pkts,
+                               total_broadcast_packets_received);
+
+       fstats->total_bytes_transmitted_hi =
+                               le32_to_cpu(xclient->total_sent_bytes.hi);
+       fstats->total_bytes_transmitted_lo =
+                               le32_to_cpu(xclient->total_sent_bytes.lo);
+
+       UPDATE_EXTEND_XSTAT(unicast_pkts_sent,
+                               total_unicast_packets_transmitted);
+       UPDATE_EXTEND_XSTAT(multicast_pkts_sent,
+                               total_multicast_packets_transmitted);
+       UPDATE_EXTEND_XSTAT(broadcast_pkts_sent,
+                               total_broadcast_packets_transmitted);
+
+       memcpy(estats, &(fstats->total_bytes_received_hi),
+              sizeof(struct host_func_stats) - 2*sizeof(u32));
+
+       estats->mac_filter_discard = le32_to_cpu(tport->mac_filter_discard);
+       estats->xxoverflow_discard = le32_to_cpu(tport->xxoverflow_discard);
+       estats->brb_truncate_discard =
+                               le32_to_cpu(tport->brb_truncate_discard);
+       estats->mac_discard = le32_to_cpu(tport->mac_discard);
+
+       old_tclient->rcv_unicast_bytes.hi =
+                               le32_to_cpu(tclient->rcv_unicast_bytes.hi);
+       old_tclient->rcv_unicast_bytes.lo =
+                               le32_to_cpu(tclient->rcv_unicast_bytes.lo);
+       old_tclient->rcv_broadcast_bytes.hi =
+                               le32_to_cpu(tclient->rcv_broadcast_bytes.hi);
+       old_tclient->rcv_broadcast_bytes.lo =
+                               le32_to_cpu(tclient->rcv_broadcast_bytes.lo);
+       old_tclient->rcv_multicast_bytes.hi =
+                               le32_to_cpu(tclient->rcv_multicast_bytes.hi);
+       old_tclient->rcv_multicast_bytes.lo =
+                               le32_to_cpu(tclient->rcv_multicast_bytes.lo);
+       old_tclient->total_rcv_pkts = le32_to_cpu(tclient->total_rcv_pkts);
+
+       old_tclient->checksum_discard = le32_to_cpu(tclient->checksum_discard);
+       old_tclient->packets_too_big_discard =
+                               le32_to_cpu(tclient->packets_too_big_discard);
+       old_tclient->no_buff_discard = le32_to_cpu(tclient->no_buff_discard);
+       old_tclient->ttl0_discard = le32_to_cpu(tclient->ttl0_discard);
+
+       estats->no_buff_discard = old_tclient->no_buff_discard +
+                                 le32_to_cpu(uclient->no_buff_discard);
+
+       old_xclient->total_sent_pkts = le32_to_cpu(xclient->total_sent_pkts);
+       old_xclient->unicast_bytes_sent.hi =
+                               le32_to_cpu(xclient->unicast_bytes_sent.hi);
+       old_xclient->unicast_bytes_sent.lo =
+                               le32_to_cpu(xclient->unicast_bytes_sent.lo);
+       old_xclient->multicast_bytes_sent.hi =
+                               le32_to_cpu(xclient->multicast_bytes_sent.hi);
+       old_xclient->multicast_bytes_sent.lo =
+                               le32_to_cpu(xclient->multicast_bytes_sent.lo);
+       old_xclient->broadcast_bytes_sent.hi =
+                               le32_to_cpu(xclient->broadcast_bytes_sent.hi);
+       old_xclient->broadcast_bytes_sent.lo =
+                               le32_to_cpu(xclient->broadcast_bytes_sent.lo);
+
+       fstats->host_func_stats_start = ++fstats->host_func_stats_end;
+
+       return 0;
+}
+
+static void bnx2x_net_stats_update(struct bnx2x *bp)
+{
+       struct tstorm_per_client_stats *old_tclient = &bp->old_tclient;
+       struct bnx2x_eth_stats *estats = &bp->eth_stats;
+#if (LINUX_VERSION_CODE >= 0x20618) /* BNX2X_UPSTREAM */
+       struct net_device_stats *nstats = &bp->dev->stats;
+#else
+       struct net_device_stats *nstats = &bp->net_stats;
+#endif
+
+       nstats->rx_packets =
+               bnx2x_hilo(&estats->total_unicast_packets_received_hi) +
+               bnx2x_hilo(&estats->total_multicast_packets_received_hi) +
+               bnx2x_hilo(&estats->total_broadcast_packets_received_hi);
+
+       nstats->tx_packets =
+               bnx2x_hilo(&estats->total_unicast_packets_transmitted_hi) +
+               bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi) +
+               bnx2x_hilo(&estats->total_broadcast_packets_transmitted_hi);
+
+       nstats->rx_bytes = bnx2x_hilo(&estats->valid_bytes_received_hi);
+
+       nstats->tx_bytes = bnx2x_hilo(&estats->total_bytes_transmitted_hi);
+
+       nstats->rx_dropped = old_tclient->checksum_discard +
+                            estats->mac_discard;
+       nstats->tx_dropped = 0;
+
+       nstats->multicast =
+               bnx2x_hilo(&estats->total_multicast_packets_transmitted_hi);
+
+       nstats->collisions =
+                       estats->tx_stat_dot3statssinglecollisionframes_lo +
+                       estats->tx_stat_dot3statsmultiplecollisionframes_lo +
+                       estats->tx_stat_dot3statslatecollisions_lo +
+                       estats->tx_stat_dot3statsexcessivecollisions_lo;
+
+       estats->jabber_packets_received =
+                               old_tclient->packets_too_big_discard +
+                               estats->rx_stat_dot3statsframestoolong_lo;
+
+       nstats->rx_length_errors =
+                               estats->rx_stat_etherstatsundersizepkts_lo +
+                               estats->jabber_packets_received;
+       nstats->rx_over_errors = estats->brb_drop_lo + estats->brb_truncate_lo;
+       nstats->rx_crc_errors = estats->rx_stat_dot3statsfcserrors_lo;
+       nstats->rx_frame_errors = estats->rx_stat_dot3statsalignmenterrors_lo;
+       nstats->rx_fifo_errors = estats->no_buff_discard;
+       nstats->rx_missed_errors = estats->xxoverflow_discard;
+
+       nstats->rx_errors = nstats->rx_length_errors +
+                           nstats->rx_over_errors +
+                           nstats->rx_crc_errors +
+                           nstats->rx_frame_errors +
+                           nstats->rx_fifo_errors +
+                           nstats->rx_missed_errors;
+
+       nstats->tx_aborted_errors =
+                       estats->tx_stat_dot3statslatecollisions_lo +
+                       estats->tx_stat_dot3statsexcessivecollisions_lo;
+       nstats->tx_carrier_errors = estats->rx_stat_falsecarriererrors_lo;
+       nstats->tx_fifo_errors = 0;
+       nstats->tx_heartbeat_errors = 0;
+       nstats->tx_window_errors = 0;
+
+       nstats->tx_errors = nstats->tx_aborted_errors +
+                           nstats->tx_carrier_errors;
+}
+
+static void bnx2x_stats_update(struct bnx2x *bp)
+{
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+       int update = 0;
+
+       if (*stats_comp != DMAE_COMP_VAL)
+               return;
+
+       if (bp->port.pmf)
+               update = (bnx2x_hw_stats_update(bp) == 0);
+
+       update |= (bnx2x_storm_stats_update(bp) == 0);
+
+       if (update)
+               bnx2x_net_stats_update(bp);
+
+       else {
+               if (bp->stats_pending) {
+                       bp->stats_pending++;
+                       if (bp->stats_pending == 3) {
+                               BNX2X_ERR("stats not updated for 3 times\n");
+                               bnx2x_panic();
+                               return;
+                       }
+               }
+       }
+
+       if (bp->msglevel & NETIF_MSG_TIMER) {
+               struct tstorm_per_client_stats *old_tclient = &bp->old_tclient;
+               struct bnx2x_eth_stats *estats = &bp->eth_stats;
+#if (LINUX_VERSION_CODE >= 0x20618) /* BNX2X_UPSTREAM */
+               struct net_device_stats *nstats = &bp->dev->stats;
+#else
+               struct net_device_stats *nstats = &bp->net_stats;
+#endif
+               int i;
+
+               printk(KERN_DEBUG "%s:\n", bp->dev->name);
+               printk(KERN_DEBUG "  tx avail (%4x)  tx hc idx (%x)"
+                                 "  tx pkt (%lx)\n",
+                      bnx2x_tx_avail(bp->fp),
+                      le16_to_cpu(*bp->fp->tx_cons_sb), nstats->tx_packets);
+               printk(KERN_DEBUG "  rx usage (%4x)  rx hc idx (%x)"
+                                 "  rx pkt (%lx)\n",
+                      (u16)(le16_to_cpu(*bp->fp->rx_cons_sb) -
+                            bp->fp->rx_comp_cons),
+                      le16_to_cpu(*bp->fp->rx_cons_sb), nstats->rx_packets);
+               printk(KERN_DEBUG "  %s (Xoff events %u)  brb drops %u\n",
+                      netif_queue_stopped(bp->dev) ? "Xoff" : "Xon",
+                      estats->driver_xoff, estats->brb_drop_lo);
+               printk(KERN_DEBUG "tstats: checksum_discard %u  "
+                       "packets_too_big_discard %u  no_buff_discard %u  "
+                       "mac_discard %u  mac_filter_discard %u  "
+                       "xxovrflow_discard %u  brb_truncate_discard %u  "
+                       "ttl0_discard %u\n",
+                      old_tclient->checksum_discard,
+                      old_tclient->packets_too_big_discard,
+                      estats->no_buff_discard, estats->mac_discard,
+                      estats->mac_filter_discard, estats->xxoverflow_discard,
+                      estats->brb_truncate_discard,
+                      old_tclient->ttl0_discard);
+
+               for_each_queue(bp, i) {
+                       printk(KERN_DEBUG "[%d]: %lu\t%lu\t%lu\n", i,
+                              bnx2x_fp(bp, i, tx_pkt),
+                              bnx2x_fp(bp, i, rx_pkt),
+                              bnx2x_fp(bp, i, rx_calls));
+               }
+       }
+
+       bnx2x_hw_stats_post(bp);
+       bnx2x_storm_stats_post(bp);
+}
+
+static void bnx2x_port_stats_stop(struct bnx2x *bp)
+{
+       struct dmae_command *dmae;
+       u32 opcode;
+       int loader_idx = PMF_DMAE_C(bp);
+       u32 *stats_comp = bnx2x_sp(bp, stats_comp);
+
+       bp->executer_idx = 0;
+
+       opcode = (DMAE_CMD_SRC_PCI | DMAE_CMD_DST_GRC |
+                 DMAE_CMD_C_ENABLE |
+                 DMAE_CMD_SRC_RESET | DMAE_CMD_DST_RESET |
+#ifdef __BIG_ENDIAN
+                 DMAE_CMD_ENDIANITY_B_DW_SWAP |
+#else
+                 DMAE_CMD_ENDIANITY_DW_SWAP |
+#endif
+                 (BP_PORT(bp) ? DMAE_CMD_PORT_1 : DMAE_CMD_PORT_0) |
+                 (BP_E1HVN(bp) << DMAE_CMD_E1HVN_SHIFT));
+
+       if (bp->port.port_stx) {
+
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               if (bp->func_stx)
+                       dmae->opcode = (opcode | DMAE_CMD_C_DST_GRC);
+               else
+                       dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI);
+               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, port_stats));
+               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, port_stats));
+               dmae->dst_addr_lo = bp->port.port_stx >> 2;
+               dmae->dst_addr_hi = 0;
+               dmae->len = sizeof(struct host_port_stats) >> 2;
+               if (bp->func_stx) {
+                       dmae->comp_addr_lo = dmae_reg_go_c[loader_idx] >> 2;
+                       dmae->comp_addr_hi = 0;
+                       dmae->comp_val = 1;
+               } else {
+                       dmae->comp_addr_lo =
+                               U64_LO(bnx2x_sp_mapping(bp, stats_comp));
+                       dmae->comp_addr_hi =
+                               U64_HI(bnx2x_sp_mapping(bp, stats_comp));
+                       dmae->comp_val = DMAE_COMP_VAL;
+
+                       *stats_comp = 0;
+               }
+       }
+
+       if (bp->func_stx) {
+
+               dmae = bnx2x_sp(bp, dmae[bp->executer_idx++]);
+               dmae->opcode = (opcode | DMAE_CMD_C_DST_PCI);
+               dmae->src_addr_lo = U64_LO(bnx2x_sp_mapping(bp, func_stats));
+               dmae->src_addr_hi = U64_HI(bnx2x_sp_mapping(bp, func_stats));
+               dmae->dst_addr_lo = bp->func_stx >> 2;
+               dmae->dst_addr_hi = 0;
+               dmae->len = sizeof(struct host_func_stats) >> 2;
+               dmae->comp_addr_lo = U64_LO(bnx2x_sp_mapping(bp, stats_comp));
+               dmae->comp_addr_hi = U64_HI(bnx2x_sp_mapping(bp, stats_comp));
+               dmae->comp_val = DMAE_COMP_VAL;
+
+               *stats_comp = 0;
+       }
+}
+
+static void bnx2x_stats_stop(struct bnx2x *bp)
+{
+       int update = 0;
+
+       bnx2x_stats_comp(bp);
+
+       if (bp->port.pmf)
+               update = (bnx2x_hw_stats_update(bp) == 0);
+
+       update |= (bnx2x_storm_stats_update(bp) == 0);
+
+       if (update) {
+               bnx2x_net_stats_update(bp);
+
+               if (bp->port.pmf)
+                       bnx2x_port_stats_stop(bp);
+
+               bnx2x_hw_stats_post(bp);
+               bnx2x_stats_comp(bp);
+       }
+}
+
+static void bnx2x_stats_do_nothing(struct bnx2x *bp)
+{
+}
+
+static const struct {
+       void (*action)(struct bnx2x *bp);
+       enum bnx2x_stats_state next_state;
+} bnx2x_stats_stm[STATS_STATE_MAX][STATS_EVENT_MAX] = {
+/* state       event   */
+{
+/* DISABLED    PMF     */ {bnx2x_stats_pmf_update, STATS_STATE_DISABLED},
+/*             LINK_UP */ {bnx2x_stats_start,      STATS_STATE_ENABLED},
+/*             UPDATE  */ {bnx2x_stats_do_nothing, STATS_STATE_DISABLED},
+/*             STOP    */ {bnx2x_stats_do_nothing, STATS_STATE_DISABLED}
+},
+{
+/* ENABLED     PMF     */ {bnx2x_stats_pmf_start,  STATS_STATE_ENABLED},
+/*             LINK_UP */ {bnx2x_stats_restart,    STATS_STATE_ENABLED},
+/*             UPDATE  */ {bnx2x_stats_update,     STATS_STATE_ENABLED},
+/*             STOP    */ {bnx2x_stats_stop,       STATS_STATE_DISABLED}
+}
+};
+
+static void bnx2x_stats_handle(struct bnx2x *bp, enum bnx2x_stats_event event)
+{
+       enum bnx2x_stats_state state = bp->stats_state;
+
+       bnx2x_stats_stm[state][event].action(bp);
+       bp->stats_state = bnx2x_stats_stm[state][event].next_state;
+
+       if ((event != STATS_EVENT_UPDATE) || (bp->msglevel & NETIF_MSG_TIMER))
+               DP(BNX2X_MSG_STATS, "state %d -> event %d -> state %d\n",
+                  state, event, bp->stats_state);
+}
+
+static void bnx2x_timer(unsigned long data)
+{
+       struct bnx2x *bp = (struct bnx2x *) data;
+
+       if (!netif_running(bp->dev))
+               return;
+
+       if (atomic_read(&bp->intr_sem) != 0)
+               goto timer_restart;
+
+       if (poll) {
+               struct bnx2x_fastpath *fp = &bp->fp[0];
+               int rc;
+
+               bnx2x_tx_int(fp, 1000);
+               rc = bnx2x_rx_int(fp, 1000);
+       }
+
+       if (!BP_NOMCP(bp)) {
+               int func = BP_FUNC(bp);
+               u32 drv_pulse;
+               u32 mcp_pulse;
+
+               ++bp->fw_drv_pulse_wr_seq;
+               bp->fw_drv_pulse_wr_seq &= DRV_PULSE_SEQ_MASK;
+               /* TBD - add SYSTEM_TIME */
+               drv_pulse = bp->fw_drv_pulse_wr_seq;
+               SHMEM_WR(bp, func_mb[func].drv_pulse_mb, drv_pulse);
+
+               mcp_pulse = (SHMEM_RD(bp, func_mb[func].mcp_pulse_mb) &
+                            MCP_PULSE_SEQ_MASK);
+               /* The delta between driver pulse and mcp response
+                * should be 1 (before mcp response) or 0 (after mcp response)
+                */
+               if ((drv_pulse != mcp_pulse) &&
+                   (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
+                       /* someone lost a heartbeat... */
+                       BNX2X_ERR("drv_pulse (0x%x) != mcp_pulse (0x%x)\n",
+                                 drv_pulse, mcp_pulse);
+               }
+       }
+
+       if ((bp->state == BNX2X_STATE_OPEN) ||
+           (bp->state == BNX2X_STATE_DISABLED))
+               bnx2x_stats_handle(bp, STATS_EVENT_UPDATE);
+
+timer_restart:
+       mod_timer(&bp->timer, jiffies + bp->current_interval);
+}
+
+/* end of Statistics */
+
+/* nic init */
+
+/*
+ * nic init service functions
+ */
+
+static void bnx2x_zero_sb(struct bnx2x *bp, int sb_id)
+{
+       int port = BP_PORT(bp);
+
+       bnx2x_init_fill(bp, BAR_USTRORM_INTMEM +
+                       USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), 0,
+                       sizeof(struct ustorm_status_block)/4);
+       bnx2x_init_fill(bp, BAR_CSTRORM_INTMEM +
+                       CSTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), 0,
+                       sizeof(struct cstorm_status_block)/4);
+}
+
+static void bnx2x_init_sb(struct bnx2x *bp, struct host_status_block *sb,
+                         dma_addr_t mapping, int sb_id)
+{
+       int port = BP_PORT(bp);
+       int func = BP_FUNC(bp);
+       int index;
+       u64 section;
+
+       /* USTORM */
+       section = ((u64)mapping) + offsetof(struct host_status_block,
+                                           u_status_block);
+       sb->u_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              USTORM_SB_HOST_SB_ADDR_OFFSET(port, sb_id), U64_LO(section));
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              ((USTORM_SB_HOST_SB_ADDR_OFFSET(port, sb_id)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_USTRORM_INTMEM + FP_USB_FUNC_OFF +
+               USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), func);
+
+       for (index = 0; index < HC_USTORM_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_USTRORM_INTMEM +
+                        USTORM_SB_HC_DISABLE_OFFSET(port, sb_id, index), 1);
+
+       /* CSTORM */
+       section = ((u64)mapping) + offsetof(struct host_status_block,
+                                           c_status_block);
+       sb->c_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_CSTRORM_INTMEM +
+              CSTORM_SB_HOST_SB_ADDR_OFFSET(port, sb_id), U64_LO(section));
+       REG_WR(bp, BAR_CSTRORM_INTMEM +
+              ((CSTORM_SB_HOST_SB_ADDR_OFFSET(port, sb_id)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_CSTRORM_INTMEM + FP_CSB_FUNC_OFF +
+               CSTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), func);
+
+       for (index = 0; index < HC_CSTORM_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_CSTRORM_INTMEM +
+                        CSTORM_SB_HC_DISABLE_OFFSET(port, sb_id, index), 1);
+
+       bnx2x_ack_sb(bp, sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
+}
+
+static void bnx2x_zero_def_sb(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+
+       bnx2x_init_fill(bp, BAR_USTRORM_INTMEM +
+                       USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
+                       sizeof(struct ustorm_def_status_block)/4);
+       bnx2x_init_fill(bp, BAR_CSTRORM_INTMEM +
+                       CSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
+                       sizeof(struct cstorm_def_status_block)/4);
+       bnx2x_init_fill(bp, BAR_XSTRORM_INTMEM +
+                       XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
+                       sizeof(struct xstorm_def_status_block)/4);
+       bnx2x_init_fill(bp, BAR_TSTRORM_INTMEM +
+                       TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
+                       sizeof(struct tstorm_def_status_block)/4);
+}
+
+static void bnx2x_init_def_sb(struct bnx2x *bp,
+                             struct host_def_status_block *def_sb,
+                             dma_addr_t mapping, int sb_id)
+{
+       int port = BP_PORT(bp);
+       int func = BP_FUNC(bp);
+       int index, val, reg_offset;
+       u64 section;
+
+       /* ATTN */
+       section = ((u64)mapping) + offsetof(struct host_def_status_block,
+                                           atten_status_block);
+       def_sb->atten_status_block.status_block_id = sb_id;
+
+       bp->attn_state = 0;
+
+       reg_offset = (port ? MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0 :
+                            MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
+
+       for (index = 0; index < MAX_DYNAMIC_ATTN_GRPS; index++) {
+               bp->attn_group[index].sig[0] = REG_RD(bp,
+                                                    reg_offset + 0x10*index);
+               bp->attn_group[index].sig[1] = REG_RD(bp,
+                                              reg_offset + 0x4 + 0x10*index);
+               bp->attn_group[index].sig[2] = REG_RD(bp,
+                                              reg_offset + 0x8 + 0x10*index);
+               bp->attn_group[index].sig[3] = REG_RD(bp,
+                                              reg_offset + 0xc + 0x10*index);
+       }
+
+       reg_offset = (port ? HC_REG_ATTN_MSG1_ADDR_L :
+                            HC_REG_ATTN_MSG0_ADDR_L);
+
+       REG_WR(bp, reg_offset, U64_LO(section));
+       REG_WR(bp, reg_offset + 4, U64_HI(section));
+
+       reg_offset = (port ? HC_REG_ATTN_NUM_P1 : HC_REG_ATTN_NUM_P0);
+
+       val = REG_RD(bp, reg_offset);
+       val |= sb_id;
+       REG_WR(bp, reg_offset, val);
+
+       /* USTORM */
+       section = ((u64)mapping) + offsetof(struct host_def_status_block,
+                                           u_def_status_block);
+       def_sb->u_def_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section));
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              ((USTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_USTRORM_INTMEM + DEF_USB_FUNC_OFF +
+               USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func);
+
+       for (index = 0; index < HC_USTORM_DEF_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_USTRORM_INTMEM +
+                        USTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1);
+
+       /* CSTORM */
+       section = ((u64)mapping) + offsetof(struct host_def_status_block,
+                                           c_def_status_block);
+       def_sb->c_def_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_CSTRORM_INTMEM +
+              CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section));
+       REG_WR(bp, BAR_CSTRORM_INTMEM +
+              ((CSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_CSTRORM_INTMEM + DEF_CSB_FUNC_OFF +
+               CSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func);
+
+       for (index = 0; index < HC_CSTORM_DEF_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_CSTRORM_INTMEM +
+                        CSTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1);
+
+       /* TSTORM */
+       section = ((u64)mapping) + offsetof(struct host_def_status_block,
+                                           t_def_status_block);
+       def_sb->t_def_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_TSTRORM_INTMEM +
+              TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section));
+       REG_WR(bp, BAR_TSTRORM_INTMEM +
+              ((TSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_TSTRORM_INTMEM + DEF_TSB_FUNC_OFF +
+               TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func);
+
+       for (index = 0; index < HC_TSTORM_DEF_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_TSTRORM_INTMEM +
+                        TSTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1);
+
+       /* XSTORM */
+       section = ((u64)mapping) + offsetof(struct host_def_status_block,
+                                           x_def_status_block);
+       def_sb->x_def_status_block.status_block_id = sb_id;
+
+       REG_WR(bp, BAR_XSTRORM_INTMEM +
+              XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func), U64_LO(section));
+       REG_WR(bp, BAR_XSTRORM_INTMEM +
+              ((XSTORM_DEF_SB_HOST_SB_ADDR_OFFSET(func)) + 4),
+              U64_HI(section));
+       REG_WR8(bp, BAR_XSTRORM_INTMEM + DEF_XSB_FUNC_OFF +
+               XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), func);
+
+       for (index = 0; index < HC_XSTORM_DEF_SB_NUM_INDICES; index++)
+               REG_WR16(bp, BAR_XSTRORM_INTMEM +
+                        XSTORM_DEF_SB_HC_DISABLE_OFFSET(func, index), 1);
+
+       bp->stats_pending = 0;
+       bp->set_mac_pending = 0;
+
+       bnx2x_ack_sb(bp, sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
+}
+
+static void bnx2x_update_coalesce(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       int i;
+
+       for_each_queue(bp, i) {
+               int sb_id = bp->fp[i].sb_id;
+
+               /* HC_INDEX_U_ETH_RX_CQ_CONS */
+               REG_WR8(bp, BAR_USTRORM_INTMEM +
+                       USTORM_SB_HC_TIMEOUT_OFFSET(port, sb_id,
+                                                   U_SB_ETH_RX_CQ_INDEX),
+                       bp->rx_ticks/12);
+               REG_WR16(bp, BAR_USTRORM_INTMEM +
+                        USTORM_SB_HC_DISABLE_OFFSET(port, sb_id,
+                                                    U_SB_ETH_RX_CQ_INDEX),
+                        bp->rx_ticks ? 0 : 1);
+
+               /* HC_INDEX_C_ETH_TX_CQ_CONS */
+               REG_WR8(bp, BAR_CSTRORM_INTMEM +
+                       CSTORM_SB_HC_TIMEOUT_OFFSET(port, sb_id,
+                                                   C_SB_ETH_TX_CQ_INDEX),
+                       bp->tx_ticks/12);
+               REG_WR16(bp, BAR_CSTRORM_INTMEM +
+                        CSTORM_SB_HC_DISABLE_OFFSET(port, sb_id,
+                                                    C_SB_ETH_TX_CQ_INDEX),
+                        bp->tx_ticks ? 0 : 1);
+       }
+}
+
+static inline void bnx2x_free_tpa_pool(struct bnx2x *bp,
+                                      struct bnx2x_fastpath *fp, int last)
+{
+       int i;
+
+       for (i = 0; i < last; i++) {
+               struct sw_rx_bd *rx_buf = &(fp->tpa_pool[i]);
+               struct sk_buff *skb = rx_buf->skb;
+
+               if (skb == NULL) {
+                       DP(NETIF_MSG_IFDOWN, "tpa bin %d empty on free\n", i);
+                       continue;
+               }
+
+               if (fp->tpa_state[i] == BNX2X_TPA_START)
+                       pci_unmap_single(bp->pdev,
+                                        pci_unmap_addr(rx_buf, mapping),
+                                        bp->rx_buf_size, PCI_DMA_FROMDEVICE);
+
+               dev_kfree_skb(skb);
+               rx_buf->skb = NULL;
+       }
+}
+
+static void bnx2x_init_rx_rings(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+       int max_agg_queues = CHIP_IS_E1(bp) ? ETH_MAX_AGGREGATION_QUEUES_E1 :
+                                             ETH_MAX_AGGREGATION_QUEUES_E1H;
+       u16 ring_prod, cqe_ring_prod;
+       int i, j;
+
+       bp->rx_buf_size = bp->dev->mtu + ETH_OVREHEAD + BNX2X_RX_ALIGN;
+       DP(NETIF_MSG_IFUP,
+          "mtu %d  rx_buf_size %d\n", bp->dev->mtu, bp->rx_buf_size);
+
+       if (bp->flags & TPA_ENABLE_FLAG) {
+
+               for_each_queue(bp, j) {
+                       struct bnx2x_fastpath *fp = &bp->fp[j];
+
+                       for (i = 0; i < max_agg_queues; i++) {
+                               fp->tpa_pool[i].skb =
+                                  netdev_alloc_skb(bp->dev, bp->rx_buf_size);
+                               if (!fp->tpa_pool[i].skb) {
+                                       BNX2X_ERR("Failed to allocate TPA "
+                                                 "skb pool for queue[%d] - "
+                                                 "disabling TPA on this "
+                                                 "queue!\n", j);
+                                       bnx2x_free_tpa_pool(bp, fp, i);
+                                       fp->disable_tpa = 1;
+                                       break;
+                               }
+                               pci_unmap_addr_set((struct sw_rx_bd *)
+                                                       &bp->fp->tpa_pool[i],
+                                                  mapping, 0);
+                               fp->tpa_state[i] = BNX2X_TPA_STOP;
+                       }
+               }
+       }
+
+       for_each_queue(bp, j) {
+               struct bnx2x_fastpath *fp = &bp->fp[j];
+
+               fp->rx_bd_cons = 0;
+               fp->rx_cons_sb = BNX2X_RX_SB_INDEX;
+               fp->rx_bd_cons_sb = BNX2X_RX_SB_BD_INDEX;
+
+#if defined(__NO_TPA__)
+               fp->disable_tpa = 1;
+#else
+               /* "next page" elements initialization */
+               /* SGE ring */
+               for (i = 1; i <= NUM_RX_SGE_PAGES; i++) {
+                       struct eth_rx_sge *sge;
+
+                       sge = &fp->rx_sge_ring[RX_SGE_CNT * i - 2];
+                       sge->addr_hi =
+                               cpu_to_le32(U64_HI(fp->rx_sge_mapping +
+                                       BCM_PAGE_SIZE*(i % NUM_RX_SGE_PAGES)));
+                       sge->addr_lo =
+                               cpu_to_le32(U64_LO(fp->rx_sge_mapping +
+                                       BCM_PAGE_SIZE*(i % NUM_RX_SGE_PAGES)));
+               }
+
+               bnx2x_init_sge_ring_bit_mask(fp);
+#endif
+
+               /* RX BD ring */
+               for (i = 1; i <= NUM_RX_RINGS; i++) {
+                       struct eth_rx_bd *rx_bd;
+
+                       rx_bd = &fp->rx_desc_ring[RX_DESC_CNT * i - 2];
+                       rx_bd->addr_hi =
+                               cpu_to_le32(U64_HI(fp->rx_desc_mapping +
+                                           BCM_PAGE_SIZE*(i % NUM_RX_RINGS)));
+                       rx_bd->addr_lo =
+                               cpu_to_le32(U64_LO(fp->rx_desc_mapping +
+                                           BCM_PAGE_SIZE*(i % NUM_RX_RINGS)));
+               }
+
+               /* CQ ring */
+               for (i = 1; i <= NUM_RCQ_RINGS; i++) {
+                       struct eth_rx_cqe_next_page *nextpg;
+
+                       nextpg = (struct eth_rx_cqe_next_page *)
+                               &fp->rx_comp_ring[RCQ_DESC_CNT * i - 1];
+                       nextpg->addr_hi =
+                               cpu_to_le32(U64_HI(fp->rx_comp_mapping +
+                                          BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS)));
+                       nextpg->addr_lo =
+                               cpu_to_le32(U64_LO(fp->rx_comp_mapping +
+                                          BCM_PAGE_SIZE*(i % NUM_RCQ_RINGS)));
+               }
+
+#if !defined(__NO_TPA__)
+               /* Allocate SGEs and initialize the ring elements */
+               for (i = 0, ring_prod = 0;
+                    i < MAX_RX_SGE_CNT*NUM_RX_SGE_PAGES; i++) {
+
+                       if (bnx2x_alloc_rx_sge(bp, fp, ring_prod) < 0) {
+                               BNX2X_ERR("was only able to allocate "
+                                         "%d rx sges\n", i);
+                               BNX2X_ERR("disabling TPA for queue[%d]\n", j);
+                               /* Cleanup already allocated elements */
+                               bnx2x_free_rx_sge_range(bp, fp, ring_prod);
+                               bnx2x_free_tpa_pool(bp, fp, max_agg_queues);
+                               fp->disable_tpa = 1;
+                               ring_prod = 0;
+                               break;
+                       }
+                       ring_prod = NEXT_SGE_IDX(ring_prod);
+               }
+               fp->rx_sge_prod = ring_prod;
+#endif
+
+               /* Allocate BDs and initialize BD ring */
+               fp->rx_comp_cons = 0;
+               cqe_ring_prod = ring_prod = 0;
+               for (i = 0; i < bp->rx_ring_size; i++) {
+                       if (bnx2x_alloc_rx_skb(bp, fp, ring_prod) < 0) {
+                               BNX2X_ERR("was only able to allocate "
+                                         "%d rx skbs\n", i);
+                               bp->eth_stats.rx_skb_alloc_failed++;
+                               break;
+                       }
+                       ring_prod = NEXT_RX_IDX(ring_prod);
+                       cqe_ring_prod = NEXT_RCQ_IDX(cqe_ring_prod);
+                       WARN_ON(ring_prod <= i);
+               }
+
+               fp->rx_bd_prod = ring_prod;
+               /* must not have more available CQEs than BDs */
+               fp->rx_comp_prod = min((u16)(NUM_RCQ_RINGS*RCQ_DESC_CNT),
+                                      cqe_ring_prod);
+               fp->rx_pkt = fp->rx_calls = 0;
+
+               /* Warning!
+                * this will generate an interrupt (to the TSTORM)
+                * must only be done after chip is initialized
+                */
+               bnx2x_update_rx_prod(bp, fp, ring_prod, fp->rx_comp_prod,
+                                    fp->rx_sge_prod);
+               if (j != 0)
+                       continue;
+
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(func),
+                      U64_LO(fp->rx_comp_mapping));
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_MEM_WORKAROUND_ADDRESS_OFFSET(func) + 4,
+                      U64_HI(fp->rx_comp_mapping));
+       }
+}
+
+static void bnx2x_init_tx_ring(struct bnx2x *bp)
+{
+       int i, j;
+
+       for_each_queue(bp, j) {
+               struct bnx2x_fastpath *fp = &bp->fp[j];
+
+               for (i = 1; i <= NUM_TX_RINGS; i++) {
+                       struct eth_tx_bd *tx_bd =
+                               &fp->tx_desc_ring[TX_DESC_CNT * i - 1];
+
+                       tx_bd->addr_hi =
+                               cpu_to_le32(U64_HI(fp->tx_desc_mapping +
+                                           BCM_PAGE_SIZE*(i % NUM_TX_RINGS)));
+                       tx_bd->addr_lo =
+                               cpu_to_le32(U64_LO(fp->tx_desc_mapping +
+                                           BCM_PAGE_SIZE*(i % NUM_TX_RINGS)));
+               }
+
+               fp->tx_pkt_prod = 0;
+               fp->tx_pkt_cons = 0;
+               fp->tx_bd_prod = 0;
+               fp->tx_bd_cons = 0;
+               fp->tx_cons_sb = BNX2X_TX_SB_INDEX;
+               fp->tx_pkt = 0;
+       }
+}
+
+static void bnx2x_init_sp_ring(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+
+       spin_lock_init(&bp->spq_lock);
+
+       bp->spq_left = MAX_SPQ_PENDING;
+       bp->spq_prod_idx = 0;
+       bp->dsb_sp_prod = BNX2X_SP_DSB_INDEX;
+       bp->spq_prod_bd = bp->spq;
+       bp->spq_last_bd = bp->spq_prod_bd + MAX_SP_DESC_CNT;
+
+       REG_WR(bp, XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PAGE_BASE_OFFSET(func),
+              U64_LO(bp->spq_mapping));
+       REG_WR(bp,
+              XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PAGE_BASE_OFFSET(func) + 4,
+              U64_HI(bp->spq_mapping));
+
+       REG_WR(bp, XSEM_REG_FAST_MEMORY + XSTORM_SPQ_PROD_OFFSET(func),
+              bp->spq_prod_idx);
+}
+
+static void bnx2x_init_context(struct bnx2x *bp)
+{
+       int i;
+
+       for_each_queue(bp, i) {
+               struct eth_context *context = bnx2x_sp(bp, context[i].eth);
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+               u8 sb_id = FP_SB_ID(fp);
+
+               context->xstorm_st_context.tx_bd_page_base_hi =
+                                               U64_HI(fp->tx_desc_mapping);
+               context->xstorm_st_context.tx_bd_page_base_lo =
+                                               U64_LO(fp->tx_desc_mapping);
+               context->xstorm_st_context.db_data_addr_hi =
+                                               U64_HI(fp->tx_prods_mapping);
+               context->xstorm_st_context.db_data_addr_lo =
+                                               U64_LO(fp->tx_prods_mapping);
+               context->xstorm_st_context.statistics_data = (BP_CL_ID(bp) |
+                               XSTORM_ETH_ST_CONTEXT_STATISTICS_ENABLE);
+               switch (bp->multi_mode) {
+               case ETH_RSS_MODE_DISABLED:
+               case ETH_RSS_MODE_REGULAR:
+                       break;
+               case ETH_RSS_MODE_VLAN_PRI:
+               case ETH_RSS_MODE_E1HOV_PRI:
+               case ETH_RSS_MODE_IP_DSCP:
+                       context->xstorm_st_context.safc_group_en = 1;
+                       context->xstorm_st_context.safc_group_num = i;
+                       break;
+               default:
+                       break;
+               }
+
+               context->ustorm_st_context.common.sb_index_numbers =
+                                               BNX2X_RX_SB_INDEX_NUM;
+               context->ustorm_st_context.common.clientId = FP_CL_ID(fp);
+               context->ustorm_st_context.common.status_block_id = sb_id;
+               context->ustorm_st_context.common.flags =
+                       (USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT |
+                        USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_STATISTICS);
+               context->ustorm_st_context.common.statistics_counter_id =
+                                               BP_CL_ID(bp);
+               context->ustorm_st_context.common.mc_alignment_log_size =
+                                               BNX2X_RX_ALIGN_SHIFT;
+               context->ustorm_st_context.common.bd_buff_size =
+                                               bp->rx_buf_size;
+               context->ustorm_st_context.common.bd_page_base_hi =
+                                               U64_HI(fp->rx_desc_mapping);
+               context->ustorm_st_context.common.bd_page_base_lo =
+                                               U64_LO(fp->rx_desc_mapping);
+               if (!fp->disable_tpa) {
+                       context->ustorm_st_context.common.flags |=
+                               (USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA |
+                                USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING);
+                       context->ustorm_st_context.common.sge_buff_size =
+                                       (u16)(BCM_PAGE_SIZE*PAGES_PER_SGE);
+                       context->ustorm_st_context.common.sge_page_base_hi =
+                                               U64_HI(fp->rx_sge_mapping);
+                       context->ustorm_st_context.common.sge_page_base_lo =
+                                               U64_LO(fp->rx_sge_mapping);
+               }
+
+               context->cstorm_st_context.sb_index_number =
+                                               C_SB_ETH_TX_CQ_INDEX;
+               context->cstorm_st_context.status_block_id = sb_id;
+
+               context->xstorm_ag_context.cdu_reserved =
+                       CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i),
+                                              CDU_REGION_NUMBER_XCM_AG,
+                                              ETH_CONNECTION_TYPE);
+               context->ustorm_ag_context.cdu_usage =
+                       CDU_RSRVD_VALUE_TYPE_A(HW_CID(bp, i),
+                                              CDU_REGION_NUMBER_UCM_AG,
+                                              ETH_CONNECTION_TYPE);
+       }
+}
+
+static void bnx2x_init_ind_table(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+       int i;
+
+       switch (bp->multi_mode) {
+       case ETH_RSS_MODE_DISABLED:
+               return;
+       case ETH_RSS_MODE_REGULAR:
+               for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++)
+                       REG_WR8(bp, BAR_TSTRORM_INTMEM +
+                               TSTORM_INDIRECTION_TABLE_OFFSET(func) + i,
+                               i % bp->num_queues);
+               break;
+       case ETH_RSS_MODE_VLAN_PRI:
+       case ETH_RSS_MODE_E1HOV_PRI:
+       case ETH_RSS_MODE_IP_DSCP:
+               for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++)
+                       REG_WR8(bp, BAR_TSTRORM_INTMEM +
+                               TSTORM_INDIRECTION_TABLE_OFFSET(func) + i,
+                               bp->pri_map[i / BNX2X_MAX_ENTRIES_PER_PRI]);
+               break;
+       default:
+               return;
+       }
+       DP(NETIF_MSG_IFUP,
+          "Initializing indirection table  multi_mode %d\n", bp->multi_mode);
+
+       REG_WR(bp, PRS_REG_A_PRSU_20,
+              ((PRS_A_PRSU_20_REG_HASH_TCP_IPV4_PORT_0 |
+                PRS_A_PRSU_20_REG_HASH_TCP_IPV6_PORT_0) << BP_PORT(bp)));
+}
+
+static void bnx2x_set_client_config(struct bnx2x *bp)
+{
+       struct tstorm_eth_client_config tstorm_client = {0};
+       int port = BP_PORT(bp);
+       int i;
+
+       tstorm_client.mtu = bp->dev->mtu;
+       tstorm_client.statistics_counter_id = BP_CL_ID(bp);
+       tstorm_client.config_flags =
+                               (TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE |
+                                TSTORM_ETH_CLIENT_CONFIG_E1HOV_REMOVAL_ENABLE);
+#ifdef BCM_VLAN
+       if (bp->rx_mode && bp->vlgrp) {
+               tstorm_client.config_flags |=
+                               TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE;
+               DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
+       }
+#endif
+
+       if (bp->flags & TPA_ENABLE_FLAG) {
+               tstorm_client.max_sges_for_packet =
+                       BCM_PAGE_ALIGN(tstorm_client.mtu) >> BCM_PAGE_SHIFT;
+               tstorm_client.max_sges_for_packet =
+                       ((tstorm_client.max_sges_for_packet +
+                         PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >>
+                       PAGES_PER_SGE_SHIFT;
+
+               tstorm_client.config_flags |=
+                               TSTORM_ETH_CLIENT_CONFIG_ENABLE_SGE_RING;
+       }
+
+       for_each_queue(bp, i) {
+               REG_WR(bp, BAR_TSTRORM_INTMEM +
+                      TSTORM_CLIENT_CONFIG_OFFSET(port, bp->fp[i].cl_id),
+                      ((u32 *)&tstorm_client)[0]);
+               REG_WR(bp, BAR_TSTRORM_INTMEM +
+                      TSTORM_CLIENT_CONFIG_OFFSET(port, bp->fp[i].cl_id) + 4,
+                      ((u32 *)&tstorm_client)[1]);
+       }
+
+       DP(BNX2X_MSG_OFF, "tstorm_client: 0x%08x 0x%08x\n",
+          ((u32 *)&tstorm_client)[0], ((u32 *)&tstorm_client)[1]);
+}
+
+static void bnx2x_set_storm_rx_mode(struct bnx2x *bp)
+{
+       struct tstorm_eth_mac_filter_config tstorm_mac_filter = {0};
+       int mode = bp->rx_mode;
+       int mask = (1 << BP_L_ID(bp));
+       int func = BP_FUNC(bp);
+       int i;
+
+       DP(NETIF_MSG_IFUP, "rx mode %d  mask 0x%x\n", mode, mask);
+
+       switch (mode) {
+       case BNX2X_RX_MODE_NONE: /* no Rx */
+               tstorm_mac_filter.ucast_drop_all = mask;
+               tstorm_mac_filter.mcast_drop_all = mask;
+               tstorm_mac_filter.bcast_drop_all = mask;
+               break;
+       case BNX2X_RX_MODE_NORMAL:
+               tstorm_mac_filter.bcast_accept_all = mask;
+               break;
+       case BNX2X_RX_MODE_ALLMULTI:
+               tstorm_mac_filter.mcast_accept_all = mask;
+               tstorm_mac_filter.bcast_accept_all = mask;
+               break;
+       case BNX2X_RX_MODE_PROMISC:
+               tstorm_mac_filter.ucast_accept_all = mask;
+               tstorm_mac_filter.mcast_accept_all = mask;
+               tstorm_mac_filter.bcast_accept_all = mask;
+               break;
+       default:
+               BNX2X_ERR("BAD rx mode (%d)\n", mode);
+               break;
+       }
+
+       for (i = 0; i < sizeof(struct tstorm_eth_mac_filter_config)/4; i++) {
+               REG_WR(bp, BAR_TSTRORM_INTMEM +
+                      TSTORM_MAC_FILTER_CONFIG_OFFSET(func) + i * 4,
+                      ((u32 *)&tstorm_mac_filter)[i]);
+
+/*             DP(NETIF_MSG_IFUP, "tstorm_mac_filter[%d]: 0x%08x\n", i,
+                  ((u32 *)&tstorm_mac_filter)[i]); */
+       }
+
+       if (mode != BNX2X_RX_MODE_NONE)
+               bnx2x_set_client_config(bp);
+}
+
+static void bnx2x_init_internal_common(struct bnx2x *bp)
+{
+       int i;
+
+       if (bp->flags & TPA_ENABLE_FLAG) {
+               struct tstorm_eth_tpa_exist tpa = {0};
+
+               tpa.tpa_exist = 1;
+
+               REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_TPA_EXIST_OFFSET,
+                      ((u32 *)&tpa)[0]);
+               REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_TPA_EXIST_OFFSET + 4,
+                      ((u32 *)&tpa)[1]);
+       }
+
+       /* Zero this manually as its initialization is
+          currently missing in the initTool */
+       for (i = 0; i < (USTORM_AGG_DATA_SIZE >> 2); i++)
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_AGG_DATA_OFFSET + i * 4, 0);
+}
+
+static void bnx2x_init_internal_port(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+
+       REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_HC_BTR_OFFSET(port), BNX2X_BTR);
+       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_HC_BTR_OFFSET(port), BNX2X_BTR);
+       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_HC_BTR_OFFSET(port), BNX2X_BTR);
+       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_HC_BTR_OFFSET(port), BNX2X_BTR);
+}
+
+/* Calculates the sum of vn_min_rates.
+   It's needed for further normalizing of the min_rates.
+   Returns:
+     sum of vn_min_rates.
+       or
+     0 - if all the min_rates are 0.
+     In the later case fainess algorithm should be deactivated.
+     If not all min_rates are zero then those that are zeroes will be set to 1.
+ */
+static void bnx2x_calc_vn_wsum(struct bnx2x *bp)
+{
+       int all_zero = 1;
+       int port = BP_PORT(bp);
+       int vn;
+
+       bp->wsum = 0;
+       for (vn = VN_0; vn < E1HVN_MAX; vn++) {
+               int func = 2*vn + port;
+               u32 vn_cfg =
+                       SHMEM_RD(bp, mf_cfg.func_mf_config[func].config);
+               u32 vn_min_rate = ((vn_cfg & FUNC_MF_CFG_MIN_BW_MASK) >>
+                                  FUNC_MF_CFG_MIN_BW_SHIFT) * 100;
+
+               /* Skip hidden vns */
+               if (vn_cfg & FUNC_MF_CFG_FUNC_HIDE)
+                       continue;
+
+               /* If min rate is zero - set it to 1 */
+               if (!vn_min_rate)
+                       vn_min_rate = DEF_MIN_RATE;
+               else
+                       all_zero = 0;
+
+               bp->wsum += vn_min_rate;
+       }
+
+       /* ... only if all min rates are zeros - disable FAIRNESS */
+       if (all_zero)
+               bp->wsum = 0;
+}
+
+static void bnx2x_init_internal_func(struct bnx2x *bp)
+{
+       struct tstorm_eth_function_common_config tstorm_config = {0};
+       struct stats_indication_flags stats_flags = {0};
+       int port = BP_PORT(bp);
+       int func = BP_FUNC(bp);
+       int i;
+       u16 max_agg_size;
+
+       if (is_multi(bp)) {
+               tstorm_config.config_flags = MULTI_FLAGS(bp);
+               tstorm_config.rss_result_mask = MULTI_MASK;
+       }
+
+       tstorm_config.leading_client_id = BP_L_ID(bp);
+
+       REG_WR(bp, BAR_TSTRORM_INTMEM +
+              TSTORM_FUNCTION_COMMON_CONFIG_OFFSET(func),
+              (*(u32 *)&tstorm_config));
+
+       bp->rx_mode = BNX2X_RX_MODE_NONE; /* no rx until link is up */
+       bnx2x_set_storm_rx_mode(bp);
+
+       /* reset xstorm per client statistics */
+       for (i = 0; i < sizeof(struct xstorm_per_client_stats) / 4; i++) {
+               REG_WR(bp, BAR_XSTRORM_INTMEM +
+                      XSTORM_PER_COUNTER_ID_STATS_OFFSET(port, BP_CL_ID(bp)) +
+                      i*4, 0);
+       }
+       /* reset tstorm per client statistics */
+       for (i = 0; i < sizeof(struct tstorm_per_client_stats) / 4; i++) {
+               REG_WR(bp, BAR_TSTRORM_INTMEM +
+                      TSTORM_PER_COUNTER_ID_STATS_OFFSET(port, BP_CL_ID(bp)) +
+                      i*4, 0);
+       }
+       /* reset ustorm per client statistics */
+       for (i = 0; i < sizeof(struct ustorm_per_client_stats) / 4; i++) {
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_PER_COUNTER_ID_STATS_OFFSET(port, BP_CL_ID(bp)) +
+                      i*4, 0);
+       }
+
+       /* Init statistics related context */
+       stats_flags.collect_eth = 1;
+
+       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(func),
+              ((u32 *)&stats_flags)[0]);
+       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_STATS_FLAGS_OFFSET(func) + 4,
+              ((u32 *)&stats_flags)[1]);
+
+       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(func),
+              ((u32 *)&stats_flags)[0]);
+       REG_WR(bp, BAR_TSTRORM_INTMEM + TSTORM_STATS_FLAGS_OFFSET(func) + 4,
+              ((u32 *)&stats_flags)[1]);
+
+       REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_STATS_FLAGS_OFFSET(func),
+              ((u32 *)&stats_flags)[0]);
+       REG_WR(bp, BAR_USTRORM_INTMEM + USTORM_STATS_FLAGS_OFFSET(func) + 4,
+              ((u32 *)&stats_flags)[1]);
+
+       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(func),
+              ((u32 *)&stats_flags)[0]);
+       REG_WR(bp, BAR_CSTRORM_INTMEM + CSTORM_STATS_FLAGS_OFFSET(func) + 4,
+              ((u32 *)&stats_flags)[1]);
+
+       REG_WR(bp, BAR_XSTRORM_INTMEM +
+              XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func),
+              U64_LO(bnx2x_sp_mapping(bp, fw_stats)));
+       REG_WR(bp, BAR_XSTRORM_INTMEM +
+              XSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4,
+              U64_HI(bnx2x_sp_mapping(bp, fw_stats)));
+
+       REG_WR(bp, BAR_TSTRORM_INTMEM +
+              TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func),
+              U64_LO(bnx2x_sp_mapping(bp, fw_stats)));
+       REG_WR(bp, BAR_TSTRORM_INTMEM +
+              TSTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4,
+              U64_HI(bnx2x_sp_mapping(bp, fw_stats)));
+
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              USTORM_ETH_STATS_QUERY_ADDR_OFFSET(func),
+              U64_LO(bnx2x_sp_mapping(bp, fw_stats)));
+       REG_WR(bp, BAR_USTRORM_INTMEM +
+              USTORM_ETH_STATS_QUERY_ADDR_OFFSET(func) + 4,
+              U64_HI(bnx2x_sp_mapping(bp, fw_stats)));
+
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR8(bp, BAR_XSTRORM_INTMEM + XSTORM_FUNCTION_MODE_OFFSET,
+                       IS_E1HMF(bp));
+               REG_WR8(bp, BAR_TSTRORM_INTMEM + TSTORM_FUNCTION_MODE_OFFSET,
+                       IS_E1HMF(bp));
+               REG_WR8(bp, BAR_CSTRORM_INTMEM + CSTORM_FUNCTION_MODE_OFFSET,
+                       IS_E1HMF(bp));
+               REG_WR8(bp, BAR_USTRORM_INTMEM + USTORM_FUNCTION_MODE_OFFSET,
+                       IS_E1HMF(bp));
+
+               REG_WR16(bp, BAR_XSTRORM_INTMEM + XSTORM_E1HOV_OFFSET(func),
+                        bp->e1hov);
+       }
+
+       /* Init CQ ring mapping and aggregation size */
+       max_agg_size = min((u32)(bp->rx_buf_size +
+                                8*BCM_PAGE_SIZE*PAGES_PER_SGE),
+                          (u32)0xffff);
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_CQE_PAGE_BASE_OFFSET(port, FP_CL_ID(fp)),
+                      U64_LO(fp->rx_comp_mapping));
+               REG_WR(bp, BAR_USTRORM_INTMEM +
+                      USTORM_CQE_PAGE_BASE_OFFSET(port, FP_CL_ID(fp)) + 4,
+                      U64_HI(fp->rx_comp_mapping));
+
+               REG_WR16(bp, BAR_USTRORM_INTMEM +
+                        USTORM_MAX_AGG_SIZE_OFFSET(port, FP_CL_ID(fp)),
+                        max_agg_size);
+       }
+
+       memset(&(bp->cmng), 0, sizeof(struct cmng_struct_per_port));
+
+       if (IS_E1HMF(bp)) {
+               int vn;
+
+               /* Init RATE SHAPING and FAIRNESS contexts */
+               bnx2x_calc_vn_wsum(bp);
+
+               /* Enable rate shaping and fairness */
+               bp->cmng.flags.cmng_vn_enable = 1;
+               bp->cmng.flags.rate_shaping_enable = 1;
+               bp->cmng.flags.fairness_enable = bp->wsum ? 1 : 0;
+
+               if (!bp->wsum)
+                       DP(NETIF_MSG_IFUP, "All MIN values are zeroes"
+                          "  fairness will be disabled\n");
+
+               /* During init there is no active link
+                  Until link is up, set link rate to 10Gbps */
+               bp->link_vars.line_speed = SPEED_10000;
+               bnx2x_init_port_minmax(bp);
+
+               for (vn = VN_0; vn < E1HVN_MAX; vn++)
+                       bnx2x_init_vn_minmax(bp, 2*vn + port);
+
+       } else {
+               /* rate shaping and fairness is disabled */
+               DP(NETIF_MSG_IFUP,
+                  "single function mode  minmax will be disabled\n");
+       }
+
+       switch (bp->multi_mode) {
+       case ETH_RSS_MODE_DISABLED:
+       case ETH_RSS_MODE_REGULAR:
+               break;
+       case ETH_RSS_MODE_VLAN_PRI:
+       case ETH_RSS_MODE_E1HOV_PRI:
+       case ETH_RSS_MODE_IP_DSCP:
+               bp->cmng.safc_vars.safc_timeout_usec = 50;
+               for_each_queue(bp, i)
+                       bp->cmng.safc_vars.cos_to_pause_mask[i] = (1 << i);
+               break;
+       default:
+               break;
+       }
+
+       /* Store it to internal memory */
+       if (bp->port.pmf)
+               for (i = 0; i < sizeof(struct cmng_struct_per_port) / 4; i++)
+                       REG_WR(bp, BAR_XSTRORM_INTMEM +
+                              XSTORM_CMNG_PER_PORT_VARS_OFFSET(port) + i * 4,
+                              ((u32 *)(&bp->cmng))[i]);
+}
+
+static void bnx2x_init_internal(struct bnx2x *bp, u32 load_code)
+{
+       switch (load_code) {
+       case FW_MSG_CODE_DRV_LOAD_COMMON:
+               bnx2x_init_internal_common(bp);
+               /* no break */
+
+       case FW_MSG_CODE_DRV_LOAD_PORT:
+               bnx2x_init_internal_port(bp);
+               /* no break */
+
+       case FW_MSG_CODE_DRV_LOAD_FUNCTION:
+               bnx2x_init_internal_func(bp);
+               break;
+
+       default:
+               BNX2X_ERR("Unknown load_code (0x%x) from MCP\n", load_code);
+               break;
+       }
+}
+
+static void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
+{
+       int i;
+
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               fp->bp = bp;
+               fp->state = BNX2X_FP_STATE_CLOSED;
+               fp->index = i;
+               fp->cl_id = BP_L_ID(bp) + i;
+#ifdef BCM_CNIC
+               fp->sb_id = fp->cl_id + 1;
+#else
+               fp->sb_id = fp->cl_id;
+#endif
+               DP(NETIF_MSG_IFUP,
+                  "bnx2x_init_sb(%p,%p) index %d  cl_id %d  sb %d\n",
+                  bp, fp->status_blk, i, FP_CL_ID(fp), FP_SB_ID(fp));
+               bnx2x_init_sb(bp, fp->status_blk, fp->status_blk_mapping,
+                             FP_SB_ID(fp));
+               bnx2x_update_fpsb_idx(fp);
+       }
+
+       bnx2x_init_def_sb(bp, bp->def_status_blk, bp->def_status_blk_mapping,
+                         DEF_SB_ID);
+       bnx2x_update_dsb_idx(bp);
+       bnx2x_update_coalesce(bp);
+       bnx2x_init_rx_rings(bp);
+       bnx2x_init_tx_ring(bp);
+       bnx2x_init_sp_ring(bp);
+       bnx2x_init_context(bp);
+       bnx2x_init_internal(bp, load_code);
+       bnx2x_init_ind_table(bp);
+       bnx2x_int_enable(bp);
+}
+
+/* end of nic init */
+
+/*
+ * gzip service functions
+ */
+
+static int bnx2x_gunzip_init(struct bnx2x *bp)
+{
+       bp->gunzip_buf = pci_alloc_consistent(bp->pdev, FW_BUF_SIZE,
+                                             &bp->gunzip_mapping);
+       if (bp->gunzip_buf  == NULL)
+               goto gunzip_nomem1;
+
+       bp->strm = kmalloc(sizeof(*bp->strm), GFP_KERNEL);
+       if (bp->strm  == NULL)
+               goto gunzip_nomem2;
+
+       bp->strm->workspace = kmalloc(zlib_inflate_workspacesize(),
+                                     GFP_KERNEL);
+       if (bp->strm->workspace == NULL)
+               goto gunzip_nomem3;
+
+       return 0;
+
+gunzip_nomem3:
+       kfree(bp->strm);
+       bp->strm = NULL;
+
+gunzip_nomem2:
+       pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf,
+                           bp->gunzip_mapping);
+       bp->gunzip_buf = NULL;
+
+gunzip_nomem1:
+       printk(KERN_ERR PFX "%s: Cannot allocate firmware buffer for"
+              " un-compression\n", bp->dev->name);
+       return -ENOMEM;
+}
+
+static void bnx2x_gunzip_end(struct bnx2x *bp)
+{
+       kfree(bp->strm->workspace);
+
+       kfree(bp->strm);
+       bp->strm = NULL;
+
+       if (bp->gunzip_buf) {
+               pci_free_consistent(bp->pdev, FW_BUF_SIZE, bp->gunzip_buf,
+                                   bp->gunzip_mapping);
+               bp->gunzip_buf = NULL;
+       }
+}
+
+static int bnx2x_gunzip(struct bnx2x *bp, u8 *zbuf, int len)
+{
+       int n, rc;
+
+       /* check gzip header */
+       if ((zbuf[0] != 0x1f) || (zbuf[1] != 0x8b) || (zbuf[2] != Z_DEFLATED))
+               return -EINVAL;
+
+       n = 10;
+
+#define FNAME                          0x8
+
+       if (zbuf[3] & FNAME)
+               while ((zbuf[n++] != 0) && (n < len));
+
+       bp->strm->next_in = zbuf + n;
+       bp->strm->avail_in = len - n;
+       bp->strm->next_out = bp->gunzip_buf;
+       bp->strm->avail_out = FW_BUF_SIZE;
+
+       rc = zlib_inflateInit2(bp->strm, -MAX_WBITS);
+       if (rc != Z_OK)
+               return rc;
+
+       rc = zlib_inflate(bp->strm, Z_FINISH);
+       if ((rc != Z_OK) && (rc != Z_STREAM_END))
+               printk(KERN_ERR PFX "%s: Firmware decompression error: %s\n",
+                      bp->dev->name, bp->strm->msg);
+
+       bp->gunzip_outlen = (FW_BUF_SIZE - bp->strm->avail_out);
+       if (bp->gunzip_outlen & 0x3)
+               printk(KERN_ERR PFX "%s: Firmware decompression error:"
+                                   " gunzip_outlen (%d) not aligned\n",
+                      bp->dev->name, bp->gunzip_outlen);
+       bp->gunzip_outlen >>= 2;
+
+       zlib_inflateEnd(bp->strm);
+
+       if (rc == Z_STREAM_END)
+               return 0;
+
+       return rc;
+}
+
+/* nic load/unload */
+
+/*
+ * General service functions
+ */
+
+/* send a NIG loopback debug packet */
+static void bnx2x_lb_pckt(struct bnx2x *bp)
+{
+       u32 wb_write[3];
+
+       /* Ethernet source and destination addresses */
+       wb_write[0] = 0x55555555;
+       wb_write[1] = 0x55555555;
+       wb_write[2] = 0x20;             /* SOP */
+       REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3);
+
+       /* NON-IP protocol */
+       wb_write[0] = 0x09000000;
+       wb_write[1] = 0x55555555;
+       wb_write[2] = 0x10;             /* EOP, eop_bvalid = 0 */
+       REG_WR_DMAE(bp, NIG_REG_DEBUG_PACKET_LB, wb_write, 3);
+}
+
+/* some of the internal memories
+ * are not directly readable from the driver
+ * to test them we send debug packets
+ */
+static int bnx2x_int_mem_test(struct bnx2x *bp)
+{
+       int factor;
+       int count, i;
+       u32 val = 0;
+
+       if (CHIP_REV_IS_FPGA(bp))
+               factor = 120;
+       else if (CHIP_REV_IS_EMUL(bp))
+               factor = 200;
+       else
+               factor = 1;
+
+       DP(NETIF_MSG_HW, "start part1\n");
+
+       /* Disable inputs of parser neighbor blocks */
+       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0);
+       REG_WR(bp, TCM_REG_PRS_IFEN, 0x0);
+       REG_WR(bp, CFC_REG_DEBUG0, 0x1);
+       REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x0);
+
+       /*  Write 0 to parser credits for CFC search request */
+       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0);
+
+       /* send Ethernet packet */
+       bnx2x_lb_pckt(bp);
+
+       /* TODO do i reset NIG statistic? */
+       /* Wait until NIG register shows 1 packet of size 0x10 */
+       count = 1000 * factor;
+       while (count) {
+
+               bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
+               val = *bnx2x_sp(bp, wb_data[0]);
+               if (val == 0x10)
+                       break;
+
+               msleep(10);
+               count--;
+       }
+       if (val != 0x10) {
+               BNX2X_ERR("NIG timeout  val = 0x%x\n", val);
+               return -1;
+       }
+
+       /* Wait until PRS register shows 1 packet */
+       count = 1000 * factor;
+       while (count) {
+               val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
+               if (val == 1)
+                       break;
+
+               msleep(10);
+               count--;
+       }
+       if (val != 0x1) {
+               BNX2X_ERR("PRS timeout val = 0x%x\n", val);
+               return -2;
+       }
+
+       /* Reset and init BRB, PRS */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x03);
+       msleep(50);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03);
+       msleep(50);
+       bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+       bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
+
+       DP(NETIF_MSG_HW, "part2\n");
+
+       /* Disable inputs of parser neighbor blocks */
+       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x0);
+       REG_WR(bp, TCM_REG_PRS_IFEN, 0x0);
+       REG_WR(bp, CFC_REG_DEBUG0, 0x1);
+       REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x0);
+
+       /* Write 0 to parser credits for CFC search request */
+       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x0);
+
+       /* send 10 Ethernet packets */
+       for (i = 0; i < 10; i++)
+               bnx2x_lb_pckt(bp);
+
+       /* Wait until NIG register shows 10 + 1
+          packets of size 11*0x10 = 0xb0 */
+       count = 1000 * factor;
+       while (count) {
+
+               bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
+               val = *bnx2x_sp(bp, wb_data[0]);
+               if (val == 0xb0)
+                       break;
+
+               msleep(10);
+               count--;
+       }
+       if (val != 0xb0) {
+               BNX2X_ERR("NIG timeout  val = 0x%x\n", val);
+               return -3;
+       }
+
+       /* Wait until PRS register shows 2 packets */
+       val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
+       if (val != 2)
+               BNX2X_ERR("PRS timeout  val = 0x%x\n", val);
+
+       /* Write 1 to parser credits for CFC search request */
+       REG_WR(bp, PRS_REG_CFC_SEARCH_INITIAL_CREDIT, 0x1);
+
+       /* Wait until PRS register shows 3 packets */
+       msleep(10 * factor);
+       /* Wait until NIG register shows 1 packet of size 0x10 */
+       val = REG_RD(bp, PRS_REG_NUM_OF_PACKETS);
+       if (val != 3)
+               BNX2X_ERR("PRS timeout  val = 0x%x\n", val);
+
+       /* clear NIG EOP FIFO */
+       for (i = 0; i < 11; i++)
+               REG_RD(bp, NIG_REG_INGRESS_EOP_LB_FIFO);
+       val = REG_RD(bp, NIG_REG_INGRESS_EOP_LB_EMPTY);
+       if (val != 1) {
+               BNX2X_ERR("clear of NIG failed\n");
+               return -4;
+       }
+
+       /* Reset and init BRB, PRS, NIG */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR, 0x03);
+       msleep(50);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03);
+       msleep(50);
+       bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+       bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
+#ifndef BCM_CNIC
+       /* set NIC mode */
+       REG_WR(bp, PRS_REG_NIC_MODE, 1);
+#endif
+
+       /* Enable inputs of parser neighbor blocks */
+       REG_WR(bp, TSDM_REG_ENABLE_IN1, 0x7fffffff);
+       REG_WR(bp, TCM_REG_PRS_IFEN, 0x1);
+       REG_WR(bp, CFC_REG_DEBUG0, 0x0);
+       REG_WR(bp, NIG_REG_PRS_REQ_IN_EN, 0x1);
+
+       DP(NETIF_MSG_HW, "done\n");
+
+       return 0; /* OK */
+}
+
+static void enable_blocks_attention(struct bnx2x *bp)
+{
+       REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0);
+       REG_WR(bp, PXP_REG_PXP_INT_MASK_1, 0);
+       REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0);
+       REG_WR(bp, CFC_REG_CFC_INT_MASK, 0);
+       REG_WR(bp, QM_REG_QM_INT_MASK, 0);
+       REG_WR(bp, TM_REG_TM_INT_MASK, 0);
+       REG_WR(bp, XSDM_REG_XSDM_INT_MASK_0, 0);
+       REG_WR(bp, XSDM_REG_XSDM_INT_MASK_1, 0);
+       REG_WR(bp, XCM_REG_XCM_INT_MASK, 0);
+/*     REG_WR(bp, XSEM_REG_XSEM_INT_MASK_0, 0); */
+/*     REG_WR(bp, XSEM_REG_XSEM_INT_MASK_1, 0); */
+       REG_WR(bp, USDM_REG_USDM_INT_MASK_0, 0);
+       REG_WR(bp, USDM_REG_USDM_INT_MASK_1, 0);
+       REG_WR(bp, UCM_REG_UCM_INT_MASK, 0);
+/*     REG_WR(bp, USEM_REG_USEM_INT_MASK_0, 0); */
+/*     REG_WR(bp, USEM_REG_USEM_INT_MASK_1, 0); */
+       REG_WR(bp, GRCBASE_UPB + PB_REG_PB_INT_MASK, 0);
+       REG_WR(bp, CSDM_REG_CSDM_INT_MASK_0, 0);
+       REG_WR(bp, CSDM_REG_CSDM_INT_MASK_1, 0);
+       REG_WR(bp, CCM_REG_CCM_INT_MASK, 0);
+/*     REG_WR(bp, CSEM_REG_CSEM_INT_MASK_0, 0); */
+/*     REG_WR(bp, CSEM_REG_CSEM_INT_MASK_1, 0); */
+       if (CHIP_REV_IS_FPGA(bp))
+               REG_WR(bp, PXP2_REG_PXP2_INT_MASK_0, 0x580000);
+       else
+               REG_WR(bp, PXP2_REG_PXP2_INT_MASK_0, 0x480000);
+       REG_WR(bp, TSDM_REG_TSDM_INT_MASK_0, 0);
+       REG_WR(bp, TSDM_REG_TSDM_INT_MASK_1, 0);
+       REG_WR(bp, TCM_REG_TCM_INT_MASK, 0);
+/*     REG_WR(bp, TSEM_REG_TSEM_INT_MASK_0, 0); */
+/*     REG_WR(bp, TSEM_REG_TSEM_INT_MASK_1, 0); */
+       REG_WR(bp, CDU_REG_CDU_INT_MASK, 0);
+       REG_WR(bp, DMAE_REG_DMAE_INT_MASK, 0);
+/*     REG_WR(bp, MISC_REG_MISC_INT_MASK, 0); */
+       REG_WR(bp, PBF_REG_PBF_INT_MASK, 0X18);         /* bit 3,4 masked */
+}
+
+#ifdef BNX2X_EXTRA_DEBUG /* ! BNX2X_UPSTREAM */
+static void enable_blocks_parity(struct bnx2x *bp)
+{
+       REG_WR(bp, PXP_REG_PXP_PRTY_MASK, 0x80000);     /* bit 19 masked */
+       REG_WR(bp, PXP2_REG_PXP2_PRTY_MASK_0, 0xfff40020);/* bit 5,18,20-31 */
+       REG_WR(bp, PXP2_REG_PXP2_PRTY_MASK_1, 0x20);    /* bit 5 */
+       REG_WR(bp, QM_REG_QM_PRTY_MASK, 0x0);
+       REG_WR(bp, DORQ_REG_DORQ_PRTY_MASK, 0x0);
+       REG_WR(bp, GRCBASE_UPB + PB_REG_PB_PRTY_MASK, 0x0);
+       REG_WR(bp, GRCBASE_XPB + PB_REG_PB_PRTY_MASK, 0x0);
+       REG_WR(bp, SRC_REG_SRC_PRTY_MASK, 0x4);         /* bit 2 */
+       REG_WR(bp, CDU_REG_CDU_PRTY_MASK, 0x0);
+       REG_WR(bp, CFC_REG_CFC_PRTY_MASK, 0x0);
+       REG_WR(bp, HC_REG_HC_PRTY_MASK, 0x0);
+       REG_WR(bp, MISC_REG_MISC_PRTY_MASK, 0x0);
+       REG_WR(bp, DBG_REG_DBG_PRTY_MASK, 0x0);
+       REG_WR(bp, DMAE_REG_DMAE_PRTY_MASK, 0x0);
+       REG_WR(bp, BRB1_REG_BRB1_PRTY_MASK, 0x0);
+       REG_WR(bp, PRS_REG_PRS_PRTY_MASK, 0x0);
+       REG_WR(bp, TSDM_REG_TSDM_PRTY_MASK, 0x8);       /* bit 3 */
+       REG_WR(bp, CSDM_REG_CSDM_PRTY_MASK, 0x8);       /* bit 3 */
+       REG_WR(bp, USDM_REG_USDM_PRTY_MASK, 0x28);      /* bit 3,5 */
+       REG_WR(bp, XSDM_REG_XSDM_PRTY_MASK, 0x8);       /* bit 3 */
+       REG_WR(bp, TSEM_REG_TSEM_PRTY_MASK_0, 0x0);
+       REG_WR(bp, TSEM_REG_TSEM_PRTY_MASK_1, 0x0);
+       REG_WR(bp, USEM_REG_USEM_PRTY_MASK_0, 0x0);
+       REG_WR(bp, USEM_REG_USEM_PRTY_MASK_1, 0x0);
+       REG_WR(bp, CSEM_REG_CSEM_PRTY_MASK_0, 0x0);
+       REG_WR(bp, CSEM_REG_CSEM_PRTY_MASK_1, 0x0);
+       REG_WR(bp, XSEM_REG_XSEM_PRTY_MASK_0, 0x0);
+       REG_WR(bp, XSEM_REG_XSEM_PRTY_MASK_1, 0x0);
+}
+#endif
+
+static int bnx2x_init_common(struct bnx2x *bp)
+{
+       u32 val, i;
+#ifdef BCM_CNIC
+       u32 wb_write[2];
+#endif
+
+       DP(BNX2X_MSG_MCP, "starting common init  func %d\n", BP_FUNC(bp));
+
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc);
+
+       bnx2x_init_block(bp, MISC_COMMON_START, MISC_COMMON_END);
+       if (CHIP_IS_E1H(bp))
+               REG_WR(bp, MISC_REG_E1HMF_MODE, IS_E1HMF(bp));
+
+       REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x100);
+       msleep(30);
+       REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x0);
+
+       bnx2x_init_block(bp, PXP_COMMON_START, PXP_COMMON_END);
+       if (CHIP_IS_E1(bp)) {
+               /* enable HW interrupt from PXP on USDM overflow
+                  bit 16 on INT_MASK_0 */
+               REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0);
+       }
+
+       bnx2x_init_block(bp, PXP2_COMMON_START, PXP2_COMMON_END);
+       bnx2x_init_pxp(bp);
+
+#ifdef __BIG_ENDIAN
+       REG_WR(bp, PXP2_REG_RQ_QM_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_TM_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1);
+
+/*     REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */
+       REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1);
+       REG_WR(bp, PXP2_REG_RD_TM_SWAP_MODE, 1);
+       REG_WR(bp, PXP2_REG_RD_SRC_SWAP_MODE, 1);
+       REG_WR(bp, PXP2_REG_RD_CDURD_SWAP_MODE, 1);
+#endif
+
+       REG_WR(bp, PXP2_REG_RQ_CDU_P_SIZE, 2);
+#ifdef BCM_CNIC
+       REG_WR(bp, PXP2_REG_RQ_TM_P_SIZE, 5);
+       REG_WR(bp, PXP2_REG_RQ_QM_P_SIZE, 5);
+       REG_WR(bp, PXP2_REG_RQ_SRC_P_SIZE, 5);
+#endif
+
+       if (CHIP_REV_IS_FPGA(bp) && CHIP_IS_E1H(bp))
+               REG_WR(bp, PXP2_REG_PGL_TAGS_LIMIT, 0x1);
+
+       /* let the HW do it's magic ... */
+       msleep(100);
+       /* finish PXP init */
+       val = REG_RD(bp, PXP2_REG_RQ_CFG_DONE);
+       if (val != 1) {
+               BNX2X_ERR("PXP2 CFG failed\n");
+               return -EBUSY;
+       }
+       val = REG_RD(bp, PXP2_REG_RD_INIT_DONE);
+       if (val != 1) {
+               BNX2X_ERR("PXP2 RD_INIT failed\n");
+               return -EBUSY;
+       }
+
+       REG_WR(bp, PXP2_REG_RQ_DISABLE_INPUTS, 0);
+       REG_WR(bp, PXP2_REG_RD_DISABLE_INPUTS, 0);
+
+       bnx2x_init_block(bp, DMAE_COMMON_START, DMAE_COMMON_END);
+
+       /* clean the DMAE memory */
+       bp->dmae_ready = 1;
+       bnx2x_init_fill(bp, TSEM_REG_PRAM, 0, 8);
+
+       bnx2x_init_block(bp, TCM_COMMON_START, TCM_COMMON_END);
+       bnx2x_init_block(bp, UCM_COMMON_START, UCM_COMMON_END);
+       bnx2x_init_block(bp, CCM_COMMON_START, CCM_COMMON_END);
+       bnx2x_init_block(bp, XCM_COMMON_START, XCM_COMMON_END);
+
+       bnx2x_read_dmae(bp, XSEM_REG_PASSIVE_BUFFER, 3);
+       bnx2x_read_dmae(bp, CSEM_REG_PASSIVE_BUFFER, 3);
+       bnx2x_read_dmae(bp, TSEM_REG_PASSIVE_BUFFER, 3);
+       bnx2x_read_dmae(bp, USEM_REG_PASSIVE_BUFFER, 3);
+
+       bnx2x_init_block(bp, QM_COMMON_START, QM_COMMON_END);
+       switch (bp->multi_mode) {
+       case ETH_RSS_MODE_DISABLED:
+       case ETH_RSS_MODE_REGULAR:
+               break;
+       case ETH_RSS_MODE_VLAN_PRI:
+       case ETH_RSS_MODE_E1HOV_PRI:
+       case ETH_RSS_MODE_IP_DSCP:
+               REG_WR(bp, QM_REG_BYTECRDINITVAL, 0x5dc0);
+               break;
+       default:
+               break;
+       }
+#ifdef BCM_CNIC
+       wb_write[0] = 0;
+       wb_write[1] = 0;
+       for (i = 0; i < 64; i++) {
+               REG_WR(bp, QM_REG_BASEADDR + i*4, 1024 * 4 * (i%32));
+               bnx2x_init_ind_wr(bp, QM_REG_PTRTBL + i*8, wb_write, 2);
+
+               if (CHIP_IS_E1H(bp))
+                       bnx2x_init_ind_wr(bp, QM_REG_PTRTBL_EXT_A + i*8,
+                                         wb_write, 2);
+       }
+#endif
+       /* soft reset pulse */
+       REG_WR(bp, QM_REG_SOFT_RESET, 1);
+       REG_WR(bp, QM_REG_SOFT_RESET, 0);
+
+#ifdef BCM_CNIC
+       bnx2x_init_block(bp, TIMERS_COMMON_START, TIMERS_COMMON_END);
+#endif
+
+       bnx2x_init_block(bp, DQ_COMMON_START, DQ_COMMON_END);
+       REG_WR(bp, DORQ_REG_DPM_CID_OFST, BCM_PAGE_SHIFT);
+       if (!CHIP_REV_IS_SLOW(bp)) {
+               /* enable hw interrupt from doorbell Q */
+               REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0);
+       }
+
+       bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+       bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
+#ifndef BCM_CNIC
+       /* set NIC mode */
+       REG_WR(bp, PRS_REG_NIC_MODE, 1);
+#endif
+       if (CHIP_IS_E1H(bp))
+               REG_WR(bp, PRS_REG_E1HOV_MODE, IS_E1HMF(bp));
+
+       bnx2x_init_block(bp, TSDM_COMMON_START, TSDM_COMMON_END);
+       bnx2x_init_block(bp, CSDM_COMMON_START, CSDM_COMMON_END);
+       bnx2x_init_block(bp, USDM_COMMON_START, USDM_COMMON_END);
+       bnx2x_init_block(bp, XSDM_COMMON_START, XSDM_COMMON_END);
+
+       if (CHIP_IS_E1H(bp)) {
+               bnx2x_init_fill(bp, TSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp,
+                               TSTORM_INTMEM_ADDR + STORM_INTMEM_SIZE_E1H/2,
+                               0, STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp,
+                               CSTORM_INTMEM_ADDR + STORM_INTMEM_SIZE_E1H/2,
+                               0, STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp, XSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp,
+                               XSTORM_INTMEM_ADDR + STORM_INTMEM_SIZE_E1H/2,
+                               0, STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp, USTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1H/2);
+               bnx2x_init_fill(bp,
+                               USTORM_INTMEM_ADDR + STORM_INTMEM_SIZE_E1H/2,
+                               0, STORM_INTMEM_SIZE_E1H/2);
+       } else { /* E1 */
+               bnx2x_init_fill(bp, TSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1);
+               bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1);
+               bnx2x_init_fill(bp, XSTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1);
+               bnx2x_init_fill(bp, USTORM_INTMEM_ADDR, 0,
+                               STORM_INTMEM_SIZE_E1);
+       }
+
+       bnx2x_init_block(bp, TSEM_COMMON_START, TSEM_COMMON_END);
+       bnx2x_init_block(bp, USEM_COMMON_START, USEM_COMMON_END);
+       bnx2x_init_block(bp, CSEM_COMMON_START, CSEM_COMMON_END);
+       bnx2x_init_block(bp, XSEM_COMMON_START, XSEM_COMMON_END);
+
+       /* sync semi rtc */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
+              0x80000000);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET,
+              0x80000000);
+
+       bnx2x_init_block(bp, UPB_COMMON_START, UPB_COMMON_END);
+       bnx2x_init_block(bp, XPB_COMMON_START, XPB_COMMON_END);
+       bnx2x_init_block(bp, PBF_COMMON_START, PBF_COMMON_END);
+
+       REG_WR(bp, SRC_REG_SOFT_RST, 1);
+       for (i = SRC_REG_KEYRSS0_0; i <= SRC_REG_KEYRSS1_9; i += 4) {
+               REG_WR(bp, i, 0xc0cac01a);
+               /* TODO: replace with something meaningful */
+       }
+       bnx2x_init_block(bp, SRCH_COMMON_START, SRCH_COMMON_END);
+#ifdef BCM_CNIC
+       REG_WR(bp, SRC_REG_KEYSEARCH_0, 0x63285672);
+       REG_WR(bp, SRC_REG_KEYSEARCH_1, 0x24b8f2cc);
+       REG_WR(bp, SRC_REG_KEYSEARCH_2, 0x223aef9b);
+       REG_WR(bp, SRC_REG_KEYSEARCH_3, 0x26001e3a);
+       REG_WR(bp, SRC_REG_KEYSEARCH_4, 0x7ae91116);
+       REG_WR(bp, SRC_REG_KEYSEARCH_5, 0x5ce5230b);
+       REG_WR(bp, SRC_REG_KEYSEARCH_6, 0x298d8adf);
+       REG_WR(bp, SRC_REG_KEYSEARCH_7, 0x6eb0ff09);
+       REG_WR(bp, SRC_REG_KEYSEARCH_8, 0x1830f82f);
+       REG_WR(bp, SRC_REG_KEYSEARCH_9, 0x01e46be7);
+#endif
+       REG_WR(bp, SRC_REG_SOFT_RST, 0);
+
+       if (sizeof(union cdu_context) != 1024)
+               /* we currently assume that a context is 1024 bytes */
+               printk(KERN_ALERT PFX "please adjust the size of"
+                      " cdu_context(%ld)\n", (long)sizeof(union cdu_context));
+
+       bnx2x_init_block(bp, CDU_COMMON_START, CDU_COMMON_END);
+       val = (4 << 24) + (0 << 12) + 1024;
+       REG_WR(bp, CDU_REG_CDU_GLOBAL_PARAMS, val);
+       if (CHIP_IS_E1(bp)) {
+               /* !!! fix pxp client crdit until excel update */
+               REG_WR(bp, CDU_REG_CDU_DEBUG, 0x264);
+               REG_WR(bp, CDU_REG_CDU_DEBUG, 0);
+       }
+
+       bnx2x_init_block(bp, CFC_COMMON_START, CFC_COMMON_END);
+       REG_WR(bp, CFC_REG_INIT_REG, 0x7FF);
+       /* enable context validation interrupt from CFC */
+       REG_WR(bp, CFC_REG_CFC_INT_MASK, 0);
+
+       /* !!! workaround for CFC/CDU race until excel update */
+       REG_WR(bp, CFC_REG_DEBUG0, 0x20020000);
+       REG_WR(bp, CFC_REG_INTERFACES, 0x280000);
+       REG_WR(bp, CFC_REG_INTERFACES, 0);
+
+       bnx2x_init_block(bp, HC_COMMON_START, HC_COMMON_END);
+       bnx2x_init_block(bp, MISC_AEU_COMMON_START, MISC_AEU_COMMON_END);
+
+       /* PXPCS COMMON comes here */
+       /* Reset PCIE errors for debug */
+       REG_WR(bp, 0x2814, 0xffffffff);
+       REG_WR(bp, 0x3820, 0xffffffff);
+
+       /* EMAC0 COMMON comes here */
+       /* EMAC1 COMMON comes here */
+       /* DBU COMMON comes here */
+       /* DBG COMMON comes here */
+
+       bnx2x_init_block(bp, NIG_COMMON_START, NIG_COMMON_END);
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, NIG_REG_LLH_MF_MODE, IS_E1HMF(bp));
+               REG_WR(bp, NIG_REG_LLH_E1HOV_MODE, IS_E1HMF(bp));
+       }
+
+       if (CHIP_REV_IS_SLOW(bp))
+               msleep(200);
+
+       /* finish CFC init */
+       val = reg_poll(bp, CFC_REG_LL_INIT_DONE, 1, 100, 10);
+       if (val != 1) {
+               BNX2X_ERR("CFC LL_INIT failed\n");
+               return -EBUSY;
+       }
+       val = reg_poll(bp, CFC_REG_AC_INIT_DONE, 1, 100, 10);
+       if (val != 1) {
+               BNX2X_ERR("CFC AC_INIT failed\n");
+               return -EBUSY;
+       }
+       val = reg_poll(bp, CFC_REG_CAM_INIT_DONE, 1, 100, 10);
+       if (val != 1) {
+               BNX2X_ERR("CFC CAM_INIT failed\n");
+               return -EBUSY;
+       }
+       REG_WR(bp, CFC_REG_DEBUG0, 0);
+
+       /* read NIG statistic
+          to see if this is our first up since powerup */
+       bnx2x_read_dmae(bp, NIG_REG_STAT2_BRB_OCTET, 2);
+       val = *bnx2x_sp(bp, wb_data[0]);
+
+       /* do internal memory self test */
+       if ((CHIP_IS_E1(bp)) && (val == 0) && bnx2x_int_mem_test(bp)) {
+               BNX2X_ERR("internal mem self test failed\n");
+               return -EBUSY;
+       }
+
+       switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+               /* Fan failure is indicated by SPIO 5 */
+               bnx2x_set_spio(bp, MISC_REGISTERS_SPIO_5,
+                              MISC_REGISTERS_SPIO_INPUT_HI_Z);
+
+               /* set to active low mode */
+               val = REG_RD(bp, MISC_REG_SPIO_INT);
+               val |= ((1 << MISC_REGISTERS_SPIO_5) <<
+                                       MISC_REGISTERS_SPIO_INT_OLD_SET_POS);
+               REG_WR(bp, MISC_REG_SPIO_INT, val);
+
+               /* enable interrupt to signal the IGU */
+               val = REG_RD(bp, MISC_REG_SPIO_EVENT_EN);
+               val |= (1 << MISC_REGISTERS_SPIO_5);
+               REG_WR(bp, MISC_REG_SPIO_EVENT_EN, val);
+               break;
+
+       default:
+               break;
+       }
+
+       /* clear PXP2 attentions */
+       REG_RD(bp, PXP2_REG_PXP2_INT_STS_CLR_0);
+
+       enable_blocks_attention(bp);
+#ifdef BNX2X_EXTRA_DEBUG /* ! BNX2X_UPSTREAM */
+       enable_blocks_parity(bp);
+#endif
+
+       if (!BP_NOMCP(bp)) {
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_common_init_phy(bp, bp->common.shmem_base);
+               bnx2x_release_phy_lock(bp);
+       } else
+               BNX2X_ERR("Bootcode is missing - can not initialize link\n");
+
+       return 0;
+}
+
+static int bnx2x_init_port(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 low, high;
+       u32 val;
+
+       DP(BNX2X_MSG_MCP, "starting port init  port %x\n", port);
+
+       REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0);
+
+       /* Port PXP comes here */
+       /* Port PXP2 comes here */
+       /* Port CMs come here */
+
+#ifdef BCM_CNIC
+       REG_WR(bp, QM_REG_CONNNUM_0 + port*4, 1024/16 - 1);
+
+       bnx2x_init_block(bp, port ? TIMERS_PORT1_START : TIMERS_PORT0_START,
+                            port ? TIMERS_PORT1_END : TIMERS_PORT0_END);
+       REG_WR(bp, TM_REG_LIN0_SCAN_TIME + port*4, 20);
+       REG_WR(bp, TM_REG_LIN0_MAX_ACTIVE_CID + port*4, 31);
+#endif
+
+       /* Port DQ comes here */
+
+       if (CHIP_REV_IS_SLOW(bp) && !CHIP_IS_E1H(bp)) {
+               /* no pause for emulation and FPGA */
+               low = 0;
+               high = 513;
+       } else {
+               if (IS_E1HMF(bp))
+                       low = (bp->flags & ONE_PORT_FLAG) ? 160 : 246;
+               else if (bp->dev->mtu > 4096) {
+                       if (bp->flags & ONE_PORT_FLAG)
+                               low = 160;
+                       else {
+                               val = bp->dev->mtu;
+                               /* (24*1024 + val*4)/256 */
+                               low = 96 + (val/64) + ((val % 64) ? 1 : 0);
+                       }
+               } else
+                       low = (bp->flags & ONE_PORT_FLAG) ? 80 : 160;
+               high = low + 56;        /* 14*1024/256 */
+       }
+       REG_WR(bp, BRB1_REG_PAUSE_LOW_THRESHOLD_0 + port*4, low);
+       REG_WR(bp, BRB1_REG_PAUSE_HIGH_THRESHOLD_0 + port*4, high);
+
+       /* Port PRS comes here */
+       /* Port TSDM comes here */
+       /* Port CSDM comes here */
+       /* Port USDM comes here */
+       /* Port XSDM comes here */
+
+       bnx2x_init_block(bp, port ? TSEM_PORT1_START : TSEM_PORT0_START,
+                            port ? TSEM_PORT1_END : TSEM_PORT0_END);
+       bnx2x_init_block(bp, port ? USEM_PORT1_START : USEM_PORT0_START,
+                            port ? USEM_PORT1_END : USEM_PORT0_END);
+       bnx2x_init_block(bp, port ? CSEM_PORT1_START : CSEM_PORT0_START,
+                            port ? CSEM_PORT1_END : CSEM_PORT0_END);
+       bnx2x_init_block(bp, port ? XSEM_PORT1_START : XSEM_PORT0_START,
+                            port ? XSEM_PORT1_END : XSEM_PORT0_END);
+
+       /* Port UPB comes here */
+       /* Port XPB comes here */
+
+       bnx2x_init_block(bp, port ? PBF_PORT1_START : PBF_PORT0_START,
+                            port ? PBF_PORT1_END : PBF_PORT0_END);
+
+       /* configure PBF to work without PAUSE mtu 9000 */
+       REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 0);
+
+       /* update threshold */
+       REG_WR(bp, PBF_REG_P0_ARB_THRSH + port*4, (9040/16));
+       /* update init credit */
+       REG_WR(bp, PBF_REG_P0_INIT_CRD + port*4, (9040/16) + 553 - 22);
+
+       /* probe changes */
+       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 1);
+       msleep(5);
+       REG_WR(bp, PBF_REG_INIT_P0 + port*4, 0);
+
+#ifdef BCM_CNIC
+       /* Port SRCH comes here */
+#endif
+       /* Port CDU comes here */
+       /* Port CFC comes here */
+
+       if (CHIP_IS_E1(bp)) {
+               REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0);
+               REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0);
+       }
+       bnx2x_init_block(bp, port ? HC_PORT1_START : HC_PORT0_START,
+                            port ? HC_PORT1_END : HC_PORT0_END);
+
+       bnx2x_init_block(bp, port ? MISC_AEU_PORT1_START :
+                                   MISC_AEU_PORT0_START,
+                            port ? MISC_AEU_PORT1_END : MISC_AEU_PORT0_END);
+       /* init aeu_mask_attn_func_0/1:
+        *  - SF mode: bits 3-7 are masked. only bits 0-2 are in use
+        *  - MF mode: bit 3 is masked. bits 0-2 are in use as in SF
+        *             bits 4-7 are used for "per vn group attention" */
+       REG_WR(bp, MISC_REG_AEU_MASK_ATTN_FUNC_0 + port*4,
+              (IS_E1HMF(bp) ? 0xF7 : 0x7));
+
+       /* Port PXPCS comes here */
+       /* Port EMAC0 comes here */
+       /* Port EMAC1 comes here */
+       /* Port DBU comes here */
+       /* Port DBG comes here */
+
+       bnx2x_init_block(bp, port ? NIG_PORT1_START : NIG_PORT0_START,
+                            port ? NIG_PORT1_END : NIG_PORT0_END);
+
+       REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 1);
+
+       if (CHIP_IS_E1H(bp))
+               /* 0x2 disable e1hov, 0x1 enable */
+               REG_WR(bp, NIG_REG_LLH0_BRB1_DRV_MASK_MF + port*4,
+                      (IS_E1HMF(bp) ? 0x1 : 0x2));
+
+       /* Port MCP comes here */
+       /* Port DMAE comes here */
+
+       switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) {
+       case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+               /* add SPIO 5 to group 0 */
+               val = REG_RD(bp, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0);
+               val |= AEU_INPUTS_ATTN_BITS_SPIO5;
+               REG_WR(bp, MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0, val);
+               break;
+
+       default:
+               break;
+       }
+
+       bnx2x__link_reset(bp);
+
+       return 0;
+}
+
+#define ILT_PER_FUNC           (768/2)
+#define FUNC_ILT_BASE(func)    (func * ILT_PER_FUNC)
+/* the phys address is shifted right 12 bits and has an added
+   1=valid bit added to the 53rd bit
+   then since this is a wide register(TM)
+   we split it into two 32 bit writes
+ */
+#define ONCHIP_ADDR1(x)                ((u32)(((u64)x >> 12) & 0xFFFFFFFF))
+#define ONCHIP_ADDR2(x)                ((u32)((1 << 20) | ((u64)x >> 44)))
+#define PXP_ONE_ILT(x)         (((x) << 10) | x)
+#define PXP_ILT_RANGE(f, l)    (((l) << 10) | f)
+
+#ifdef BCM_CNIC
+#define CNIC_ILT_LINES         127
+#define CNIC_CTX_PER_ILT       16
+#else
+#define CNIC_ILT_LINES         0
+#endif
+
+static void bnx2x_ilt_wr(struct bnx2x *bp, u32 index, dma_addr_t addr)
+{
+       int reg;
+
+       if (CHIP_IS_E1H(bp))
+               reg = PXP2_REG_RQ_ONCHIP_AT_B0 + index*8;
+       else /* E1 */
+               reg = PXP2_REG_RQ_ONCHIP_AT + index*8;
+
+       bnx2x_wb_wr(bp, reg, ONCHIP_ADDR1(addr), ONCHIP_ADDR2(addr));
+}
+
+static int bnx2x_init_func(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       int func = BP_FUNC(bp);
+       int i;
+
+       DP(BNX2X_MSG_MCP, "starting func init  func %x\n", func);
+
+       i = FUNC_ILT_BASE(func);
+
+       bnx2x_ilt_wr(bp, i, bnx2x_sp_mapping(bp, context));
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, PXP2_REG_RQ_CDU_FIRST_ILT, i);
+               REG_WR(bp, PXP2_REG_RQ_CDU_LAST_ILT, i + CNIC_ILT_LINES);
+       } else /* E1 */
+               REG_WR(bp, PXP2_REG_PSWRQ_CDU0_L2P + func*4,
+                      PXP_ILT_RANGE(i, i + CNIC_ILT_LINES));
+
+#ifdef BCM_CNIC
+       i += 1 + CNIC_ILT_LINES;
+       bnx2x_ilt_wr(bp, i, bp->timers_mapping);
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, PXP2_REG_RQ_TM_FIRST_ILT, i);
+               REG_WR(bp, PXP2_REG_RQ_TM_LAST_ILT, i);
+       } else /* E1 */
+               REG_WR(bp, PXP2_REG_PSWRQ_TM0_L2P + func*4, PXP_ONE_ILT(i));
+
+       i++;
+       bnx2x_ilt_wr(bp, i, bp->qm_mapping);
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, PXP2_REG_RQ_QM_FIRST_ILT, i);
+               REG_WR(bp, PXP2_REG_RQ_QM_LAST_ILT, i);
+       } else /* E1 */
+               REG_WR(bp, PXP2_REG_PSWRQ_QM0_L2P + func*4, PXP_ONE_ILT(i));
+
+       i++;
+       bnx2x_ilt_wr(bp, i, bp->t1_mapping);
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, PXP2_REG_RQ_SRC_FIRST_ILT, i);
+               REG_WR(bp, PXP2_REG_RQ_SRC_LAST_ILT, i);
+       } else /* E1 */
+               REG_WR(bp, PXP2_REG_PSWRQ_SRC0_L2P + func*4, PXP_ONE_ILT(i));
+
+       /* tell the searcher where the T2 table is */
+       REG_WR(bp, SRC_REG_COUNTFREE0 + func*4, 16*1024/64);
+
+       bnx2x_wb_wr(bp, SRC_REG_FIRSTFREE0 + func*16,
+                   U64_LO(bp->t2_mapping), U64_HI(bp->t2_mapping));
+
+       bnx2x_wb_wr(bp, SRC_REG_LASTFREE0 + func*16,
+                   U64_LO((u64)bp->t2_mapping + 16*1024 - 64),
+                   U64_HI((u64)bp->t2_mapping + 16*1024 - 64));
+
+       REG_WR(bp, SRC_REG_NUMBER_HASH_BITS0 + func*4, 10);
+#endif
+
+       if (CHIP_IS_E1H(bp)) {
+               for (i = 0; i < 9; i++)
+                       bnx2x_init_block(bp,
+                                        cm_start[func][i], cm_end[func][i]);
+
+               REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1);
+               REG_WR(bp, NIG_REG_LLH0_FUNC_VLAN_ID + port*8, bp->e1hov);
+       }
+
+       /* HC init per function */
+       if (CHIP_IS_E1H(bp)) {
+               REG_WR(bp, MISC_REG_AEU_GENERAL_ATTN_12 + func*4, 0);
+
+               REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0);
+               REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0);
+       }
+       bnx2x_init_block(bp, hc_limits[func][0], hc_limits[func][1]);
+
+       if (CHIP_IS_E1H(bp))
+               REG_WR(bp, HC_REG_FUNC_NUM_P0 + port*4, func);
+
+       /* Reset PCIE errors for debug */
+       REG_WR(bp, 0x2114, 0xffffffff);
+       REG_WR(bp, 0x2120, 0xffffffff);
+
+       return 0;
+}
+
+static int bnx2x_init_hw(struct bnx2x *bp, u32 load_code)
+{
+       int i, rc = 0;
+
+       DP(BNX2X_MSG_MCP, "function %d  load_code %x\n",
+          BP_FUNC(bp), load_code);
+
+       bp->dmae_ready = 0;
+       mutex_init(&bp->dmae_mutex);
+       bnx2x_gunzip_init(bp);
+
+       switch (load_code) {
+       case FW_MSG_CODE_DRV_LOAD_COMMON:
+               rc = bnx2x_init_common(bp);
+               if (rc)
+                       goto init_hw_err;
+               /* no break */
+
+       case FW_MSG_CODE_DRV_LOAD_PORT:
+               bp->dmae_ready = 1;
+               rc = bnx2x_init_port(bp);
+               if (rc)
+                       goto init_hw_err;
+               /* no break */
+
+       case FW_MSG_CODE_DRV_LOAD_FUNCTION:
+               bp->dmae_ready = 1;
+               rc = bnx2x_init_func(bp);
+               if (rc)
+                       goto init_hw_err;
+               break;
+
+       default:
+               BNX2X_ERR("Unknown load_code (0x%x) from MCP\n", load_code);
+               break;
+       }
+
+       if (!BP_NOMCP(bp)) {
+               int func = BP_FUNC(bp);
+
+               bp->fw_drv_pulse_wr_seq =
+                               (SHMEM_RD(bp, func_mb[func].drv_pulse_mb) &
+                                DRV_PULSE_SEQ_MASK);
+               bp->func_stx = SHMEM_RD(bp, func_mb[func].fw_mb_param);
+               DP(BNX2X_MSG_MCP, "drv_pulse 0x%x  func_stx 0x%x\n",
+                  bp->fw_drv_pulse_wr_seq, bp->func_stx);
+       } else
+               bp->func_stx = 0;
+
+       /* this needs to be done before gunzip end */
+       bnx2x_zero_def_sb(bp);
+       for_each_queue(bp, i)
+               bnx2x_zero_sb(bp, BP_L_ID(bp) + i);
+#ifdef BCM_CNIC
+       bnx2x_zero_sb(bp, BP_L_ID(bp) + i);
+#endif
+
+init_hw_err:
+       bnx2x_gunzip_end(bp);
+
+       return rc;
+}
+
+/* send the MCP a request, block until there is a reply */
+static u32 bnx2x_fw_command(struct bnx2x *bp, u32 command)
+{
+       int func = BP_FUNC(bp);
+       u32 seq = ++bp->fw_seq;
+       u32 rc = 0;
+       u32 cnt = 1;
+       u8 delay = CHIP_REV_IS_SLOW(bp) ? 100 : 10;
+
+       SHMEM_WR(bp, func_mb[func].drv_mb_header, (command | seq));
+       DP(BNX2X_MSG_MCP, "wrote command (%x) to FW MB\n", (command | seq));
+
+       do {
+               /* let the FW do it's magic ... */
+               msleep(delay);
+
+               rc = SHMEM_RD(bp, func_mb[func].fw_mb_header);
+
+               /* Give the FW up to 2 second (200*10ms) */
+       } while ((seq != (rc & FW_MSG_SEQ_NUMBER_MASK)) && (cnt++ < 200));
+
+       DP(BNX2X_MSG_MCP, "[after %d ms] read (%x) seq is (%x) from FW MB\n",
+          cnt*delay, rc, seq);
+
+       /* is this a reply to our command? */
+       if (seq == (rc & FW_MSG_SEQ_NUMBER_MASK)) {
+               rc &= FW_MSG_CODE_MASK;
+
+       } else {
+               /* FW BUG! */
+               BNX2X_ERR("FW failed to respond!\n");
+               bnx2x_fw_dump(bp);
+               rc = 0;
+       }
+
+       return rc;
+}
+
+static void bnx2x_free_mem(struct bnx2x *bp)
+{
+
+#define BNX2X_PCI_FREE(x, y, size) \
+       do { \
+               if (x) { \
+                       pci_free_consistent(bp->pdev, size, x, y); \
+                       x = NULL; \
+                       y = 0; \
+               } \
+       } while (0)
+
+#define BNX2X_FREE(x) \
+       do { \
+               if (x) { \
+                       vfree(x); \
+                       x = NULL; \
+               } \
+       } while (0)
+
+       int i;
+
+       /* fastpath */
+       for_each_queue(bp, i) {
+
+               /* Status blocks */
+               BNX2X_PCI_FREE(bnx2x_fp(bp, i, status_blk),
+                              bnx2x_fp(bp, i, status_blk_mapping),
+                              sizeof(struct host_status_block) +
+                              sizeof(struct eth_tx_db_data));
+
+               /* fast path rings: tx_buf tx_desc rx_buf rx_desc rx_comp */
+               BNX2X_FREE(bnx2x_fp(bp, i, tx_buf_ring));
+               BNX2X_PCI_FREE(bnx2x_fp(bp, i, tx_desc_ring),
+                              bnx2x_fp(bp, i, tx_desc_mapping),
+                              sizeof(struct eth_tx_bd) * NUM_TX_BD);
+
+               BNX2X_FREE(bnx2x_fp(bp, i, rx_buf_ring));
+               BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_desc_ring),
+                              bnx2x_fp(bp, i, rx_desc_mapping),
+                              sizeof(struct eth_rx_bd) * NUM_RX_BD);
+
+               BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_comp_ring),
+                              bnx2x_fp(bp, i, rx_comp_mapping),
+                              sizeof(struct eth_fast_path_rx_cqe) *
+                              NUM_RCQ_BD);
+
+               /* SGE ring */
+               BNX2X_FREE(bnx2x_fp(bp, i, rx_page_ring));
+               BNX2X_PCI_FREE(bnx2x_fp(bp, i, rx_sge_ring),
+                              bnx2x_fp(bp, i, rx_sge_mapping),
+                              BCM_PAGE_SIZE * NUM_RX_SGE_PAGES);
+       }
+       /* end of fastpath */
+
+       BNX2X_PCI_FREE(bp->def_status_blk, bp->def_status_blk_mapping,
+                      sizeof(struct host_def_status_block));
+
+       BNX2X_PCI_FREE(bp->slowpath, bp->slowpath_mapping,
+                      sizeof(struct bnx2x_slowpath));
+
+#ifdef BCM_CNIC
+       BNX2X_PCI_FREE(bp->t1, bp->t1_mapping, 64*1024);
+       BNX2X_PCI_FREE(bp->t2, bp->t2_mapping, 16*1024);
+       BNX2X_PCI_FREE(bp->timers, bp->timers_mapping, 8*1024);
+       BNX2X_PCI_FREE(bp->qm, bp->qm_mapping, 128*1024);
+       BNX2X_PCI_FREE(bp->cnic_sb, bp->cnic_sb_mapping,
+                      sizeof(struct host_status_block));
+#endif
+       BNX2X_PCI_FREE(bp->spq, bp->spq_mapping, BCM_PAGE_SIZE);
+
+#undef BNX2X_PCI_FREE
+#undef BNX2X_KFREE
+}
+
+static int bnx2x_alloc_mem(struct bnx2x *bp)
+{
+
+#define BNX2X_PCI_ALLOC(x, y, size) \
+       do { \
+               x = pci_alloc_consistent(bp->pdev, size, y); \
+               if (x == NULL) \
+                       goto alloc_mem_err; \
+               memset(x, 0, size); \
+       } while (0)
+
+#define BNX2X_ALLOC(x, size) \
+       do { \
+               x = vmalloc(size); \
+               if (x == NULL) \
+                       goto alloc_mem_err; \
+               memset(x, 0, size); \
+       } while (0)
+
+       int i;
+
+       /* fastpath */
+       for_each_queue(bp, i) {
+               bnx2x_fp(bp, i, bp) = bp;
+
+               /* Status blocks */
+               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, status_blk),
+                               &bnx2x_fp(bp, i, status_blk_mapping),
+                               sizeof(struct host_status_block) +
+                               sizeof(struct eth_tx_db_data));
+
+               bnx2x_fp(bp, i, hw_tx_prods) =
+                               (void *)(bnx2x_fp(bp, i, status_blk) + 1);
+
+               bnx2x_fp(bp, i, tx_prods_mapping) =
+                               bnx2x_fp(bp, i, status_blk_mapping) +
+                               sizeof(struct host_status_block);
+
+               /* fast path rings: tx_buf tx_desc rx_buf rx_desc rx_comp */
+               BNX2X_ALLOC(bnx2x_fp(bp, i, tx_buf_ring),
+                               sizeof(struct sw_tx_bd) * NUM_TX_BD);
+               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, tx_desc_ring),
+                               &bnx2x_fp(bp, i, tx_desc_mapping),
+                               sizeof(struct eth_tx_bd) * NUM_TX_BD);
+
+               BNX2X_ALLOC(bnx2x_fp(bp, i, rx_buf_ring),
+                               sizeof(struct sw_rx_bd) * NUM_RX_BD);
+               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_desc_ring),
+                               &bnx2x_fp(bp, i, rx_desc_mapping),
+                               sizeof(struct eth_rx_bd) * NUM_RX_BD);
+
+               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_comp_ring),
+                               &bnx2x_fp(bp, i, rx_comp_mapping),
+                               sizeof(struct eth_fast_path_rx_cqe) *
+                               NUM_RCQ_BD);
+
+               /* SGE ring */
+               BNX2X_ALLOC(bnx2x_fp(bp, i, rx_page_ring),
+                               sizeof(struct sw_rx_page) * NUM_RX_SGE);
+               BNX2X_PCI_ALLOC(bnx2x_fp(bp, i, rx_sge_ring),
+                               &bnx2x_fp(bp, i, rx_sge_mapping),
+                               BCM_PAGE_SIZE * NUM_RX_SGE_PAGES);
+       }
+       /* end of fastpath */
+
+       BNX2X_PCI_ALLOC(bp->def_status_blk, &bp->def_status_blk_mapping,
+                       sizeof(struct host_def_status_block));
+
+       BNX2X_PCI_ALLOC(bp->slowpath, &bp->slowpath_mapping,
+                       sizeof(struct bnx2x_slowpath));
+
+#ifdef BCM_CNIC
+       BNX2X_PCI_ALLOC(bp->t1, &bp->t1_mapping, 64*1024);
+
+       /* Initialize T1 */
+       memset(bp->t1, 0, 64*1024);
+
+       /* allocate searcher T2 table
+          we allocate 1/4 of alloc num for T2
+         (which is not entered into the ILT) */
+       BNX2X_PCI_ALLOC(bp->t2, &bp->t2_mapping, 16*1024);
+
+       /* Initialize T2 (for 1024 connections) */
+       memset(bp->t2, 0, 16*1024);
+       for (i = 0; i < 16*1024; i += 64)
+               *(u64 *)((char *)bp->t2 + i + 56) = bp->t2_mapping + i + 64;
+
+       /* Timer block array (8*MAX_CONN) phys uncached for now 1024 conns */
+       BNX2X_PCI_ALLOC(bp->timers, &bp->timers_mapping, 8*1024);
+
+       /* QM queues (128*MAX_CONN) */
+       BNX2X_PCI_ALLOC(bp->qm, &bp->qm_mapping, 128*1024);
+
+       BNX2X_PCI_ALLOC(bp->cnic_sb, &bp->cnic_sb_mapping,
+                       sizeof(struct host_status_block));
+#endif
+
+       /* Slow path ring */
+       BNX2X_PCI_ALLOC(bp->spq, &bp->spq_mapping, BCM_PAGE_SIZE);
+
+       return 0;
+
+alloc_mem_err:
+       bnx2x_free_mem(bp);
+       return -ENOMEM;
+
+#undef BNX2X_PCI_ALLOC
+#undef BNX2X_ALLOC
+}
+
+static void bnx2x_free_tx_skbs(struct bnx2x *bp)
+{
+       int i;
+
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               u16 bd_cons = fp->tx_bd_cons;
+               u16 sw_prod = fp->tx_pkt_prod;
+               u16 sw_cons = fp->tx_pkt_cons;
+
+               while (sw_cons != sw_prod) {
+                       bd_cons = bnx2x_free_tx_pkt(bp, fp, TX_BD(sw_cons));
+                       sw_cons++;
+               }
+       }
+}
+
+static void bnx2x_free_rx_skbs(struct bnx2x *bp)
+{
+       int i, j;
+
+       for_each_queue(bp, j) {
+               struct bnx2x_fastpath *fp = &bp->fp[j];
+
+               for (i = 0; i < NUM_RX_BD; i++) {
+                       struct sw_rx_bd *rx_buf = &fp->rx_buf_ring[i];
+                       struct sk_buff *skb = rx_buf->skb;
+
+                       if (skb == NULL)
+                               continue;
+
+                       pci_unmap_single(bp->pdev,
+                                        pci_unmap_addr(rx_buf, mapping),
+                                        bp->rx_buf_size, PCI_DMA_FROMDEVICE);
+
+                       rx_buf->skb = NULL;
+                       dev_kfree_skb(skb);
+               }
+               if (!fp->disable_tpa)
+                       bnx2x_free_tpa_pool(bp, fp, CHIP_IS_E1(bp) ?
+                                           ETH_MAX_AGGREGATION_QUEUES_E1 :
+                                           ETH_MAX_AGGREGATION_QUEUES_E1H);
+       }
+}
+
+static void bnx2x_free_skbs(struct bnx2x *bp)
+{
+       bnx2x_free_tx_skbs(bp);
+       bnx2x_free_rx_skbs(bp);
+}
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+static void bnx2x_free_msix_irqs(struct bnx2x *bp)
+{
+       int i, offset = 1;
+
+       free_irq(bp->msix_table[0].vector, bp->dev);
+       DP(NETIF_MSG_IFDOWN, "released sp irq (%d)\n",
+          bp->msix_table[0].vector);
+
+#ifdef BCM_CNIC
+       offset++;
+#endif
+       for_each_queue(bp, i) {
+               DP(NETIF_MSG_IFDOWN, "about to release fp #%d->%d irq  "
+                  "state %x\n", i, bp->msix_table[i + offset].vector,
+                  bnx2x_fp(bp, i, state));
+
+               free_irq(bp->msix_table[i + offset].vector, &bp->fp[i]);
+       }
+}
+#endif
+
+static void bnx2x_free_irq(struct bnx2x *bp)
+{
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       if (bp->flags & USING_MSIX_FLAG) {
+               bnx2x_free_msix_irqs(bp);
+               pci_disable_msix(bp->pdev);
+               bp->flags &= ~USING_MSIX_FLAG;
+
+       } else if (bp->flags & USING_MSI_FLAG) {
+               free_irq(bp->pdev->irq, bp->dev);
+               pci_disable_msi(bp->pdev);
+               bp->flags &= ~USING_MSIX_FLAG;
+
+       } else
+#endif
+               free_irq(bp->pdev->irq, bp->dev);
+}
+
+static int bnx2x_enable_msix(struct bnx2x *bp)
+{
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       int i, rc, offset = 1;
+
+       bp->msix_table[0].entry = 0;
+       DP(NETIF_MSG_IFUP, "msix_table[0].entry = 0 (slowpath)\n");
+
+#ifdef BCM_CNIC
+       bp->msix_table[1].entry = 1;
+       DP(NETIF_MSG_IFUP, "msix_table[1].entry = 1 (CNIC)\n");
+       offset++;
+#endif
+       for_each_queue(bp, i) {
+               int igu_vec = offset + i + BP_L_ID(bp);
+
+               bp->msix_table[i + offset].entry = igu_vec;
+               DP(NETIF_MSG_IFUP, "msix_table[%d].entry = %d "
+                  "(fastpath #%u)\n", i + offset, igu_vec, i);
+       }
+
+       rc = pci_enable_msix(bp->pdev, &bp->msix_table[0],
+                            bp->num_queues + offset);
+       if (rc) {
+               DP(NETIF_MSG_IFUP, "MSI-X is not attainable\n");
+               return -1;
+       }
+       bp->flags |= USING_MSIX_FLAG;
+
+       return 0;
+#else
+       return -1;
+#endif
+}
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+static int bnx2x_req_msix_irqs(struct bnx2x *bp)
+{
+       int i, rc, offset = 1;
+
+       rc = request_irq(bp->msix_table[0].vector, bnx2x_msix_sp_int, 0,
+                        bp->dev->name, bp->dev);
+       if (rc) {
+               BNX2X_ERR("request sp irq failed\n");
+               return -EBUSY;
+       }
+
+#ifdef BCM_CNIC
+       /* leave FP 1 for CNIC */
+       offset++;
+#endif
+       for_each_queue(bp, i) {
+               rc = request_irq(bp->msix_table[i + offset].vector,
+                                bnx2x_msix_fp_int, 0,
+                                bp->dev->name, &bp->fp[i]);
+               if (rc) {
+                       BNX2X_ERR("request fp #%d irq failed  rc -%d\n",
+                                 i, -rc);
+                       bnx2x_free_msix_irqs(bp);
+                       return -EBUSY;
+               }
+
+               bnx2x_fp(bp, i, state) = BNX2X_FP_STATE_IRQ;
+       }
+
+       return 0;
+}
+
+static int bnx2x_enable_msi(struct bnx2x *bp)
+{
+       int rc;
+
+       rc = pci_enable_msi(bp->pdev);
+       if (rc) {
+               DP(NETIF_MSG_IFUP, "MSI is not attainable\n");
+               return -1;
+       }
+       bp->flags |= USING_MSI_FLAG;
+
+       return 0;
+}
+#endif
+
+static int bnx2x_req_irq(struct bnx2x *bp)
+{
+       unsigned long flags;
+       int rc;
+
+       if (bp->flags & USING_MSI_FLAG)
+               flags = 0;
+       else
+               flags = IRQF_SHARED;
+
+       rc = request_irq(bp->pdev->irq, bnx2x_interrupt, flags,
+                        bp->dev->name, bp->dev);
+       if (!rc)
+               bnx2x_fp(bp, 0, state) = BNX2X_FP_STATE_IRQ;
+
+       return rc;
+}
+
+static void bnx2x_napi_enable(struct bnx2x *bp)
+{
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       int i;
+
+       for_each_queue(bp, i)
+               napi_enable(&bnx2x_fp(bp, i, napi));
+#else
+       netif_poll_enable(bp->dev);
+#endif
+}
+
+static void bnx2x_napi_disable(struct bnx2x *bp)
+{
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       int i;
+
+       for_each_queue(bp, i)
+               napi_disable(&bnx2x_fp(bp, i, napi));
+#else
+       netif_poll_disable(bp->dev);
+#endif
+}
+
+static void bnx2x_netif_start(struct bnx2x *bp)
+{
+       if (atomic_dec_and_test(&bp->intr_sem)) {
+               if (netif_running(bp->dev)) {
+                       bnx2x_napi_enable(bp);
+                       bnx2x_int_enable(bp);
+                       if (bp->state == BNX2X_STATE_OPEN)
+                               netif_wake_queue(bp->dev);
+               }
+       }
+}
+
+static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
+{
+       bnx2x_int_disable_sync(bp, disable_hw);
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       bnx2x_napi_disable(bp);
+#endif
+       if (netif_running(bp->dev)) {
+#ifndef BNX2X_NEW_NAPI /* ! BNX2X_UPSTREAM */
+               bnx2x_napi_disable(bp);
+#endif
+               netif_tx_disable(bp->dev);
+               bp->dev->trans_start = jiffies; /* prevent tx timeout */
+       }
+}
+
+/*
+ * Init service functions
+ */
+
+static void bnx2x_set_mac_addr_e1(struct bnx2x *bp, int set)
+{
+       struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config);
+       int port = BP_PORT(bp);
+
+       /* CAM allocation
+        * unicasts 0-31:port0 32-63:port1
+        * multicast 64-127:port0 128-191:port1
+        */
+       config->hdr.length = 2;
+       config->hdr.offset = port ? 31 : 0;
+       config->hdr.client_id = BP_CL_ID(bp);
+       config->hdr.reserved1 = 0;
+
+       /* primary MAC */
+       config->config_table[0].cam_entry.msb_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[0]);
+       config->config_table[0].cam_entry.middle_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[2]);
+       config->config_table[0].cam_entry.lsb_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[4]);
+       config->config_table[0].cam_entry.flags = cpu_to_le16(port);
+       if (set)
+               config->config_table[0].target_table_entry.flags = 0;
+       else
+               CAM_INVALIDATE(config->config_table[0]);
+       config->config_table[0].target_table_entry.client_id = 0;
+       config->config_table[0].target_table_entry.vlan_id = 0;
+
+       DP(NETIF_MSG_IFUP, "%s MAC (%04x:%04x:%04x)\n",
+          (set ? "setting" : "clearing"),
+          config->config_table[0].cam_entry.msb_mac_addr,
+          config->config_table[0].cam_entry.middle_mac_addr,
+          config->config_table[0].cam_entry.lsb_mac_addr);
+
+       /* broadcast */
+       config->config_table[1].cam_entry.msb_mac_addr = 0xffff;
+       config->config_table[1].cam_entry.middle_mac_addr = 0xffff;
+       config->config_table[1].cam_entry.lsb_mac_addr = 0xffff;
+       config->config_table[1].cam_entry.flags = cpu_to_le16(port);
+       if (set)
+               config->config_table[1].target_table_entry.flags =
+                               TSTORM_CAM_TARGET_TABLE_ENTRY_BROADCAST;
+       else
+               CAM_INVALIDATE(config->config_table[1]);
+       config->config_table[1].target_table_entry.client_id = 0;
+       config->config_table[1].target_table_entry.vlan_id = 0;
+
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
+                     U64_HI(bnx2x_sp_mapping(bp, mac_config)),
+                     U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0);
+}
+
+static void bnx2x_set_mac_addr_e1h(struct bnx2x *bp, int set)
+{
+       struct mac_configuration_cmd_e1h *config =
+               (struct mac_configuration_cmd_e1h *)bnx2x_sp(bp, mac_config);
+
+       if (set && (bp->state != BNX2X_STATE_OPEN)) {
+               DP(NETIF_MSG_IFUP, "state is %x, returning\n", bp->state);
+               return;
+       }
+
+       /* CAM allocation for E1H
+        * unicasts: by func number
+        * multicast: 20+FUNC*20, 20 each
+        */
+       config->hdr.length = 1;
+       config->hdr.offset = BP_FUNC(bp);
+       config->hdr.client_id = BP_CL_ID(bp);
+       config->hdr.reserved1 = 0;
+
+       /* primary MAC */
+       config->config_table[0].msb_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[0]);
+       config->config_table[0].middle_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[2]);
+       config->config_table[0].lsb_mac_addr =
+                                       swab16(*(u16 *)&bp->dev->dev_addr[4]);
+       config->config_table[0].client_id = BP_L_ID(bp);
+       config->config_table[0].vlan_id = 0;
+       config->config_table[0].e1hov_id = cpu_to_le16(bp->e1hov);
+       if (set)
+               config->config_table[0].flags = BP_PORT(bp);
+       else
+               config->config_table[0].flags =
+                               MAC_CONFIGURATION_ENTRY_E1H_ACTION_TYPE;
+
+       DP(NETIF_MSG_IFUP, "%s MAC (%04x:%04x:%04x)  E1HOV %d  CLID %d\n",
+          (set ? "setting" : "clearing"),
+          config->config_table[0].msb_mac_addr,
+          config->config_table[0].middle_mac_addr,
+          config->config_table[0].lsb_mac_addr, bp->e1hov, BP_L_ID(bp));
+
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
+                     U64_HI(bnx2x_sp_mapping(bp, mac_config)),
+                     U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0);
+}
+
+static int bnx2x_wait_ramrod(struct bnx2x *bp, int state, int idx,
+                            int *state_p, int poll)
+{
+       /* can take a while if any port is running */
+       int cnt = 500;
+
+       DP(NETIF_MSG_IFUP, "%s for state to become %x on IDX [%d]\n",
+          poll ? "polling" : "waiting", state, idx);
+
+       might_sleep();
+       while (cnt--) {
+               if (poll) {
+                       bnx2x_rx_int(bp->fp, 10);
+                       /* if index is different from 0
+                        * the reply for some commands will
+                        * be on the non default queue
+                        */
+                       if (idx)
+                               bnx2x_rx_int(&bp->fp[idx], 10);
+               }
+
+               mb(); /* state is changed by bnx2x_sp_event() */
+               if (*state_p == state)
+                       return 0;
+
+               msleep(1);
+       }
+
+       /* timeout! */
+       BNX2X_ERR("timeout %s for state %x on IDX [%d]\n",
+                 poll ? "polling" : "waiting", state, idx);
+#ifdef BNX2X_STOP_ON_ERROR
+       bnx2x_panic();
+#endif
+
+       return -EBUSY;
+}
+
+static int bnx2x_setup_leading(struct bnx2x *bp)
+{
+       int rc;
+
+       /* reset IGU state */
+       bnx2x_ack_sb(bp, bp->fp[0].sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
+
+       /* SETUP ramrod */
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_SETUP, 0, 0, 0, 0);
+
+       /* Wait for completion */
+       rc = bnx2x_wait_ramrod(bp, BNX2X_STATE_OPEN, 0, &(bp->state), 0);
+
+       return rc;
+}
+
+static int bnx2x_setup_multi(struct bnx2x *bp, int index)
+{
+       /* reset IGU state */
+       bnx2x_ack_sb(bp, bp->fp[index].sb_id, CSTORM_ID, 0, IGU_INT_ENABLE, 0);
+
+       /* SETUP ramrod */
+       bp->fp[index].state = BNX2X_FP_STATE_OPENING;
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CLIENT_SETUP, index, 0, index, 0);
+
+       /* Wait for completion */
+       return bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_OPEN, index,
+                                &(bp->fp[index].state), 0);
+}
+
+#ifdef BCM_CNIC
+static int bnx2x_cnic_notify(struct bnx2x *bp, int cmd);
+static void bnx2x_setup_cnic_irq_info(struct bnx2x *bp);
+#endif
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+static int bnx2x_poll(struct napi_struct *napi, int budget);
+#endif
+static void bnx2x_set_rx_mode(struct net_device *dev);
+
+/* must be called with rtnl_lock */
+static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
+{
+       u32 load_code;
+       int i, rc;
+#ifdef BNX2X_STOP_ON_ERROR
+       int msglevel;
+
+       DP(NETIF_MSG_IFUP, "enter\n");
+       if (unlikely(bp->panic))
+               return -EPERM;
+       msglevel = bp->msglevel;
+       bp->msglevel |= (BNX2X_MSG_FP | BNX2X_MSG_SP | NETIF_MSG_INTR);
+#endif
+
+       bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD;
+
+       switch (int_mode) {
+       case INT_MODE_INTx:
+       case INT_MODE_MSI:
+               bp->num_queues = 1;
+               DP(NETIF_MSG_IFUP,
+                  "set number of queues to %d\n", bp->num_queues);
+               break;
+
+       case INT_MODE_MSIX:
+       default:
+               /* if we can't use MSI-X we only need one fp,
+                * so try to enable MSI-X with the requested number of fp's
+                * and fallback to MSI or legacy INTx with one fp
+                */
+               switch (bp->multi_mode) {
+               case ETH_RSS_MODE_DISABLED:
+                       bp->num_queues = 1;
+                       break;
+               case ETH_RSS_MODE_REGULAR:
+                       bp->num_queues = min_t(u32, num_online_cpus(),
+                                              BNX2X_MAX_QUEUES(bp));
+                       break;
+               case ETH_RSS_MODE_VLAN_PRI:
+               case ETH_RSS_MODE_E1HOV_PRI:
+               case ETH_RSS_MODE_IP_DSCP:
+                       bp->num_queues = 1;
+                       for (i = 0; i < BNX2X_MAX_PRIORITY; i++)
+                               if ((bp->pri_map[i] + 1) > bp->num_queues)
+                                       bp->num_queues = (bp->pri_map[i] + 1);
+                       break;
+               default:
+                       bp->num_queues = 1;
+                       break;
+               }
+               DP(NETIF_MSG_IFUP,
+                  "set number of queues to %d\n", bp->num_queues);
+
+               if (bnx2x_enable_msix(bp)) {
+                       /* failed to enable MSI-X */
+                       bp->num_queues = 1;
+                       if (bp->multi_mode)
+                               BNX2X_ERR("Multi requested but failed to "
+                                         "enable MSI-X  set number of queues"
+                                         " to %d\n", bp->num_queues);
+               }
+       }
+
+       if (bnx2x_alloc_mem(bp))
+               return -ENOMEM;
+
+       for_each_queue(bp, i)
+               bnx2x_fp(bp, i, disable_tpa) =
+                                       ((bp->flags & TPA_ENABLE_FLAG) == 0);
+
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       for_each_queue(bp, i)
+               netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi),
+                              bnx2x_poll, 128);
+#endif
+
+#ifdef BNX2X_STOP_ON_ERROR
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               fp->poll_no_work = 0;
+               fp->poll_calls = 0;
+               fp->poll_max_calls = 0;
+               fp->poll_complete = 0;
+               fp->poll_exit = 0;
+       }
+#endif
+       bnx2x_napi_enable(bp);
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       if (bp->flags & USING_MSIX_FLAG) {
+               rc = bnx2x_req_msix_irqs(bp);
+               if (rc) {
+                       pci_disable_msix(bp->pdev);
+                       goto load_error1;
+               }
+               printk(KERN_INFO PFX "%s: using MSI-X\n", bp->dev->name);
+       } else {
+               if (int_mode != INT_MODE_INTx)
+                       bnx2x_enable_msi(bp);
+#else
+       {
+#endif
+               bnx2x_ack_int(bp);
+               rc = bnx2x_req_irq(bp);
+               if (rc) {
+                       BNX2X_ERR("IRQ request failed, aborting\n");
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+                       if (bp->flags & USING_MSI_FLAG)
+                               pci_disable_msi(bp->pdev);
+#endif
+                       goto load_error1;
+               }
+               if (bp->flags & USING_MSI_FLAG)
+                       printk(KERN_INFO PFX "%s: using MSI\n", bp->dev->name);
+       }
+
+       /* Send LOAD_REQUEST command to MCP
+          Returns the type of LOAD command:
+          if it is the first port to be initialized
+          common blocks should be initialized, otherwise - not
+       */
+       if (!BP_NOMCP(bp)) {
+               load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ);
+               if (!load_code) {
+                       BNX2X_ERR("MCP response failure, aborting\n");
+                       rc = -EBUSY;
+                       goto load_error2;
+               }
+               if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) {
+                       rc = -EBUSY; /* other port in diagnostic mode */
+                       goto load_error2;
+               }
+
+       } else {
+               int port = BP_PORT(bp);
+
+               DP(NETIF_MSG_IFUP, "NO MCP - load counts before us %d, %d, %d\n",
+                  load_count[0], load_count[1], load_count[2]);
+               load_count[0]++;
+               load_count[1 + port]++;
+               DP(NETIF_MSG_IFUP, "NO MCP - new load counts       %d, %d, %d\n",
+                  load_count[0], load_count[1], load_count[2]);
+               if (load_count[0] == 1)
+                       load_code = FW_MSG_CODE_DRV_LOAD_COMMON;
+               else if (load_count[1 + port] == 1)
+                       load_code = FW_MSG_CODE_DRV_LOAD_PORT;
+               else
+                       load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION;
+       }
+
+       if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
+           (load_code == FW_MSG_CODE_DRV_LOAD_PORT))
+               bp->port.pmf = 1;
+       else
+               bp->port.pmf = 0;
+       DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf);
+
+       /* Initialize HW */
+       rc = bnx2x_init_hw(bp, load_code);
+       if (rc) {
+               BNX2X_ERR("HW init failed, aborting\n");
+               goto load_error2;
+       }
+
+       /* Setup NIC internals and enable interrupts */
+       bnx2x_nic_init(bp, load_code);
+
+       /* Send LOAD_DONE command to MCP */
+       if (!BP_NOMCP(bp)) {
+               load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE);
+               if (!load_code) {
+                       BNX2X_ERR("MCP response failure, aborting\n");
+                       rc = -EBUSY;
+                       goto load_error3;
+               }
+       }
+
+       bnx2x_stats_init(bp);
+
+       bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
+
+       /* Enable Rx interrupt handling before sending the ramrod
+          as it's completed on Rx FP queue */
+       atomic_set(&bp->intr_sem, 0);
+
+       rc = bnx2x_setup_leading(bp);
+       if (rc) {
+               BNX2X_ERR("Setup leading failed!\n");
+               goto load_error3;
+       }
+
+       if (CHIP_IS_E1H(bp))
+               if (bp->mf_config & FUNC_MF_CFG_FUNC_DISABLED) {
+                       BNX2X_ERR("!!!  mf_cfg function disabled\n");
+                       bp->state = BNX2X_STATE_DISABLED;
+               }
+
+       if (bp->state == BNX2X_STATE_OPEN) {
+#ifdef BCM_CNIC
+               /* Enable Timer scan */
+               REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + BP_PORT(bp)*4, 1);
+#endif
+               for_each_nondefault_queue(bp, i) {
+                       rc = bnx2x_setup_multi(bp, i);
+                       if (rc)
+#ifdef BCM_CNIC
+                               goto load_error4;
+#else
+                               goto load_error3;
+#endif
+               }
+       }
+
+       if (CHIP_IS_E1(bp))
+               bnx2x_set_mac_addr_e1(bp, 1);
+       else
+               bnx2x_set_mac_addr_e1h(bp, 1);
+
+       if (bp->port.pmf)
+               bnx2x_initial_phy_init(bp);
+
+       /* Start fast path */
+       switch (load_mode) {
+       case LOAD_NORMAL:
+               /* Tx queue should be only reenabled */
+               netif_wake_queue(bp->dev);
+               /* Initialize the receive filter. */
+               bnx2x_set_rx_mode(bp->dev);
+               break;
+
+       case LOAD_OPEN:
+               netif_start_queue(bp->dev);
+               /* Initialize the receive filter. */
+               bnx2x_set_rx_mode(bp->dev);
+               break;
+
+       case LOAD_DIAG:
+               /* Initialize the receive filter. */
+               bnx2x_set_rx_mode(bp->dev);
+               bp->state = BNX2X_STATE_DIAG;
+               break;
+
+       default:
+               break;
+       }
+
+       if (!bp->port.pmf)
+               bnx2x__link_status_update(bp);
+
+       /* start the timer */
+       mod_timer(&bp->timer, jiffies + bp->current_interval);
+
+#ifdef BCM_CNIC
+       bnx2x_setup_cnic_irq_info(bp);
+       if (bp->state == BNX2X_STATE_OPEN)
+               bnx2x_cnic_notify(bp, CNIC_CTL_START_CMD);
+#endif
+
+#ifdef BNX2X_STOP_ON_ERROR
+       bp->msglevel = msglevel;
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               DP(NETIF_MSG_IFUP, "fp[%d]  no_work %ld  "
+                  "calls %ld  max_calls %ld  complete %ld  exit %ld\n", i,
+                  fp->poll_no_work, fp->poll_calls, fp->poll_max_calls,
+                  fp->poll_complete, fp->poll_exit);
+       }
+       DP(NETIF_MSG_IFUP, "exit\n");
+#endif
+
+       return 0;
+
+#ifdef BCM_CNIC
+load_error4:
+       /* Disable Timer scan */
+       REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + BP_PORT(bp)*4, 0);
+#endif
+load_error3:
+       bnx2x_int_disable_sync(bp, 1);
+       /* Free SKBs, SGEs, TPA pool and driver internals */
+       bnx2x_free_skbs(bp);
+       for_each_queue(bp, i)
+               bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
+load_error2:
+       /* Release IRQs */
+       bnx2x_free_irq(bp);
+load_error1:
+       bnx2x_napi_disable(bp);
+       bnx2x_free_mem(bp);
+
+       /* TBD we really need to reset the chip
+          if we want to recover from this */
+
+#ifdef BNX2X_STOP_ON_ERROR
+       bp->msglevel = msglevel;
+       DP(NETIF_MSG_IFUP, "exit\n");
+#endif
+
+       return rc;
+}
+
+static int bnx2x_stop_multi(struct bnx2x *bp, int index)
+{
+       int rc;
+
+       /* halt the connection */
+       bp->fp[index].state = BNX2X_FP_STATE_HALTING;
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, index, 0, index, 0);
+
+       /* Wait for completion */
+       rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, index,
+                              &(bp->fp[index].state), 1);
+       if (rc) /* timeout */
+               return rc;
+
+       /* delete cfc entry */
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_CFC_DEL, index, 0, 0, 1);
+
+       /* Wait for completion */
+       rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_CLOSED, index,
+                              &(bp->fp[index].state), 1);
+       return rc;
+}
+
+static int bnx2x_stop_leading(struct bnx2x *bp)
+{
+       u16 dsb_sp_prod_idx;
+       /* if the other port is handling traffic,
+          this can take a lot of time */
+       int cnt = 500;
+       int rc;
+
+       might_sleep();
+
+       /* Send HALT ramrod */
+       bp->fp[0].state = BNX2X_FP_STATE_HALTING;
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_HALT, 0, 0, BP_CL_ID(bp), 0);
+
+       /* Wait for completion */
+       rc = bnx2x_wait_ramrod(bp, BNX2X_FP_STATE_HALTED, 0,
+                              &(bp->fp[0].state), 1);
+       if (rc) /* timeout */
+               return rc;
+
+       dsb_sp_prod_idx = *bp->dsb_sp_prod;
+
+       /* Send PORT_DELETE ramrod */
+       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_PORT_DEL, 0, 0, 0, 1);
+
+       /* Wait for completion to arrive on default status block
+          we are going to reset the chip anyway
+          so there is not much to do if this times out
+        */
+       while (dsb_sp_prod_idx == *bp->dsb_sp_prod) {
+               if (!cnt) {
+                       DP(NETIF_MSG_IFDOWN, "timeout waiting for port del "
+                          "dsb_sp_prod 0x%x != dsb_sp_prod_idx 0x%x\n",
+                          *bp->dsb_sp_prod, dsb_sp_prod_idx);
+#ifdef BNX2X_STOP_ON_ERROR
+                       bnx2x_panic();
+#else
+                       rc = -EBUSY;
+#endif
+                       break;
+               }
+               cnt--;
+               msleep(1);
+       }
+       bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD;
+       bp->fp[0].state = BNX2X_FP_STATE_CLOSED;
+
+       return rc;
+}
+
+static void bnx2x_reset_func(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       int func = BP_FUNC(bp);
+       int base, i;
+
+       /* Configure IGU */
+       REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0);
+       REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0);
+
+       REG_WR(bp, HC_REG_CONFIG_0 + port*4, 0x1000);
+
+#ifdef BCM_CNIC
+       /* Disable Timer scan */
+       REG_WR(bp, TM_REG_EN_LINEAR0_TIMER + BP_PORT(bp)*4, 0);
+#endif
+
+       /* Clear ILT */
+       base = FUNC_ILT_BASE(func);
+       for (i = base; i < base + ILT_PER_FUNC; i++)
+               bnx2x_ilt_wr(bp, i, 0);
+}
+
+static void bnx2x_reset_port(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 val;
+
+       REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0);
+
+       /* Do not rcv packets to BRB */
+       REG_WR(bp, NIG_REG_LLH0_BRB1_DRV_MASK + port*4, 0x0);
+       /* Do not direct rcv packets that are not for MCP to the BRB */
+       REG_WR(bp, (port ? NIG_REG_LLH1_BRB1_NOT_MCP :
+                          NIG_REG_LLH0_BRB1_NOT_MCP), 0x0);
+
+       /* Configure AEU */
+       REG_WR(bp, MISC_REG_AEU_MASK_ATTN_FUNC_0 + port*4, 0);
+
+       msleep(100);
+       /* Check for BRB port occupancy */
+       val = REG_RD(bp, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port*4);
+       if (val)
+               DP(NETIF_MSG_IFDOWN,
+                  "BRB1 is not empty  %d blocks are occupied\n", val);
+
+       /* TODO: Close Doorbell port? */
+}
+
+static void bnx2x_reset_common(struct bnx2x *bp)
+{
+       /* reset_common */
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
+              0xd3ffff7f);
+       REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403);
+}
+
+static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code)
+{
+       DP(BNX2X_MSG_MCP, "function %d  reset_code %x\n",
+          BP_FUNC(bp), reset_code);
+
+       switch (reset_code) {
+       case FW_MSG_CODE_DRV_UNLOAD_COMMON:
+               bnx2x_reset_port(bp);
+               bnx2x_reset_func(bp);
+               bnx2x_reset_common(bp);
+               break;
+
+       case FW_MSG_CODE_DRV_UNLOAD_PORT:
+               bnx2x_reset_port(bp);
+               bnx2x_reset_func(bp);
+               break;
+
+       case FW_MSG_CODE_DRV_UNLOAD_FUNCTION:
+               bnx2x_reset_func(bp);
+               break;
+
+       default:
+               BNX2X_ERR("Unknown reset_code (0x%x) from MCP\n", reset_code);
+               break;
+       }
+}
+
+/* must be called with rtnl_lock */
+static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode)
+{
+       int port = BP_PORT(bp);
+       u32 reset_code = 0;
+       int i, cnt, rc;
+#ifdef BNX2X_STOP_ON_ERROR
+       int msglevel;
+
+       DP(NETIF_MSG_IFDOWN, "enter\n");
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               DP(NETIF_MSG_IFDOWN, "fp[%d]  no_work %ld  "
+                  "calls %ld  max_calls %ld  complete %ld  exit %ld\n", i,
+                  fp->poll_no_work, fp->poll_calls, fp->poll_max_calls,
+                  fp->poll_complete, fp->poll_exit);
+       }
+       msglevel = bp->msglevel;
+       bp->msglevel |= (BNX2X_MSG_FP | BNX2X_MSG_SP | NETIF_MSG_INTR);
+#endif
+
+#ifdef BCM_CNIC
+       bnx2x_cnic_notify(bp, CNIC_CTL_STOP_CMD);
+#endif
+
+       bp->state = BNX2X_STATE_CLOSING_WAIT4_HALT;
+
+       bp->rx_mode = BNX2X_RX_MODE_NONE;
+       bnx2x_set_storm_rx_mode(bp);
+
+       bnx2x_netif_stop(bp, 1);
+
+       del_timer_sync(&bp->timer);
+       SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb,
+                (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq));
+       bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+
+       /* Release IRQs */
+       bnx2x_free_irq(bp);
+
+       /* Wait until tx fast path tasks complete */
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               cnt = 1000;
+               smp_rmb();
+               while (BNX2X_HAS_TX_WORK(fp)) {
+
+                       bnx2x_tx_int(fp, 1000);
+                       if (!cnt) {
+                               BNX2X_ERR("timeout waiting for queue[%d]\n",
+                                         i);
+#ifdef BNX2X_STOP_ON_ERROR
+                               bnx2x_panic();
+                               return -EBUSY;
+#else
+                               break;
+#endif
+                       }
+                       cnt--;
+                       msleep(1);
+                       smp_rmb();
+               }
+       }
+       /* Give HW time to discard old tx messages */
+       msleep(1);
+
+       if (CHIP_IS_E1(bp)) {
+               struct mac_configuration_cmd *config =
+                                               bnx2x_sp(bp, mcast_config);
+
+               bnx2x_set_mac_addr_e1(bp, 0);
+
+               for (i = 0; i < config->hdr.length; i++)
+                       CAM_INVALIDATE(config->config_table[i]);
+
+               config->hdr.length = i;
+               if (CHIP_REV_IS_SLOW(bp))
+                       config->hdr.offset = BNX2X_MAX_EMUL_MULTI*(1 + port);
+               else
+                       config->hdr.offset = BNX2X_MAX_MULTICAST*(1 + port);
+               config->hdr.client_id = BP_CL_ID(bp);
+               config->hdr.reserved1 = 0;
+
+               bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
+                             U64_HI(bnx2x_sp_mapping(bp, mcast_config)),
+                             U64_LO(bnx2x_sp_mapping(bp, mcast_config)), 0);
+
+       } else { /* E1H */
+               REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 0);
+
+               bnx2x_set_mac_addr_e1h(bp, 0);
+
+               for (i = 0; i < MC_HASH_SIZE; i++)
+                       REG_WR(bp, MC_HASH_OFFSET(bp, i), 0);
+       }
+
+       if (unload_mode == UNLOAD_NORMAL)
+               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
+
+       else if (bp->flags & NO_WOL_FLAG) {
+               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP;
+               if (CHIP_IS_E1H(bp))
+                       REG_WR(bp, MISC_REG_E1HMF_MODE, 0);
+
+       } else if (bp->wol) {
+               u32 emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
+               u8 *mac_addr = bp->dev->dev_addr;
+               u32 val;
+               /* The mac address is written to entries 1-4 to
+                  preserve entry 0 which is used by the PMF */
+               u8 entry = (BP_E1HVN(bp) + 1)*8;
+
+               val = (mac_addr[0] << 8) | mac_addr[1];
+               EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + entry, val);
+
+               val = (mac_addr[2] << 24) | (mac_addr[3] << 16) |
+                     (mac_addr[4] << 8) | mac_addr[5];
+               EMAC_WR(bp, EMAC_REG_EMAC_MAC_MATCH + entry + 4, val);
+
+               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_EN;
+
+       } else
+               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
+
+       /* Close multi and leading connections
+          Completions for ramrods are collected in a synchronous way */
+       for_each_nondefault_queue(bp, i)
+               if (bnx2x_stop_multi(bp, i))
+                       goto unload_error;
+
+       rc = bnx2x_stop_leading(bp);
+       if (rc) {
+               BNX2X_ERR("Stop leading failed!\n");
+#ifdef BNX2X_STOP_ON_ERROR
+               return -EBUSY;
+#else
+               goto unload_error;
+#endif
+       }
+
+unload_error:
+       if (!BP_NOMCP(bp))
+               reset_code = bnx2x_fw_command(bp, reset_code);
+       else {
+               DP(NETIF_MSG_IFDOWN, "NO MCP - load counts      %d, %d, %d\n",
+                  load_count[0], load_count[1], load_count[2]);
+               load_count[0]--;
+               load_count[1 + port]--;
+               DP(NETIF_MSG_IFDOWN, "NO MCP - new load counts  %d, %d, %d\n",
+                  load_count[0], load_count[1], load_count[2]);
+               if (load_count[0] == 0)
+                       reset_code = FW_MSG_CODE_DRV_UNLOAD_COMMON;
+               else if (load_count[1 + port] == 0)
+                       reset_code = FW_MSG_CODE_DRV_UNLOAD_PORT;
+               else
+                       reset_code = FW_MSG_CODE_DRV_UNLOAD_FUNCTION;
+       }
+
+       if ((reset_code == FW_MSG_CODE_DRV_UNLOAD_COMMON) ||
+           (reset_code == FW_MSG_CODE_DRV_UNLOAD_PORT))
+               bnx2x__link_reset(bp);
+
+       /* Reset the chip */
+       bnx2x_reset_chip(bp, reset_code);
+
+       /* Report UNLOAD_DONE to MCP */
+       if (!BP_NOMCP(bp))
+               bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
+
+       /* Free SKBs, SGEs, TPA pool and driver internals */
+       bnx2x_free_skbs(bp);
+       for_each_queue(bp, i)
+               bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
+       bnx2x_free_mem(bp);
+
+       bp->state = BNX2X_STATE_CLOSED;
+
+       netif_carrier_off(bp->dev);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       bp->msglevel = msglevel;
+       for_each_queue(bp, i) {
+               struct bnx2x_fastpath *fp = &bp->fp[i];
+
+               DP(NETIF_MSG_IFDOWN, "fp[%d]  no_work %ld  "
+                  "calls %ld  max_calls %ld  complete %ld  exit %ld\n", i,
+                  fp->poll_no_work, fp->poll_calls, fp->poll_max_calls,
+                  fp->poll_complete, fp->poll_exit);
+       }
+       DP(NETIF_MSG_IFDOWN, "exit\n");
+#endif
+
+       return 0;
+}
+
+#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) /* BNX2X_UPSTREAM */
+static void bnx2x_reset_task(struct work_struct *work)
+{
+       struct bnx2x *bp = container_of(work, struct bnx2x, reset_task);
+#else
+static void bnx2x_reset_task(void *data)
+{
+       struct bnx2x *bp = (struct bnx2x *)data;
+#endif
+
+#ifdef BNX2X_STOP_ON_ERROR
+       BNX2X_ERR("reset task called but STOP_ON_ERROR defined"
+                 " so reset not done to allow debug dump,\n"
+        KERN_ERR " you will need to reboot when done\n");
+       return;
+#endif
+
+       rtnl_lock();
+
+       if (!netif_running(bp->dev))
+               goto reset_task_exit;
+
+       bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+       bnx2x_nic_load(bp, LOAD_NORMAL);
+
+reset_task_exit:
+       rtnl_unlock();
+}
+
+/* end of nic load/unload */
+
+/* ethtool_ops */
+
+/*
+ * Init service functions
+ */
+
+static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
+{
+       u32 val;
+
+       /* Check if there is any driver already loaded */
+       val = REG_RD(bp, MISC_REG_UNPREPARED);
+       if (val == 0x1) {
+               /* Check if it is the UNDI driver
+                * UNDI driver initializes CID offset for normal bell to 0x7
+                */
+               bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
+               val = REG_RD(bp, DORQ_REG_NORM_CID_OFST);
+               if (val == 0x7) {
+                       u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
+                       /* save our func */
+                       int func = BP_FUNC(bp);
+                       u32 swap_en;
+                       u32 swap_val;
+
+                       /* clear the UNDI indication */
+                       REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0);
+
+                       BNX2X_DEV_INFO("UNDI is active! reset device\n");
+
+                       /* try unload UNDI on port 0 */
+                       bp->func = 0;
+                       bp->fw_seq =
+                              (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) &
+                               DRV_MSG_SEQ_NUMBER_MASK);
+                       reset_code = bnx2x_fw_command(bp, reset_code);
+
+                       /* if UNDI is loaded on the other port */
+                       if (reset_code != FW_MSG_CODE_DRV_UNLOAD_COMMON) {
+
+                               /* send "DONE" for previous unload */
+                               bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
+
+                               /* unload UNDI on port 1 */
+                               bp->func = 1;
+                               bp->fw_seq =
+                              (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) &
+                                       DRV_MSG_SEQ_NUMBER_MASK);
+                               reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
+
+                               bnx2x_fw_command(bp, reset_code);
+                       }
+
+                       /* now it's safe to release the lock */
+                       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
+
+                       REG_WR(bp, (BP_PORT(bp) ? HC_REG_CONFIG_1 :
+                                                 HC_REG_CONFIG_0), 0x1000);
+
+                       /* close input traffic and wait for it */
+                       /* Do not rcv packets to BRB */
+                       REG_WR(bp,
+                             (BP_PORT(bp) ? NIG_REG_LLH1_BRB1_DRV_MASK :
+                                            NIG_REG_LLH0_BRB1_DRV_MASK), 0x0);
+                       /* Do not direct rcv packets that are not for MCP to
+                        * the BRB */
+                       REG_WR(bp,
+                              (BP_PORT(bp) ? NIG_REG_LLH1_BRB1_NOT_MCP :
+                                             NIG_REG_LLH0_BRB1_NOT_MCP), 0x0);
+                       /* clear AEU */
+                       REG_WR(bp,
+                            (BP_PORT(bp) ? MISC_REG_AEU_MASK_ATTN_FUNC_1 :
+                                           MISC_REG_AEU_MASK_ATTN_FUNC_0), 0);
+                       msleep(10);
+
+                       /* save NIG port swap info */
+                       swap_val = REG_RD(bp, NIG_REG_PORT_SWAP);
+                       swap_en = REG_RD(bp, NIG_REG_STRAP_OVERRIDE);
+                       /* reset device */
+                       REG_WR(bp,
+                              GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
+                              0xd3ffffff);
+                       REG_WR(bp,
+                              GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR,
+                              0x1403);
+                       /* take the NIG out of reset and restore swap values */
+                       REG_WR(bp,
+                              GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET,
+                              MISC_REGISTERS_RESET_REG_1_RST_NIG);
+                       REG_WR(bp, NIG_REG_PORT_SWAP, swap_val);
+                       REG_WR(bp, NIG_REG_STRAP_OVERRIDE, swap_en);
+
+                       /* send unload done to the MCP */
+                       bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
+
+                       /* restore our func and fw_seq */
+                       bp->func = func;
+                       bp->fw_seq =
+                              (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) &
+                               DRV_MSG_SEQ_NUMBER_MASK);
+
+               } else
+                       bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
+       }
+}
+
+static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp)
+{
+       u32 val, val2, val3, val4, id;
+       u16 pmc;
+
+       /* Get the chip revision id and number. */
+       /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */
+       val = REG_RD(bp, MISC_REG_CHIP_NUM);
+       id = ((val & 0xffff) << 16);
+       val = REG_RD(bp, MISC_REG_CHIP_REV);
+       id |= ((val & 0xf) << 12);
+       val = REG_RD(bp, MISC_REG_CHIP_METAL);
+       id |= ((val & 0xff) << 4);
+       val = REG_RD(bp, MISC_REG_BOND_ID);
+       id |= (val & 0xf);
+       bp->common.chip_id = id;
+       bp->link_params.chip_id = bp->common.chip_id;
+       BNX2X_DEV_INFO("chip ID is 0x%x\n", id);
+
+       val = (REG_RD(bp, 0x2874) & 0x55);
+       if ((bp->common.chip_id & 0x1) ||
+           (CHIP_IS_E1(bp) && val) || (CHIP_IS_E1H(bp) && (val == 0x55))) {
+               bp->flags |= ONE_PORT_FLAG;
+               BNX2X_DEV_INFO("single port device\n");
+       }
+
+       val = REG_RD(bp, MCP_REG_MCPR_NVM_CFG4);
+       bp->common.flash_size = (NVRAM_1MB_SIZE <<
+                                (val & MCPR_NVM_CFG4_FLASH_SIZE));
+       BNX2X_DEV_INFO("flash_size 0x%x (%d)\n",
+                      bp->common.flash_size, bp->common.flash_size);
+
+       bp->common.shmem_base = REG_RD(bp, MISC_REG_SHARED_MEM_ADDR);
+       bp->link_params.shmem_base = bp->common.shmem_base;
+       BNX2X_DEV_INFO("shmem offset is 0x%x\n", bp->common.shmem_base);
+
+       if (!bp->common.shmem_base ||
+           (bp->common.shmem_base < 0xA0000) ||
+           (bp->common.shmem_base >= 0xC0000)) {
+               BNX2X_DEV_INFO("MCP not active\n");
+               bp->flags |= NO_MCP_FLAG;
+               return;
+       }
+
+       val = SHMEM_RD(bp, validity_map[BP_PORT(bp)]);
+       if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
+               != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
+               BNX2X_ERR("BAD MCP validity signature\n");
+
+       bp->common.hw_config = SHMEM_RD(bp, dev_info.shared_hw_config.config);
+       BNX2X_DEV_INFO("hw_config 0x%08x\n", bp->common.hw_config);
+
+       bp->link_params.hw_led_mode = ((bp->common.hw_config &
+                                       SHARED_HW_CFG_LED_MODE_MASK) >>
+                                      SHARED_HW_CFG_LED_MODE_SHIFT);
+
+       bp->link_params.feature_config_flags = 0;
+       val = SHMEM_RD(bp, dev_info.shared_feature_config.config);
+       if (val & SHARED_FEAT_CFG_OVERRIDE_PREEMPHASIS_CFG_ENABLED)
+               bp->link_params.feature_config_flags |=
+                               FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED;
+       else
+               bp->link_params.feature_config_flags &=
+                               ~FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED;
+
+       val = SHMEM_RD(bp, dev_info.bc_rev) >> 8;
+       bp->common.bc_ver = val;
+       BNX2X_DEV_INFO("bc_ver %X\n", val);
+       if (val < BNX2X_BC_VER) {
+               /* for now only warn
+                * later we might need to enforce this */
+               BNX2X_ERR("This driver needs bc_ver %X but found %X,"
+                         " please upgrade BC\n", BNX2X_BC_VER, val);
+       }
+
+       if (BP_E1HVN(bp) == 0) {
+               pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_PMC, &pmc);
+               bp->flags |= (pmc & PCI_PM_CAP_PME_D3cold) ? 0 : NO_WOL_FLAG;
+       } else {
+               /* no WOL capability for E1HVN != 0 */
+               bp->flags |= NO_WOL_FLAG;
+       }
+       BNX2X_DEV_INFO("%sWoL capable\n",
+                      (bp->flags & NO_WOL_FLAG) ? "not " : "");
+
+       val = SHMEM_RD(bp, dev_info.shared_hw_config.part_num);
+       val2 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[4]);
+       val3 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[8]);
+       val4 = SHMEM_RD(bp, dev_info.shared_hw_config.part_num[12]);
+
+       printk(KERN_INFO PFX "part number %X-%X-%X-%X\n",
+              val, val2, val3, val4);
+}
+
+static void __devinit bnx2x_link_settings_supported(struct bnx2x *bp,
+                                                   u32 switch_cfg)
+{
+       int port = BP_PORT(bp);
+       u32 ext_phy_type;
+
+       switch (switch_cfg) {
+       case SWITCH_CFG_1G:
+               BNX2X_DEV_INFO("switch_cfg 0x%x (1G)\n", switch_cfg);
+
+               ext_phy_type =
+                       SERDES_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_DIRECT:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10baseT_Half |
+                                              SUPPORTED_10baseT_Full |
+                                              SUPPORTED_100baseT_Half |
+                                              SUPPORTED_100baseT_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_2500baseX_Full |
+                                              SUPPORTED_TP |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_SERDES_EXT_PHY_TYPE_BCM5482:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (5482)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10baseT_Half |
+                                              SUPPORTED_10baseT_Full |
+                                              SUPPORTED_100baseT_Half |
+                                              SUPPORTED_100baseT_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_TP |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               default:
+                       BNX2X_ERR("NVRAM config error. "
+                                 "BAD SerDes ext_phy_config 0x%x\n",
+                                 bp->link_params.ext_phy_config);
+                       return;
+               }
+
+               bp->port.phy_addr = REG_RD(bp, NIG_REG_SERDES0_CTRL_PHY_ADDR +
+                                          port*0x10);
+               BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->port.phy_addr);
+               break;
+
+       case SWITCH_CFG_10G:
+               BNX2X_DEV_INFO("switch_cfg 0x%x (10G)\n", switch_cfg);
+
+               ext_phy_type =
+                       XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (Direct)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10baseT_Half |
+                                              SUPPORTED_10baseT_Full |
+                                              SUPPORTED_100baseT_Half |
+                                              SUPPORTED_100baseT_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_2500baseX_Full |
+                                              SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_TP |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8705)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8706)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8726)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8072)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (8073)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_2500baseX_Full |
+                                              SUPPORTED_1000baseT_Full |
+                                              SUPPORTED_FIBRE |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       BNX2X_DEV_INFO("ext_phy_type 0x%x (SFX7101)\n",
+                                      ext_phy_type);
+
+                       bp->port.supported |= (SUPPORTED_10000baseT_Full |
+                                              SUPPORTED_TP |
+                                              SUPPORTED_Autoneg |
+                                              SUPPORTED_Pause |
+                                              SUPPORTED_Asym_Pause);
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+                       BNX2X_ERR("XGXS PHY Failure detected 0x%x\n",
+                                 bp->link_params.ext_phy_config);
+                       break;
+
+               default:
+                       BNX2X_ERR("NVRAM config error. "
+                                 "BAD XGXS ext_phy_config 0x%x\n",
+                                 bp->link_params.ext_phy_config);
+                       return;
+               }
+
+               bp->port.phy_addr = REG_RD(bp, NIG_REG_XGXS0_CTRL_PHY_ADDR +
+                                          port*0x18);
+               BNX2X_DEV_INFO("phy_addr 0x%x\n", bp->port.phy_addr);
+
+               break;
+
+       default:
+               BNX2X_ERR("BAD switch_cfg link_config 0x%x\n",
+                         bp->port.link_config);
+               return;
+       }
+       bp->link_params.phy_addr = bp->port.phy_addr;
+
+       /* mask what we support according to speed_cap_mask */
+       if (!(bp->link_params.speed_cap_mask &
+                               PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_HALF))
+               bp->port.supported &= ~SUPPORTED_10baseT_Half;
+
+       if (!(bp->link_params.speed_cap_mask &
+                               PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL))
+               bp->port.supported &= ~SUPPORTED_10baseT_Full;
+
+       if (!(bp->link_params.speed_cap_mask &
+                               PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_HALF))
+               bp->port.supported &= ~SUPPORTED_100baseT_Half;
+
+       if (!(bp->link_params.speed_cap_mask &
+                               PORT_HW_CFG_SPEED_CAPABILITY_D0_100M_FULL))
+               bp->port.supported &= ~SUPPORTED_100baseT_Full;
+
+       if (!(bp->link_params.speed_cap_mask &
+                                       PORT_HW_CFG_SPEED_CAPABILITY_D0_1G))
+               bp->port.supported &= ~(SUPPORTED_1000baseT_Half |
+                                       SUPPORTED_1000baseT_Full);
+
+       if (!(bp->link_params.speed_cap_mask &
+                                       PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
+               bp->port.supported &= ~SUPPORTED_2500baseX_Full;
+
+       if (!(bp->link_params.speed_cap_mask &
+                                       PORT_HW_CFG_SPEED_CAPABILITY_D0_10G))
+               bp->port.supported &= ~SUPPORTED_10000baseT_Full;
+
+       BNX2X_DEV_INFO("supported 0x%x\n", bp->port.supported);
+}
+
+static void __devinit bnx2x_link_settings_requested(struct bnx2x *bp)
+{
+       bp->link_params.req_duplex = DUPLEX_FULL;
+
+       switch (bp->port.link_config & PORT_FEATURE_LINK_SPEED_MASK) {
+       case PORT_FEATURE_LINK_SPEED_AUTO:
+               if (bp->port.supported & SUPPORTED_Autoneg) {
+                       bp->link_params.req_line_speed = SPEED_AUTO_NEG;
+                       bp->port.advertising = bp->port.supported;
+               } else {
+                       u32 ext_phy_type =
+                           XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+
+                       if ((ext_phy_type ==
+                            PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705) ||
+                           (ext_phy_type ==
+                            PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706)) {
+                               /* force 10G, no AN */
+                               bp->link_params.req_line_speed = SPEED_10000;
+                               bp->port.advertising =
+                                               (ADVERTISED_10000baseT_Full |
+                                                ADVERTISED_FIBRE);
+                               break;
+                       }
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  Autoneg not supported\n",
+                                 bp->port.link_config);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_10M_FULL:
+               if (bp->port.supported & SUPPORTED_10baseT_Full) {
+                       bp->link_params.req_line_speed = SPEED_10;
+                       bp->port.advertising = (ADVERTISED_10baseT_Full |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_10M_HALF:
+               if (bp->port.supported & SUPPORTED_10baseT_Half) {
+                       bp->link_params.req_line_speed = SPEED_10;
+                       bp->link_params.req_duplex = DUPLEX_HALF;
+                       bp->port.advertising = (ADVERTISED_10baseT_Half |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_100M_FULL:
+               if (bp->port.supported & SUPPORTED_100baseT_Full) {
+                       bp->link_params.req_line_speed = SPEED_100;
+                       bp->port.advertising = (ADVERTISED_100baseT_Full |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_100M_HALF:
+               if (bp->port.supported & SUPPORTED_100baseT_Half) {
+                       bp->link_params.req_line_speed = SPEED_100;
+                       bp->link_params.req_duplex = DUPLEX_HALF;
+                       bp->port.advertising = (ADVERTISED_100baseT_Half |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_1G:
+               if (bp->port.supported & SUPPORTED_1000baseT_Full) {
+                       bp->link_params.req_line_speed = SPEED_1000;
+                       bp->port.advertising = (ADVERTISED_1000baseT_Full |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_2_5G:
+               if (bp->port.supported & SUPPORTED_2500baseX_Full) {
+                       bp->link_params.req_line_speed = SPEED_2500;
+                       bp->port.advertising = (ADVERTISED_2500baseX_Full |
+                                               ADVERTISED_TP);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       case PORT_FEATURE_LINK_SPEED_10G_CX4:
+       case PORT_FEATURE_LINK_SPEED_10G_KX4:
+       case PORT_FEATURE_LINK_SPEED_10G_KR:
+               if (bp->port.supported & SUPPORTED_10000baseT_Full) {
+                       bp->link_params.req_line_speed = SPEED_10000;
+                       bp->port.advertising = (ADVERTISED_10000baseT_Full |
+                                               ADVERTISED_FIBRE);
+               } else {
+                       BNX2X_ERR("NVRAM config error. "
+                                 "Invalid link_config 0x%x"
+                                 "  speed_cap_mask 0x%x\n",
+                                 bp->port.link_config,
+                                 bp->link_params.speed_cap_mask);
+                       return;
+               }
+               break;
+
+       default:
+               BNX2X_ERR("NVRAM config error. "
+                         "BAD link speed link_config 0x%x\n",
+                         bp->port.link_config);
+               bp->link_params.req_line_speed = SPEED_AUTO_NEG;
+               bp->port.advertising = bp->port.supported;
+               break;
+       }
+
+       bp->link_params.req_flow_ctrl = (bp->port.link_config &
+                                        PORT_FEATURE_FLOW_CONTROL_MASK);
+       if ((bp->link_params.req_flow_ctrl == FLOW_CTRL_AUTO) &&
+           !(bp->port.supported & SUPPORTED_Autoneg))
+               bp->link_params.req_flow_ctrl = FLOW_CTRL_NONE;
+
+       BNX2X_DEV_INFO("req_line_speed %d  req_duplex %d  req_flow_ctrl 0x%x"
+                      "  advertising 0x%x\n",
+                      bp->link_params.req_line_speed,
+                      bp->link_params.req_duplex,
+                      bp->link_params.req_flow_ctrl, bp->port.advertising);
+}
+
+static void __devinit bnx2x_get_port_hwinfo(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       u32 val, val2;
+       u16 i;
+
+       bp->link_params.bp = bp;
+       bp->link_params.port = port;
+
+       bp->link_params.lane_config =
+               SHMEM_RD(bp, dev_info.port_hw_config[port].lane_config);
+       bp->link_params.ext_phy_config =
+               SHMEM_RD(bp,
+                        dev_info.port_hw_config[port].external_phy_config);
+       bp->link_params.speed_cap_mask =
+               SHMEM_RD(bp,
+                        dev_info.port_hw_config[port].speed_capability_mask);
+
+       bp->port.link_config =
+               SHMEM_RD(bp, dev_info.port_feature_config[port].link_config);
+
+       /* Get the 4 lanes xgxs config rx and tx */
+       for (i = 0; i < 2; i++) {
+               val = SHMEM_RD(bp,
+                          dev_info.port_hw_config[port].xgxs_config_rx[i<<1]);
+               bp->link_params.xgxs_config_rx[i << 1] = ((val>>16) & 0xffff);
+               bp->link_params.xgxs_config_rx[(i << 1) + 1] = (val & 0xffff);
+
+               val = SHMEM_RD(bp,
+                          dev_info.port_hw_config[port].xgxs_config_tx[i<<1]);
+               bp->link_params.xgxs_config_tx[i << 1] = ((val>>16) & 0xffff);
+               bp->link_params.xgxs_config_tx[(i << 1) + 1] = (val & 0xffff);
+       }
+
+       BNX2X_DEV_INFO("lane_config 0x%08x  ext_phy_config 0x%08x"
+                      "  speed_cap_mask 0x%08x  link_config 0x%08x\n",
+                      bp->link_params.lane_config,
+                      bp->link_params.ext_phy_config,
+                      bp->link_params.speed_cap_mask, bp->port.link_config);
+
+       bp->link_params.switch_cfg = (bp->port.link_config &
+                                     PORT_FEATURE_CONNECTED_SWITCH_MASK);
+       bnx2x_link_settings_supported(bp, bp->link_params.switch_cfg);
+
+       bnx2x_link_settings_requested(bp);
+
+       val2 = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_upper);
+       val = SHMEM_RD(bp, dev_info.port_hw_config[port].mac_lower);
+       bp->dev->dev_addr[0] = (u8)(val2 >> 8 & 0xff);
+       bp->dev->dev_addr[1] = (u8)(val2 & 0xff);
+       bp->dev->dev_addr[2] = (u8)(val >> 24 & 0xff);
+       bp->dev->dev_addr[3] = (u8)(val >> 16 & 0xff);
+       bp->dev->dev_addr[4] = (u8)(val >> 8  & 0xff);
+       bp->dev->dev_addr[5] = (u8)(val & 0xff);
+       memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN);
+#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */
+       memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN);
+#endif
+}
+
+static int __devinit bnx2x_get_hwinfo(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+       u32 val, val2;
+       int rc = 0;
+
+       bnx2x_get_common_hwinfo(bp);
+
+       bp->e1hov = 0;
+       bp->e1hmf = 0;
+       if (CHIP_IS_E1H(bp)) {
+               bp->mf_config =
+                       SHMEM_RD(bp, mf_cfg.func_mf_config[func].config);
+
+               val = (SHMEM_RD(bp, mf_cfg.func_mf_config[func].e1hov_tag) &
+                      FUNC_MF_CFG_E1HOV_TAG_MASK);
+               if (val != FUNC_MF_CFG_E1HOV_TAG_DEFAULT) {
+
+                       bp->e1hov = val;
+                       bp->e1hmf = 1;
+                       BNX2X_DEV_INFO("MF mode  E1HOV for func %d is %d "
+                                      "(0x%04x)\n",
+                                      func, bp->e1hov, bp->e1hov);
+               } else {
+                       BNX2X_DEV_INFO("single function mode\n");
+                       if (BP_E1HVN(bp)) {
+                               BNX2X_ERR("!!!  No valid E1HOV for func %d,"
+                                         "  aborting\n", func);
+                               rc = -EPERM;
+                       }
+               }
+       }
+
+       if (!BP_NOMCP(bp)) {
+               bnx2x_get_port_hwinfo(bp);
+
+               bp->fw_seq = (SHMEM_RD(bp, func_mb[func].drv_mb_header) &
+                             DRV_MSG_SEQ_NUMBER_MASK);
+               BNX2X_DEV_INFO("fw_seq 0x%08x\n", bp->fw_seq);
+       }
+
+       if (IS_E1HMF(bp)) {
+               val2 = SHMEM_RD(bp, mf_cfg.func_mf_config[func].mac_upper);
+               val = SHMEM_RD(bp,  mf_cfg.func_mf_config[func].mac_lower);
+               if ((val2 != FUNC_MF_CFG_UPPERMAC_DEFAULT) &&
+                   (val != FUNC_MF_CFG_LOWERMAC_DEFAULT)) {
+                       bp->dev->dev_addr[0] = (u8)(val2 >> 8 & 0xff);
+                       bp->dev->dev_addr[1] = (u8)(val2 & 0xff);
+                       bp->dev->dev_addr[2] = (u8)(val >> 24 & 0xff);
+                       bp->dev->dev_addr[3] = (u8)(val >> 16 & 0xff);
+                       bp->dev->dev_addr[4] = (u8)(val >> 8  & 0xff);
+                       bp->dev->dev_addr[5] = (u8)(val & 0xff);
+                       memcpy(bp->link_params.mac_addr, bp->dev->dev_addr,
+                              ETH_ALEN);
+#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */
+                       memcpy(bp->dev->perm_addr, bp->dev->dev_addr,
+                              ETH_ALEN);
+#endif
+               }
+
+               return rc;
+       }
+
+       if (BP_NOMCP(bp)) {
+               /* only supposed to happen on emulation/FPGA */
+#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */
+               BNX2X_ERR("warning random MAC workaround active\n");
+               random_ether_addr(bp->dev->dev_addr);
+#else
+               BNX2X_ERR("warning constant MAC workaround active\n");
+               bp->dev->dev_addr[0] = 0;
+               bp->dev->dev_addr[1] = 0x50;
+               bp->dev->dev_addr[2] = 0xc2;
+               bp->dev->dev_addr[3] = 0x2c;
+               bp->dev->dev_addr[4] = (func + 1) * 0x10;
+               bp->dev->dev_addr[5] = 0x00;
+               memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN);
+#endif
+#ifdef ETHTOOL_GPERMADDR /* BNX2X_UPSTREAM */
+               memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN);
+#endif
+       }
+
+       return rc;
+}
+
+static int __devinit bnx2x_init_bp(struct bnx2x *bp)
+{
+       int func = BP_FUNC(bp);
+       int timer_interval;
+       int i, rc;
+
+       /* Disable interrupt handling until HW is initialized */
+       atomic_set(&bp->intr_sem, 1);
+
+       mutex_init(&bp->port.phy_mutex);
+
+#if defined(INIT_DELAYED_WORK_DEFERRABLE) || defined(INIT_WORK_NAR) /* BNX2X_UPSTREAM */
+       INIT_WORK(&bp->sp_task, bnx2x_sp_task);
+       INIT_WORK(&bp->reset_task, bnx2x_reset_task);
+#else
+       INIT_WORK(&bp->sp_task, bnx2x_sp_task, bp);
+       INIT_WORK(&bp->reset_task, bnx2x_reset_task, bp);
+#endif
+#if (LINUX_VERSION_CODE < 0x20618) /* ! BNX2X_UPSTREAM */
+       bp->sp_running = 0;
+#endif
+
+       rc = bnx2x_get_hwinfo(bp);
+
+       /* need to reset chip if undi was active */
+       if (!BP_NOMCP(bp))
+               bnx2x_undi_unload(bp);
+
+       if (CHIP_REV_IS_FPGA(bp))
+               printk(KERN_ERR PFX "FPGA detected\n");
+
+       if (BP_NOMCP(bp) && (func == 0))
+               printk(KERN_ERR PFX
+                      "MCP disabled, must load devices in order!\n");
+
+       /* Set multi queue mode and priority mapping */
+       switch (multi_mode) {
+       case ETH_RSS_MODE_DISABLED:
+       case ETH_RSS_MODE_REGULAR:
+               bp->multi_mode = multi_mode;
+               for (i = 0; i < BNX2X_MAX_PRIORITY; i++)
+                       bp->pri_map[i] = 0;
+               break;
+       case ETH_RSS_MODE_VLAN_PRI:
+       case ETH_RSS_MODE_E1HOV_PRI:
+       case ETH_RSS_MODE_IP_DSCP:
+               bp->multi_mode = multi_mode;
+               for (i = 0; i < BNX2X_MAX_PRIORITY; i++)
+                       bp->pri_map[i] = ((pri_map & (0xf << i*4)) >> i*4);
+               break;
+       default:
+               bp->multi_mode = ETH_RSS_MODE_DISABLED;
+               for (i = 0; i < BNX2X_MAX_PRIORITY; i++)
+                       bp->pri_map[i] = 0;
+               break;
+       }
+
+       /* Set TPA flags */
+       if (disable_tpa) {
+               bp->flags &= ~TPA_ENABLE_FLAG;
+#if (LINUX_VERSION_CODE >= 0x2061a) /* BNX2X_UPSTREAM */
+               bp->dev->features &= ~NETIF_F_LRO;
+#endif
+       } else {
+               bp->flags |= TPA_ENABLE_FLAG;
+#if (LINUX_VERSION_CODE >= 0x2061a) /* BNX2X_UPSTREAM */
+               bp->dev->features |= NETIF_F_LRO;
+#endif
+       }
+
+#if (LINUX_VERSION_CODE < 0x20618) /* ! BNX2X_UPSTREAM */
+       /* MCP workaround */
+       if (BP_NOMCP(bp)) {
+               /* [0x24c0]table size:
+                  PCI_REG_GRC_PTR(func)->pci_msix_control = 0x10; */
+               REG_WR(bp, 0x24c0, 0x10);
+               /* [0x24c4]table pointer:
+                  PCI_REG_GRC_PTR(func)->pci_msix_tbl_off_bir =
+                                               0x440000 + 0x2000*func; */
+               REG_WR(bp, 0x24c4, 0x440000 + 0x2000*func);
+               /* [0x24c8]PBA pointer:
+                  PCI_REG_GRC_PTR(func)->pci_msix_pba_off_bir =
+                                               0x441800 + 0x2000*func; */
+               REG_WR(bp, 0x24c8, 0x441800 + 0x2000*func);
+       }
+#endif
+
+       bp->tx_ring_size = MAX_TX_AVAIL;
+       bp->rx_ring_size = MAX_RX_AVAIL;
+
+       bp->rx_csum = 1;
+
+       bp->tx_ticks = 50;
+       bp->rx_ticks = 25;
+
+       timer_interval = (CHIP_REV_IS_SLOW(bp) ? 5*HZ : HZ);
+       bp->current_interval = (poll ? poll : timer_interval);
+
+       init_timer(&bp->timer);
+       bp->timer.expires = jiffies + bp->current_interval;
+       bp->timer.data = (unsigned long) bp;
+       bp->timer.function = bnx2x_timer;
+
+       return rc;
+}
+
+/*
+ * ethtool service functions
+ */
+
+/* All ethtool functions called with rtnl_lock */
+
+static int bnx2x_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       cmd->supported = bp->port.supported;
+       cmd->advertising = bp->port.advertising;
+
+       if (netif_carrier_ok(dev)) {
+               cmd->speed = bp->link_vars.line_speed;
+               cmd->duplex = bp->link_vars.duplex;
+       } else {
+               cmd->speed = bp->link_params.req_line_speed;
+               cmd->duplex = bp->link_params.req_duplex;
+       }
+       if (IS_E1HMF(bp)) {
+               u16 vn_max_rate;
+
+               vn_max_rate = ((bp->mf_config & FUNC_MF_CFG_MAX_BW_MASK) >>
+                               FUNC_MF_CFG_MAX_BW_SHIFT) * 100;
+               if (vn_max_rate < cmd->speed)
+                       cmd->speed = vn_max_rate;
+       }
+
+       if (bp->link_params.switch_cfg == SWITCH_CFG_10G) {
+               u32 ext_phy_type =
+                       XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config);
+
+               switch (ext_phy_type) {
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8072:
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073:
+                       cmd->port = PORT_FIBRE;
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_SFX7101:
+                       cmd->port = PORT_TP;
+                       break;
+
+               case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE:
+                       BNX2X_ERR("XGXS PHY Failure detected 0x%x\n",
+                                 bp->link_params.ext_phy_config);
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK, "BAD XGXS ext_phy_config 0x%x\n",
+                          bp->link_params.ext_phy_config);
+                       break;
+               }
+       } else
+               cmd->port = PORT_TP;
+
+       cmd->phy_address = bp->port.phy_addr;
+       cmd->transceiver = XCVR_INTERNAL;
+
+       if (bp->link_params.req_line_speed == SPEED_AUTO_NEG)
+               cmd->autoneg = AUTONEG_ENABLE;
+       else
+               cmd->autoneg = AUTONEG_DISABLE;
+
+       cmd->maxtxpkt = 0;
+       cmd->maxrxpkt = 0;
+
+       DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n"
+          DP_LEVEL "  supported 0x%x  advertising 0x%x  speed %d\n"
+          DP_LEVEL "  duplex %d  port %d  phy_address %d  transceiver %d\n"
+          DP_LEVEL "  autoneg %d  maxtxpkt %d  maxrxpkt %d\n",
+          cmd->cmd, cmd->supported, cmd->advertising, cmd->speed,
+          cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver,
+          cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt);
+
+       return 0;
+}
+
+static int bnx2x_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       u32 advertising;
+
+       if (IS_E1HMF(bp))
+               return 0;
+
+       DP(NETIF_MSG_LINK, "ethtool_cmd: cmd %d\n"
+          DP_LEVEL "  supported 0x%x  advertising 0x%x  speed %d\n"
+          DP_LEVEL "  duplex %d  port %d  phy_address %d  transceiver %d\n"
+          DP_LEVEL "  autoneg %d  maxtxpkt %d  maxrxpkt %d\n",
+          cmd->cmd, cmd->supported, cmd->advertising, cmd->speed,
+          cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver,
+          cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt);
+
+       if (cmd->autoneg == AUTONEG_ENABLE) {
+               if (!(bp->port.supported & SUPPORTED_Autoneg)) {
+                       DP(NETIF_MSG_LINK, "Autoneg not supported\n");
+                       return -EINVAL;
+               }
+
+               /* advertise the requested speed and duplex if supported */
+               cmd->advertising &= bp->port.supported;
+
+               bp->link_params.req_line_speed = SPEED_AUTO_NEG;
+               bp->link_params.req_duplex = DUPLEX_FULL;
+               bp->port.advertising |= (ADVERTISED_Autoneg |
+                                        cmd->advertising);
+
+       } else { /* forced speed */
+               /* advertise the requested speed and duplex if supported */
+               switch (cmd->speed) {
+               case SPEED_10:
+                       if (cmd->duplex == DUPLEX_FULL) {
+                               if (!(bp->port.supported &
+                                     SUPPORTED_10baseT_Full)) {
+                                       DP(NETIF_MSG_LINK,
+                                          "10M full not supported\n");
+                                       return -EINVAL;
+                               }
+
+                               advertising = (ADVERTISED_10baseT_Full |
+                                              ADVERTISED_TP);
+                       } else {
+                               if (!(bp->port.supported &
+                                     SUPPORTED_10baseT_Half)) {
+                                       DP(NETIF_MSG_LINK,
+                                          "10M half not supported\n");
+                                       return -EINVAL;
+                               }
+
+                               advertising = (ADVERTISED_10baseT_Half |
+                                              ADVERTISED_TP);
+                       }
+                       break;
+
+               case SPEED_100:
+                       if (cmd->duplex == DUPLEX_FULL) {
+                               if (!(bp->port.supported &
+                                               SUPPORTED_100baseT_Full)) {
+                                       DP(NETIF_MSG_LINK,
+                                          "100M full not supported\n");
+                                       return -EINVAL;
+                               }
+
+                               advertising = (ADVERTISED_100baseT_Full |
+                                              ADVERTISED_TP);
+                       } else {
+                               if (!(bp->port.supported &
+                                               SUPPORTED_100baseT_Half)) {
+                                       DP(NETIF_MSG_LINK,
+                                          "100M half not supported\n");
+                                       return -EINVAL;
+                               }
+
+                               advertising = (ADVERTISED_100baseT_Half |
+                                              ADVERTISED_TP);
+                       }
+                       break;
+
+               case SPEED_1000:
+                       if (cmd->duplex != DUPLEX_FULL) {
+                               DP(NETIF_MSG_LINK, "1G half not supported\n");
+                               return -EINVAL;
+                       }
+
+                       if (!(bp->port.supported & SUPPORTED_1000baseT_Full)) {
+                               DP(NETIF_MSG_LINK, "1G full not supported\n");
+                               return -EINVAL;
+                       }
+
+                       advertising = (ADVERTISED_1000baseT_Full |
+                                      ADVERTISED_TP);
+                       break;
+
+               case SPEED_2500:
+                       if (cmd->duplex != DUPLEX_FULL) {
+                               DP(NETIF_MSG_LINK,
+                                  "2.5G half not supported\n");
+                               return -EINVAL;
+                       }
+
+                       if (!(bp->port.supported & SUPPORTED_2500baseX_Full)) {
+                               DP(NETIF_MSG_LINK,
+                                  "2.5G full not supported\n");
+                               return -EINVAL;
+                       }
+
+                       advertising = (ADVERTISED_2500baseX_Full |
+                                      ADVERTISED_TP);
+                       break;
+
+               case SPEED_10000:
+                       if (cmd->duplex != DUPLEX_FULL) {
+                               DP(NETIF_MSG_LINK, "10G half not supported\n");
+                               return -EINVAL;
+                       }
+
+                       if (!(bp->port.supported & SUPPORTED_10000baseT_Full)) {
+                               DP(NETIF_MSG_LINK, "10G full not supported\n");
+                               return -EINVAL;
+                       }
+
+                       advertising = (ADVERTISED_10000baseT_Full |
+                                      ADVERTISED_FIBRE);
+                       break;
+
+               default:
+                       DP(NETIF_MSG_LINK, "Unsupported speed\n");
+                       return -EINVAL;
+               }
+
+               bp->link_params.req_line_speed = cmd->speed;
+               bp->link_params.req_duplex = cmd->duplex;
+               bp->port.advertising = advertising;
+       }
+
+       DP(NETIF_MSG_LINK, "req_line_speed %d\n"
+          DP_LEVEL "  req_duplex %d  advertising 0x%x\n",
+          bp->link_params.req_line_speed, bp->link_params.req_duplex,
+          bp->port.advertising);
+
+       if (netif_running(dev)) {
+               bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+               bnx2x_link_set(bp);
+       }
+
+       return 0;
+}
+
+#define PHY_FW_VER_LEN                 10
+
+static void bnx2x_get_drvinfo(struct net_device *dev,
+                             struct ethtool_drvinfo *info)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       u8 phy_fw_ver[PHY_FW_VER_LEN];
+
+       strcpy(info->driver, DRV_MODULE_NAME);
+       strcpy(info->version, DRV_MODULE_VERSION);
+
+       phy_fw_ver[0] = '\0';
+       if (bp->port.pmf) {
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_get_ext_phy_fw_version(&bp->link_params,
+                                            (bp->state != BNX2X_STATE_CLOSED),
+                                            phy_fw_ver, PHY_FW_VER_LEN);
+               bnx2x_release_phy_lock(bp);
+       }
+
+       snprintf(info->fw_version, 32, "BC:%d.%d.%d%s%s",
+                (bp->common.bc_ver & 0xff0000) >> 16,
+                (bp->common.bc_ver & 0xff00) >> 8,
+                (bp->common.bc_ver & 0xff),
+                ((phy_fw_ver[0] != '\0') ? " PHY:" : ""), phy_fw_ver);
+       strcpy(info->bus_info, pci_name(bp->pdev));
+       info->n_stats = BNX2X_NUM_STATS;
+       info->testinfo_len = BNX2X_NUM_TESTS;
+       info->eedump_len = bp->common.flash_size;
+       info->regdump_len = 0;
+}
+
+static void bnx2x_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (bp->flags & NO_WOL_FLAG) {
+               wol->supported = 0;
+               wol->wolopts = 0;
+       } else {
+               wol->supported = WAKE_MAGIC;
+               if (bp->wol)
+                       wol->wolopts = WAKE_MAGIC;
+               else
+                       wol->wolopts = 0;
+       }
+       memset(&wol->sopass, 0, sizeof(wol->sopass));
+}
+
+static int bnx2x_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (wol->wolopts & ~WAKE_MAGIC)
+               return -EINVAL;
+
+       if (wol->wolopts & WAKE_MAGIC) {
+               if (bp->flags & NO_WOL_FLAG)
+                       return -EINVAL;
+
+               bp->wol = 1;
+       } else
+               bp->wol = 0;
+
+       return 0;
+}
+
+static u32 bnx2x_get_msglevel(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       return bp->msglevel;
+}
+
+static void bnx2x_set_msglevel(struct net_device *dev, u32 level)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (capable(CAP_NET_ADMIN))
+#ifdef BNX2X_STOP_ON_ERROR
+               bp->msglevel = (0xf70f7 | level);
+#else
+               bp->msglevel = level;
+#endif
+}
+
+static int bnx2x_nway_reset(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (!bp->port.pmf)
+               return 0;
+
+       if (netif_running(dev)) {
+               bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+               bnx2x_link_set(bp);
+       }
+
+       return 0;
+}
+
+#if (LINUX_VERSION_CODE >= 0x020418) /* BNX2X_UPSTREAM */
+static int bnx2x_get_eeprom_len(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       return bp->common.flash_size;
+}
+#endif
+
+static int bnx2x_acquire_nvram_lock(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       int count, i;
+       u32 val = 0;
+
+       /* adjust timeout for emulation/FPGA */
+       count = NVRAM_TIMEOUT_COUNT;
+       if (CHIP_REV_IS_SLOW(bp))
+               count *= 100;
+
+       /* request access to nvram interface */
+       REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB,
+              (MCPR_NVM_SW_ARB_ARB_REQ_SET1 << port));
+
+       for (i = 0; i < count*10; i++) {
+               val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB);
+               if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))
+                       break;
+
+               udelay(5);
+       }
+
+       if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port))) {
+               DP(BNX2X_MSG_NVM, "cannot get access to nvram interface\n");
+               return -EBUSY;
+       }
+
+       return 0;
+}
+
+static int bnx2x_release_nvram_lock(struct bnx2x *bp)
+{
+       int port = BP_PORT(bp);
+       int count, i;
+       u32 val = 0;
+
+       /* adjust timeout for emulation/FPGA */
+       count = NVRAM_TIMEOUT_COUNT;
+       if (CHIP_REV_IS_SLOW(bp))
+               count *= 100;
+
+       /* relinquish nvram interface */
+       REG_WR(bp, MCP_REG_MCPR_NVM_SW_ARB,
+              (MCPR_NVM_SW_ARB_ARB_REQ_CLR1 << port));
+
+       for (i = 0; i < count*10; i++) {
+               val = REG_RD(bp, MCP_REG_MCPR_NVM_SW_ARB);
+               if (!(val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)))
+                       break;
+
+               udelay(5);
+       }
+
+       if (val & (MCPR_NVM_SW_ARB_ARB_ARB1 << port)) {
+               DP(BNX2X_MSG_NVM, "cannot free access to nvram interface\n");
+               return -EBUSY;
+       }
+
+       return 0;
+}
+
+static void bnx2x_enable_nvram_access(struct bnx2x *bp)
+{
+       u32 val;
+
+       val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE);
+
+       /* enable both bits, even on read */
+       REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE,
+              (val | MCPR_NVM_ACCESS_ENABLE_EN |
+                     MCPR_NVM_ACCESS_ENABLE_WR_EN));
+}
+
+static void bnx2x_disable_nvram_access(struct bnx2x *bp)
+{
+       u32 val;
+
+       val = REG_RD(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE);
+
+       /* disable both bits, even after read */
+       REG_WR(bp, MCP_REG_MCPR_NVM_ACCESS_ENABLE,
+              (val & ~(MCPR_NVM_ACCESS_ENABLE_EN |
+                       MCPR_NVM_ACCESS_ENABLE_WR_EN)));
+}
+
+static int bnx2x_nvram_read_dword(struct bnx2x *bp, u32 offset, u32 *ret_val,
+                                 u32 cmd_flags)
+{
+       int count, i, rc;
+       u32 val;
+
+       /* build the command word */
+       cmd_flags |= MCPR_NVM_COMMAND_DOIT;
+
+       /* need to clear DONE bit separately */
+       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE);
+
+       /* address of the NVRAM to read from */
+       REG_WR(bp, MCP_REG_MCPR_NVM_ADDR,
+              (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE));
+
+       /* issue a read command */
+       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags);
+
+       /* adjust timeout for emulation/FPGA */
+       count = NVRAM_TIMEOUT_COUNT;
+       if (CHIP_REV_IS_SLOW(bp))
+               count *= 100;
+
+       /* wait for completion */
+       *ret_val = 0;
+       rc = -EBUSY;
+       for (i = 0; i < count; i++) {
+               udelay(5);
+               val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND);
+
+               if (val & MCPR_NVM_COMMAND_DONE) {
+                       val = REG_RD(bp, MCP_REG_MCPR_NVM_READ);
+                       /* we read nvram data in cpu order
+                        * but ethtool sees it as an array of bytes
+                        * converting to big-endian will do the work */
+                       val = cpu_to_be32(val);
+                       *ret_val = val;
+                       rc = 0;
+                       break;
+               }
+       }
+
+       return rc;
+}
+
+static int bnx2x_nvram_read(struct bnx2x *bp, u32 offset, u8 *ret_buf,
+                           int buf_size)
+{
+       int rc;
+       u32 cmd_flags;
+       u32 val;
+
+       if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) {
+               DP(BNX2X_MSG_NVM,
+                  "Invalid parameter: offset 0x%x  buf_size 0x%x\n",
+                  offset, buf_size);
+               return -EINVAL;
+       }
+
+       if (offset + buf_size > bp->common.flash_size) {
+               DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +"
+                                 " buf_size (0x%x) > flash_size (0x%x)\n",
+                  offset, buf_size, bp->common.flash_size);
+               return -EINVAL;
+       }
+
+       /* request access to nvram interface */
+       rc = bnx2x_acquire_nvram_lock(bp);
+       if (rc)
+               return rc;
+
+       /* enable access to nvram interface */
+       bnx2x_enable_nvram_access(bp);
+
+       /* read the first word(s) */
+       cmd_flags = MCPR_NVM_COMMAND_FIRST;
+       while ((buf_size > sizeof(u32)) && (rc == 0)) {
+               rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags);
+               memcpy(ret_buf, &val, 4);
+
+               /* advance to the next dword */
+               offset += sizeof(u32);
+               ret_buf += sizeof(u32);
+               buf_size -= sizeof(u32);
+               cmd_flags = 0;
+       }
+
+       if (rc == 0) {
+               cmd_flags |= MCPR_NVM_COMMAND_LAST;
+               rc = bnx2x_nvram_read_dword(bp, offset, &val, cmd_flags);
+               memcpy(ret_buf, &val, 4);
+       }
+
+       /* disable access to nvram interface */
+       bnx2x_disable_nvram_access(bp);
+       bnx2x_release_nvram_lock(bp);
+
+       return rc;
+}
+
+static int bnx2x_get_eeprom(struct net_device *dev,
+                           struct ethtool_eeprom *eeprom, u8 *eebuf)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int rc;
+
+       DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n"
+          DP_LEVEL "  magic 0x%x  offset 0x%x (%d)  len 0x%x (%d)\n",
+          eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
+          eeprom->len, eeprom->len);
+
+       /* parameters already validated in ethtool_get_eeprom */
+
+       rc = bnx2x_nvram_read(bp, eeprom->offset, eebuf, eeprom->len);
+
+       return rc;
+}
+
+static int bnx2x_nvram_write_dword(struct bnx2x *bp, u32 offset, u32 val,
+                                  u32 cmd_flags)
+{
+       int count, i, rc;
+
+       /* build the command word */
+       cmd_flags |= MCPR_NVM_COMMAND_DOIT | MCPR_NVM_COMMAND_WR;
+
+       /* need to clear DONE bit separately */
+       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, MCPR_NVM_COMMAND_DONE);
+
+       /* write the data */
+       REG_WR(bp, MCP_REG_MCPR_NVM_WRITE, val);
+
+       /* address of the NVRAM to write to */
+       REG_WR(bp, MCP_REG_MCPR_NVM_ADDR,
+              (offset & MCPR_NVM_ADDR_NVM_ADDR_VALUE));
+
+       /* issue the write command */
+       REG_WR(bp, MCP_REG_MCPR_NVM_COMMAND, cmd_flags);
+
+       /* adjust timeout for emulation/FPGA */
+       count = NVRAM_TIMEOUT_COUNT;
+       if (CHIP_REV_IS_SLOW(bp))
+               count *= 100;
+
+       /* wait for completion */
+       rc = -EBUSY;
+       for (i = 0; i < count; i++) {
+               udelay(5);
+               val = REG_RD(bp, MCP_REG_MCPR_NVM_COMMAND);
+               if (val & MCPR_NVM_COMMAND_DONE) {
+                       rc = 0;
+                       break;
+               }
+       }
+
+       return rc;
+}
+
+#define BYTE_OFFSET(offset)            (8 * (offset & 0x03))
+
+static int bnx2x_nvram_write1(struct bnx2x *bp, u32 offset, u8 *data_buf,
+                             int buf_size)
+{
+       int rc;
+       u32 cmd_flags;
+       u32 align_offset;
+       u32 val;
+
+       if (offset + buf_size > bp->common.flash_size) {
+               DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +"
+                                 " buf_size (0x%x) > flash_size (0x%x)\n",
+                  offset, buf_size, bp->common.flash_size);
+               return -EINVAL;
+       }
+
+       /* request access to nvram interface */
+       rc = bnx2x_acquire_nvram_lock(bp);
+       if (rc)
+               return rc;
+
+       /* enable access to nvram interface */
+       bnx2x_enable_nvram_access(bp);
+
+       cmd_flags = (MCPR_NVM_COMMAND_FIRST | MCPR_NVM_COMMAND_LAST);
+       align_offset = (offset & ~0x03);
+       rc = bnx2x_nvram_read_dword(bp, align_offset, &val, cmd_flags);
+
+       if (rc == 0) {
+               val &= ~(0xff << BYTE_OFFSET(offset));
+               val |= (*data_buf << BYTE_OFFSET(offset));
+
+               /* nvram data is returned as an array of bytes
+                * convert it back to cpu order */
+               val = be32_to_cpu(val);
+
+               rc = bnx2x_nvram_write_dword(bp, align_offset, val,
+                                            cmd_flags);
+       }
+
+       /* disable access to nvram interface */
+       bnx2x_disable_nvram_access(bp);
+       bnx2x_release_nvram_lock(bp);
+
+       return rc;
+}
+
+static int bnx2x_nvram_write(struct bnx2x *bp, u32 offset, u8 *data_buf,
+                            int buf_size)
+{
+       int rc;
+       u32 cmd_flags;
+       u32 val;
+       u32 written_so_far;
+
+       if (buf_size == 1)      /* ethtool */
+               return bnx2x_nvram_write1(bp, offset, data_buf, buf_size);
+
+       if ((offset & 0x03) || (buf_size & 0x03) || (buf_size == 0)) {
+               DP(BNX2X_MSG_NVM,
+                  "Invalid parameter: offset 0x%x  buf_size 0x%x\n",
+                  offset, buf_size);
+               return -EINVAL;
+       }
+
+       if (offset + buf_size > bp->common.flash_size) {
+               DP(BNX2X_MSG_NVM, "Invalid parameter: offset (0x%x) +"
+                                 " buf_size (0x%x) > flash_size (0x%x)\n",
+                  offset, buf_size, bp->common.flash_size);
+               return -EINVAL;
+       }
+
+       /* request access to nvram interface */
+       rc = bnx2x_acquire_nvram_lock(bp);
+       if (rc)
+               return rc;
+
+       /* enable access to nvram interface */
+       bnx2x_enable_nvram_access(bp);
+
+       written_so_far = 0;
+       cmd_flags = MCPR_NVM_COMMAND_FIRST;
+       while ((written_so_far < buf_size) && (rc == 0)) {
+               if (written_so_far == (buf_size - sizeof(u32)))
+                       cmd_flags |= MCPR_NVM_COMMAND_LAST;
+               else if (((offset + 4) % NVRAM_PAGE_SIZE) == 0)
+                       cmd_flags |= MCPR_NVM_COMMAND_LAST;
+               else if ((offset % NVRAM_PAGE_SIZE) == 0)
+                       cmd_flags |= MCPR_NVM_COMMAND_FIRST;
+
+               memcpy(&val, data_buf, 4);
+
+               rc = bnx2x_nvram_write_dword(bp, offset, val, cmd_flags);
+
+               /* advance to the next dword */
+               offset += sizeof(u32);
+               data_buf += sizeof(u32);
+               written_so_far += sizeof(u32);
+               cmd_flags = 0;
+       }
+
+       /* disable access to nvram interface */
+       bnx2x_disable_nvram_access(bp);
+       bnx2x_release_nvram_lock(bp);
+
+       return rc;
+}
+
+static int bnx2x_set_eeprom(struct net_device *dev,
+                           struct ethtool_eeprom *eeprom, u8 *eebuf)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int rc;
+
+       DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n"
+          DP_LEVEL "  magic 0x%x  offset 0x%x (%d)  len 0x%x (%d)\n",
+          eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
+          eeprom->len, eeprom->len);
+
+       /* parameters already validated in ethtool_set_eeprom */
+
+       /* If the magic number is PHY (0x00504859) upgrade the PHY FW */
+       if (eeprom->magic == 0x00504859)
+               if (bp->port.pmf) {
+
+                       bnx2x_acquire_phy_lock(bp);
+                       rc = bnx2x_flash_download(bp, BP_PORT(bp),
+                                            bp->link_params.ext_phy_config,
+                                            (bp->state != BNX2X_STATE_CLOSED),
+                                            eebuf, eeprom->len);
+                       if ((bp->state == BNX2X_STATE_OPEN) ||
+                           (bp->state == BNX2X_STATE_DISABLED)) {
+                               rc |= bnx2x_link_reset(&bp->link_params,
+                                                      &bp->link_vars);
+                               rc |= bnx2x_phy_init(&bp->link_params,
+                                                    &bp->link_vars);
+                       }
+                       bnx2x_release_phy_lock(bp);
+
+               } else /* Only the PMF can access the PHY */
+                       return -EINVAL;
+       else
+               rc = bnx2x_nvram_write(bp, eeprom->offset, eebuf, eeprom->len);
+
+       return rc;
+}
+
+static int bnx2x_get_coalesce(struct net_device *dev,
+                             struct ethtool_coalesce *coal)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       memset(coal, 0, sizeof(struct ethtool_coalesce));
+
+       coal->rx_coalesce_usecs = bp->rx_ticks;
+       coal->tx_coalesce_usecs = bp->tx_ticks;
+
+       return 0;
+}
+
+static int bnx2x_set_coalesce(struct net_device *dev,
+                             struct ethtool_coalesce *coal)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       bp->rx_ticks = (u16) coal->rx_coalesce_usecs;
+       if (bp->rx_ticks > 3000)
+               bp->rx_ticks = 3000;
+
+       bp->tx_ticks = (u16) coal->tx_coalesce_usecs;
+       if (bp->tx_ticks > 0x3000)
+               bp->tx_ticks = 0x3000;
+
+       if (netif_running(dev))
+               bnx2x_update_coalesce(bp);
+
+       return 0;
+}
+
+static void bnx2x_get_ringparam(struct net_device *dev,
+                               struct ethtool_ringparam *ering)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       ering->rx_max_pending = MAX_RX_AVAIL;
+       ering->rx_mini_max_pending = 0;
+       ering->rx_jumbo_max_pending = 0;
+
+       ering->rx_pending = bp->rx_ring_size;
+       ering->rx_mini_pending = 0;
+       ering->rx_jumbo_pending = 0;
+
+       ering->tx_max_pending = MAX_TX_AVAIL;
+       ering->tx_pending = bp->tx_ring_size;
+}
+
+static int bnx2x_set_ringparam(struct net_device *dev,
+                              struct ethtool_ringparam *ering)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int rc = 0;
+
+       if ((ering->rx_pending > MAX_RX_AVAIL) ||
+           (ering->tx_pending > MAX_TX_AVAIL) ||
+           (ering->tx_pending <= MAX_SKB_FRAGS + 4))
+               return -EINVAL;
+
+       bp->rx_ring_size = ering->rx_pending;
+       bp->tx_ring_size = ering->tx_pending;
+
+       if (netif_running(dev)) {
+               bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+               rc = bnx2x_nic_load(bp, LOAD_NORMAL);
+       }
+
+       return rc;
+}
+
+static void bnx2x_get_pauseparam(struct net_device *dev,
+                                struct ethtool_pauseparam *epause)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       epause->autoneg = (bp->link_params.req_flow_ctrl == FLOW_CTRL_AUTO) &&
+                         (bp->link_params.req_line_speed == SPEED_AUTO_NEG);
+
+       epause->rx_pause = ((bp->link_vars.flow_ctrl & FLOW_CTRL_RX) ==
+                           FLOW_CTRL_RX);
+       epause->tx_pause = ((bp->link_vars.flow_ctrl & FLOW_CTRL_TX) ==
+                           FLOW_CTRL_TX);
+
+       DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n"
+          DP_LEVEL "  autoneg %d  rx_pause %d  tx_pause %d\n",
+          epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause);
+}
+
+static int bnx2x_set_pauseparam(struct net_device *dev,
+                               struct ethtool_pauseparam *epause)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (IS_E1HMF(bp))
+               return 0;
+
+       DP(NETIF_MSG_LINK, "ethtool_pauseparam: cmd %d\n"
+          DP_LEVEL "  autoneg %d  rx_pause %d  tx_pause %d\n",
+          epause->cmd, epause->autoneg, epause->rx_pause, epause->tx_pause);
+
+       bp->link_params.req_flow_ctrl = FLOW_CTRL_AUTO;
+
+       if (epause->rx_pause)
+               bp->link_params.req_flow_ctrl |= FLOW_CTRL_RX;
+
+       if (epause->tx_pause)
+               bp->link_params.req_flow_ctrl |= FLOW_CTRL_TX;
+
+       if (bp->link_params.req_flow_ctrl == FLOW_CTRL_AUTO)
+               bp->link_params.req_flow_ctrl = FLOW_CTRL_NONE;
+
+       if (epause->autoneg) {
+               if (!(bp->port.supported & SUPPORTED_Autoneg)) {
+                       DP(NETIF_MSG_LINK, "autoneg not supported\n");
+                       return -EINVAL;
+               }
+
+               if (bp->link_params.req_line_speed == SPEED_AUTO_NEG)
+                       bp->link_params.req_flow_ctrl = FLOW_CTRL_AUTO;
+       }
+
+       DP(NETIF_MSG_LINK,
+          "req_flow_ctrl 0x%x\n", bp->link_params.req_flow_ctrl);
+
+       if (netif_running(dev)) {
+               bnx2x_stats_handle(bp, STATS_EVENT_STOP);
+               bnx2x_link_set(bp);
+       }
+
+       return 0;
+}
+
+#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */
+static int bnx2x_set_flags(struct net_device *dev, u32 data)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int changed = 0;
+       int rc = 0;
+
+       /* TPA requires Rx CSUM offloading */
+       if ((data & ETH_FLAG_LRO) && bp->rx_csum) {
+               if (!(dev->features & NETIF_F_LRO)) {
+                       dev->features |= NETIF_F_LRO;
+                       bp->flags |= TPA_ENABLE_FLAG;
+                       changed = 1;
+               }
+
+       } else if (dev->features & NETIF_F_LRO) {
+               dev->features &= ~NETIF_F_LRO;
+               bp->flags &= ~TPA_ENABLE_FLAG;
+               changed = 1;
+       }
+
+       if (changed && netif_running(dev)) {
+               bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+               rc = bnx2x_nic_load(bp, LOAD_NORMAL);
+       }
+
+       return rc;
+}
+#endif
+
+static u32 bnx2x_get_rx_csum(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       return bp->rx_csum;
+}
+
+static int bnx2x_set_rx_csum(struct net_device *dev, u32 data)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int rc = 0;
+
+       bp->rx_csum = data;
+
+       /* Disable TPA, when Rx CSUM is disabled. Otherwise all
+          TPA'ed packets will be discarded due to wrong TCP CSUM */
+       if (!data) {
+#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */
+               u32 flags = ethtool_op_get_flags(dev);
+
+               rc = bnx2x_set_flags(dev, (flags & ~ETH_FLAG_LRO));
+#else
+               bp->flags &= ~TPA_ENABLE_FLAG;
+               if (netif_running(dev)) {
+                       bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+                       rc = bnx2x_nic_load(bp, LOAD_NORMAL);
+               }
+#endif
+       }
+
+       return rc;
+}
+
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+static int bnx2x_set_tso(struct net_device *dev, u32 data)
+{
+       if (data) {
+               dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
+#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */
+               dev->features |= NETIF_F_TSO6;
+#endif
+       } else {
+               dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO_ECN);
+#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */
+               dev->features &= ~NETIF_F_TSO6;
+#endif
+       }
+
+       return 0;
+}
+#endif
+
+static const struct {
+       char string[ETH_GSTRING_LEN];
+} bnx2x_tests_str_arr[BNX2X_NUM_TESTS] = {
+       { "register_test (offline)" },
+       { "memory_test (offline)" },
+       { "loopback_test (offline)" },
+       { "nvram_test (online)" },
+       { "interrupt_test (online)" },
+       { "link_test (online)" },
+       { "idle check (online)" },
+       { "MC errors (online)" }
+};
+
+static int bnx2x_self_test_count(struct net_device *dev)
+{
+       return BNX2X_NUM_TESTS;
+}
+
+static int bnx2x_test_registers(struct bnx2x *bp)
+{
+       int idx, i, rc = -ENODEV;
+       u32 wr_val = 0;
+       int port = BP_PORT(bp);
+       static const struct {
+               u32  offset0;
+               u32  offset1;
+               u32  mask;
+       } reg_tbl[] = {
+/* 0 */                { BRB1_REG_PAUSE_LOW_THRESHOLD_0,      4, 0x000003ff },
+               { DORQ_REG_DB_ADDR0,                   4, 0xffffffff },
+               { HC_REG_AGG_INT_0,                    4, 0x000003ff },
+               { PBF_REG_MAC_IF0_ENABLE,              4, 0x00000001 },
+               { PBF_REG_P0_INIT_CRD,                 4, 0x000007ff },
+               { PRS_REG_CID_PORT_0,                  4, 0x00ffffff },
+               { PXP2_REG_PSWRQ_CDU0_L2P,             4, 0x000fffff },
+               { PXP2_REG_RQ_CDU0_EFIRST_MEM_ADDR,    8, 0x0003ffff },
+               { PXP2_REG_PSWRQ_TM0_L2P,              4, 0x000fffff },
+               { PXP2_REG_RQ_USDM0_EFIRST_MEM_ADDR,   8, 0x0003ffff },
+/* 10 */       { PXP2_REG_PSWRQ_TSDM0_L2P,            4, 0x000fffff },
+               { QM_REG_CONNNUM_0,                    4, 0x000fffff },
+               { TM_REG_LIN0_MAX_ACTIVE_CID,          4, 0x0003ffff },
+               { SRC_REG_KEYRSS0_0,                  40, 0xffffffff },
+               { SRC_REG_KEYRSS0_7,                  40, 0xffffffff },
+               { XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00, 4, 0x00000001 },
+               { XCM_REG_WU_DA_CNT_CMD00,             4, 0x00000003 },
+               { XCM_REG_GLB_DEL_ACK_MAX_CNT_0,       4, 0x000000ff },
+               { NIG_REG_EGRESS_MNG0_FIFO,           20, 0xffffffff },
+               { NIG_REG_LLH0_T_BIT,                  4, 0x00000001 },
+/* 20 */       { NIG_REG_EMAC0_IN_EN,                 4, 0x00000001 },
+               { NIG_REG_BMAC0_IN_EN,                 4, 0x00000001 },
+               { NIG_REG_XCM0_OUT_EN,                 4, 0x00000001 },
+               { NIG_REG_BRB0_OUT_EN,                 4, 0x00000001 },
+               { NIG_REG_LLH0_XCM_MASK,               4, 0x00000007 },
+               { NIG_REG_LLH0_ACPI_PAT_6_LEN,        68, 0x000000ff },
+               { NIG_REG_LLH0_ACPI_PAT_0_CRC,        68, 0xffffffff },
+               { NIG_REG_LLH0_DEST_MAC_0_0,         160, 0xffffffff },
+               { NIG_REG_LLH0_DEST_IP_0_1,          160, 0xffffffff },
+               { NIG_REG_LLH0_IPV4_IPV6_0,          160, 0x00000001 },
+/* 30 */       { NIG_REG_LLH0_DEST_UDP_0,           160, 0x0000ffff },
+               { NIG_REG_LLH0_DEST_TCP_0,           160, 0x0000ffff },
+               { NIG_REG_LLH0_VLAN_ID_0,            160, 0x00000fff },
+               { NIG_REG_XGXS_SERDES0_MODE_SEL,       4, 0x00000001 },
+               { NIG_REG_LED_CONTROL_OVERRIDE_TRAFFIC_P0, 4, 0x00000001 },
+               { NIG_REG_STATUS_INTERRUPT_PORT0,      4, 0x07ffffff },
+               { NIG_REG_XGXS0_CTRL_EXTREMOTEMDIOST, 24, 0x00000001 },
+               { NIG_REG_SERDES0_CTRL_PHY_ADDR,      16, 0x0000001f },
+
+               { 0xffffffff, 0, 0x00000000 }
+       };
+
+       if (!netif_running(bp->dev))
+               return rc;
+
+       /* Repeat the test twice:
+          First by writing 0x00000000, second by writing 0xffffffff */
+       for (idx = 0; idx < 2; idx++) {
+
+               switch (idx) {
+               case 0:
+                       wr_val = 0;
+                       break;
+               case 1:
+                       wr_val = 0xffffffff;
+                       break;
+               }
+
+               for (i = 0; reg_tbl[i].offset0 != 0xffffffff; i++) {
+                       u32 offset, mask, save_val, val;
+
+                       offset = reg_tbl[i].offset0 + port*reg_tbl[i].offset1;
+                       mask = reg_tbl[i].mask;
+
+                       save_val = REG_RD(bp, offset);
+
+                       REG_WR(bp, offset, wr_val);
+                       val = REG_RD(bp, offset);
+
+                       /* Restore the original register's value */
+                       REG_WR(bp, offset, save_val);
+
+                       /* verify that value is as expected value */
+                       if ((val & mask) != (wr_val & mask))
+                               goto test_reg_exit;
+               }
+       }
+
+       rc = 0;
+
+test_reg_exit:
+       return rc;
+}
+
+static int bnx2x_test_memory(struct bnx2x *bp)
+{
+       int i, j, rc = -ENODEV;
+       u32 val;
+       static const struct {
+               u32 offset;
+               int size;
+       } mem_tbl[] = {
+               { CCM_REG_XX_DESCR_TABLE,   CCM_REG_XX_DESCR_TABLE_SIZE },
+               { CFC_REG_ACTIVITY_COUNTER, CFC_REG_ACTIVITY_COUNTER_SIZE },
+               { CFC_REG_LINK_LIST,        CFC_REG_LINK_LIST_SIZE },
+               { DMAE_REG_CMD_MEM,         DMAE_REG_CMD_MEM_SIZE },
+               { TCM_REG_XX_DESCR_TABLE,   TCM_REG_XX_DESCR_TABLE_SIZE },
+               { UCM_REG_XX_DESCR_TABLE,   UCM_REG_XX_DESCR_TABLE_SIZE },
+               { XCM_REG_XX_DESCR_TABLE,   XCM_REG_XX_DESCR_TABLE_SIZE },
+
+               { 0xffffffff, 0 }
+       };
+       static const struct {
+               char *name;
+               u32 offset;
+               u32 e1_mask;
+               u32 e1h_mask;
+       } prty_tbl[] = {
+               { "CCM_PRTY_STS",  CCM_REG_CCM_PRTY_STS,   0x3ffc0, 0 },
+               { "CFC_PRTY_STS",  CFC_REG_CFC_PRTY_STS,   0x2,     0x2 },
+               { "DMAE_PRTY_STS", DMAE_REG_DMAE_PRTY_STS, 0,       0 },
+               { "TCM_PRTY_STS",  TCM_REG_TCM_PRTY_STS,   0x3ffc0, 0 },
+               { "UCM_PRTY_STS",  UCM_REG_UCM_PRTY_STS,   0x3ffc0, 0 },
+               { "XCM_PRTY_STS",  XCM_REG_XCM_PRTY_STS,   0x3ffc1, 0 },
+
+               { NULL, 0xffffffff, 0, 0 }
+       };
+
+       if (!netif_running(bp->dev))
+               return rc;
+
+       /* Go through all the memories */
+       for (i = 0; mem_tbl[i].offset != 0xffffffff; i++)
+               for (j = 0; j < mem_tbl[i].size; j++)
+                       REG_RD(bp, mem_tbl[i].offset + j*4);
+
+       /* Check the parity status */
+       for (i = 0; prty_tbl[i].offset != 0xffffffff; i++) {
+               val = REG_RD(bp, prty_tbl[i].offset);
+               if ((CHIP_IS_E1(bp) && (val & ~(prty_tbl[i].e1_mask))) ||
+                   (CHIP_IS_E1H(bp) && (val & ~(prty_tbl[i].e1h_mask)))) {
+                       DP(NETIF_MSG_HW,
+                          "%s is 0x%x\n", prty_tbl[i].name, val);
+                       goto test_mem_exit;
+               }
+       }
+
+       rc = 0;
+
+test_mem_exit:
+       return rc;
+}
+
+static void bnx2x_wait_for_link(struct bnx2x *bp, u8 link_up)
+{
+       int cnt = 1000;
+
+       if (link_up)
+               while (bnx2x_link_test(bp) && cnt--)
+                       msleep(10);
+}
+
+static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up)
+{
+       unsigned int pkt_size, num_pkts, i;
+       struct sk_buff *skb;
+       unsigned char *packet;
+       struct bnx2x_fastpath *fp = &bp->fp[0];
+       u16 tx_start_idx, tx_idx;
+       u16 rx_start_idx, rx_idx;
+       u16 pkt_prod;
+       struct sw_tx_bd *tx_buf;
+       struct eth_tx_bd *tx_bd;
+       dma_addr_t mapping;
+       union eth_rx_cqe *cqe;
+       u8 cqe_fp_flags;
+       struct sw_rx_bd *rx_buf;
+       u16 len;
+       int rc = -ENODEV;
+
+       if (loopback_mode == BNX2X_MAC_LOOPBACK) {
+               bp->link_params.loopback_mode = LOOPBACK_BMAC;
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_phy_init(&bp->link_params, &bp->link_vars);
+               bnx2x_release_phy_lock(bp);
+
+       } else if (loopback_mode == BNX2X_PHY_LOOPBACK) {
+               bp->link_params.loopback_mode = LOOPBACK_XGXS_10;
+               bnx2x_acquire_phy_lock(bp);
+               bnx2x_phy_init(&bp->link_params, &bp->link_vars);
+               bnx2x_release_phy_lock(bp);
+               /* wait until link state is restored */
+               bnx2x_wait_for_link(bp, link_up);
+
+       } else
+               return -EINVAL;
+
+       pkt_size = 1514;
+       skb = netdev_alloc_skb(bp->dev, bp->rx_buf_size);
+       if (!skb) {
+               rc = -ENOMEM;
+               goto test_loopback_exit;
+       }
+       packet = skb_put(skb, pkt_size);
+       memcpy(packet, bp->dev->dev_addr, ETH_ALEN);
+       memset(packet + ETH_ALEN, 0, (ETH_HLEN - ETH_ALEN));
+       for (i = ETH_HLEN; i < pkt_size; i++)
+               packet[i] = (unsigned char) (i & 0xff);
+
+       num_pkts = 0;
+       tx_start_idx = le16_to_cpu(*fp->tx_cons_sb);
+       rx_start_idx = le16_to_cpu(*fp->rx_cons_sb);
+
+       pkt_prod = fp->tx_pkt_prod++;
+       tx_buf = &fp->tx_buf_ring[TX_BD(pkt_prod)];
+       tx_buf->first_bd = fp->tx_bd_prod;
+       tx_buf->skb = skb;
+
+       tx_bd = &fp->tx_desc_ring[TX_BD(fp->tx_bd_prod)];
+       mapping = pci_map_single(bp->pdev, skb->data,
+                                skb_headlen(skb), PCI_DMA_TODEVICE);
+       tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+       tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+       tx_bd->nbd = cpu_to_le16(1);
+       tx_bd->nbytes = cpu_to_le16(skb_headlen(skb));
+       tx_bd->vlan = cpu_to_le16(pkt_prod);
+       tx_bd->bd_flags.as_bitfield = (ETH_TX_BD_FLAGS_START_BD |
+                                      ETH_TX_BD_FLAGS_END_BD);
+       tx_bd->general_data = ((UNICAST_ADDRESS <<
+                               ETH_TX_BD_ETH_ADDR_TYPE_SHIFT) | 1);
+
+       fp->hw_tx_prods->bds_prod =
+               cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + 1);
+       mb(); /* FW restriction: must not reorder writing nbd and packets */
+       fp->hw_tx_prods->packets_prod =
+               cpu_to_le32(le32_to_cpu(fp->hw_tx_prods->packets_prod) + 1);
+       DOORBELL(bp, FP_IDX(fp), 0);
+
+       mmiowb();
+
+       num_pkts++;
+       fp->tx_bd_prod++;
+       bp->dev->trans_start = jiffies;
+
+       udelay(100);
+
+       tx_idx = le16_to_cpu(*fp->tx_cons_sb);
+       if (tx_idx != tx_start_idx + num_pkts)
+               goto test_loopback_exit;
+
+       rx_idx = le16_to_cpu(*fp->rx_cons_sb);
+       if (rx_idx != rx_start_idx + num_pkts)
+               goto test_loopback_exit;
+
+       cqe = &fp->rx_comp_ring[RCQ_BD(fp->rx_comp_cons)];
+       cqe_fp_flags = cqe->fast_path_cqe.type_error_flags;
+       if (CQE_TYPE(cqe_fp_flags) || (cqe_fp_flags & ETH_RX_ERROR_FALGS))
+               goto test_loopback_rx_exit;
+
+       len = le16_to_cpu(cqe->fast_path_cqe.pkt_len);
+       if (len != pkt_size)
+               goto test_loopback_rx_exit;
+
+       rx_buf = &fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)];
+       skb = rx_buf->skb;
+       skb_reserve(skb, cqe->fast_path_cqe.placement_offset);
+       for (i = ETH_HLEN; i < pkt_size; i++)
+               if (*(skb->data + i) != (unsigned char) (i & 0xff))
+                       goto test_loopback_rx_exit;
+
+       rc = 0;
+
+test_loopback_rx_exit:
+       bp->dev->last_rx = jiffies;
+
+       fp->rx_bd_cons = NEXT_RX_IDX(fp->rx_bd_cons);
+       fp->rx_bd_prod = NEXT_RX_IDX(fp->rx_bd_prod);
+       fp->rx_comp_cons = NEXT_RCQ_IDX(fp->rx_comp_cons);
+       fp->rx_comp_prod = NEXT_RCQ_IDX(fp->rx_comp_prod);
+
+       /* Update producers */
+       bnx2x_update_rx_prod(bp, fp, fp->rx_bd_prod, fp->rx_comp_prod,
+                            fp->rx_sge_prod);
+       mmiowb(); /* keep prod updates ordered */
+
+test_loopback_exit:
+       bp->link_params.loopback_mode = LOOPBACK_NONE;
+
+       return rc;
+}
+
+static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up)
+{
+       int rc = 0;
+
+       if (!netif_running(bp->dev))
+               return BNX2X_LOOPBACK_FAILED;
+
+       bnx2x_netif_stop(bp, 1);
+
+       if (bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up)) {
+               DP(NETIF_MSG_PROBE, "MAC loopback failed\n");
+               rc |= BNX2X_MAC_LOOPBACK_FAILED;
+       }
+
+       if (bnx2x_run_loopback(bp, BNX2X_PHY_LOOPBACK, link_up)) {
+               DP(NETIF_MSG_PROBE, "PHY loopback failed\n");
+               rc |= BNX2X_PHY_LOOPBACK_FAILED;
+       }
+
+       bnx2x_netif_start(bp);
+
+       return rc;
+}
+
+#define CRC32_RESIDUAL                 0xdebb20e3
+
+static int bnx2x_test_nvram(struct bnx2x *bp)
+{
+       static const struct {
+               int offset;
+               int size;
+       } nvram_tbl[] = {
+               {     0,  0x14 }, /* bootstrap */
+               {  0x14,  0xec }, /* dir */
+               { 0x100, 0x350 }, /* manuf_info */
+               { 0x450,  0xf0 }, /* feature_info */
+               { 0x640,  0x64 }, /* upgrade_key_info */
+               { 0x6a4,  0x64 },
+               { 0x708,  0x70 }, /* manuf_key_info */
+               { 0x778,  0x70 },
+               {     0,     0 }
+       };
+       u32 buf[0x350 / 4];
+       u8 *data = (u8 *)buf;
+       int i, rc;
+       u32 magic, csum;
+
+       rc = bnx2x_nvram_read(bp, 0, data, 4);
+       if (rc) {
+               DP(NETIF_MSG_PROBE, "magic value read (rc -%d)\n", -rc);
+               goto test_nvram_exit;
+       }
+
+       magic = be32_to_cpu(buf[0]);
+       if (magic != 0x669955aa) {
+               DP(NETIF_MSG_PROBE, "magic value (0x%08x)\n", magic);
+               rc = -ENODEV;
+               goto test_nvram_exit;
+       }
+
+       for (i = 0; nvram_tbl[i].size; i++) {
+
+               rc = bnx2x_nvram_read(bp, nvram_tbl[i].offset, data,
+                                     nvram_tbl[i].size);
+               if (rc) {
+                       DP(NETIF_MSG_PROBE,
+                          "nvram_tbl[%d] read data (rc -%d)\n", i, -rc);
+                       goto test_nvram_exit;
+               }
+
+               csum = ether_crc_le(nvram_tbl[i].size, data);
+               if (csum != CRC32_RESIDUAL) {
+                       DP(NETIF_MSG_PROBE,
+                          "nvram_tbl[%d] csum value (0x%08x)\n", i, csum);
+                       rc = -ENODEV;
+                       goto test_nvram_exit;
+               }
+       }
+
+test_nvram_exit:
+       return rc;
+}
+
+static int bnx2x_test_intr(struct bnx2x *bp)
+{
+       struct mac_configuration_cmd *config = bnx2x_sp(bp, mac_config);
+       int i, rc;
+
+       if (!netif_running(bp->dev))
+               return -ENODEV;
+
+       config->hdr.length = 0;
+       config->hdr.offset = 0;
+       config->hdr.client_id = BP_CL_ID(bp);
+       config->hdr.reserved1 = 0;
+
+       rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
+                          U64_HI(bnx2x_sp_mapping(bp, mac_config)),
+                          U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0);
+       if (rc == 0) {
+               bp->set_mac_pending++;
+               for (i = 0; i < 10; i++) {
+                       if (!bp->set_mac_pending)
+                               break;
+                       msleep_interruptible(10);
+               }
+               if (i == 10)
+                       rc = -ENODEV;
+       }
+
+       return rc;
+}
+
+static void bnx2x_self_test(struct net_device *dev,
+                           struct ethtool_test *etest, u64 *buf)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       memset(buf, 0, sizeof(u64) * BNX2X_NUM_TESTS);
+
+       if (!netif_running(dev))
+               return;
+
+       /* offline tests are not supported in MF mode */
+       if (IS_E1HMF(bp))
+               etest->flags &= ~ETH_TEST_FL_OFFLINE;
+
+       if (etest->flags & ETH_TEST_FL_OFFLINE) {
+               u8 link_up;
+
+               link_up = bp->link_vars.link_up;
+               bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+               bnx2x_nic_load(bp, LOAD_DIAG);
+               /* wait until link state is restored */
+               bnx2x_wait_for_link(bp, link_up);
+
+               if (bnx2x_test_registers(bp) != 0) {
+                       buf[0] = 1;
+                       etest->flags |= ETH_TEST_FL_FAILED;
+               }
+               if (bnx2x_test_memory(bp) != 0) {
+                       buf[1] = 1;
+                       etest->flags |= ETH_TEST_FL_FAILED;
+               }
+               buf[2] = bnx2x_test_loopback(bp, link_up);
+               if (buf[2] != 0)
+                       etest->flags |= ETH_TEST_FL_FAILED;
+
+               bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+               bnx2x_nic_load(bp, LOAD_NORMAL);
+               /* wait until link state is restored */
+               bnx2x_wait_for_link(bp, link_up);
+       }
+       if (bnx2x_test_nvram(bp) != 0) {
+               buf[3] = 1;
+               etest->flags |= ETH_TEST_FL_FAILED;
+       }
+       if (bnx2x_test_intr(bp) != 0) {
+               buf[4] = 1;
+               etest->flags |= ETH_TEST_FL_FAILED;
+       }
+       if (bp->port.pmf)
+               if (bnx2x_link_test(bp) != 0) {
+                       buf[5] = 1;
+                       etest->flags |= ETH_TEST_FL_FAILED;
+               }
+#ifndef BNX2X_UPSTREAM /* ! BNX2X_UPSTREAM */
+       /* run the idle check twice */
+       bnx2x_idle_chk(bp);
+       buf[6] = bnx2x_idle_chk(bp);
+       if (buf[6] != 0)
+               etest->flags |= ETH_TEST_FL_FAILED;
+#endif
+       buf[7] = bnx2x_mc_assert(bp);
+       if (buf[7] != 0)
+               etest->flags |= ETH_TEST_FL_FAILED;
+
+#ifdef BNX2X_EXTRA_DEBUG
+       bnx2x_panic_dump(bp);
+#endif
+}
+
+static const struct {
+       long offset;
+       int size;
+       u32 flags;
+#define STATS_FLAGS_PORT               1
+#define STATS_FLAGS_FUNC               2
+       u8 string[ETH_GSTRING_LEN];
+} bnx2x_stats_arr[BNX2X_NUM_STATS] = {
+/* 1 */        { STATS_OFFSET32(valid_bytes_received_hi),
+                               8, STATS_FLAGS_FUNC, "rx_bytes" },
+       { STATS_OFFSET32(error_bytes_received_hi),
+                               8, STATS_FLAGS_FUNC, "rx_error_bytes" },
+       { STATS_OFFSET32(total_bytes_transmitted_hi),
+                               8, STATS_FLAGS_FUNC, "tx_bytes" },
+       { STATS_OFFSET32(tx_stat_ifhcoutbadoctets_hi),
+                               8, STATS_FLAGS_PORT, "tx_error_bytes" },
+       { STATS_OFFSET32(total_unicast_packets_received_hi),
+                               8, STATS_FLAGS_FUNC, "rx_ucast_packets" },
+       { STATS_OFFSET32(total_multicast_packets_received_hi),
+                               8, STATS_FLAGS_FUNC, "rx_mcast_packets" },
+       { STATS_OFFSET32(total_broadcast_packets_received_hi),
+                               8, STATS_FLAGS_FUNC, "rx_bcast_packets" },
+       { STATS_OFFSET32(total_unicast_packets_transmitted_hi),
+                               8, STATS_FLAGS_FUNC, "tx_packets" },
+       { STATS_OFFSET32(tx_stat_dot3statsinternalmactransmiterrors_hi),
+                               8, STATS_FLAGS_PORT, "tx_mac_errors" },
+/* 10 */{ STATS_OFFSET32(rx_stat_dot3statscarriersenseerrors_hi),
+                               8, STATS_FLAGS_PORT, "tx_carrier_errors" },
+       { STATS_OFFSET32(rx_stat_dot3statsfcserrors_hi),
+                               8, STATS_FLAGS_PORT, "rx_crc_errors" },
+       { STATS_OFFSET32(rx_stat_dot3statsalignmenterrors_hi),
+                               8, STATS_FLAGS_PORT, "rx_align_errors" },
+       { STATS_OFFSET32(tx_stat_dot3statssinglecollisionframes_hi),
+                               8, STATS_FLAGS_PORT, "tx_single_collisions" },
+       { STATS_OFFSET32(tx_stat_dot3statsmultiplecollisionframes_hi),
+                               8, STATS_FLAGS_PORT, "tx_multi_collisions" },
+       { STATS_OFFSET32(tx_stat_dot3statsdeferredtransmissions_hi),
+                               8, STATS_FLAGS_PORT, "tx_deferred" },
+       { STATS_OFFSET32(tx_stat_dot3statsexcessivecollisions_hi),
+                               8, STATS_FLAGS_PORT, "tx_excess_collisions" },
+       { STATS_OFFSET32(tx_stat_dot3statslatecollisions_hi),
+                               8, STATS_FLAGS_PORT, "tx_late_collisions" },
+       { STATS_OFFSET32(tx_stat_etherstatscollisions_hi),
+                               8, STATS_FLAGS_PORT, "tx_total_collisions" },
+       { STATS_OFFSET32(rx_stat_etherstatsfragments_hi),
+                               8, STATS_FLAGS_PORT, "rx_fragments" },
+/* 20 */{ STATS_OFFSET32(rx_stat_etherstatsjabbers_hi),
+                               8, STATS_FLAGS_PORT, "rx_jabbers" },
+       { STATS_OFFSET32(rx_stat_etherstatsundersizepkts_hi),
+                               8, STATS_FLAGS_PORT, "rx_undersize_packets" },
+       { STATS_OFFSET32(jabber_packets_received),
+                               4, STATS_FLAGS_FUNC, "rx_oversize_packets" },
+       { STATS_OFFSET32(tx_stat_etherstatspkts64octets_hi),
+                               8, STATS_FLAGS_PORT, "tx_64_byte_packets" },
+       { STATS_OFFSET32(tx_stat_etherstatspkts65octetsto127octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_65_to_127_byte_packets" },
+       { STATS_OFFSET32(tx_stat_etherstatspkts128octetsto255octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_128_to_255_byte_packets" },
+       { STATS_OFFSET32(tx_stat_etherstatspkts256octetsto511octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_256_to_511_byte_packets" },
+       { STATS_OFFSET32(tx_stat_etherstatspkts512octetsto1023octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_512_to_1023_byte_packets" },
+       { STATS_OFFSET32(etherstatspkts1024octetsto1522octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_1024_to_1522_byte_packets" },
+       { STATS_OFFSET32(etherstatspktsover1522octets_hi),
+                       8, STATS_FLAGS_PORT, "tx_1523_to_9022_byte_packets" },
+/* 30 */{ STATS_OFFSET32(rx_stat_xonpauseframesreceived_hi),
+                               8, STATS_FLAGS_PORT, "rx_xon_frames" },
+       { STATS_OFFSET32(rx_stat_xoffpauseframesreceived_hi),
+                               8, STATS_FLAGS_PORT, "rx_xoff_frames" },
+       { STATS_OFFSET32(tx_stat_outxonsent_hi),
+                               8, STATS_FLAGS_PORT, "tx_xon_frames" },
+       { STATS_OFFSET32(tx_stat_outxoffsent_hi),
+                               8, STATS_FLAGS_PORT, "tx_xoff_frames" },
+       { STATS_OFFSET32(rx_stat_maccontrolframesreceived_hi),
+                               8, STATS_FLAGS_PORT, "rx_mac_ctrl_frames" },
+       { STATS_OFFSET32(mac_filter_discard),
+                               4, STATS_FLAGS_PORT, "rx_filtered_packets" },
+       { STATS_OFFSET32(no_buff_discard),
+                               4, STATS_FLAGS_FUNC, "rx_discards" },
+       { STATS_OFFSET32(xxoverflow_discard),
+                               4, STATS_FLAGS_PORT, "rx_fw_discards" },
+       { STATS_OFFSET32(brb_drop_hi),
+                               8, STATS_FLAGS_PORT, "brb_discard" },
+       { STATS_OFFSET32(brb_truncate_hi),
+                               8, STATS_FLAGS_PORT, "brb_truncate" },
+/* 40 */{ STATS_OFFSET32(rx_err_discard_pkt),
+                               4, STATS_FLAGS_FUNC, "rx_phy_ip_err_discards"},
+       { STATS_OFFSET32(rx_skb_alloc_failed),
+                               4, STATS_FLAGS_FUNC, "rx_skb_alloc_discard" },
+       { STATS_OFFSET32(hw_csum_err),
+                               4, STATS_FLAGS_FUNC, "rx_csum_offload_errors" },
+/* 43 */{ STATS_OFFSET32(nig_timer_max),
+                               4, STATS_FLAGS_PORT, "timer_max_events" }
+};
+
+#define IS_NOT_E1HMF_STAT(bp, i) \
+               (IS_E1HMF(bp) && (bnx2x_stats_arr[i].flags & STATS_FLAGS_PORT))
+
+static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int i, j;
+
+       switch (stringset) {
+       case ETH_SS_STATS:
+               for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
+                       if (IS_NOT_E1HMF_STAT(bp, i))
+                               continue;
+                       strcpy(buf + j*ETH_GSTRING_LEN,
+                              bnx2x_stats_arr[i].string);
+                       j++;
+               }
+               break;
+
+       case ETH_SS_TEST:
+               memcpy(buf, bnx2x_tests_str_arr, sizeof(bnx2x_tests_str_arr));
+               break;
+       }
+}
+
+static int bnx2x_get_stats_count(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int i, num_stats = 0;
+
+       for (i = 0; i < BNX2X_NUM_STATS; i++) {
+               if (IS_NOT_E1HMF_STAT(bp, i))
+                       continue;
+               num_stats++;
+       }
+       return num_stats;
+}
+
+static void bnx2x_get_ethtool_stats(struct net_device *dev,
+                                   struct ethtool_stats *stats, u64 *buf)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       u32 *hw_stats = (u32 *)&bp->eth_stats;
+       int i, j;
+
+       for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
+               if (IS_NOT_E1HMF_STAT(bp, i))
+                       continue;
+
+               if (bnx2x_stats_arr[i].size == 0) {
+                       /* skip this counter */
+                       buf[j] = 0;
+                       j++;
+                       continue;
+               }
+               if (bnx2x_stats_arr[i].size == 4) {
+                       /* 4-byte counter */
+                       buf[j] = (u64) *(hw_stats + bnx2x_stats_arr[i].offset);
+                       j++;
+                       continue;
+               }
+               /* 8-byte counter */
+               buf[j] = HILO_U64(*(hw_stats + bnx2x_stats_arr[i].offset),
+                                 *(hw_stats + bnx2x_stats_arr[i].offset + 1));
+               j++;
+       }
+}
+
+static int bnx2x_phys_id(struct net_device *dev, u32 data)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int port = BP_PORT(bp);
+       int i;
+
+       if (!netif_running(dev))
+               return 0;
+
+       if (!bp->port.pmf)
+               return 0;
+
+       if (data == 0)
+               data = 2;
+
+       for (i = 0; i < (data * 2); i++) {
+               if ((i % 2) == 0)
+                       bnx2x_set_led(bp, port, LED_MODE_OPER, SPEED_1000,
+                                     bp->link_params.hw_led_mode,
+                                     bp->link_params.chip_id);
+               else
+                       bnx2x_set_led(bp, port, LED_MODE_OFF, 0,
+                                     bp->link_params.hw_led_mode,
+                                     bp->link_params.chip_id);
+
+               msleep_interruptible(500);
+               if (signal_pending(current))
+                       break;
+       }
+
+       if (bp->link_vars.link_up)
+               bnx2x_set_led(bp, port, LED_MODE_OPER,
+                             bp->link_vars.line_speed,
+                             bp->link_params.hw_led_mode,
+                             bp->link_params.chip_id);
+
+       return 0;
+}
+
+static struct ethtool_ops bnx2x_ethtool_ops = {
+       .get_settings           = bnx2x_get_settings,
+       .set_settings           = bnx2x_set_settings,
+       .get_drvinfo            = bnx2x_get_drvinfo,
+       .get_wol                = bnx2x_get_wol,
+       .set_wol                = bnx2x_set_wol,
+       .get_msglevel           = bnx2x_get_msglevel,
+       .set_msglevel           = bnx2x_set_msglevel,
+       .nway_reset             = bnx2x_nway_reset,
+       .get_link               = ethtool_op_get_link,
+#if (LINUX_VERSION_CODE >= 0x020418) /* BNX2X_UPSTREAM */
+       .get_eeprom_len         = bnx2x_get_eeprom_len,
+#endif
+       .get_eeprom             = bnx2x_get_eeprom,
+       .set_eeprom             = bnx2x_set_eeprom,
+       .get_coalesce           = bnx2x_get_coalesce,
+       .set_coalesce           = bnx2x_set_coalesce,
+       .get_ringparam          = bnx2x_get_ringparam,
+       .set_ringparam          = bnx2x_set_ringparam,
+       .get_pauseparam         = bnx2x_get_pauseparam,
+       .set_pauseparam         = bnx2x_set_pauseparam,
+       .get_rx_csum            = bnx2x_get_rx_csum,
+       .set_rx_csum            = bnx2x_set_rx_csum,
+       .get_tx_csum            = ethtool_op_get_tx_csum,
+#if (LINUX_VERSION_CODE >= 0x020618) /* BNX2X_UPSTREAM */
+       .set_tx_csum            = ethtool_op_set_tx_hw_csum,
+#else
+       .set_tx_csum            = bnx2x_set_tx_hw_csum,
+#endif
+#if (LINUX_VERSION_CODE >= 0x02061a) /* BNX2X_UPSTREAM */
+       .set_flags              = bnx2x_set_flags,
+       .get_flags              = ethtool_op_get_flags,
+#endif
+       .get_sg                 = ethtool_op_get_sg,
+       .set_sg                 = ethtool_op_set_sg,
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+       .get_tso                = ethtool_op_get_tso,
+       .set_tso                = bnx2x_set_tso,
+#endif
+       .self_test_count        = bnx2x_self_test_count,
+       .self_test              = bnx2x_self_test,
+       .get_strings            = bnx2x_get_strings,
+       .phys_id                = bnx2x_phys_id,
+       .get_stats_count        = bnx2x_get_stats_count,
+       .get_ethtool_stats      = bnx2x_get_ethtool_stats,
+#ifdef ETHTOOL_GPERMADDR /* ! BNX2X_UPSTREAM */
+#if (LINUX_VERSION_CODE < 0x020617)
+       .get_perm_addr          = ethtool_op_get_perm_addr
+#endif
+#endif
+};
+
+/* end of ethtool_ops */
+
+/****************************************************************************
+* General service functions
+****************************************************************************/
+
+static int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state)
+{
+       u16 pm_csr;
+
+       pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, &pm_csr);
+
+       switch (state) {
+       case PCI_D0:
+               pci_write_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL,
+                                     ((pm_csr & ~PCI_PM_CTRL_STATE_MASK) |
+                                      PCI_PM_CTRL_PME_STATUS));
+
+               if (pm_csr & PCI_PM_CTRL_STATE_MASK)
+                       /* delay required during transition out of D3hot */
+                       msleep(20);
+               break;
+
+       case PCI_D3hot:
+               pm_csr &= ~PCI_PM_CTRL_STATE_MASK;
+               pm_csr |= 3;
+
+               if (bp->wol)
+                       pm_csr |= PCI_PM_CTRL_PME_ENABLE;
+
+               pci_write_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL,
+                                     pm_csr);
+
+               /* No more memory access after this point until
+               * device is brought back to D0.
+               */
+               break;
+
+       default:
+               return -EINVAL;
+       }
+       return 0;
+}
+
+static inline int bnx2x_has_rx_work(struct bnx2x_fastpath *fp)
+{
+       u16 rx_cons_sb;
+
+       rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb);
+       if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
+               rx_cons_sb++;
+       return (fp->rx_comp_cons != rx_cons_sb);
+}
+
+/*
+ * net_device service functions
+ */
+
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+static int bnx2x_poll(struct napi_struct *napi, int budget)
+#else
+static int bnx2x_poll(struct net_device *dev, int *budget)
+#endif
+{
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       struct bnx2x_fastpath *fp = container_of(napi, struct bnx2x_fastpath,
+                                                napi);
+       struct bnx2x *bp = fp->bp;
+       int work_done = 0;
+#else
+       struct bnx2x *bp = netdev_priv(dev);
+       struct bnx2x_fastpath *fp = &bp->fp[0];
+#endif
+#ifdef BNX2X_STOP_ON_ERROR
+       int has_work = 0;
+
+       fp->poll_calls++;
+#endif
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               goto poll_panic;
+#endif
+
+       prefetch(fp->tx_buf_ring[TX_BD(fp->tx_pkt_cons)].skb);
+       prefetch(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb);
+       prefetch((char *)(fp->rx_buf_ring[RX_BD(fp->rx_bd_cons)].skb) + 256);
+
+       bnx2x_update_fpsb_idx(fp);
+
+       if (BNX2X_HAS_TX_WORK(fp)) {
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+               bnx2x_tx_int(fp, budget);
+#else
+               bnx2x_tx_int(fp, *budget);
+#endif
+#ifdef BNX2X_STOP_ON_ERROR
+               has_work++;
+#endif
+       }
+
+       if (bnx2x_has_rx_work(fp)) {
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+               work_done = bnx2x_rx_int(fp, budget);
+#else
+       {
+               int orig_budget = min(*budget, dev->quota);
+               int work_done;
+
+               work_done = bnx2x_rx_int(fp, orig_budget);
+               *budget -= work_done;
+               dev->quota -= work_done;
+       }
+#endif
+#ifdef BNX2X_STOP_ON_ERROR
+               has_work++;
+#endif
+       }
+#ifdef BNX2X_STOP_ON_ERROR
+       if (!has_work)
+               fp->poll_no_work++;
+#endif
+
+       rmb(); /* BNX2X_HAS_WORK() reads the status block */
+
+       /* must not complete if we consumed full budget */
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       if ((work_done < budget) && !BNX2X_HAS_WORK(fp)) {
+#else
+       if (*budget && !BNX2X_HAS_WORK(fp)) {
+#endif
+
+#ifdef BNX2X_STOP_ON_ERROR
+poll_panic:
+               fp->poll_complete++;
+               if (fp->poll_calls > fp->poll_max_calls)
+                       fp->poll_max_calls = fp->poll_calls;
+               fp->poll_calls = 0;
+#endif
+               netif_rx_complete(bp->dev, napi);
+
+               bnx2x_ack_sb(bp, FP_SB_ID(fp), USTORM_ID,
+                            le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1);
+               bnx2x_ack_sb(bp, FP_SB_ID(fp), CSTORM_ID,
+                            le16_to_cpu(fp->fp_c_idx), IGU_INT_ENABLE, 1);
+
+#ifndef BNX2X_NEW_NAPI /* ! BNX2X_UPSTREAM */
+               return 0;
+#endif
+       }
+#ifdef BNX2X_STOP_ON_ERROR
+       fp->poll_exit++;
+#endif
+
+#ifdef BNX2X_NEW_NAPI /* BNX2X_UPSTREAM */
+       return work_done;
+#else
+       return 1;
+#endif
+}
+
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+static struct net_device_stats *bnx2x_get_stats(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       return &bp->net_stats;
+}
+#endif
+
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+/* we split the first BD into headers and data BDs
+ * to ease the pain of our fellow microcode engineers
+ * we use one mapping for both BDs
+ * So far this has only been observed to happen
+ * in Other Operating Systems(TM)
+ */
+static noinline u16 bnx2x_tx_split(struct bnx2x *bp,
+                                  struct bnx2x_fastpath *fp,
+                                  struct eth_tx_bd **tx_bd, u16 hlen,
+                                  u16 bd_prod, int nbd)
+{
+       struct eth_tx_bd *h_tx_bd = *tx_bd;
+       struct eth_tx_bd *d_tx_bd;
+       dma_addr_t mapping;
+       int old_len = le16_to_cpu(h_tx_bd->nbytes);
+
+       /* first fix first BD */
+       h_tx_bd->nbd = cpu_to_le16(nbd);
+       h_tx_bd->nbytes = cpu_to_le16(hlen);
+
+       DP(NETIF_MSG_TX_QUEUED, "TSO split header size is %d "
+          "(%x:%x) nbd %d\n", h_tx_bd->nbytes, h_tx_bd->addr_hi,
+          h_tx_bd->addr_lo, h_tx_bd->nbd);
+
+       /* now get a new data BD
+        * (after the pbd) and fill it */
+       bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
+       d_tx_bd = &fp->tx_desc_ring[bd_prod];
+
+       mapping = HILO_U64(le32_to_cpu(h_tx_bd->addr_hi),
+                          le32_to_cpu(h_tx_bd->addr_lo)) + hlen;
+
+       d_tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+       d_tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+       d_tx_bd->nbytes = cpu_to_le16(old_len - hlen);
+       d_tx_bd->vlan = 0;
+       /* this marks the BD as one that has no individual mapping
+        * the FW ignores this flag in a BD not marked start
+        */
+       d_tx_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_SW_LSO;
+       DP(NETIF_MSG_TX_QUEUED,
+          "TSO split data size is %d (%x:%x)\n",
+          d_tx_bd->nbytes, d_tx_bd->addr_hi, d_tx_bd->addr_lo);
+
+       /* update tx_bd for marking the last BD flag */
+       *tx_bd = d_tx_bd;
+
+       return bd_prod;
+}
+#endif
+
+static inline u16 bnx2x_csum_fix(unsigned char *t_header, u16 csum, s8 fix)
+{
+       if (fix > 0)
+               csum = (u16) ~csum_fold(csum_sub(csum,
+                               csum_partial(t_header - fix, fix, 0)));
+
+       else if (fix < 0)
+               csum = (u16) ~csum_fold(csum_add(csum,
+                               csum_partial(t_header, -fix, 0)));
+
+       return swab16(csum);
+}
+
+static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
+{
+       u32 rc;
+
+       if (skb->ip_summed != CHECKSUM_PARTIAL)
+               rc = XMIT_PLAIN;
+
+       else {
+               if (skb->protocol == ntohs(ETH_P_IPV6)) {
+                       rc = XMIT_CSUM_V6;
+                       if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
+                               rc |= XMIT_CSUM_TCP;
+
+               } else {
+                       rc = XMIT_CSUM_V4;
+                       if (ip_hdr(skb)->protocol == IPPROTO_TCP)
+                               rc |= XMIT_CSUM_TCP;
+               }
+       }
+
+#ifdef NETIF_F_GSO /* BNX2X_UPSTREAM */
+       if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4)
+               rc |= XMIT_GSO_V4;
+
+#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */
+       else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6)
+               rc |= XMIT_GSO_V6;
+#endif
+#elif defined(NETIF_F_TSO) /* ! BNX2X_UPSTREAM */
+       if ((skb_shinfo(skb)->gso_size) &&
+           (skb->len > (bp->dev->mtu + ETH_HLEN)))
+               rc |= XMIT_GSO_V4;
+#endif
+
+       return rc;
+}
+
+/* check if packet requires linearization (packet is too fragmented) */
+static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb,
+                            u32 xmit_type)
+{
+       int to_copy = 0;
+       int hlen = 0;
+       int first_bd_sz = 0;
+
+       /* 3 = 1 (for linear data BD) + 2 (for PBD and last BD) */
+       if (skb_shinfo(skb)->nr_frags >= (MAX_FETCH_BD - 3)) {
+
+               if (xmit_type & XMIT_GSO) {
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+                       unsigned short lso_mss = skb_shinfo(skb)->gso_size;
+                       /* Check if LSO packet needs to be copied:
+                          3 = 1 (for headers BD) + 2 (for PBD and last BD) */
+                       int wnd_size = MAX_FETCH_BD - 3;
+                       /* Number of windows to check */
+                       int num_wnds = skb_shinfo(skb)->nr_frags - wnd_size;
+                       int wnd_idx = 0;
+                       int frag_idx = 0;
+                       u32 wnd_sum = 0;
+
+                       /* Headers length */
+                       hlen = (int)(skb_transport_header(skb) - skb->data) +
+                               tcp_hdrlen(skb);
+
+                       /* Amount of data (w/o headers) on linear part of SKB*/
+                       first_bd_sz = skb_headlen(skb) - hlen;
+
+                       wnd_sum  = first_bd_sz;
+
+                       /* Calculate the first sum - it's special */
+                       for (frag_idx = 0; frag_idx < wnd_size - 1; frag_idx++)
+                               wnd_sum +=
+                                       skb_shinfo(skb)->frags[frag_idx].size;
+
+                       /* If there was data on linear skb data - check it */
+                       if (first_bd_sz > 0) {
+                               if (unlikely(wnd_sum < lso_mss)) {
+                                       to_copy = 1;
+                                       goto exit_lbl;
+                               }
+
+                               wnd_sum -= first_bd_sz;
+                       }
+
+                       /* Others are easier: run through the frag list and
+                          check all windows */
+                       for (wnd_idx = 0; wnd_idx <= num_wnds; wnd_idx++) {
+                               wnd_sum +=
+                         skb_shinfo(skb)->frags[wnd_idx + wnd_size - 1].size;
+
+                               if (unlikely(wnd_sum < lso_mss)) {
+                                       to_copy = 1;
+                                       break;
+                               }
+                               wnd_sum -=
+                                       skb_shinfo(skb)->frags[wnd_idx].size;
+                       }
+#endif
+               } else {
+                       /* in non-LSO too fragmented packet should always
+                          be linearized */
+                       to_copy = 1;
+               }
+       }
+
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+exit_lbl:
+#endif
+       if (unlikely(to_copy))
+               DP(NETIF_MSG_TX_QUEUED,
+                  "Linearization IS REQUIRED for %s packet. "
+                  "num_frags %d  hlen %d  first_bd_sz %d\n",
+                  (xmit_type & XMIT_GSO) ? "LSO" : "non-LSO",
+                  skb_shinfo(skb)->nr_frags, hlen, first_bd_sz);
+
+       return to_copy;
+}
+
+/* called with netif_tx_lock
+ * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call
+ * netif_wake_queue()
+ */
+static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       struct bnx2x_fastpath *fp;
+       struct sw_tx_bd *tx_buf;
+       struct eth_tx_bd *tx_bd;
+       struct eth_tx_parse_bd *pbd = NULL;
+       u16 pkt_prod, bd_prod;
+       int nbd, fp_index;
+       dma_addr_t mapping;
+       u32 xmit_type = bnx2x_xmit_type(bp, skb);
+       int vlan_off = (bp->e1hov ? 4 : 0);
+       int i;
+       u8 hlen = 0;
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return NETDEV_TX_BUSY;
+#endif
+
+       fp_index = (smp_processor_id() % bp->num_queues);
+       if (bp->multi_mode == ETH_RSS_MODE_VLAN_PRI) {
+               if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) {
+                       i = ((vlan_tx_tag_get(skb) >> 13) & 0x7);
+                       fp_index = bp->pri_map[i];
+               }
+       } else if (bp->multi_mode == ETH_RSS_MODE_IP_DSCP) {
+               i = ((ip_hdr(skb)->tos >> 2) & 0x7);
+               fp_index = bp->pri_map[i];
+       }
+
+       fp = &bp->fp[fp_index];
+
+       if (unlikely(bnx2x_tx_avail(fp) < (skb_shinfo(skb)->nr_frags + 3))) {
+               bp->eth_stats.driver_xoff++,
+               netif_stop_queue(dev);
+               BNX2X_ERR("BUG! Tx ring full when queue awake!\n");
+               return NETDEV_TX_BUSY;
+       }
+
+#ifdef NETIF_F_GSO /* BNX2X_UPSTREAM */
+       DP(NETIF_MSG_TX_QUEUED, "SKB: summed %x  protocol %x  protocol(%x,%x)"
+          "  gso type %x  xmit_type %x\n",
+          skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr,
+          ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type);
+#endif
+
+       /* First, check if we need to linearize the skb
+          (due to FW restrictions) */
+       if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) {
+               /* Statistics of linearization */
+               bp->lin_cnt++;
+#if (LINUX_VERSION_CODE > 0x020611) || (defined SLE_VERSION_CODE) /* BNX2X_UPSTREAM */
+               if (skb_linearize(skb) != 0) {
+#else
+               if (skb_linearize(skb, GFP_ATOMIC) != 0) {
+#endif
+                       DP(NETIF_MSG_TX_QUEUED, "SKB linearization failed - "
+                          "silently dropping this SKB\n");
+                       dev_kfree_skb_any(skb);
+                       return NETDEV_TX_OK;
+               }
+       }
+
+       /*
+       Please read carefully. First we use one BD which we mark as start,
+       then for TSO or xsum we have a parsing info BD,
+       and only then we have the rest of the TSO BDs.
+       (don't forget to mark the last one as last,
+       and to unmap only AFTER you write to the BD ...)
+       And above all, all pdb sizes are in words - NOT DWORDS!
+       */
+
+       pkt_prod = fp->tx_pkt_prod++;
+       bd_prod = TX_BD(fp->tx_bd_prod);
+
+       /* get a tx_buf and first BD */
+       tx_buf = &fp->tx_buf_ring[TX_BD(pkt_prod)];
+       tx_bd = &fp->tx_desc_ring[bd_prod];
+
+       tx_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD;
+       tx_bd->general_data = (UNICAST_ADDRESS <<
+                              ETH_TX_BD_ETH_ADDR_TYPE_SHIFT);
+       /* header nbd */
+       tx_bd->general_data |= (1 << ETH_TX_BD_HDR_NBDS_SHIFT);
+
+       /* remember the first BD of the packet */
+       tx_buf->first_bd = fp->tx_bd_prod;
+       tx_buf->skb = skb;
+
+       DP(NETIF_MSG_TX_QUEUED,
+          "sending pkt %u @%p  next_idx %u  bd %u @%p\n",
+          pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd);
+
+       if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) {
+               tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb));
+               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG;
+               vlan_off += 4;
+       } else
+               tx_bd->vlan = cpu_to_le16(pkt_prod);
+
+       if (xmit_type) {
+               /* turn on parsing and get a BD */
+               bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
+               pbd = (void *)&fp->tx_desc_ring[bd_prod];
+
+               memset(pbd, 0, sizeof(struct eth_tx_parse_bd));
+       }
+
+       if (xmit_type & XMIT_CSUM) {
+               hlen = (skb_network_header(skb) - skb->data + vlan_off) / 2;
+
+               /* for now NS flag is not used in Linux */
+               pbd->global_data = (hlen |
+                                   ((skb->protocol == ntohs(ETH_P_8021Q)) <<
+                                    ETH_TX_PARSE_BD_LLC_SNAP_EN_SHIFT));
+
+               pbd->ip_hlen = (skb_transport_header(skb) -
+                               skb_network_header(skb)) / 2;
+
+               hlen += pbd->ip_hlen + tcp_hdrlen(skb) / 2;
+
+               pbd->total_hlen = cpu_to_le16(hlen);
+               hlen = hlen*2 - vlan_off;
+
+               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_TCP_CSUM;
+
+               if (xmit_type & XMIT_CSUM_V4)
+                       tx_bd->bd_flags.as_bitfield |=
+                                               ETH_TX_BD_FLAGS_IP_CSUM;
+               else
+                       tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_IPV6;
+
+               if (xmit_type & XMIT_CSUM_TCP) {
+                       pbd->tcp_pseudo_csum = swab16(tcp_hdr(skb)->check);
+
+               } else {
+                       s8 fix = SKB_CS_OFF(skb); /* signed! */
+
+                       pbd->global_data |= ETH_TX_PARSE_BD_CS_ANY_FLG;
+                       pbd->cs_offset = fix / 2;
+
+                       DP(NETIF_MSG_TX_QUEUED,
+                          "hlen %d  offset %d  fix %d  csum before fix %x\n",
+                          le16_to_cpu(pbd->total_hlen), pbd->cs_offset, fix,
+                          SKB_CS(skb));
+
+                       /* HW bug: fixup the CSUM */
+                       pbd->tcp_pseudo_csum =
+                               bnx2x_csum_fix(skb_transport_header(skb),
+                                              SKB_CS(skb), fix);
+
+                       DP(NETIF_MSG_TX_QUEUED, "csum after fix %x\n",
+                          pbd->tcp_pseudo_csum);
+               }
+       }
+
+       mapping = pci_map_single(bp->pdev, skb->data,
+                                skb_headlen(skb), PCI_DMA_TODEVICE);
+
+       tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+       tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+       nbd = skb_shinfo(skb)->nr_frags + ((pbd == NULL) ? 1 : 2);
+       tx_bd->nbd = cpu_to_le16(nbd);
+       tx_bd->nbytes = cpu_to_le16(skb_headlen(skb));
+
+       DP(NETIF_MSG_TX_QUEUED, "first bd @%p  addr (%x:%x)  nbd %d"
+          "  nbytes %d  flags %x  vlan %x\n",
+          tx_bd, tx_bd->addr_hi, tx_bd->addr_lo, le16_to_cpu(tx_bd->nbd),
+          le16_to_cpu(tx_bd->nbytes), tx_bd->bd_flags.as_bitfield,
+          le16_to_cpu(tx_bd->vlan));
+
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+       if (xmit_type & XMIT_GSO) {
+
+               DP(NETIF_MSG_TX_QUEUED,
+                  "TSO packet len %d  hlen %d  total len %d  tso size %d\n",
+                  skb->len, hlen, skb_headlen(skb),
+                  skb_shinfo(skb)->gso_size);
+
+               tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_SW_LSO;
+
+               if (unlikely(skb_headlen(skb) > hlen))
+                       bd_prod = bnx2x_tx_split(bp, fp, &tx_bd, hlen,
+                                                bd_prod, ++nbd);
+
+               pbd->lso_mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
+               pbd->tcp_send_seq = swab32(tcp_hdr(skb)->seq);
+               pbd->tcp_flags = pbd_tcp_flags(skb);
+
+               if (xmit_type & XMIT_GSO_V4) {
+                       pbd->ip_id = swab16(ip_hdr(skb)->id);
+                       pbd->tcp_pseudo_csum =
+                               swab16(~csum_tcpudp_magic(ip_hdr(skb)->saddr,
+                                                         ip_hdr(skb)->daddr,
+                                                         0, IPPROTO_TCP, 0));
+
+               } else
+                       pbd->tcp_pseudo_csum =
+                               swab16(~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
+                                                       &ipv6_hdr(skb)->daddr,
+                                                       0, IPPROTO_TCP, 0));
+
+               pbd->global_data |= ETH_TX_PARSE_BD_PSEUDO_CS_WITHOUT_LEN;
+       }
+#endif
+
+       for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
+               skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+
+               bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
+               tx_bd = &fp->tx_desc_ring[bd_prod];
+
+               mapping = pci_map_page(bp->pdev, frag->page, frag->page_offset,
+                                      frag->size, PCI_DMA_TODEVICE);
+
+               tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
+               tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
+               tx_bd->nbytes = cpu_to_le16(frag->size);
+               tx_bd->vlan = cpu_to_le16(pkt_prod);
+               tx_bd->bd_flags.as_bitfield = 0;
+
+               DP(NETIF_MSG_TX_QUEUED,
+                  "frag %d  bd @%p  addr (%x:%x)  nbytes %d  flags %x\n",
+                  i, tx_bd, tx_bd->addr_hi, tx_bd->addr_lo,
+                  le16_to_cpu(tx_bd->nbytes), tx_bd->bd_flags.as_bitfield);
+       }
+
+       /* now at last mark the BD as the last BD */
+       tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_END_BD;
+
+       DP(NETIF_MSG_TX_QUEUED, "last bd @%p  flags %x\n",
+          tx_bd, tx_bd->bd_flags.as_bitfield);
+
+       bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
+
+       /* now send a tx doorbell, counting the next BD
+        * if the packet contains or ends with it
+        */
+       if (TX_BD_POFF(bd_prod) < nbd)
+               nbd++;
+
+       if (pbd)
+               DP(NETIF_MSG_TX_QUEUED,
+                  "PBD @%p  ip_data %x  ip_hlen %u  ip_id %u  lso_mss %u"
+                  "  tcp_flags %x  xsum %x  seq %u  hlen %u\n",
+                  pbd, pbd->global_data, pbd->ip_hlen, pbd->ip_id,
+                  pbd->lso_mss, pbd->tcp_flags, pbd->tcp_pseudo_csum,
+                  pbd->tcp_send_seq, le16_to_cpu(pbd->total_hlen));
+
+       DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d  bd %u\n", nbd, bd_prod);
+
+       fp->hw_tx_prods->bds_prod =
+               cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd);
+       mb(); /* FW restriction: must not reorder writing nbd and packets */
+       fp->hw_tx_prods->packets_prod =
+               cpu_to_le32(le32_to_cpu(fp->hw_tx_prods->packets_prod) + 1);
+       DOORBELL(bp, FP_IDX(fp), 0);
+
+       mmiowb();
+
+       fp->tx_bd_prod += nbd;
+       dev->trans_start = jiffies;
+
+       if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) {
+               netif_stop_queue(dev);
+               bp->eth_stats.driver_xoff++;
+               if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3)
+                       netif_wake_queue(dev);
+       }
+       fp->tx_pkt++;
+
+       return NETDEV_TX_OK;
+}
+
+/* called with rtnl_lock */
+static int bnx2x_open(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       bnx2x_set_power_state(bp, PCI_D0);
+
+       return bnx2x_nic_load(bp, LOAD_OPEN);
+}
+
+/* called with rtnl_lock */
+static int bnx2x_close(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       /* Unload the driver, release IRQs */
+       bnx2x_nic_unload(bp, UNLOAD_CLOSE);
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       if (atomic_read(&bp->pdev->enable_cnt) == 1)
+#endif
+               if (!CHIP_REV_IS_SLOW(bp))
+                       bnx2x_set_power_state(bp, PCI_D3hot);
+
+       return 0;
+}
+
+/* called with netif_tx_lock from dev_mcast.c */
+static void bnx2x_set_rx_mode(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       u32 rx_mode = BNX2X_RX_MODE_NORMAL;
+       int port = BP_PORT(bp);
+
+       if (bp->state != BNX2X_STATE_OPEN) {
+               DP(NETIF_MSG_IFUP, "state is %x, returning\n", bp->state);
+               return;
+       }
+
+       DP(NETIF_MSG_IFUP, "dev->flags = %x\n", dev->flags);
+
+       if (dev->flags & IFF_PROMISC)
+               rx_mode = BNX2X_RX_MODE_PROMISC;
+
+       else if ((dev->flags & IFF_ALLMULTI) ||
+                ((dev->mc_count > BNX2X_MAX_MULTICAST) && CHIP_IS_E1(bp)))
+               rx_mode = BNX2X_RX_MODE_ALLMULTI;
+
+       else { /* some multicasts */
+               if (CHIP_IS_E1(bp)) {
+                       int i, old, offset;
+                       struct dev_mc_list *mclist;
+                       struct mac_configuration_cmd *config =
+                                               bnx2x_sp(bp, mcast_config);
+
+                       for (i = 0, mclist = dev->mc_list;
+                            mclist && (i < dev->mc_count);
+                            i++, mclist = mclist->next) {
+
+                               config->config_table[i].
+                                       cam_entry.msb_mac_addr =
+                                       swab16(*(u16 *)&mclist->dmi_addr[0]);
+                               config->config_table[i].
+                                       cam_entry.middle_mac_addr =
+                                       swab16(*(u16 *)&mclist->dmi_addr[2]);
+                               config->config_table[i].
+                                       cam_entry.lsb_mac_addr =
+                                       swab16(*(u16 *)&mclist->dmi_addr[4]);
+                               config->config_table[i].cam_entry.flags =
+                                                       cpu_to_le16(port);
+                               config->config_table[i].
+                                       target_table_entry.flags = 0;
+                               config->config_table[i].
+                                       target_table_entry.client_id = 0;
+                               config->config_table[i].
+                                       target_table_entry.vlan_id = 0;
+
+                               DP(NETIF_MSG_IFUP,
+                                  "setting MCAST[%d] (%04x:%04x:%04x)\n", i,
+                                  config->config_table[i].
+                                               cam_entry.msb_mac_addr,
+                                  config->config_table[i].
+                                               cam_entry.middle_mac_addr,
+                                  config->config_table[i].
+                                               cam_entry.lsb_mac_addr);
+                       }
+                       old = config->hdr.length;
+                       if (old > i) {
+                               for (; i < old; i++) {
+                                       if (CAM_IS_INVALID(config->
+                                                          config_table[i])) {
+                                               /* already invalidated */
+                                               break;
+                                       }
+                                       /* invalidate */
+                                       CAM_INVALIDATE(config->
+                                                      config_table[i]);
+                               }
+                       }
+
+                       if (CHIP_REV_IS_SLOW(bp))
+                               offset = BNX2X_MAX_EMUL_MULTI*(1 + port);
+                       else
+                               offset = BNX2X_MAX_MULTICAST*(1 + port);
+
+                       config->hdr.length = i;
+                       config->hdr.offset = offset;
+                       config->hdr.client_id = BP_CL_ID(bp);
+                       config->hdr.reserved1 = 0;
+
+                       bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0,
+                                  U64_HI(bnx2x_sp_mapping(bp, mcast_config)),
+                                  U64_LO(bnx2x_sp_mapping(bp, mcast_config)),
+                                     0);
+               } else { /* E1H */
+                       /* Accept one or more multicasts */
+                       struct dev_mc_list *mclist;
+                       u32 mc_filter[MC_HASH_SIZE];
+                       u32 crc, bit, regidx;
+                       int i;
+
+                       memset(mc_filter, 0, 4 * MC_HASH_SIZE);
+
+                       for (i = 0, mclist = dev->mc_list;
+                            mclist && (i < dev->mc_count);
+                            i++, mclist = mclist->next) {
+
+                               DP(NETIF_MSG_IFUP, "Adding mcast MAC: "
+                                  "%02x:%02x:%02x:%02x:%02x:%02x\n",
+                                  mclist->dmi_addr[0], mclist->dmi_addr[1],
+                                  mclist->dmi_addr[2], mclist->dmi_addr[3],
+                                  mclist->dmi_addr[4], mclist->dmi_addr[5]);
+
+                               crc = crc32c_le(0, mclist->dmi_addr, ETH_ALEN);
+                               bit = (crc >> 24) & 0xff;
+                               regidx = bit >> 5;
+                               bit &= 0x1f;
+                               mc_filter[regidx] |= (1 << bit);
+                       }
+
+                       for (i = 0; i < MC_HASH_SIZE; i++)
+                               REG_WR(bp, MC_HASH_OFFSET(bp, i),
+                                      mc_filter[i]);
+               }
+       }
+
+       bp->rx_mode = rx_mode;
+       bnx2x_set_storm_rx_mode(bp);
+}
+
+/* called with rtnl_lock */
+static int bnx2x_change_mac_addr(struct net_device *dev, void *p)
+{
+       struct sockaddr *addr = p;
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (!is_valid_ether_addr((u8 *)(addr->sa_data)))
+               return -EINVAL;
+
+       memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+       if (netif_running(dev)) {
+               if (CHIP_IS_E1(bp))
+                       bnx2x_set_mac_addr_e1(bp, 1);
+               else
+                       bnx2x_set_mac_addr_e1h(bp, 1);
+       }
+
+       return 0;
+}
+
+/* called with rtnl_lock */
+static int bnx2x_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+       struct mii_ioctl_data *data = if_mii(ifr);
+       struct bnx2x *bp = netdev_priv(dev);
+       int port = BP_PORT(bp);
+       int err;
+
+       switch (cmd) {
+       case SIOCGMIIPHY:
+               data->phy_id = bp->port.phy_addr;
+
+               /* fallthrough */
+
+       case SIOCGMIIREG: {
+               u16 mii_regval;
+
+               if (!netif_running(dev))
+                       return -EAGAIN;
+
+               mutex_lock(&bp->port.phy_mutex);
+               err = bnx2x_cl45_read(bp, port, 0, bp->port.phy_addr,
+                                     DEFAULT_PHY_DEV_ADDR,
+                                     (data->reg_num & 0x1f), &mii_regval);
+               data->val_out = mii_regval;
+               mutex_unlock(&bp->port.phy_mutex);
+               return err;
+       }
+
+       case SIOCSMIIREG:
+               if (!capable(CAP_NET_ADMIN))
+                       return -EPERM;
+
+               if (!netif_running(dev))
+                       return -EAGAIN;
+
+               mutex_lock(&bp->port.phy_mutex);
+               err = bnx2x_cl45_write(bp, port, 0, bp->port.phy_addr,
+                                      DEFAULT_PHY_DEV_ADDR,
+                                      (data->reg_num & 0x1f), data->val_in);
+               mutex_unlock(&bp->port.phy_mutex);
+               return err;
+
+       default:
+               /* do nothing */
+               break;
+       }
+
+       return -EOPNOTSUPP;
+}
+
+/* called with rtnl_lock */
+static int bnx2x_change_mtu(struct net_device *dev, int new_mtu)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int rc = 0;
+
+       if ((new_mtu > ETH_MAX_JUMBO_PACKET_SIZE) ||
+           ((new_mtu + ETH_HLEN) < ETH_MIN_PACKET_SIZE))
+               return -EINVAL;
+
+       /* This does not race with packet allocation
+        * because the actual alloc size is
+        * only updated as part of load
+        */
+       dev->mtu = new_mtu;
+
+       if (netif_running(dev)) {
+               bnx2x_nic_unload(bp, UNLOAD_NORMAL);
+               rc = bnx2x_nic_load(bp, LOAD_NORMAL);
+       }
+
+       return rc;
+}
+
+static void bnx2x_tx_timeout(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (!bp->panic)
+               bnx2x_panic();
+#endif
+       /* This allows the netif to be shutdown gracefully before resetting */
+       schedule_work(&bp->reset_task);
+}
+
+#ifdef BCM_VLAN
+/* called with rtnl_lock */
+static void bnx2x_vlan_rx_register(struct net_device *dev,
+                                  struct vlan_group *vlgrp)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       bp->vlgrp = vlgrp;
+       if (netif_running(dev))
+               bnx2x_set_client_config(bp);
+}
+
+#if (LINUX_VERSION_CODE < 0x020616) /* ! BNX2X_UPSTREAM */
+static void bnx2x_vlan_rx_kill_vid(struct net_device *dev, uint16_t vid)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       if (bp->vlgrp)
+               bp->vlgrp->vlan_devices[vid] = NULL;
+}
+#endif
+#endif
+
+#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER)
+static void poll_bnx2x(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       disable_irq(bp->pdev->irq);
+#if (LINUX_VERSION_CODE < 0x20613)
+       bnx2x_interrupt(bp->pdev->irq, dev, NULL);
+#else /* BNX2X_UPSTREAM */
+       bnx2x_interrupt(bp->pdev->irq, dev);
+#endif
+       enable_irq(bp->pdev->irq);
+}
+#endif
+
+static int __devinit bnx2x_init_dev(struct pci_dev *pdev,
+                                   struct net_device *dev)
+{
+       struct bnx2x *bp;
+       int rc;
+
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+       SET_MODULE_OWNER(dev);
+#endif
+#if (LINUX_VERSION_CODE >= 0x20419) /* BNX2X_UPSTREAM */
+       SET_NETDEV_DEV(dev, &pdev->dev);
+#endif
+       bp = netdev_priv(dev);
+
+       bp->dev = dev;
+       bp->pdev = pdev;
+       bp->flags = 0;
+       bp->func = PCI_FUNC(pdev->devfn);
+
+       rc = pci_enable_device(pdev);
+       if (rc) {
+               printk(KERN_ERR PFX "Cannot enable PCI device, aborting\n");
+               goto err_out;
+       }
+
+       if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
+               printk(KERN_ERR PFX "Cannot find PCI device base address,"
+                      " aborting\n");
+               rc = -ENODEV;
+               goto err_out_disable;
+       }
+
+       if (!(pci_resource_flags(pdev, 2) & IORESOURCE_MEM)) {
+               printk(KERN_ERR PFX "Cannot find second PCI device"
+                      " base address, aborting\n");
+               rc = -ENODEV;
+               goto err_out_disable;
+       }
+
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       if (atomic_read(&pdev->enable_cnt) == 1) {
+#endif
+               rc = pci_request_regions(pdev, DRV_MODULE_NAME);
+               if (rc) {
+                       printk(KERN_ERR PFX "Cannot obtain PCI resources,"
+                              " aborting\n");
+                       goto err_out_disable;
+               }
+
+               pci_set_master(pdev);
+#if (LINUX_VERSION_CODE >= 0x2060b) /* BNX2X_UPSTREAM */
+               pci_save_state(pdev);
+#else
+               pci_save_state(pdev, bp->pci_state);
+#endif
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       }
+#endif
+
+       bp->pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM);
+       if (bp->pm_cap == 0) {
+               printk(KERN_ERR PFX "Cannot find power management"
+                      " capability, aborting\n");
+               rc = -EIO;
+               goto err_out_release;
+       }
+
+       bp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
+       if (bp->pcie_cap == 0) {
+               printk(KERN_ERR PFX "Cannot find PCI Express capability,"
+                      " aborting\n");
+               rc = -EIO;
+               goto err_out_release;
+       }
+
+       if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) == 0) {
+               bp->flags |= USING_DAC_FLAG;
+               if (pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK) != 0) {
+                       printk(KERN_ERR PFX "pci_set_consistent_dma_mask"
+                              " failed, aborting\n");
+                       rc = -EIO;
+                       goto err_out_release;
+               }
+
+       } else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) {
+               printk(KERN_ERR PFX "System does not support DMA,"
+                      " aborting\n");
+               rc = -EIO;
+               goto err_out_release;
+       }
+
+       dev->mem_start = pci_resource_start(pdev, 0);
+       dev->base_addr = dev->mem_start;
+       dev->mem_end = pci_resource_end(pdev, 0);
+
+       dev->irq = pdev->irq;
+
+       bp->regview = ioremap_nocache(dev->base_addr,
+                                     pci_resource_len(pdev, 0));
+       if (!bp->regview) {
+               printk(KERN_ERR PFX "Cannot map register space, aborting\n");
+               rc = -ENOMEM;
+               goto err_out_release;
+       }
+
+       bp->doorbells = ioremap_nocache(pci_resource_start(pdev, 2),
+                                       min_t(u64, BNX2X_DB_SIZE,
+                                             pci_resource_len(pdev, 2)));
+       if (!bp->doorbells) {
+               printk(KERN_ERR PFX "Cannot map doorbell space, aborting\n");
+               rc = -ENOMEM;
+               goto err_out_unmap;
+       }
+
+       bnx2x_set_power_state(bp, PCI_D0);
+
+       /* clean indirect addresses */
+       pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS,
+                              PCICFG_VENDOR_ID_OFFSET);
+       REG_WR(bp, PXP2_REG_PGL_ADDR_88_F0 + BP_PORT(bp)*16, 0);
+       REG_WR(bp, PXP2_REG_PGL_ADDR_8C_F0 + BP_PORT(bp)*16, 0);
+       REG_WR(bp, PXP2_REG_PGL_ADDR_90_F0 + BP_PORT(bp)*16, 0);
+       REG_WR(bp, PXP2_REG_PGL_ADDR_94_F0 + BP_PORT(bp)*16, 0);
+
+#ifndef BNX2X_NEW_NAPI /* ! BNX2X_UPSTREAM */
+       dev->poll = bnx2x_poll;
+       dev->weight = 128*4;
+#endif
+#if (LINUX_VERSION_CODE < 0x020618) /* ! BNX2X_UPSTREAM */
+       dev->get_stats = bnx2x_get_stats;
+#endif
+       dev->hard_start_xmit = bnx2x_start_xmit;
+       dev->watchdog_timeo = TX_TIMEOUT;
+
+       dev->ethtool_ops = &bnx2x_ethtool_ops;
+       dev->open = bnx2x_open;
+       dev->stop = bnx2x_close;
+       dev->set_multicast_list = bnx2x_set_rx_mode;
+       dev->set_mac_address = bnx2x_change_mac_addr;
+       dev->do_ioctl = bnx2x_ioctl;
+       dev->change_mtu = bnx2x_change_mtu;
+       dev->tx_timeout = bnx2x_tx_timeout;
+#ifdef BCM_VLAN
+       dev->vlan_rx_register = bnx2x_vlan_rx_register;
+#if (LINUX_VERSION_CODE < 0x20616) /* ! BNX2X_UPSTREAM */
+       dev->vlan_rx_kill_vid = bnx2x_vlan_rx_kill_vid;
+#endif
+#endif
+#if defined(HAVE_POLL_CONTROLLER) || defined(CONFIG_NET_POLL_CONTROLLER)
+       dev->poll_controller = poll_bnx2x;
+#endif
+       dev->features |= NETIF_F_SG;
+       dev->features |= NETIF_F_HW_CSUM;
+       if (bp->flags & USING_DAC_FLAG)
+               dev->features |= NETIF_F_HIGHDMA;
+#ifdef BCM_VLAN
+       dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
+#endif
+#ifdef NETIF_F_TSO /* BNX2X_UPSTREAM */
+       dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
+#endif
+#ifdef NETIF_F_TSO6 /* BNX2X_UPSTREAM */
+       dev->features |= NETIF_F_TSO6;
+#endif
+
+       return 0;
+
+err_out_unmap:
+       if (bp->regview) {
+               iounmap(bp->regview);
+               bp->regview = NULL;
+       }
+       if (bp->doorbells) {
+               iounmap(bp->doorbells);
+               bp->doorbells = NULL;
+       }
+
+err_out_release:
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       if (atomic_read(&pdev->enable_cnt) == 1)
+#endif
+               pci_release_regions(pdev);
+
+err_out_disable:
+       pci_disable_device(pdev);
+       pci_set_drvdata(pdev, NULL);
+
+err_out:
+       return rc;
+}
+
+static int __devinit bnx2x_get_pcie_width(struct bnx2x *bp)
+{
+       u32 val = REG_RD(bp, PCICFG_OFFSET + PCICFG_LINK_CONTROL);
+
+       val = (val & PCICFG_LINK_WIDTH) >> PCICFG_LINK_WIDTH_SHIFT;
+       return val;
+}
+
+/* return value of 1=2.5GHz 2=5GHz */
+static int __devinit bnx2x_get_pcie_speed(struct bnx2x *bp)
+{
+       u32 val = REG_RD(bp, PCICFG_OFFSET + PCICFG_LINK_CONTROL);
+
+       val = (val & PCICFG_LINK_SPEED) >> PCICFG_LINK_SPEED_SHIFT;
+       return val;
+}
+
+static int __devinit bnx2x_init_one(struct pci_dev *pdev,
+                                   const struct pci_device_id *ent)
+{
+       static int version_printed;
+       struct net_device *dev = NULL;
+       struct bnx2x *bp;
+       int rc;
+#if (LINUX_VERSION_CODE >= 0x20618) /* BNX2X_UPSTREAM */
+       DECLARE_MAC_BUF(mac);
+#endif
+
+       if (version_printed++ == 0)
+               printk(KERN_INFO "%s", version);
+
+       /* dev zeroed in init_etherdev */
+       dev = alloc_etherdev(sizeof(*bp));
+       if (!dev) {
+               printk(KERN_ERR PFX "Cannot allocate net device\n");
+               return -ENOMEM;
+       }
+
+       netif_carrier_off(dev);
+
+       bp = netdev_priv(dev);
+#ifdef BNX2X_STOP_ON_ERROR
+       bp->msglevel = (0xf70f7 | debug);
+#else
+       bp->msglevel = debug;
+#endif
+
+       rc = bnx2x_init_dev(pdev, dev);
+       if (rc < 0) {
+               free_netdev(dev);
+               return rc;
+       }
+
+       rc = register_netdev(dev);
+       if (rc) {
+               dev_err(&pdev->dev, "Cannot register net device\n");
+               goto init_one_exit;
+       }
+
+       pci_set_drvdata(pdev, dev);
+
+       rc = bnx2x_init_bp(bp);
+       if (rc) {
+               unregister_netdev(dev);
+               goto init_one_exit;
+       }
+
+       printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx,"
+              " IRQ %d, ", dev->name, board_info[ent->driver_data].name,
+              (CHIP_REV(bp) >> 12) + 'A', (CHIP_METAL(bp) >> 4),
+              bnx2x_get_pcie_width(bp),
+              (bnx2x_get_pcie_speed(bp) == 2) ? "5GHz (Gen2)" : "2.5GHz",
+              dev->base_addr, bp->pdev->irq);
+#if (LINUX_VERSION_CODE >= 0x20618) /* BNX2X_UPSTREAM */
+       printk(KERN_CONT "node addr %s\n", print_mac(mac, dev->dev_addr));
+#else
+       printk(KERN_CONT "node addr ");
+       {
+               int i;
+
+               for (i = 0; i < ETH_ALEN; i++)
+                       printk(KERN_CONT "%2.2x", dev->dev_addr[i]);
+       }
+       printk(KERN_CONT "\n");
+#endif
+       return 0;
+
+init_one_exit:
+       if (bp->regview)
+               iounmap(bp->regview);
+
+       if (bp->doorbells)
+               iounmap(bp->doorbells);
+
+       free_netdev(dev);
+
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       if (atomic_read(&pdev->enable_cnt) == 1)
+#endif
+               pci_release_regions(pdev);
+
+       pci_disable_device(pdev);
+       pci_set_drvdata(pdev, NULL);
+
+       return rc;
+}
+
+static void __devexit bnx2x_remove_one(struct pci_dev *pdev)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp;
+
+       if (!dev) {
+               printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n");
+               return;
+       }
+       bp = netdev_priv(dev);
+
+#if (LINUX_VERSION_CODE < 0x20618) /* ! BNX2X_UPSTREAM */
+       flush_scheduled_work();
+#endif
+       unregister_netdev(dev);
+
+       if (bp->regview)
+               iounmap(bp->regview);
+
+       if (bp->doorbells)
+               iounmap(bp->doorbells);
+
+       free_netdev(dev);
+
+#if (LINUX_VERSION_CODE >= 0x20614) /* BNX2X_UPSTREAM */
+       if (atomic_read(&pdev->enable_cnt) == 1)
+#endif
+               pci_release_regions(pdev);
+
+       pci_disable_device(pdev);
+       pci_set_drvdata(pdev, NULL);
+}
+
+static int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp;
+
+       if (!dev) {
+               printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n");
+               return -ENODEV;
+       }
+       bp = netdev_priv(dev);
+
+       rtnl_lock();
+
+#if (LINUX_VERSION_CODE >= 0x2060b) /* BNX2X_UPSTREAM */
+       pci_save_state(pdev);
+#else
+       pci_save_state(pdev, bp->pci_state);
+#endif
+
+       if (!netif_running(dev)) {
+               rtnl_unlock();
+               return 0;
+       }
+
+#if (LINUX_VERSION_CODE < 0x20618) /* ! BNX2X_UPSTREAM */
+       flush_scheduled_work();
+#endif
+       netif_device_detach(dev);
+
+       bnx2x_nic_unload(bp, UNLOAD_CLOSE);
+
+       bnx2x_set_power_state(bp, pci_choose_state(pdev, state));
+
+       rtnl_unlock();
+
+       return 0;
+}
+
+static int bnx2x_resume(struct pci_dev *pdev)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp;
+       int rc;
+
+       if (!dev) {
+               printk(KERN_ERR PFX "BAD net device from bnx2x_init_one\n");
+               return -ENODEV;
+       }
+       bp = netdev_priv(dev);
+
+       rtnl_lock();
+
+#if (LINUX_VERSION_CODE >= 0x2060b) /* BNX2X_UPSTREAM */
+       pci_restore_state(pdev);
+#else
+       pci_restore_state(pdev, bp->pci_state);
+#endif
+
+       if (!netif_running(dev)) {
+               rtnl_unlock();
+               return 0;
+       }
+
+       bnx2x_set_power_state(bp, PCI_D0);
+       netif_device_attach(dev);
+
+       rc = bnx2x_nic_load(bp, LOAD_OPEN);
+
+       rtnl_unlock();
+
+       return rc;
+}
+
+#if (LINUX_VERSION_CODE >= 0x2060b) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */
+static int bnx2x_eeh_nic_unload(struct bnx2x *bp)
+{
+       int i;
+
+       bp->state = BNX2X_STATE_ERROR;
+
+       bp->rx_mode = BNX2X_RX_MODE_NONE;
+
+       bnx2x_netif_stop(bp, 0);
+
+       del_timer_sync(&bp->timer);
+       bp->stats_state = STATS_STATE_DISABLED;
+       DP(BNX2X_MSG_STATS, "stats_state - DISABLED\n");
+
+       /* Release IRQs */
+       bnx2x_free_irq(bp);
+
+       if (CHIP_IS_E1(bp)) {
+               struct mac_configuration_cmd *config =
+                                               bnx2x_sp(bp, mcast_config);
+
+               for (i = 0; i < config->hdr.length; i++)
+                       CAM_INVALIDATE(config->config_table[i]);
+       }
+
+       /* Free SKBs, SGEs, TPA pool and driver internals */
+       bnx2x_free_skbs(bp);
+       for_each_queue(bp, i)
+               bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
+       bnx2x_free_mem(bp);
+
+       bp->state = BNX2X_STATE_CLOSED;
+
+       netif_carrier_off(bp->dev);
+
+       return 0;
+}
+
+static void bnx2x_eeh_recover(struct bnx2x *bp)
+{
+       u32 val;
+
+       mutex_init(&bp->port.phy_mutex);
+
+       bp->common.shmem_base = REG_RD(bp, MISC_REG_SHARED_MEM_ADDR);
+       bp->link_params.shmem_base = bp->common.shmem_base;
+       BNX2X_DEV_INFO("shmem offset is 0x%x\n", bp->common.shmem_base);
+
+       if (!bp->common.shmem_base ||
+           (bp->common.shmem_base < 0xA0000) ||
+           (bp->common.shmem_base >= 0xC0000)) {
+               BNX2X_DEV_INFO("MCP not active\n");
+               bp->flags |= NO_MCP_FLAG;
+               return;
+       }
+
+       val = SHMEM_RD(bp, validity_map[BP_PORT(bp)]);
+       if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
+               != (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB))
+               BNX2X_ERR("BAD MCP validity signature\n");
+
+       if (!BP_NOMCP(bp)) {
+               bp->fw_seq = (SHMEM_RD(bp, func_mb[BP_FUNC(bp)].drv_mb_header)
+                             & DRV_MSG_SEQ_NUMBER_MASK);
+               BNX2X_DEV_INFO("fw_seq 0x%08x\n", bp->fw_seq);
+       }
+}
+
+/**
+ * bnx2x_io_error_detected - called when PCI error is detected
+ * @pdev: Pointer to PCI device
+ * @state: The current pci connection state
+ *
+ * This function is called after a PCI bus error affecting
+ * this device has been detected.
+ */
+static pci_ers_result_t bnx2x_io_error_detected(struct pci_dev *pdev,
+                                               pci_channel_state_t state)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp = netdev_priv(dev);
+
+       rtnl_lock();
+
+       netif_device_detach(dev);
+
+       if (netif_running(dev))
+               bnx2x_eeh_nic_unload(bp);
+
+       pci_disable_device(pdev);
+
+       rtnl_unlock();
+
+       /* Request a slot reset */
+       return PCI_ERS_RESULT_NEED_RESET;
+}
+
+/**
+ * bnx2x_io_slot_reset - called after the PCI bus has been reset
+ * @pdev: Pointer to PCI device
+ *
+ * Restart the card from scratch, as if from a cold-boot.
+ */
+static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp = netdev_priv(dev);
+
+       rtnl_lock();
+
+       if (pci_enable_device(pdev)) {
+               dev_err(&pdev->dev,
+                       "Cannot re-enable PCI device after reset\n");
+               rtnl_unlock();
+               return PCI_ERS_RESULT_DISCONNECT;
+       }
+
+       pci_set_master(pdev);
+       pci_restore_state(pdev);
+
+       if (netif_running(dev))
+               bnx2x_set_power_state(bp, PCI_D0);
+
+       rtnl_unlock();
+
+       return PCI_ERS_RESULT_RECOVERED;
+}
+
+/**
+ * bnx2x_io_resume - called when traffic can start flowing again
+ * @pdev: Pointer to PCI device
+ *
+ * This callback is called when the error recovery driver tells us that
+ * its OK to resume normal operation.
+ */
+static void bnx2x_io_resume(struct pci_dev *pdev)
+{
+       struct net_device *dev = pci_get_drvdata(pdev);
+       struct bnx2x *bp = netdev_priv(dev);
+
+       rtnl_lock();
+
+       bnx2x_eeh_recover(bp);
+
+       if (netif_running(dev))
+               bnx2x_nic_load(bp, LOAD_NORMAL);
+
+       netif_device_attach(dev);
+
+       rtnl_unlock();
+}
+
+static struct pci_error_handlers bnx2x_err_handler = {
+       .error_detected = bnx2x_io_error_detected,
+       .slot_reset     = bnx2x_io_slot_reset,
+       .resume         = bnx2x_io_resume,
+};
+#endif
+
+static struct pci_driver bnx2x_pci_driver = {
+       .name        = DRV_MODULE_NAME,
+       .id_table    = bnx2x_pci_tbl,
+       .probe       = bnx2x_init_one,
+       .remove      = __devexit_p(bnx2x_remove_one),
+       .suspend     = bnx2x_suspend,
+       .resume      = bnx2x_resume,
+#if (LINUX_VERSION_CODE >= 0x2060b) && !defined(__VMKLNX__) /* BNX2X_UPSTREAM */
+       .err_handler = &bnx2x_err_handler,
+#endif
+};
+
+static int __init bnx2x_init(void)
+{
+#if (LINUX_VERSION_CODE >= 0x020600) /* BNX2X_UPSTREAM */
+       return pci_register_driver(&bnx2x_pci_driver);
+#else
+       return pci_module_init(&bnx2x_pci_driver);
+#endif
+}
+
+static void __exit bnx2x_cleanup(void)
+{
+       pci_unregister_driver(&bnx2x_pci_driver);
+}
+
+module_init(bnx2x_init);
+module_exit(bnx2x_cleanup);
+
+#ifdef BCM_CNIC
+
+/* count denotes the number of new completions we have seen */
+static void bnx2x_cnic_sp_post(struct bnx2x *bp, int count)
+{
+       int func = BP_FUNC(bp);
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return;
+#endif
+
+       spin_lock_bh(&bp->spq_lock);
+       bp->cnic_spq_pending -= count;
+
+       for (; bp->cnic_spq_pending < bp->cnic_eth_dev.max_kwqe_pending;
+            bp->cnic_spq_pending++) {
+
+               if (!bp->cnic_kwq_pending)
+                       break;
+
+               *bp->spq_prod_bd = *bp->cnic_kwq_cons;
+
+               bp->cnic_kwq_pending--;
+
+               DP(NETIF_MSG_TIMER, "pending on SPQ %d, on KWQ %d count %d\n",
+                  bp->cnic_spq_pending, bp->cnic_kwq_pending, count);
+
+               if (bp->spq_prod_bd == bp->spq_last_bd) {
+                       bp->spq_prod_bd = bp->spq;
+                       bp->spq_prod_idx = 0;
+                       DP(NETIF_MSG_TIMER, "end of spq\n");
+
+               } else {
+                       bp->spq_prod_bd++;
+                       bp->spq_prod_idx++;
+               }
+
+               if (bp->cnic_kwq_cons == bp->cnic_kwq_last)
+                       bp->cnic_kwq_cons = bp->cnic_kwq;
+               else
+                       bp->cnic_kwq_cons++;
+       }
+
+       REG_WR(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func),
+              bp->spq_prod_idx);
+
+       spin_unlock_bh(&bp->spq_lock);
+}
+
+static int bnx2x_cnic_sp_queue(struct net_device *dev,
+                              struct kwqe_16 *kwqes[], u32 count)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       int i;
+
+#ifdef BNX2X_STOP_ON_ERROR
+       if (unlikely(bp->panic))
+               return -EIO;
+#endif
+
+       spin_lock_bh(&bp->spq_lock);
+
+       for (i = 0; i < count; i++) {
+               struct eth_spe *spe = (struct eth_spe *)kwqes[i];
+
+               if (bp->cnic_spq_pending == MAX_SP_DESC_CNT)
+                       break;
+
+               *bp->cnic_kwq_prod = *spe;
+
+               bp->cnic_kwq_pending++;
+
+               DP(NETIF_MSG_TIMER, "L5 SPQE %x %x %x:%x pos %d\n",
+                  spe->hdr.conn_and_cmd_data, spe->hdr.type,
+                  spe->data.mac_config_addr.hi,
+                  spe->data.mac_config_addr.lo,
+                  bp->cnic_kwq_pending);
+
+               if (bp->cnic_kwq_prod == bp->cnic_kwq_last)
+                       bp->cnic_kwq_prod = bp->cnic_kwq;
+               else
+                       bp->cnic_kwq_prod++;
+       }
+
+       spin_unlock_bh(&bp->spq_lock);
+
+       if (bp->cnic_spq_pending < bp->cnic_eth_dev.max_kwqe_pending)
+               bnx2x_cnic_sp_post(bp, 0);
+
+       return i;
+}
+
+static int bnx2x_cnic_ctl_send(struct bnx2x *bp, struct cnic_ctl_info *ctl)
+{
+       struct cnic_ops *c_ops;
+       int rc = 0;
+
+       rcu_read_lock();
+       c_ops = rcu_dereference(bp->cnic_ops);
+       if (c_ops)
+               rc = c_ops->cnic_ctl(bp->cnic_data, ctl);
+       rcu_read_unlock();
+
+       /* since for now we don't handle send failure just tell the user */
+       if (rc)
+               BNX2X_ERR("sending cmd %x returned %d\n", ctl->cmd, rc);
+
+       return rc;
+}
+
+/*
+ * for commands that have no data
+ */
+static int bnx2x_cnic_notify(struct bnx2x *bp, int cmd)
+{
+       struct cnic_ctl_info ctl = {0};
+
+       ctl.cmd = cmd;
+
+       return bnx2x_cnic_ctl_send(bp, &ctl);
+}
+
+static void bnx2x_cnic_cfc_comp(struct bnx2x *bp, int cid)
+{
+       struct cnic_ctl_info ctl;
+
+       /* first we tell CNIC and only then we count this as a completion */
+       ctl.cmd = CNIC_CTL_COMPLETION_CMD;
+       ctl.data.comp.cid = cid;
+
+       bnx2x_cnic_ctl_send(bp, &ctl);
+       bnx2x_cnic_sp_post(bp, 1);
+}
+
+static int bnx2x_drv_ctl(struct net_device *dev, struct drv_ctl_info *ctl)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+
+       switch (ctl->cmd) {
+       case DRV_CTL_CTXTBL_WR_CMD:
+               {
+                       u32 index = ctl->data.io.offset;
+                       dma_addr_t addr = ctl->data.io.dma_addr;
+
+                       bnx2x_ilt_wr(bp, index, addr);
+                       return 0;
+               }
+               break;
+       case DRV_CTL_COMPLETION_CMD:
+               {
+                       int count = ctl->data.comp.comp_count;
+
+                       bnx2x_cnic_sp_post(bp, count);
+                       return 0;
+               }
+               break;
+       default:
+               BNX2X_ERR("unknown command %x\n", ctl->cmd);
+               return -EINVAL;
+       }
+}
+
+static void bnx2x_setup_cnic_irq_info(struct bnx2x *bp)
+{
+       struct cnic_eth_dev *cp = &bp->cnic_eth_dev;
+
+#ifdef CONFIG_PCI_MSI /* BNX2X_UPSTREAM */
+       if (bp->flags & USING_MSIX_FLAG) {
+               cp->drv_state |= CNIC_DRV_STATE_USING_MSIX;
+               cp->irq_arr[0].irq_flags |= CNIC_IRQ_FL_MSIX;
+               cp->irq_arr[0].vector = bp->msix_table[CNIC_SB_ID + 1].vector;
+       } else {
+#else
+       {
+#endif
+               cp->drv_state &= ~CNIC_DRV_STATE_USING_MSIX;
+               cp->irq_arr[0].irq_flags &= ~CNIC_IRQ_FL_MSIX;
+       }
+       cp->irq_arr[0].status_blk = bp->cnic_sb;
+       cp->irq_arr[0].status_blk_num = CNIC_SB_ID;
+
+       cp->num_irq = 1;
+}
+
+static int bnx2x_register_cnic(struct net_device *dev, struct cnic_ops *ops,
+                              void *data)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       struct cnic_eth_dev *cp = &bp->cnic_eth_dev;
+
+       if (ops == NULL)
+               return -EINVAL;
+
+#if !defined(__VMKLNX__)
+       if (!try_module_get(ops->cnic_owner))
+               return -EBUSY;
+#endif
+
+       if (atomic_read(&bp->intr_sem) != 0)
+               return -EBUSY;
+
+       bp->cnic_kwq = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       if (!bp->cnic_kwq)
+               return -ENOMEM;
+
+       bp->cnic_kwq_cons = bp->cnic_kwq;
+       bp->cnic_kwq_prod = bp->cnic_kwq;
+       bp->cnic_kwq_last = bp->cnic_kwq + SP_DESC_CNT;
+
+       bp->cnic_spq_pending = 0;
+       bp->cnic_kwq_pending = 0;
+
+       bp->cnic_data = data;
+       rcu_assign_pointer(bp->cnic_ops, ops);
+
+       cp->num_irq = 0;
+       cp->drv_state = CNIC_DRV_STATE_REGD;
+
+       bnx2x_init_sb(bp, bp->cnic_sb, bp->cnic_sb_mapping, CNIC_SB_ID);
+
+       bnx2x_setup_cnic_irq_info(bp);
+
+       return 0;
+}
+
+static int bnx2x_unregister_cnic(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       struct cnic_eth_dev *cp = &bp->cnic_eth_dev;
+
+       cp->drv_state = 0;
+#if !defined(__VMKLNX__)
+       module_put(bp->cnic_ops->cnic_owner);
+#endif
+       rcu_assign_pointer(bp->cnic_ops, NULL);
+#if !defined(__VMKLNX__)
+       synchronize_rcu();
+#endif
+       kfree(bp->cnic_kwq);
+
+       return 0;
+}
+
+struct cnic_eth_dev *bnx2x_cnic_probe(struct net_device *dev)
+{
+       struct bnx2x *bp = netdev_priv(dev);
+       struct cnic_eth_dev *cp = &bp->cnic_eth_dev;
+
+       cp->drv_owner = THIS_MODULE;
+       cp->chip_id = CHIP_ID(bp);
+       cp->pdev = bp->pdev;
+       cp->io_base = bp->regview;
+       cp->max_kwqe_pending = 8;
+       cp->ctx_blk_size = CNIC_CTX_PER_ILT * sizeof(union cdu_context);
+       cp->ctx_tbl_offset = FUNC_ILT_BASE(bp->func) + 1;
+       cp->ctx_tbl_len = CNIC_ILT_LINES;
+       cp->starting_cid = 16;
+       cp->drv_submit_kwqes_16 = bnx2x_cnic_sp_queue;
+       cp->drv_ctl = bnx2x_drv_ctl;
+       cp->drv_register_cnic = bnx2x_register_cnic;
+       cp->drv_unregister_cnic = bnx2x_unregister_cnic;
+
+       return cp;
+}
+EXPORT_SYMBOL(bnx2x_cnic_probe);
+
+#endif /* BCM_CNIC */
index 5a1aa0b55044426d2391d47e4105e362a24924c6..9c2583dc16e9116d7a16a786a95a39b8b1a34ca6 100644 (file)
@@ -6,7 +6,7 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation.
  *
- * The registers description starts with the regsister Access type followed
+ * The registers description starts with the register Access type followed
  * by size in bits. For example [RW 32]. The access types are:
  * R  - Read only
  * RC - Clear on read
    was asserted. */
 #define BRB1_REG_NUM_OF_FULL_CYCLES_0                           0x600c8
 #define BRB1_REG_NUM_OF_FULL_CYCLES_1                           0x600cc
-#define BRB1_REG_NUM_OF_FULL_CYCLES_2                           0x600d0
-#define BRB1_REG_NUM_OF_FULL_CYCLES_3                           0x600d4
 #define BRB1_REG_NUM_OF_FULL_CYCLES_4                           0x600d8
 /* [ST 32] The number of cycles that the pause signal towards MAC #0 was
    asserted. */
 #define BRB1_REG_NUM_OF_PAUSE_CYCLES_0                          0x600b8
 #define BRB1_REG_NUM_OF_PAUSE_CYCLES_1                          0x600bc
-#define BRB1_REG_NUM_OF_PAUSE_CYCLES_2                          0x600c0
-#define BRB1_REG_NUM_OF_PAUSE_CYCLES_3                          0x600c4
 /* [RW 10] Write client 0: De-assert pause threshold. */
 #define BRB1_REG_PAUSE_HIGH_THRESHOLD_0                         0x60078
 #define BRB1_REG_PAUSE_HIGH_THRESHOLD_1                         0x6007c
 /* [RW 10] Write client 0: Assert pause threshold. */
 #define BRB1_REG_PAUSE_LOW_THRESHOLD_0                          0x60068
 #define BRB1_REG_PAUSE_LOW_THRESHOLD_1                          0x6006c
+/* [R 24] The number of full blocks occupied by port. */
+#define BRB1_REG_PORT_NUM_OCC_BLOCKS_0                          0x60094
 /* [RW 1] Reset the design by software. */
 #define BRB1_REG_SOFT_RESET                                     0x600dc
 /* [R 5] Used to read the value of the XX protection CAM occupancy counter. */
@@ -72,6 +70,8 @@
 #define CCM_REG_CCM_INT_MASK                                    0xd01e4
 /* [R 11] Interrupt register #0 read */
 #define CCM_REG_CCM_INT_STS                                     0xd01d8
+/* [R 27] Parity register #0 read */
+#define CCM_REG_CCM_PRTY_STS                                    0xd01e8
 /* [RW 3] The size of AG context region 0 in REG-pairs. Designates the MS
    REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5).
    Is used to determine the number of the AG context REG-pairs written back;
    weight 8 (the most prioritised); 1 stands for weight 1(least
    prioritised); 2 stands for weight 2; tc. */
 #define CCM_REG_PBF_WEIGHT                                      0xd00ac
-/* [RW 6] The physical queue number of queue number 1 per port index. */
 #define CCM_REG_PHYS_QNUM1_0                                    0xd0134
 #define CCM_REG_PHYS_QNUM1_1                                    0xd0138
-/* [RW 6] The physical queue number of queue number 2 per port index. */
 #define CCM_REG_PHYS_QNUM2_0                                    0xd013c
 #define CCM_REG_PHYS_QNUM2_1                                    0xd0140
-/* [RW 6] The physical queue number of queue number 3 per port index. */
 #define CCM_REG_PHYS_QNUM3_0                                    0xd0144
-/* [RW 6] The physical queue number of queue number 0 with QOS equal 0 port
-   index 0. */
+#define CCM_REG_PHYS_QNUM3_1                                    0xd0148
 #define CCM_REG_QOS_PHYS_QNUM0_0                                0xd0114
 #define CCM_REG_QOS_PHYS_QNUM0_1                                0xd0118
-/* [RW 6] The physical queue number of queue number 0 with QOS equal 1 port
-   index 0. */
 #define CCM_REG_QOS_PHYS_QNUM1_0                                0xd011c
 #define CCM_REG_QOS_PHYS_QNUM1_1                                0xd0120
-/* [RW 6] The physical queue number of queue number 0 with QOS equal 2 port
-   index 0. */
 #define CCM_REG_QOS_PHYS_QNUM2_0                                0xd0124
+#define CCM_REG_QOS_PHYS_QNUM2_1                                0xd0128
+#define CCM_REG_QOS_PHYS_QNUM3_0                                0xd012c
+#define CCM_REG_QOS_PHYS_QNUM3_1                                0xd0130
 /* [RW 1] STORM - CM Interface enable. If 0 - the valid input is
    disregarded; acknowledge output is deasserted; all other signals are
    treated as usual; if 1 - normal activity. */
    mechanism. The fields are: [5:0] - message length; [12:6] - message
    pointer; 18:13] - next pointer. */
 #define CCM_REG_XX_DESCR_TABLE                                  0xd0300
+#define CCM_REG_XX_DESCR_TABLE_SIZE                             36
 /* [R 7] Used to read the value of XX protection Free counter. */
 #define CCM_REG_XX_FREE                                         0xd0184
 /* [RW 6] Initial value for the credit counter; responsible for fulfilling
 /* [WB 24] MATT ram access. each entry has the following
    format:{RegionLength[11:0]; egionOffset[11:0]} */
 #define CDU_REG_MATT                                            0x101100
+/* [RW 1] when this bit is set the CDU operates in e1hmf mode */
+#define CDU_REG_MF_MODE                                         0x101050
 /* [R 1] indication the initializing the activity counter by the hardware
    was done. */
 #define CFC_REG_AC_INIT_DONE                                    0x104078
    specifications */
 #define CFC_REG_ERROR_VECTOR                                    0x10403c
 #define CFC_REG_INIT_REG                                        0x10404c
+#define CFC_REG_INTERFACES                                      0x104058
 /* [RW 24] {weight_load_client7[2:0] to weight_load_client0[2:0]}. this
    field allows changing the priorities of the weighted-round-robin arbiter
    which selects which CFC load client should be served next */
 #define CFC_REG_LCREQ_WEIGHTS                                   0x104084
+/* [RW 16] Link List ram access; data = {prev_lcid; ext_lcid} */
+#define CFC_REG_LINK_LIST                                       0x104c00
+#define CFC_REG_LINK_LIST_SIZE                                  256
 /* [R 1] indication the initializing the link list by the hardware was done. */
 #define CFC_REG_LL_INIT_DONE                                    0x104074
 /* [R 9] Number of allocated LCIDs which are at empty state */
 #define CFC_REG_NUM_LCIDS_LEAVING                               0x104018
 /* [RW 8] The event id for aggregated interrupt 0 */
 #define CSDM_REG_AGG_INT_EVENT_0                                0xc2038
+#define CSDM_REG_AGG_INT_EVENT_1                                0xc203c
+#define CSDM_REG_AGG_INT_EVENT_10                               0xc2060
+#define CSDM_REG_AGG_INT_EVENT_11                               0xc2064
+#define CSDM_REG_AGG_INT_EVENT_12                               0xc2068
+#define CSDM_REG_AGG_INT_EVENT_13                               0xc206c
+#define CSDM_REG_AGG_INT_EVENT_14                               0xc2070
+#define CSDM_REG_AGG_INT_EVENT_15                               0xc2074
+#define CSDM_REG_AGG_INT_EVENT_16                               0xc2078
+#define CSDM_REG_AGG_INT_EVENT_17                               0xc207c
+#define CSDM_REG_AGG_INT_EVENT_18                               0xc2080
+#define CSDM_REG_AGG_INT_EVENT_19                               0xc2084
+#define CSDM_REG_AGG_INT_EVENT_2                                0xc2040
+#define CSDM_REG_AGG_INT_EVENT_20                               0xc2088
+#define CSDM_REG_AGG_INT_EVENT_21                               0xc208c
+#define CSDM_REG_AGG_INT_EVENT_22                               0xc2090
+#define CSDM_REG_AGG_INT_EVENT_23                               0xc2094
+#define CSDM_REG_AGG_INT_EVENT_24                               0xc2098
+#define CSDM_REG_AGG_INT_EVENT_25                               0xc209c
+#define CSDM_REG_AGG_INT_EVENT_26                               0xc20a0
+#define CSDM_REG_AGG_INT_EVENT_27                               0xc20a4
+#define CSDM_REG_AGG_INT_EVENT_28                               0xc20a8
+#define CSDM_REG_AGG_INT_EVENT_29                               0xc20ac
+#define CSDM_REG_AGG_INT_EVENT_3                                0xc2044
+#define CSDM_REG_AGG_INT_EVENT_30                               0xc20b0
+#define CSDM_REG_AGG_INT_EVENT_31                               0xc20b4
+#define CSDM_REG_AGG_INT_EVENT_4                                0xc2048
+/* [RW 1] The T bit for aggregated interrupt 0 */
+#define CSDM_REG_AGG_INT_T_0                                    0xc20b8
+#define CSDM_REG_AGG_INT_T_1                                    0xc20bc
+#define CSDM_REG_AGG_INT_T_10                                   0xc20e0
+#define CSDM_REG_AGG_INT_T_11                                   0xc20e4
+#define CSDM_REG_AGG_INT_T_12                                   0xc20e8
+#define CSDM_REG_AGG_INT_T_13                                   0xc20ec
+#define CSDM_REG_AGG_INT_T_14                                   0xc20f0
+#define CSDM_REG_AGG_INT_T_15                                   0xc20f4
+#define CSDM_REG_AGG_INT_T_16                                   0xc20f8
+#define CSDM_REG_AGG_INT_T_17                                   0xc20fc
+#define CSDM_REG_AGG_INT_T_18                                   0xc2100
+#define CSDM_REG_AGG_INT_T_19                                   0xc2104
 /* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */
 #define CSDM_REG_CFC_RSP_START_ADDR                             0xc2008
 /* [RW 16] The maximum value of the competion counter #0 */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define CSDM_REG_CSDM_INT_MASK_0                                0xc229c
 #define CSDM_REG_CSDM_INT_MASK_1                                0xc22ac
+/* [R 32] Interrupt register #0 read */
+#define CSDM_REG_CSDM_INT_STS_0                                 0xc2290
+#define CSDM_REG_CSDM_INT_STS_1                                 0xc22a0
 /* [RW 11] Parity mask register #0 read/write */
 #define CSDM_REG_CSDM_PRTY_MASK                                 0xc22bc
 /* [R 11] Parity register #0 read */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define CSEM_REG_CSEM_INT_MASK_0                                0x200110
 #define CSEM_REG_CSEM_INT_MASK_1                                0x200120
+/* [R 32] Interrupt register #0 read */
+#define CSEM_REG_CSEM_INT_STS_0                                 0x200104
+#define CSEM_REG_CSEM_INT_STS_1                                 0x200114
 /* [RW 32] Parity mask register #0 read/write */
 #define CSEM_REG_CSEM_PRTY_MASK_0                               0x200130
 #define CSEM_REG_CSEM_PRTY_MASK_1                               0x200140
 #define CSEM_REG_ENABLE_OUT                                     0x2000a8
 /* [RW 32] This address space contains all registers and memories that are
    placed in SEM_FAST block. The SEM_FAST registers are described in
-   appendix B. In order to access the SEM_FAST registers the base address
-   CSEM_REGISTERS_FAST_MEMORY (Offset: 0x220000) should be added to each
-   SEM_FAST register offset. */
+   appendix B. In order to access the sem_fast registers the base address
+   ~fast_memory.fast_memory should be added to eachsem_fast register offset. */
 #define CSEM_REG_FAST_MEMORY                                    0x220000
 /* [RW 1] Disables input messages from FIC0 May be updated during run_time
    by the microcode */
 #define DBG_REG_DBG_PRTY_MASK                                   0xc0a8
 /* [R 1] Parity register #0 read */
 #define DBG_REG_DBG_PRTY_STS                                    0xc09c
-/* [RW 2] debug only: These bits indicate the credit for PCI request type 4
-   interface; MUST be configured AFTER pci_ext_buffer_strt_addr_lsb/msb are
-   configured */
-#define DBG_REG_PCI_REQ_CREDIT                                  0xc120
 /* [RW 32] Commands memory. The address to command X; row Y is to calculated
    as 14*X+Y. */
 #define DMAE_REG_CMD_MEM                                        0x102400
+#define DMAE_REG_CMD_MEM_SIZE                                   224
 /* [RW 1] If 0 - the CRC-16c initial value is all zeroes; if 1 - the CRC-16c
    initial value is all ones. */
 #define DMAE_REG_CRC16C_INIT                                    0x10201c
 #define DORQ_REG_AGG_CMD3                                       0x17006c
 /* [RW 28] UCM Header. */
 #define DORQ_REG_CMHEAD_RX                                      0x170050
+/* [RW 32] Doorbell address for RBC doorbells (function 0). */
+#define DORQ_REG_DB_ADDR0                                       0x17008c
 /* [RW 5] Interrupt mask register #0 read/write */
 #define DORQ_REG_DORQ_INT_MASK                                  0x170180
 /* [R 5] Interrupt register #0 read */
 #define HC_CONFIG_0_REG_SINGLE_ISR_EN_0                         (0x1<<1)
 #define HC_REG_AGG_INT_0                                        0x108050
 #define HC_REG_AGG_INT_1                                        0x108054
-/* [RW 16] attention bit and attention acknowledge bits status for port 0
-   and 1 according to the following address map: addr 0 - attn_bit_0; addr 1
-   - attn_ack_bit_0; addr 2 - attn_bit_1; addr 3 - attn_ack_bit_1; */
 #define HC_REG_ATTN_BIT                                         0x108120
-/* [RW 16] attn bits status index for attn bit msg; addr 0 - function 0;
-   addr 1 - functin 1 */
 #define HC_REG_ATTN_IDX                                         0x108100
-/* [RW 32] port 0 lower 32 bits address field for attn messag. */
 #define HC_REG_ATTN_MSG0_ADDR_L                                 0x108018
-/* [RW 32] port 1 lower 32 bits address field for attn messag. */
 #define HC_REG_ATTN_MSG1_ADDR_L                                 0x108020
-/* [RW 8] status block number for attn bit msg - function 0; */
 #define HC_REG_ATTN_NUM_P0                                      0x108038
-/* [RW 8] status block number for attn bit msg - function 1 */
 #define HC_REG_ATTN_NUM_P1                                      0x10803c
+#define HC_REG_COMMAND_REG                                      0x108180
 #define HC_REG_CONFIG_0                                         0x108000
 #define HC_REG_CONFIG_1                                         0x108004
+#define HC_REG_FUNC_NUM_P0                                      0x1080ac
+#define HC_REG_FUNC_NUM_P1                                      0x1080b0
 /* [RW 3] Parity mask register #0 read/write */
 #define HC_REG_HC_PRTY_MASK                                     0x1080a0
 /* [R 3] Parity register #0 read */
 #define HC_REG_HC_PRTY_STS                                      0x108094
-/* [RW 17] status block interrupt mask; one in each bit means unmask; zerow
-   in each bit means mask; bit 0 - default SB; bit 1 - SB_0; bit 2 - SB_1...
-   bit 16- SB_15; addr 0 - port 0; addr 1 - port 1 */
 #define HC_REG_INT_MASK                                         0x108108
-/* [RW 16] port 0 attn bit condition monitoring; each bit that is set will
-   lock a change fron 0 to 1 in the corresponding attention signals that
-   comes from the AEU */
 #define HC_REG_LEADING_EDGE_0                                   0x108040
 #define HC_REG_LEADING_EDGE_1                                   0x108048
-/* [RW 16] all producer and consumer of port 0 according to the following
-   addresses; U_prod: 0-15; C_prod: 16-31; U_cons: 32-47; C_cons:48-63;
-   Defoult_prod: U/C/X/T/Attn-64/65/66/67/68; Defoult_cons:
-   U/C/X/T/Attn-69/70/71/72/73 */
 #define HC_REG_P0_PROD_CONS                                     0x108200
-/* [RW 16] all producer and consumer of port 1according to the following
-   addresses; U_prod: 0-15; C_prod: 16-31; U_cons: 32-47; C_cons:48-63;
-   Defoult_prod: U/C/X/T/Attn-64/65/66/67/68; Defoult_cons:
-   U/C/X/T/Attn-69/70/71/72/73 */
 #define HC_REG_P1_PROD_CONS                                     0x108400
-/* [W 1] This register is write only and has 4 addresses as follow: 0 =
-   clear all PBA bits port 0; 1 = clear all pending interrupts request
-   port0; 2 = clear all PBA bits port 1; 3 = clear all pending interrupts
-   request port1; here is no meaning for the data in this register */
 #define HC_REG_PBA_COMMAND                                      0x108140
 #define HC_REG_PCI_CONFIG_0                                     0x108010
 #define HC_REG_PCI_CONFIG_1                                     0x108014
-/* [RW 24] all counters acording to the following address: LSB: 0=read; 1=
-   read_clear; 0-71 = HW counters (the inside order is the same as the
-   interrupt table in the spec); 72-219 = SW counters 1 (stops after first
-   consumer upd) the inside order is: 72-103 - U_non_default_p0; 104-135
-   C_non_defaul_p0; 36-145 U/C/X/T/Attn_default_p0; 146-177
-   U_non_default_p1; 178-209 C_non_defaul_p1; 10-219 U/C/X/T/Attn_default_p1
-   ; 220-367 = SW counters 2 (stops when prod=cons) the inside order is:
-   220-251 - U_non_default_p0; 252-283 C_non_defaul_p0; 84-293
-   U/C/X/T/Attn_default_p0; 294-325 U_non_default_p1; 326-357
-   C_non_defaul_p1; 58-367 U/C/X/T/Attn_default_p1 ; 368-515 = mailbox
-   counters; (the inside order of the mailbox counter is 368-431 U and C
-   non_default_p0; 432-441 U/C/X/T/Attn_default_p0; 442-505 U and C
-   non_default_p1; 506-515 U/C/X/T/Attn_default_p1) */
 #define HC_REG_STATISTIC_COUNTERS                               0x109000
-/* [RW 16] port 0 attn bit condition monitoring; each bit that is set will
-   lock a change fron 1 to 0 in the corresponding attention signals that
-   comes from the AEU */
 #define HC_REG_TRAILING_EDGE_0                                  0x108044
 #define HC_REG_TRAILING_EDGE_1                                  0x10804c
 #define HC_REG_UC_RAM_ADDR_0                                    0x108028
 #define HC_REG_UC_RAM_ADDR_1                                    0x108030
-/* [RW 16] ustorm address for coalesc now message */
 #define HC_REG_USTORM_ADDR_FOR_COALESCE                         0x108068
 #define HC_REG_VQID_0                                           0x108008
 #define HC_REG_VQID_1                                           0x10800c
    rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP Latched
    ump_tx_parity; [31] MCP Latched scpad_parity; */
 #define MISC_REG_AEU_AFTER_INVERT_4_MCP                         0xa458
-/* [W 11] write to this register results with the clear of the latched
+/* [W 14] write to this register results with the clear of the latched
    signals; one in d0 clears RBCR latch; one in d1 clears RBCT latch; one in
    d2 clears RBCN latch; one in d3 clears RBCU latch; one in d4 clears RBCP
    latch; one in d5 clears GRC Latched timeout attention; one in d6 clears
    GRC Latched reserved access attention; one in d7 clears Latched
    rom_parity; one in d8 clears Latched ump_rx_parity; one in d9 clears
-   Latched ump_tx_parity; one in d10 clears Latched scpad_parity; read from
-   this register return zero */
+   Latched ump_tx_parity; one in d10 clears Latched scpad_parity (both
+   ports); one in d11 clears pxpv_misc_mps_attn; one in d12 clears
+   pxp_misc_exp_rom_attn0; one in d13 clears pxp_misc_exp_rom_attn1; read
+   from this register return zero */
 #define MISC_REG_AEU_CLR_LATCH_SIGNAL                           0xa45c
 /* [RW 32] first 32b for enabling the output for function 0 output0. mapped
    as follows: [0] NIG attention for function0; [1] NIG attention for
    TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */
 #define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_0                       0xa06c
 #define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_1                       0xa07c
+#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_2                       0xa08c
 #define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_3                       0xa09c
+#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_5                       0xa0bc
+#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_6                       0xa0cc
+#define MISC_REG_AEU_ENABLE1_FUNC_0_OUT_7                       0xa0dc
 /* [RW 32] first 32b for enabling the output for function 1 output0. mapped
    as follows: [0] NIG attention for function0; [1] NIG attention for
    function1; [2] GPIO1 function 1; [3] GPIO2 function 1; [4] GPIO3 function
    TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */
 #define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_0                       0xa10c
 #define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_1                       0xa11c
+#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_2                       0xa12c
 #define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_3                       0xa13c
-/* [RW 32] first 32b for enabling the output for close the gate nig 0.
-   mapped as follows: [0] NIG attention for function0; [1] NIG attention for
+#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_5                       0xa15c
+#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_6                       0xa16c
+#define MISC_REG_AEU_ENABLE1_FUNC_1_OUT_7                       0xa17c
+/* [RW 32] first 32b for enabling the output for close the gate nig. mapped
+   as follows: [0] NIG attention for function0; [1] NIG attention for
    function1; [2] GPIO1 function 0; [3] GPIO2 function 0; [4] GPIO3 function
    0; [5] GPIO4 function 0; [6] GPIO1 function 1; [7] GPIO2 function 1; [8]
    GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event
    TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw interrupt; */
 #define MISC_REG_AEU_ENABLE1_NIG_0                              0xa0ec
 #define MISC_REG_AEU_ENABLE1_NIG_1                              0xa18c
-/* [RW 32] first 32b for enabling the output for close the gate pxp 0.
-   mapped as follows: [0] NIG attention for function0; [1] NIG attention for
+/* [RW 32] first 32b for enabling the output for close the gate pxp. mapped
+   as follows: [0] NIG attention for function0; [1] NIG attention for
    function1; [2] GPIO1 function 0; [3] GPIO2 function 0; [4] GPIO3 function
    0; [5] GPIO4 function 0; [6] GPIO1 function 1; [7] GPIO2 function 1; [8]
    GPIO3 function 1; [9] GPIO4 function 1; [10] PCIE glue/PXP VPD event
    interrupt; */
 #define MISC_REG_AEU_ENABLE2_FUNC_1_OUT_0                       0xa110
 #define MISC_REG_AEU_ENABLE2_FUNC_1_OUT_1                       0xa120
-/* [RW 32] second 32b for enabling the output for close the gate nig 0.
-   mapped as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt;
-   [2] QM Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5]
-   Timers Hw interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8]
-   XCM Parity error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11]
-   XSEMI Hw interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw
-   interrupt; [14] NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI
-   core Parity error; [17] Vaux PCI core Hw interrupt; [18] Debug Parity
-   error; [19] Debug Hw interrupt; [20] USDM Parity error; [21] USDM Hw
-   interrupt; [22] UCM Parity error; [23] UCM Hw interrupt; [24] USEMI
-   Parity error; [25] USEMI Hw interrupt; [26] UPB Parity error; [27] UPB Hw
-   interrupt; [28] CSDM Parity error; [29] CSDM Hw interrupt; [30] CCM
-   Parity error; [31] CCM Hw interrupt; */
+/* [RW 32] second 32b for enabling the output for close the gate nig. mapped
+   as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM
+   Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw
+   interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity
+   error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw
+   interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14]
+   NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error;
+   [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw
+   interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM
+   Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI
+   Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM
+   Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw
+   interrupt; */
 #define MISC_REG_AEU_ENABLE2_NIG_0                              0xa0f0
 #define MISC_REG_AEU_ENABLE2_NIG_1                              0xa190
-/* [RW 32] second 32b for enabling the output for close the gate pxp 0.
-   mapped as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt;
-   [2] QM Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5]
-   Timers Hw interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8]
-   XCM Parity error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11]
-   XSEMI Hw interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw
-   interrupt; [14] NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI
-   core Parity error; [17] Vaux PCI core Hw interrupt; [18] Debug Parity
-   error; [19] Debug Hw interrupt; [20] USDM Parity error; [21] USDM Hw
-   interrupt; [22] UCM Parity error; [23] UCM Hw interrupt; [24] USEMI
-   Parity error; [25] USEMI Hw interrupt; [26] UPB Parity error; [27] UPB Hw
-   interrupt; [28] CSDM Parity error; [29] CSDM Hw interrupt; [30] CCM
-   Parity error; [31] CCM Hw interrupt; */
+/* [RW 32] second 32b for enabling the output for close the gate pxp. mapped
+   as follows: [0] PBClient Parity error; [1] PBClient Hw interrupt; [2] QM
+   Parity error; [3] QM Hw interrupt; [4] Timers Parity error; [5] Timers Hw
+   interrupt; [6] XSDM Parity error; [7] XSDM Hw interrupt; [8] XCM Parity
+   error; [9] XCM Hw interrupt; [10] XSEMI Parity error; [11] XSEMI Hw
+   interrupt; [12] DoorbellQ Parity error; [13] DoorbellQ Hw interrupt; [14]
+   NIG Parity error; [15] NIG Hw interrupt; [16] Vaux PCI core Parity error;
+   [17] Vaux PCI core Hw interrupt; [18] Debug Parity error; [19] Debug Hw
+   interrupt; [20] USDM Parity error; [21] USDM Hw interrupt; [22] UCM
+   Parity error; [23] UCM Hw interrupt; [24] USEMI Parity error; [25] USEMI
+   Hw interrupt; [26] UPB Parity error; [27] UPB Hw interrupt; [28] CSDM
+   Parity error; [29] CSDM Hw interrupt; [30] CCM Parity error; [31] CCM Hw
+   interrupt; */
 #define MISC_REG_AEU_ENABLE2_PXP_0                              0xa100
 #define MISC_REG_AEU_ENABLE2_PXP_1                              0xa1a0
 /* [RW 32] third 32b for enabling the output for function 0 output0. mapped
    attn1; */
 #define MISC_REG_AEU_ENABLE3_FUNC_1_OUT_0                       0xa114
 #define MISC_REG_AEU_ENABLE3_FUNC_1_OUT_1                       0xa124
-/* [RW 32] third 32b for enabling the output for close the gate nig 0.
-   mapped as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2]
-   PXP Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity
-   error; [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC
-   Hw interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE
-   Parity error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13]
-   IGU (HC) Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt;
-   [16] pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0;
-   [20] MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0;
-   [23] SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST;
-   [26] SW timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers
-   attn_3 func1; [29] SW timers attn_4 func1; [30] General attn0; [31]
-   General attn1; */
+/* [RW 32] third 32b for enabling the output for close the gate nig. mapped
+   as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP
+   Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error;
+   [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw
+   interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity
+   error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC)
+   Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16]
+   pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20]
+   MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23]
+   SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW
+   timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3
+   func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General
+   attn1; */
 #define MISC_REG_AEU_ENABLE3_NIG_0                              0xa0f4
 #define MISC_REG_AEU_ENABLE3_NIG_1                              0xa194
-/* [RW 32] third 32b for enabling the output for close the gate pxp 0.
-   mapped as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2]
-   PXP Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity
-   error; [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC
-   Hw interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE
-   Parity error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13]
-   IGU (HC) Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt;
-   [16] pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0;
-   [20] MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0;
-   [23] SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST;
-   [26] SW timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers
-   attn_3 func1; [29] SW timers attn_4 func1; [30] General attn0; [31]
-   General attn1; */
+/* [RW 32] third 32b for enabling the output for close the gate pxp. mapped
+   as follows: [0] CSEMI Parity error; [1] CSEMI Hw interrupt; [2] PXP
+   Parity error; [3] PXP Hw interrupt; [4] PXPpciClockClient Parity error;
+   [5] PXPpciClockClient Hw interrupt; [6] CFC Parity error; [7] CFC Hw
+   interrupt; [8] CDU Parity error; [9] CDU Hw interrupt; [10] DMAE Parity
+   error; [11] DMAE Hw interrupt; [12] IGU (HC) Parity error; [13] IGU (HC)
+   Hw interrupt; [14] MISC Parity error; [15] MISC Hw interrupt; [16]
+   pxp_misc_mps_attn; [17] Flash event; [18] SMB event; [19] MCP attn0; [20]
+   MCP attn1; [21] SW timers attn_1 func0; [22] SW timers attn_2 func0; [23]
+   SW timers attn_3 func0; [24] SW timers attn_4 func0; [25] PERST; [26] SW
+   timers attn_1 func1; [27] SW timers attn_2 func1; [28] SW timers attn_3
+   func1; [29] SW timers attn_4 func1; [30] General attn0; [31] General
+   attn1; */
 #define MISC_REG_AEU_ENABLE3_PXP_0                              0xa104
 #define MISC_REG_AEU_ENABLE3_PXP_1                              0xa1a4
 /* [RW 32] fourth 32b for enabling the output for function 0 output0.mapped
    Latched ump_tx_parity; [31] MCP Latched scpad_parity; */
 #define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_0                       0xa078
 #define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_2                       0xa098
+#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_4                       0xa0b8
+#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_5                       0xa0c8
+#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_6                       0xa0d8
+#define MISC_REG_AEU_ENABLE4_FUNC_0_OUT_7                       0xa0e8
 /* [RW 32] fourth 32b for enabling the output for function 1 output0.mapped
    as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3]
    General attn5; [4] General attn6; [5] General attn7; [6] General attn8;
    Latched ump_tx_parity; [31] MCP Latched scpad_parity; */
 #define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_0                       0xa118
 #define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_2                       0xa138
-/* [RW 32] fourth 32b for enabling the output for close the gate nig
-   0.mapped as follows: [0] General attn2; [1] General attn3; [2] General
-   attn4; [3] General attn5; [4] General attn6; [5] General attn7; [6]
-   General attn8; [7] General attn9; [8] General attn10; [9] General attn11;
-   [10] General attn12; [11] General attn13; [12] General attn14; [13]
-   General attn15; [14] General attn16; [15] General attn17; [16] General
-   attn18; [17] General attn19; [18] General attn20; [19] General attn21;
-   [20] Main power interrupt; [21] RBCR Latched attn; [22] RBCT Latched
-   attn; [23] RBCN Latched attn; [24] RBCU Latched attn; [25] RBCP Latched
-   attn; [26] GRC Latched timeout attention; [27] GRC Latched reserved
-   access attention; [28] MCP Latched rom_parity; [29] MCP Latched
-   ump_rx_parity; [30] MCP Latched ump_tx_parity; [31] MCP Latched
-   scpad_parity; */
+#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_4                       0xa158
+#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_5                       0xa168
+#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_6                       0xa178
+#define MISC_REG_AEU_ENABLE4_FUNC_1_OUT_7                       0xa188
+/* [RW 32] fourth 32b for enabling the output for close the gate nig.mapped
+   as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3]
+   General attn5; [4] General attn6; [5] General attn7; [6] General attn8;
+   [7] General attn9; [8] General attn10; [9] General attn11; [10] General
+   attn12; [11] General attn13; [12] General attn14; [13] General attn15;
+   [14] General attn16; [15] General attn17; [16] General attn18; [17]
+   General attn19; [18] General attn20; [19] General attn21; [20] Main power
+   interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN
+   Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC
+   Latched timeout attention; [27] GRC Latched reserved access attention;
+   [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP
+   Latched ump_tx_parity; [31] MCP Latched scpad_parity; */
 #define MISC_REG_AEU_ENABLE4_NIG_0                              0xa0f8
 #define MISC_REG_AEU_ENABLE4_NIG_1                              0xa198
-/* [RW 32] fourth 32b for enabling the output for close the gate pxp
-   0.mapped as follows: [0] General attn2; [1] General attn3; [2] General
-   attn4; [3] General attn5; [4] General attn6; [5] General attn7; [6]
-   General attn8; [7] General attn9; [8] General attn10; [9] General attn11;
-   [10] General attn12; [11] General attn13; [12] General attn14; [13]
-   General attn15; [14] General attn16; [15] General attn17; [16] General
-   attn18; [17] General attn19; [18] General attn20; [19] General attn21;
-   [20] Main power interrupt; [21] RBCR Latched attn; [22] RBCT Latched
-   attn; [23] RBCN Latched attn; [24] RBCU Latched attn; [25] RBCP Latched
-   attn; [26] GRC Latched timeout attention; [27] GRC Latched reserved
-   access attention; [28] MCP Latched rom_parity; [29] MCP Latched
-   ump_rx_parity; [30] MCP Latched ump_tx_parity; [31] MCP Latched
-   scpad_parity; */
+/* [RW 32] fourth 32b for enabling the output for close the gate pxp.mapped
+   as follows: [0] General attn2; [1] General attn3; [2] General attn4; [3]
+   General attn5; [4] General attn6; [5] General attn7; [6] General attn8;
+   [7] General attn9; [8] General attn10; [9] General attn11; [10] General
+   attn12; [11] General attn13; [12] General attn14; [13] General attn15;
+   [14] General attn16; [15] General attn17; [16] General attn18; [17]
+   General attn19; [18] General attn20; [19] General attn21; [20] Main power
+   interrupt; [21] RBCR Latched attn; [22] RBCT Latched attn; [23] RBCN
+   Latched attn; [24] RBCU Latched attn; [25] RBCP Latched attn; [26] GRC
+   Latched timeout attention; [27] GRC Latched reserved access attention;
+   [28] MCP Latched rom_parity; [29] MCP Latched ump_rx_parity; [30] MCP
+   Latched ump_tx_parity; [31] MCP Latched scpad_parity; */
 #define MISC_REG_AEU_ENABLE4_PXP_0                              0xa108
 #define MISC_REG_AEU_ENABLE4_PXP_1                              0xa1a8
 /* [RW 1] set/clr general attention 0; this will set/clr bit 94 in the aeu
 #define MISC_REG_AEU_GENERAL_ATTN_19                            0xa04c
 #define MISC_REG_AEU_GENERAL_ATTN_10                            0xa028
 #define MISC_REG_AEU_GENERAL_ATTN_11                            0xa02c
+#define MISC_REG_AEU_GENERAL_ATTN_12                            0xa030
 #define MISC_REG_AEU_GENERAL_ATTN_2                             0xa008
 #define MISC_REG_AEU_GENERAL_ATTN_20                            0xa050
 #define MISC_REG_AEU_GENERAL_ATTN_21                            0xa054
 #define MISC_REG_AEU_GENERAL_ATTN_7                             0xa01c
 #define MISC_REG_AEU_GENERAL_ATTN_8                             0xa020
 #define MISC_REG_AEU_GENERAL_ATTN_9                             0xa024
+#define MISC_REG_AEU_GENERAL_MASK                               0xa61c
 /* [RW 32] first 32b for inverting the input for function 0; for each bit:
    0= do not invert; 1= invert; mapped as follows: [0] NIG attention for
    function0; [1] NIG attention for function1; [2] GPIO1 mcp; [3] GPIO2 mcp;
 #define MISC_REG_AEU_INVERTER_2_FUNC_0                          0xa230
 #define MISC_REG_AEU_INVERTER_2_FUNC_1                          0xa240
 /* [RW 10] [7:0] = mask 8 attention output signals toward IGU function0;
-   [9:8] = mask close the gates signals of function 0 toward PXP [8] and NIG
-   [9]. Zero = mask; one = unmask */
+   [9:8] = raserved. Zero = mask; one = unmask */
 #define MISC_REG_AEU_MASK_ATTN_FUNC_0                           0xa060
 #define MISC_REG_AEU_MASK_ATTN_FUNC_1                           0xa064
+/* [RW 1] If set a system kill occurred */
+#define MISC_REG_AEU_SYS_KILL_OCCURRED                          0xa610
+/* [RW 32] Represent the status of the input vector to the AEU when a system
+   kill occurred. The register is reset in por reset. Mapped as follows: [0]
+   NIG attention for function0; [1] NIG attention for function1; [2] GPIO1
+   mcp; [3] GPIO2 mcp; [4] GPIO3 mcp; [5] GPIO4 mcp; [6] GPIO1 function 1;
+   [7] GPIO2 function 1; [8] GPIO3 function 1; [9] GPIO4 function 1; [10]
+   PCIE glue/PXP VPD event function0; [11] PCIE glue/PXP VPD event
+   function1; [12] PCIE glue/PXP Expansion ROM event0; [13] PCIE glue/PXP
+   Expansion ROM event1; [14] SPIO4; [15] SPIO5; [16] MSI/X indication for
+   mcp; [17] MSI/X indication for function 1; [18] BRB Parity error; [19]
+   BRB Hw interrupt; [20] PRS Parity error; [21] PRS Hw interrupt; [22] SRC
+   Parity error; [23] SRC Hw interrupt; [24] TSDM Parity error; [25] TSDM Hw
+   interrupt; [26] TCM Parity error; [27] TCM Hw interrupt; [28] TSEMI
+   Parity error; [29] TSEMI Hw interrupt; [30] PBF Parity error; [31] PBF Hw
+   interrupt; */
+#define MISC_REG_AEU_SYS_KILL_STATUS_0                          0xa600
+#define MISC_REG_AEU_SYS_KILL_STATUS_1                          0xa604
+#define MISC_REG_AEU_SYS_KILL_STATUS_2                          0xa608
+#define MISC_REG_AEU_SYS_KILL_STATUS_3                          0xa60c
 /* [R 4] This field indicates the type of the device. '0' - 2 Ports; '1' - 1
    Port. */
 #define MISC_REG_BOND_ID                                        0xa400
    starts at 0x0 for the A0 tape-out and increments by one for each
    all-layer tape-out. */
 #define MISC_REG_CHIP_REV                                       0xa40c
-/* [RW 32] The following driver registers(1..6) represent 6 drivers and 32
-   clients. Each client can be controlled by one driver only. One in each
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_10                              0xa3e0
+#define MISC_REG_DRIVER_CONTROL_10_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_11                              0xa3e8
+#define MISC_REG_DRIVER_CONTROL_11_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_12                              0xa3f0
+#define MISC_REG_DRIVER_CONTROL_12_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_13                              0xa3f8
+#define MISC_REG_DRIVER_CONTROL_13_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
    bit represent that this driver control the appropriate client (Ex: bit 5
    is set means this driver control client number 5). addr1 = set; addr0 =
    clear; read from both addresses will give the same result = status. write
    it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
    be asserted). */
 #define MISC_REG_DRIVER_CONTROL_1                               0xa510
+#define MISC_REG_DRIVER_CONTROL_14                              0xa5e0
+#define MISC_REG_DRIVER_CONTROL_14_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_15                              0xa5e8
+#define MISC_REG_DRIVER_CONTROL_15_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_16                              0xa5f0
+#define MISC_REG_DRIVER_CONTROL_16_SIZE                         2
+/* [RW 32] The following driver registers(1...16) represent 16 drivers and
+   32 clients. Each client can be controlled by one driver only. One in each
+   bit represent that this driver control the appropriate client (Ex: bit 5
+   is set means this driver control client number 5). addr1 = set; addr0 =
+   clear; read from both addresses will give the same result = status. write
+   to address 1 will set a request to control all the clients that their
+   appropriate bit (in the write command) is set. if the client is free (the
+   appropriate bit in all the other drivers is clear) one will be written to
+   that driver register; if the client isn't free the bit will remain zero.
+   if the appropriate bit is set (the driver request to gain control on a
+   client it already controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW
+   interrupt will be asserted). write to address 0 will set a request to
+   free all the clients that their appropriate bit (in the write command) is
+   set. if the appropriate bit is clear (the driver request to free a client
+   it doesn't controls the ~MISC_REGISTERS_INT_STS.GENERIC_SW interrupt will
+   be asserted). */
+#define MISC_REG_DRIVER_CONTROL_7                               0xa3c8
+/* [RW 1] e1hmf for WOL. If clr WOL signal o the PXP will be send on bit 0
+   only. */
+#define MISC_REG_E1HMF_MODE                                     0xa5f8
 /* [RW 32] GPIO. [31-28] FLOAT port 0; [27-24] FLOAT port 0; When any of
    these bits is written as a '1'; the corresponding SPIO bit will turn off
    it's drivers and become an input. This is the reset state of all GPIO
    This is the result value of the pin; not the drive value. Writing these
    bits will have not effect. */
 #define MISC_REG_GPIO                                           0xa490
+/* [R 28] this field hold the last information that caused reserved
+   attention. bits [19:0] - address; [22:20] function; [23] reserved;
+   [27:24] the master that caused the attention - according to the following
+   encodeing:1 = pxp; 2 = mcp; 3 = usdm; 4 = tsdm; 5 = xsdm; 6 = csdm; 7 =
+   dbu; 8 = dmae */
+#define MISC_REG_GRC_RSV_ATTN                                   0xa3c0
+/* [R 28] this field hold the last information that caused timeout
+   attention. bits [19:0] - address; [22:20] function; [23] reserved;
+   [27:24] the master that caused the attention - according to the following
+   encodeing:1 = pxp; 2 = mcp; 3 = usdm; 4 = tsdm; 5 = xsdm; 6 = csdm; 7 =
+   dbu; 8 = dmae */
+#define MISC_REG_GRC_TIMEOUT_ATTN                               0xa3c4
 /* [RW 1] Setting this bit enables a timer in the GRC block to timeout any
    access that does not finish within
    ~misc_registers_grc_timout_val.grc_timeout_val cycles. When this bit is
 #define MISC_REG_MISC_PRTY_MASK                                 0xa398
 /* [R 1] Parity register #0 read */
 #define MISC_REG_MISC_PRTY_STS                                  0xa38c
+#define MISC_REG_NIG_WOL_P0                                     0xa270
+#define MISC_REG_NIG_WOL_P1                                     0xa274
+/* [R 1] If set indicate that the pcie_rst_b was asserted without perst
+   assertion */
+#define MISC_REG_PCIE_HOT_RESET                                 0xa618
 /* [RW 32] 32 LSB of storm PLL first register; reset val = 0x 071d2911.
    inside order of the bits is: [0] P1 divider[0] (reset value 1); [1] P1
    divider[1] (reset value 0); [2] P1 divider[2] (reset value 0); [3] P1
 #define MISC_REG_PLL_STORM_CTRL_2                               0xa298
 #define MISC_REG_PLL_STORM_CTRL_3                               0xa29c
 #define MISC_REG_PLL_STORM_CTRL_4                               0xa2a0
-/* [RW 32] reset reg#1; rite/read one = the specific block is out of reset;
+/* [RW 32] reset reg#2; rite/read one = the specific block is out of reset;
    write/read zero = the specific block is in reset; addr 0-wr- the write
    value will be written to the register; addr 1-set - one will be written
    to all the bits that have the value of one in the data written (bits that
    written to all the bits that have the value of one in the data written
    (bits that have the value of zero will not be change); addr 3-ignore;
    read ignore from all addr except addr 00; inside order of the bits is:
-   [0] rst_brb1; [1] rst_prs; [2] rst_src; [3] rst_tsdm; [4] rst_tsem; [5]
-   rst_tcm; [6] rst_rbcr; [7] rst_nig; [8] rst_usdm; [9] rst_ucm; [10]
-   rst_usem; [11] rst_upb; [12] rst_ccm; [13] rst_csem; [14] rst_csdm; [15]
-   rst_rbcu; [16] rst_pbf; [17] rst_qm; [18] rst_tm; [19] rst_dorq; [20]
-   rst_xcm; [21] rst_xsdm; [22] rst_xsem; [23] rst_rbct; [24] rst_cdu; [25]
-   rst_cfc; [26] rst_pxp; [27] rst_pxpv; [28] rst_rbcp; [29] rst_hc; [30]
-   rst_dmae; [31] rst_semi_rtc; */
-#define MISC_REG_RESET_REG_1                                    0xa580
+   [0] rst_bmac0; [1] rst_bmac1; [2] rst_emac0; [3] rst_emac1; [4] rst_grc;
+   [5] rst_mcp_n_reset_reg_hard_core; [6] rst_ mcp_n_hard_core_rst_b; [7]
+   rst_ mcp_n_reset_cmn_cpu; [8] rst_ mcp_n_reset_cmn_core; [9] rst_rbcn;
+   [10] rst_dbg; [11] rst_misc_core; [12] rst_dbue (UART); [13]
+   Pci_resetmdio_n; [14] rst_emac0_hard_core; [15] rst_emac1_hard_core; 16]
+   rst_pxp_rq_rd_wr; 31:17] reserved */
 #define MISC_REG_RESET_REG_2                                    0xa590
 /* [RW 20] 20 bit GRC address where the scratch-pad of the MCP that is
    shared with the driver resides */
    select VAUX supply. (This is an output pin only; it is not controlled by
    the SET and CLR fields; it is controlled by the Main Power SM; the FLOAT
    field is not applicable for this pin; only the VALUE fields is relevant -
-   it reflects the output value); [3] reserved; [4] spio_4; [5] spio_5; [6]
+   it reflects the output value); [3] port swap [4] spio_4; [5] spio_5; [6]
    Bit 0 of UMP device ID select; read by UMP firmware; [7] Bit 1 of UMP
    device ID select; read by UMP firmware. */
 #define MISC_REG_SPIO                                           0xa4fc
 #define NIG_REG_BRB1_PAUSE_IN_EN                                0x100c8
 /* [RW 1] output enable for RX BRB1 LP IF */
 #define NIG_REG_BRB_LB_OUT_EN                                   0x10100
-/* [WB_W 72] Debug packet to LP from RBC; Data spelling:[63:0] data; 64]
-   error; [67:65]eop_bvalid; [68]eop; [69]sop; [70]port_id; 71]flush */
+/* [WB_W 82] Debug packet to LP from RBC; Data spelling:[63:0] data; 64]
+   error; [67:65]eop_bvalid; [68]eop; [69]sop; [70]port_id; 71]flush;
+   72:73]-vnic_num; 81:74]-sideband_info */
 #define NIG_REG_DEBUG_PACKET_LB                                 0x10800
 /* [RW 1] Input enable for TX Debug packet */
 #define NIG_REG_EGRESS_DEBUG_IN_EN                              0x100dc
 /* [RW 1] MAC configuration for packets of port0. If 1 - all packet outputs
    to emac for port0; other way to bmac for port0 */
 #define NIG_REG_EGRESS_EMAC0_PORT                               0x10058
+/* [RW 32] TX_MNG_FIFO in NIG_TX_PORT0; data[31:0] written in FIFO order. */
+#define NIG_REG_EGRESS_MNG0_FIFO                                0x1045c
 /* [RW 1] Input enable for TX PBF user packet port0 IF */
 #define NIG_REG_EGRESS_PBF0_IN_EN                               0x100cc
 /* [RW 1] Input enable for TX PBF user packet port1 IF */
 #define NIG_REG_INGRESS_EOP_LB_FIFO                             0x104e4
 /* [RW 1] led 10g for port 0 */
 #define NIG_REG_LED_10G_P0                                      0x10320
+/* [RW 1] led 10g for port 1 */
+#define NIG_REG_LED_10G_P1                                      0x10324
 /* [RW 1] Port0: This bit is set to enable the use of the
    ~nig_registers_led_control_blink_rate_p0.led_control_blink_rate_p0 field
    defined below. If this bit is cleared; then the blink rate will be about
    is reset to 0x080; giving a default blink period of approximately 8Hz. */
 #define NIG_REG_LED_CONTROL_BLINK_RATE_P0                       0x10310
 /* [RW 1] Port0: If set along with the
  nig_registers_led_control_override_traffic_p0.led_control_override_traffic_p0
~nig_registers_led_control_override_traffic_p0.led_control_override_traffic_p0
    bit and ~nig_registers_led_control_traffic_p0.led_control_traffic_p0 LED
    bit; the Traffic LED will blink with the blink rate specified in
    ~nig_registers_led_control_blink_rate_p0.led_control_blink_rate_p0 and
 /* [RW 4] led mode for port0: 0 MAC; 1-3 PHY1; 4 MAC2; 5-7 PHY4; 8-MAC3;
    9-11PHY7; 12 MAC4; 13-15 PHY10; */
 #define NIG_REG_LED_MODE_P0                                     0x102f0
+#define NIG_REG_LLH0_ACPI_PAT_0_CRC                             0x1015c
+#define NIG_REG_LLH0_ACPI_PAT_6_LEN                             0x10154
 #define NIG_REG_LLH0_BRB1_DRV_MASK                              0x10244
+#define NIG_REG_LLH0_BRB1_DRV_MASK_MF                           0x16048
 /* [RW 1] send to BRB1 if no match on any of RMP rules. */
 #define NIG_REG_LLH0_BRB1_NOT_MCP                               0x1025c
+/* [RW 2] Determine the classification participants. 0: no classification.1:
+   classification upon VLAN id. 2: classification upon MAC address. 3:
+   classification upon both VLAN id & MAC addr. */
+#define NIG_REG_LLH0_CLS_TYPE                                   0x16080
 /* [RW 32] cm header for llh0 */
 #define NIG_REG_LLH0_CM_HEADER                                  0x1007c
+#define NIG_REG_LLH0_DEST_IP_0_1                                0x101dc
+#define NIG_REG_LLH0_DEST_MAC_0_0                               0x101c0
+/* [RW 16] destination TCP address 1. The LLH will look for this address in
+   all incoming packets. */
+#define NIG_REG_LLH0_DEST_TCP_0                                 0x10220
+/* [RW 16] destination UDP address 1 The LLH will look for this address in
+   all incoming packets. */
+#define NIG_REG_LLH0_DEST_UDP_0                                 0x10214
 #define NIG_REG_LLH0_ERROR_MASK                                 0x1008c
 /* [RW 8] event id for llh0 */
 #define NIG_REG_LLH0_EVENT_ID                                   0x10084
+#define NIG_REG_LLH0_FUNC_EN                                    0x160fc
+#define NIG_REG_LLH0_FUNC_VLAN_ID                               0x16100
+/* [RW 1] Determine the IP version to look for in
+   ~nig_registers_llh0_dest_ip_0.llh0_dest_ip_0. 0 - IPv6; 1-IPv4 */
+#define NIG_REG_LLH0_IPV4_IPV6_0                                0x10208
+/* [RW 1] t bit for llh0 */
+#define NIG_REG_LLH0_T_BIT                                      0x10074
+/* [RW 12] VLAN ID 1. In case of VLAN packet the LLH will look for this ID. */
+#define NIG_REG_LLH0_VLAN_ID_0                                  0x1022c
 /* [RW 8] init credit counter for port0 in LLH */
 #define NIG_REG_LLH0_XCM_INIT_CREDIT                            0x10554
 #define NIG_REG_LLH0_XCM_MASK                                   0x10130
+#define NIG_REG_LLH1_BRB1_DRV_MASK                              0x10248
 /* [RW 1] send to BRB1 if no match on any of RMP rules. */
 #define NIG_REG_LLH1_BRB1_NOT_MCP                               0x102dc
+/* [RW 2] Determine the classification participants. 0: no classification.1:
+   classification upon VLAN id. 2: classification upon MAC address. 3:
+   classification upon both VLAN id & MAC addr. */
+#define NIG_REG_LLH1_CLS_TYPE                                   0x16084
 /* [RW 32] cm header for llh1 */
 #define NIG_REG_LLH1_CM_HEADER                                  0x10080
 #define NIG_REG_LLH1_ERROR_MASK                                 0x10090
 /* [RW 8] init credit counter for port1 in LLH */
 #define NIG_REG_LLH1_XCM_INIT_CREDIT                            0x10564
 #define NIG_REG_LLH1_XCM_MASK                                   0x10134
+/* [RW 1] When this bit is set; the LLH will expect all packets to be with
+   e1hov */
+#define NIG_REG_LLH_E1HOV_MODE                                  0x160d8
+/* [RW 1] When this bit is set; the LLH will classify the packet before
+   sending it to the BRB or calculating WoL on it. */
+#define NIG_REG_LLH_MF_MODE                                     0x16024
 #define NIG_REG_MASK_INTERRUPT_PORT0                            0x10330
 #define NIG_REG_MASK_INTERRUPT_PORT1                            0x10334
 /* [RW 1] Output signal from NIG to EMAC0. When set enables the EMAC0 block. */
 #define NIG_REG_NIG_EMAC0_EN                                    0x1003c
+/* [RW 1] Output signal from NIG to EMAC1. When set enables the EMAC1 block. */
+#define NIG_REG_NIG_EMAC1_EN                                    0x10040
 /* [RW 1] Output signal from NIG to TX_EMAC0. When set indicates to the
    EMAC0 to strip the CRC from the ingress packets. */
 #define NIG_REG_NIG_INGRESS_EMAC0_NO_CRC                        0x10044
+/* [R 32] Interrupt register #0 read */
+#define NIG_REG_NIG_INT_STS_0                                   0x103b0
+#define NIG_REG_NIG_INT_STS_1                                   0x103c0
+/* [R 32] Parity register #0 read */
+#define NIG_REG_NIG_PRTY_STS                                    0x103d0
 /* [RW 1] Input enable for RX PBF LP IF */
 #define NIG_REG_PBF_LB_IN_EN                                    0x100b4
 /* [RW 1] Value of this register will be transmitted to port swap when
 /* [R 32] Rx statistics : In user packets discarded due to BRB backpressure
    for port0 */
 #define NIG_REG_STAT0_BRB_DISCARD                               0x105f0
+/* [R 32] Rx statistics : In user packets truncated due to BRB backpressure
+   for port0 */
+#define NIG_REG_STAT0_BRB_TRUNCATE                              0x105f8
+/* [WB_R 36] Tx statistics : Number of packets from emac0 or bmac0 that
+   between 1024 and 1522 bytes for port0 */
+#define NIG_REG_STAT0_EGRESS_MAC_PKT0                           0x10750
+/* [WB_R 36] Tx statistics : Number of packets from emac0 or bmac0 that
+   between 1523 bytes and above for port0 */
+#define NIG_REG_STAT0_EGRESS_MAC_PKT1                           0x10760
 /* [R 32] Rx statistics : In user packets discarded due to BRB backpressure
    for port1 */
 #define NIG_REG_STAT1_BRB_DISCARD                               0x10628
+/* [WB_R 36] Tx statistics : Number of packets from emac1 or bmac1 that
+   between 1024 and 1522 bytes for port1 */
+#define NIG_REG_STAT1_EGRESS_MAC_PKT0                           0x107a0
+/* [WB_R 36] Tx statistics : Number of packets from emac1 or bmac1 that
+   between 1523 bytes and above for port1 */
+#define NIG_REG_STAT1_EGRESS_MAC_PKT1                           0x107b0
 /* [WB_R 64] Rx statistics : User octets received for LP */
 #define NIG_REG_STAT2_BRB_OCTET                                 0x107e0
 #define NIG_REG_STATUS_INTERRUPT_PORT0                          0x10328
 #define NIG_REG_XCM0_OUT_EN                                     0x100f0
 /* [RW 1] output enable for RX_XCM1 IF */
 #define NIG_REG_XCM1_OUT_EN                                     0x100f4
+/* [RW 1] control to xgxs - remote PHY in-band MDIO */
+#define NIG_REG_XGXS0_CTRL_EXTREMOTEMDIOST                      0x10348
 /* [RW 5] control to xgxs - CL45 DEVAD */
 #define NIG_REG_XGXS0_CTRL_MD_DEVAD                             0x1033c
+/* [RW 1] control to xgxs; 0 - clause 45; 1 - clause 22 */
+#define NIG_REG_XGXS0_CTRL_MD_ST                                0x10338
 /* [RW 5] control to xgxs - CL22 PHY_ADD and CL45 PRTAD */
 #define NIG_REG_XGXS0_CTRL_PHY_ADDR                             0x10340
 /* [R 1] status from xgxs0 that inputs to interrupt logic of link10g. */
 #define PB_REG_PB_PRTY_MASK                                     0x38
 /* [R 4] Parity register #0 read */
 #define PB_REG_PB_PRTY_STS                                      0x2c
+#define PRS_A_PRSU_20_REG_HASH_TCP_IPV4_PORT_0                  (0x1<<0)
+#define PRS_A_PRSU_20_REG_HASH_TCP_IPV6_PORT_0                  (0x1<<2)
 #define PRS_REG_A_PRSU_20                                       0x40134
 /* [R 8] debug only: CFC load request current credit. Transaction based. */
 #define PRS_REG_CFC_LD_CURRENT_CREDIT                           0x40164
 #define PRS_REG_CFC_SEARCH_INITIAL_CREDIT                       0x4011c
 /* [RW 24] CID for port 0 if no match */
 #define PRS_REG_CID_PORT_0                                      0x400fc
-#define PRS_REG_CID_PORT_1                                      0x40100
 /* [RW 32] The CM header for flush message where 'load existed' bit in CFC
    load response is reset and packet type is 0. Used in packet start message
    to TCM. */
 #define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_2                        0x400e4
 #define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_3                        0x400e8
 #define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_4                        0x400ec
+#define PRS_REG_CM_HDR_FLUSH_LOAD_TYPE_5                        0x400f0
 /* [RW 32] The CM header for flush message where 'load existed' bit in CFC
    load response is set and packet type is 0. Used in packet start message
    to TCM. */
 #define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_2                     0x400c4
 #define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_3                     0x400c8
 #define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_4                     0x400cc
+#define PRS_REG_CM_HDR_FLUSH_NO_LOAD_TYPE_5                     0x400d0
 /* [RW 32] The CM header for a match and packet type 1 for loopback port.
    Used in packet start message to TCM. */
 #define PRS_REG_CM_HDR_LOOPBACK_TYPE_1                          0x4009c
 #define PRS_REG_CM_HDR_TYPE_4                                   0x40088
 /* [RW 32] The CM header in case there was not a match on the connection */
 #define PRS_REG_CM_NO_MATCH_HDR                                 0x400b8
+/* [RW 1] Indicates if in e1hov mode. 0=non-e1hov mode; 1=e1hov mode. */
+#define PRS_REG_E1HOV_MODE                                      0x401c8
 /* [RW 8] The 8-bit event ID for a match and packet type 1. Used in packet
    start message to TCM. */
 #define PRS_REG_EVENT_ID_1                                      0x40054
 #define PRS_REG_EVENT_ID_2                                      0x40058
 #define PRS_REG_EVENT_ID_3                                      0x4005c
+/* [RW 16] The Ethernet type value for FCoE */
+#define PRS_REG_FCOE_TYPE                                       0x401d0
 /* [RW 8] Context region for flush packet with packet type 0. Used in CFC
    load request message. */
 #define PRS_REG_FLUSH_REGIONS_TYPE_0                            0x40004
 #define PXP2_REG_HST_DATA_FIFO_STATUS                           0x12047c
 /* [R 7] Debug only: Number of used entries in the header FIFO */
 #define PXP2_REG_HST_HEADER_FIFO_STATUS                         0x120478
+#define PXP2_REG_PGL_ADDR_88_F0                                 0x120534
+#define PXP2_REG_PGL_ADDR_8C_F0                                 0x120538
+#define PXP2_REG_PGL_ADDR_90_F0                                 0x12053c
+#define PXP2_REG_PGL_ADDR_94_F0                                 0x120540
 #define PXP2_REG_PGL_CONTROL0                                   0x120490
 #define PXP2_REG_PGL_CONTROL1                                   0x120514
+/* [RW 32] third dword data of expansion rom request. this register is
+   special. reading from it provides a vector outstanding read requests. if
+   a bit is zero it means that a read request on the corresponding tag did
+   not finish yet (not all completions have arrived for it) */
+#define PXP2_REG_PGL_EXP_ROM2                                   0x120808
 /* [RW 32] Inbound interrupt table for CSDM: bits[31:16]-mask;
    its[15:0]-address */
 #define PXP2_REG_PGL_INT_CSDM_0                                 0x1204f4
 /* [R 1] this bit indicates that a read request was blocked because of
    bus_master_en was deasserted */
 #define PXP2_REG_PGL_READ_BLOCKED                               0x120568
-/* [R 6] debug only */
-#define PXP2_REG_PGL_TXR_CDTS                                   0x120528
+#define PXP2_REG_PGL_TAGS_LIMIT                                 0x1205a8
 /* [R 18] debug only */
 #define PXP2_REG_PGL_TXW_CDTS                                   0x12052c
 /* [R 1] this bit indicates that a write request was blocked because of
 #define PXP2_REG_PSWRQ_QM0_L2P                                  0x120038
 #define PXP2_REG_PSWRQ_SRC0_L2P                                 0x120054
 #define PXP2_REG_PSWRQ_TM0_L2P                                  0x12001c
-/* [RW 25] Interrupt mask register #0 read/write */
-#define PXP2_REG_PXP2_INT_MASK                                  0x120578
-/* [R 25] Interrupt register #0 read */
-#define PXP2_REG_PXP2_INT_STS                                   0x12056c
-/* [RC 25] Interrupt register #0 read clear */
-#define PXP2_REG_PXP2_INT_STS_CLR                               0x120570
+#define PXP2_REG_PSWRQ_TSDM0_L2P                                0x1200e0
+/* [RW 32] Interrupt mask register #0 read/write */
+#define PXP2_REG_PXP2_INT_MASK_0                                0x120578
+/* [R 32] Interrupt register #0 read */
+#define PXP2_REG_PXP2_INT_STS_0                                 0x12056c
+#define PXP2_REG_PXP2_INT_STS_1                                 0x120608
+/* [RC 32] Interrupt register #0 read clear */
+#define PXP2_REG_PXP2_INT_STS_CLR_0                             0x120570
 /* [RW 32] Parity mask register #0 read/write */
 #define PXP2_REG_PXP2_PRTY_MASK_0                               0x120588
 #define PXP2_REG_PXP2_PRTY_MASK_1                               0x120598
 #define PXP2_REG_RQ_BW_WR_UBOUND29                              0x1202a4
 /* [RW 7] Bandwidth upper bound for VQ30 */
 #define PXP2_REG_RQ_BW_WR_UBOUND30                              0x1202a8
+/* [RW 18] external first_mem_addr field in L2P table for CDU module port 0 */
+#define PXP2_REG_RQ_CDU0_EFIRST_MEM_ADDR                        0x120008
 /* [RW 2] Endian mode for cdu */
 #define PXP2_REG_RQ_CDU_ENDIAN_M                                0x1201a0
+#define PXP2_REG_RQ_CDU_FIRST_ILT                               0x12061c
+#define PXP2_REG_RQ_CDU_LAST_ILT                                0x120620
 /* [RW 3] page size in L2P table for CDU module; -4k; -8k; -16k; -32k; -64k;
    -128k */
 #define PXP2_REG_RQ_CDU_P_SIZE                                  0x120018
 /* [RW 1] When '1'; requests will enter input buffers but wont get out
    towards the glue */
 #define PXP2_REG_RQ_DISABLE_INPUTS                              0x120330
-/* [RW 2] Endian mode for hc */
-#define PXP2_REG_RQ_HC_ENDIAN_M                                 0x1201a8
+/* [RW 1] 1 - SR will be aligned by 64B; 0 - SR will be aligned by 8B */
+#define PXP2_REG_RQ_DRAM_ALIGN                                  0x1205b0
+/* [RW 1] If 1 ILT failiue will not result in ELT access; An interrupt will
+   be asserted */
+#define PXP2_REG_RQ_ELT_DISABLE                                 0x12066c
+/* [RW 1] when '0' ILT logic will work as in A0; otherwise B0; for back
+   compatibility needs; Note that different registers are used per mode */
+#define PXP2_REG_RQ_ILT_MODE                                    0x1205b4
 /* [WB 53] Onchip address table */
 #define PXP2_REG_RQ_ONCHIP_AT                                   0x122000
+/* [WB 53] Onchip address table - B0 */
+#define PXP2_REG_RQ_ONCHIP_AT_B0                                0x128000
 /* [RW 13] Pending read limiter threshold; in Dwords */
 #define PXP2_REG_RQ_PDR_LIMIT                                   0x12033c
 /* [RW 2] Endian mode for qm */
 #define PXP2_REG_RQ_QM_ENDIAN_M                                 0x120194
+#define PXP2_REG_RQ_QM_FIRST_ILT                                0x120634
+#define PXP2_REG_RQ_QM_LAST_ILT                                 0x120638
 /* [RW 3] page size in L2P table for QM module; -4k; -8k; -16k; -32k; -64k;
    -128k */
 #define PXP2_REG_RQ_QM_P_SIZE                                   0x120050
-/* [RW 1] 1' indicates that the RBC has finished configurating the PSWRQ */
+/* [RW 1] 1' indicates that the RBC has finished configuring the PSWRQ */
 #define PXP2_REG_RQ_RBC_DONE                                    0x1201b0
 /* [RW 3] Max burst size filed for read requests port 0; 000 - 128B;
    001:256B; 010: 512B; 11:1K:100:2K; 01:4K */
 #define PXP2_REG_RQ_RD_MBS1                                     0x120168
 /* [RW 2] Endian mode for src */
 #define PXP2_REG_RQ_SRC_ENDIAN_M                                0x12019c
+#define PXP2_REG_RQ_SRC_FIRST_ILT                               0x12063c
+#define PXP2_REG_RQ_SRC_LAST_ILT                                0x120640
 /* [RW 3] page size in L2P table for SRC module; -4k; -8k; -16k; -32k; -64k;
    -128k */
 #define PXP2_REG_RQ_SRC_P_SIZE                                  0x12006c
 /* [RW 2] Endian mode for tm */
 #define PXP2_REG_RQ_TM_ENDIAN_M                                 0x120198
+#define PXP2_REG_RQ_TM_FIRST_ILT                                0x120644
+#define PXP2_REG_RQ_TM_LAST_ILT                                 0x120648
 /* [RW 3] page size in L2P table for TM module; -4k; -8k; -16k; -32k; -64k;
    -128k */
 #define PXP2_REG_RQ_TM_P_SIZE                                   0x120034
 /* [R 5] Number of entries in the ufifo; his fifo has l2p completions */
 #define PXP2_REG_RQ_UFIFO_NUM_OF_ENTRY                          0x12080c
+/* [RW 18] external first_mem_addr field in L2P table for USDM module port 0 */
+#define PXP2_REG_RQ_USDM0_EFIRST_MEM_ADDR                       0x120094
 /* [R 8] Number of entries occupied by vq 0 in pswrq memory */
 #define PXP2_REG_RQ_VQ0_ENTRY_CNT                               0x120810
 /* [R 8] Number of entries occupied by vq 10 in pswrq memory */
 /* [RW 3] Max burst size filed for write requests port 1; 000 - 128B;
    001:256B; 010: 512B; */
 #define PXP2_REG_RQ_WR_MBS1                                     0x120164
-/* [RW 10] if Number of entries in dmae fifo will be higer than this
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_CDU_MPS                                     0x1205f0
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_CSDM_MPS                                    0x1205d0
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_DBG_MPS                                     0x1205e8
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_DMAE_MPS                                    0x1205ec
+/* [RW 10] if Number of entries in dmae fifo will be higher than this
    threshold then has_payload indication will be asserted; the default value
    should be equal to &gt;  write MBS size! */
 #define PXP2_REG_WR_DMAE_TH                                     0x120368
-/* [RW 10] if Number of entries in usdmdp fifo will be higer than this
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_HC_MPS                                      0x1205c8
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_QM_MPS                                      0x1205dc
+/* [RW 1] 0 - working in A0 mode;  - working in B0 mode */
+#define PXP2_REG_WR_REV_MODE                                    0x120670
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_SRC_MPS                                     0x1205e4
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_TM_MPS                                      0x1205e0
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_TSDM_MPS                                    0x1205d4
+/* [RW 10] if Number of entries in usdmdp fifo will be higher than this
    threshold then has_payload indication will be asserted; the default value
    should be equal to &gt;  write MBS size! */
 #define PXP2_REG_WR_USDMDP_TH                                   0x120348
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_USDM_MPS                                    0x1205cc
+/* [RW 2] 0 - 128B;  - 256B;  - 512B;  - 1024B; when the payload in the
+   buffer reaches this number has_payload will be asserted */
+#define PXP2_REG_WR_XSDM_MPS                                    0x1205d8
 /* [R 1] debug only: Indication if PSWHST arbiter is idle */
 #define PXP_REG_HST_ARB_IS_IDLE                                 0x103004
 /* [R 8] debug only: A bit mask for all PSWHST arbiter clients. '1' means
    this client is waiting for the arbiter. */
 #define PXP_REG_HST_CLIENTS_WAITING_TO_ARB                      0x103008
+/* [R 1] debug only: '1' means this PSWHST is discarding doorbells. This bit
+   should update accoring to 'hst_discard_doorbells' register when the state
+   machine is idle */
+#define PXP_REG_HST_DISCARD_DOORBELLS_STATUS                    0x1030a0
+/* [R 6] debug only: A bit mask for all PSWHST internal write clients. '1'
+   means this PSWHST is discarding inputs from this client. Each bit should
+   update accoring to 'hst_discard_internal_writes' register when the state
+   machine is idle. */
+#define PXP_REG_HST_DISCARD_INTERNAL_WRITES_STATUS              0x10309c
 /* [WB 160] Used for initialization of the inbound interrupts memory */
 #define PXP_REG_HST_INBOUND_INT                                 0x103800
 /* [RW 32] Interrupt mask register #0 read/write */
 #define QM_REG_ACTCTRINITVAL_3                                  0x16804c
 /* [RW 32] The base logical address (in bytes) of each physical queue. The
    index I represents the physical queue number. The 12 lsbs are ignore and
-   considered zero so practically there are only 20 bits in this register. */
+   considered zero so practically there are only 20 bits in this register;
+   queues 63-0 */
 #define QM_REG_BASEADDR                                         0x168900
 /* [RW 16] The byte credit cost for each task. This value is for both ports */
 #define QM_REG_BYTECRDCOST                                      0x168234
 /* [RW 16] The initial byte credit value for both ports. */
 #define QM_REG_BYTECRDINITVAL                                   0x168238
 /* [RW 32] A bit per physical queue. If the bit is cleared then the physical
-   queue uses port 0 else it uses port 1. */
+   queue uses port 0 else it uses port 1; queues 31-0 */
 #define QM_REG_BYTECRDPORT_LSB                                  0x168228
 /* [RW 32] A bit per physical queue. If the bit is cleared then the physical
-   queue uses port 0 else it uses port 1. */
+   queue uses port 0 else it uses port 1; queues 95-64 */
+#define QM_REG_BYTECRDPORT_LSB_EXT_A                            0x16e520
+/* [RW 32] A bit per physical queue. If the bit is cleared then the physical
+   queue uses port 0 else it uses port 1; queues 63-32 */
 #define QM_REG_BYTECRDPORT_MSB                                  0x168224
+/* [RW 32] A bit per physical queue. If the bit is cleared then the physical
+   queue uses port 0 else it uses port 1; queues 127-96 */
+#define QM_REG_BYTECRDPORT_MSB_EXT_A                            0x16e51c
 /* [RW 16] The byte credit value that if above the QM is considered almost
    full */
 #define QM_REG_BYTECREDITAFULLTHR                               0x168094
 #define QM_REG_CMINTVOQMASK_6                                   0x16820c
 #define QM_REG_CMINTVOQMASK_7                                   0x168210
 /* [RW 20] The number of connections divided by 16 which dictates the size
-   of each queue per port 0 */
+   of each queue which belongs to even function number. */
 #define QM_REG_CONNNUM_0                                        0x168020
 /* [R 6] Keep the fill level of the fifo from write client 4 */
 #define QM_REG_CQM_WRC_FIFOLVL                                  0x168018
    bypass enable */
 #define QM_REG_ENBYPVOQMASK                                     0x16823c
 /* [RW 32] A bit mask per each physical queue. If a bit is set then the
-   physical queue uses the byte credit */
+   physical queue uses the byte credit; queues 31-0 */
 #define QM_REG_ENBYTECRD_LSB                                    0x168220
 /* [RW 32] A bit mask per each physical queue. If a bit is set then the
-   physical queue uses the byte credit */
+   physical queue uses the byte credit; queues 95-64 */
+#define QM_REG_ENBYTECRD_LSB_EXT_A                              0x16e518
+/* [RW 32] A bit mask per each physical queue. If a bit is set then the
+   physical queue uses the byte credit; queues 63-32 */
 #define QM_REG_ENBYTECRD_MSB                                    0x16821c
+/* [RW 32] A bit mask per each physical queue. If a bit is set then the
+   physical queue uses the byte credit; queues 127-96 */
+#define QM_REG_ENBYTECRD_MSB_EXT_A                              0x16e514
 /* [RW 4] If cleared then the secondary interface will not be served by the
    RR arbiter */
 #define QM_REG_ENSEC                                            0x1680f0
-/* [RW 32] A bit vector per each physical queue which selects which function
-   number to use on PCI access for that queue. */
+/* [RW 32] NA */
 #define QM_REG_FUNCNUMSEL_LSB                                   0x168230
-/* [RW 32] A bit vector per each physical queue which selects which function
-   number to use on PCI access for that queue. */
+/* [RW 32] NA */
 #define QM_REG_FUNCNUMSEL_MSB                                   0x16822c
 /* [RW 32] A mask register to mask the Almost empty signals which will not
-   be use for the almost empty indication to the HW block */
+   be use for the almost empty indication to the HW block; queues 31:0 */
 #define QM_REG_HWAEMPTYMASK_LSB                                 0x168218
 /* [RW 32] A mask register to mask the Almost empty signals which will not
-   be use for the almost empty indication to the HW block */
+   be use for the almost empty indication to the HW block; queues 95-64 */
+#define QM_REG_HWAEMPTYMASK_LSB_EXT_A                           0x16e510
+/* [RW 32] A mask register to mask the Almost empty signals which will not
+   be use for the almost empty indication to the HW block; queues 63:32 */
 #define QM_REG_HWAEMPTYMASK_MSB                                 0x168214
+/* [RW 32] A mask register to mask the Almost empty signals which will not
+   be use for the almost empty indication to the HW block; queues 127-96 */
+#define QM_REG_HWAEMPTYMASK_MSB_EXT_A                           0x16e50c
 /* [RW 4] The number of outstanding request to CFC */
 #define QM_REG_OUTLDREQ                                         0x168804
 /* [RC 1] A flag to indicate that overflow error occurred in one of the
    queues. */
 #define QM_REG_OVFERROR                                         0x16805c
-/* [RC 6] the Q were the qverflow occurs */
+/* [RC 7] the Q were the qverflow occurs */
 #define QM_REG_OVFQNUM                                          0x168058
-/* [R 32] Pause state for physical queues 31-0 */
+/* [R 16] Pause state for physical queues 15-0 */
 #define QM_REG_PAUSESTATE0                                      0x168410
-/* [R 32] Pause state for physical queues 64-32 */
+/* [R 16] Pause state for physical queues 31-16 */
 #define QM_REG_PAUSESTATE1                                      0x168414
+/* [R 16] Pause state for physical queues 47-32 */
+#define QM_REG_PAUSESTATE2                                      0x16e684
+/* [R 16] Pause state for physical queues 63-48 */
+#define QM_REG_PAUSESTATE3                                      0x16e688
+/* [R 16] Pause state for physical queues 79-64 */
+#define QM_REG_PAUSESTATE4                                      0x16e68c
+/* [R 16] Pause state for physical queues 95-80 */
+#define QM_REG_PAUSESTATE5                                      0x16e690
+/* [R 16] Pause state for physical queues 111-96 */
+#define QM_REG_PAUSESTATE6                                      0x16e694
+/* [R 16] Pause state for physical queues 127-112 */
+#define QM_REG_PAUSESTATE7                                      0x16e698
 /* [RW 2] The PCI attributes field used in the PCI request. */
 #define QM_REG_PCIREQAT                                         0x168054
 /* [R 16] The byte credit of port 0 */
 #define QM_REG_PORT0BYTECRD                                     0x168300
 /* [R 16] The byte credit of port 1 */
 #define QM_REG_PORT1BYTECRD                                     0x168304
-/* [WB 54] Pointer Table Memory; The mapping is as follow: ptrtbl[53:30]
-   read pointer; ptrtbl[29:6] write pointer; ptrtbl[5:4] read bank0;
-   ptrtbl[3:2] read bank 1; ptrtbl[1:0] write bank; */
+/* [RW 3] pci function number of queues 15-0 */
+#define QM_REG_PQ2PCIFUNC_0                                     0x16e6bc
+#define QM_REG_PQ2PCIFUNC_1                                     0x16e6c0
+#define QM_REG_PQ2PCIFUNC_2                                     0x16e6c4
+#define QM_REG_PQ2PCIFUNC_3                                     0x16e6c8
+#define QM_REG_PQ2PCIFUNC_4                                     0x16e6cc
+#define QM_REG_PQ2PCIFUNC_5                                     0x16e6d0
+#define QM_REG_PQ2PCIFUNC_6                                     0x16e6d4
+#define QM_REG_PQ2PCIFUNC_7                                     0x16e6d8
+/* [WB 54] Pointer Table Memory for queues 63-0; The mapping is as follow:
+   ptrtbl[53:30] read pointer; ptrtbl[29:6] write pointer; ptrtbl[5:4] read
+   bank0; ptrtbl[3:2] read bank 1; ptrtbl[1:0] write bank; */
 #define QM_REG_PTRTBL                                           0x168a00
+/* [WB 54] Pointer Table Memory for queues 127-64; The mapping is as follow:
+   ptrtbl[53:30] read pointer; ptrtbl[29:6] write pointer; ptrtbl[5:4] read
+   bank0; ptrtbl[3:2] read bank 1; ptrtbl[1:0] write bank; */
+#define QM_REG_PTRTBL_EXT_A                                     0x16e200
 /* [RW 2] Interrupt mask register #0 read/write */
 #define QM_REG_QM_INT_MASK                                      0x168444
 /* [R 2] Interrupt register #0 read */
 #define QM_REG_QM_INT_STS                                       0x168438
-/* [RW 9] Parity mask register #0 read/write */
+/* [RW 12] Parity mask register #0 read/write */
 #define QM_REG_QM_PRTY_MASK                                     0x168454
-/* [R 9] Parity register #0 read */
+/* [R 12] Parity register #0 read */
 #define QM_REG_QM_PRTY_STS                                      0x168448
 /* [R 32] Current queues in pipeline: Queues from 32 to 63 */
 #define QM_REG_QSTATUS_HIGH                                     0x16802c
+/* [R 32] Current queues in pipeline: Queues from 96 to 127 */
+#define QM_REG_QSTATUS_HIGH_EXT_A                               0x16e408
 /* [R 32] Current queues in pipeline: Queues from 0 to 31 */
 #define QM_REG_QSTATUS_LOW                                      0x168028
-/* [R 24] The number of tasks queued for each queue */
+/* [R 32] Current queues in pipeline: Queues from 64 to 95 */
+#define QM_REG_QSTATUS_LOW_EXT_A                                0x16e404
+/* [R 24] The number of tasks queued for each queue; queues 63-0 */
 #define QM_REG_QTASKCTR_0                                       0x168308
+/* [R 24] The number of tasks queued for each queue; queues 127-64 */
+#define QM_REG_QTASKCTR_EXT_A_0                                 0x16e584
 /* [RW 4] Queue tied to VOQ */
 #define QM_REG_QVOQIDX_0                                        0x1680f4
 #define QM_REG_QVOQIDX_10                                       0x16811c
+#define QM_REG_QVOQIDX_100                                      0x16e49c
+#define QM_REG_QVOQIDX_101                                      0x16e4a0
+#define QM_REG_QVOQIDX_102                                      0x16e4a4
+#define QM_REG_QVOQIDX_103                                      0x16e4a8
+#define QM_REG_QVOQIDX_104                                      0x16e4ac
+#define QM_REG_QVOQIDX_105                                      0x16e4b0
+#define QM_REG_QVOQIDX_106                                      0x16e4b4
+#define QM_REG_QVOQIDX_107                                      0x16e4b8
+#define QM_REG_QVOQIDX_108                                      0x16e4bc
+#define QM_REG_QVOQIDX_109                                      0x16e4c0
+#define QM_REG_QVOQIDX_100                                      0x16e49c
+#define QM_REG_QVOQIDX_101                                      0x16e4a0
+#define QM_REG_QVOQIDX_102                                      0x16e4a4
+#define QM_REG_QVOQIDX_103                                      0x16e4a8
+#define QM_REG_QVOQIDX_104                                      0x16e4ac
+#define QM_REG_QVOQIDX_105                                      0x16e4b0
+#define QM_REG_QVOQIDX_106                                      0x16e4b4
+#define QM_REG_QVOQIDX_107                                      0x16e4b8
+#define QM_REG_QVOQIDX_108                                      0x16e4bc
+#define QM_REG_QVOQIDX_109                                      0x16e4c0
 #define QM_REG_QVOQIDX_11                                       0x168120
+#define QM_REG_QVOQIDX_110                                      0x16e4c4
+#define QM_REG_QVOQIDX_111                                      0x16e4c8
+#define QM_REG_QVOQIDX_112                                      0x16e4cc
+#define QM_REG_QVOQIDX_113                                      0x16e4d0
+#define QM_REG_QVOQIDX_114                                      0x16e4d4
+#define QM_REG_QVOQIDX_115                                      0x16e4d8
+#define QM_REG_QVOQIDX_116                                      0x16e4dc
+#define QM_REG_QVOQIDX_117                                      0x16e4e0
+#define QM_REG_QVOQIDX_118                                      0x16e4e4
+#define QM_REG_QVOQIDX_119                                      0x16e4e8
+#define QM_REG_QVOQIDX_110                                      0x16e4c4
+#define QM_REG_QVOQIDX_111                                      0x16e4c8
+#define QM_REG_QVOQIDX_112                                      0x16e4cc
+#define QM_REG_QVOQIDX_113                                      0x16e4d0
+#define QM_REG_QVOQIDX_114                                      0x16e4d4
+#define QM_REG_QVOQIDX_115                                      0x16e4d8
+#define QM_REG_QVOQIDX_116                                      0x16e4dc
+#define QM_REG_QVOQIDX_117                                      0x16e4e0
+#define QM_REG_QVOQIDX_118                                      0x16e4e4
+#define QM_REG_QVOQIDX_119                                      0x16e4e8
 #define QM_REG_QVOQIDX_12                                       0x168124
+#define QM_REG_QVOQIDX_120                                      0x16e4ec
+#define QM_REG_QVOQIDX_121                                      0x16e4f0
+#define QM_REG_QVOQIDX_122                                      0x16e4f4
+#define QM_REG_QVOQIDX_123                                      0x16e4f8
+#define QM_REG_QVOQIDX_124                                      0x16e4fc
+#define QM_REG_QVOQIDX_125                                      0x16e500
+#define QM_REG_QVOQIDX_126                                      0x16e504
+#define QM_REG_QVOQIDX_127                                      0x16e508
+#define QM_REG_QVOQIDX_120                                      0x16e4ec
+#define QM_REG_QVOQIDX_121                                      0x16e4f0
+#define QM_REG_QVOQIDX_122                                      0x16e4f4
+#define QM_REG_QVOQIDX_123                                      0x16e4f8
+#define QM_REG_QVOQIDX_124                                      0x16e4fc
+#define QM_REG_QVOQIDX_125                                      0x16e500
+#define QM_REG_QVOQIDX_126                                      0x16e504
+#define QM_REG_QVOQIDX_127                                      0x16e508
 #define QM_REG_QVOQIDX_13                                       0x168128
 #define QM_REG_QVOQIDX_14                                       0x16812c
 #define QM_REG_QVOQIDX_15                                       0x168130
 #define QM_REG_QVOQIDX_16                                       0x168134
 #define QM_REG_QVOQIDX_17                                       0x168138
 #define QM_REG_QVOQIDX_21                                       0x168148
+#define QM_REG_QVOQIDX_22                                       0x16814c
+#define QM_REG_QVOQIDX_23                                       0x168150
+#define QM_REG_QVOQIDX_24                                       0x168154
 #define QM_REG_QVOQIDX_25                                       0x168158
+#define QM_REG_QVOQIDX_26                                       0x16815c
+#define QM_REG_QVOQIDX_27                                       0x168160
+#define QM_REG_QVOQIDX_28                                       0x168164
 #define QM_REG_QVOQIDX_29                                       0x168168
+#define QM_REG_QVOQIDX_30                                       0x16816c
+#define QM_REG_QVOQIDX_31                                       0x168170
 #define QM_REG_QVOQIDX_32                                       0x168174
 #define QM_REG_QVOQIDX_33                                       0x168178
 #define QM_REG_QVOQIDX_34                                       0x16817c
 #define QM_REG_QVOQIDX_61                                       0x1681e8
 #define QM_REG_QVOQIDX_62                                       0x1681ec
 #define QM_REG_QVOQIDX_63                                       0x1681f0
+#define QM_REG_QVOQIDX_64                                       0x16e40c
+#define QM_REG_QVOQIDX_65                                       0x16e410
+#define QM_REG_QVOQIDX_66                                       0x16e414
+#define QM_REG_QVOQIDX_67                                       0x16e418
+#define QM_REG_QVOQIDX_68                                       0x16e41c
+#define QM_REG_QVOQIDX_69                                       0x16e420
 #define QM_REG_QVOQIDX_60                                       0x1681e4
 #define QM_REG_QVOQIDX_61                                       0x1681e8
 #define QM_REG_QVOQIDX_62                                       0x1681ec
 #define QM_REG_QVOQIDX_63                                       0x1681f0
+#define QM_REG_QVOQIDX_64                                       0x16e40c
+#define QM_REG_QVOQIDX_65                                       0x16e410
+#define QM_REG_QVOQIDX_69                                       0x16e420
 #define QM_REG_QVOQIDX_7                                        0x168110
+#define QM_REG_QVOQIDX_70                                       0x16e424
+#define QM_REG_QVOQIDX_71                                       0x16e428
+#define QM_REG_QVOQIDX_72                                       0x16e42c
+#define QM_REG_QVOQIDX_73                                       0x16e430
+#define QM_REG_QVOQIDX_74                                       0x16e434
+#define QM_REG_QVOQIDX_75                                       0x16e438
+#define QM_REG_QVOQIDX_76                                       0x16e43c
+#define QM_REG_QVOQIDX_77                                       0x16e440
+#define QM_REG_QVOQIDX_78                                       0x16e444
+#define QM_REG_QVOQIDX_79                                       0x16e448
+#define QM_REG_QVOQIDX_70                                       0x16e424
+#define QM_REG_QVOQIDX_71                                       0x16e428
+#define QM_REG_QVOQIDX_72                                       0x16e42c
+#define QM_REG_QVOQIDX_73                                       0x16e430
+#define QM_REG_QVOQIDX_74                                       0x16e434
+#define QM_REG_QVOQIDX_75                                       0x16e438
+#define QM_REG_QVOQIDX_76                                       0x16e43c
+#define QM_REG_QVOQIDX_77                                       0x16e440
+#define QM_REG_QVOQIDX_78                                       0x16e444
+#define QM_REG_QVOQIDX_79                                       0x16e448
 #define QM_REG_QVOQIDX_8                                        0x168114
+#define QM_REG_QVOQIDX_80                                       0x16e44c
+#define QM_REG_QVOQIDX_81                                       0x16e450
+#define QM_REG_QVOQIDX_82                                       0x16e454
+#define QM_REG_QVOQIDX_83                                       0x16e458
+#define QM_REG_QVOQIDX_84                                       0x16e45c
+#define QM_REG_QVOQIDX_85                                       0x16e460
+#define QM_REG_QVOQIDX_86                                       0x16e464
+#define QM_REG_QVOQIDX_87                                       0x16e468
+#define QM_REG_QVOQIDX_88                                       0x16e46c
+#define QM_REG_QVOQIDX_89                                       0x16e470
+#define QM_REG_QVOQIDX_80                                       0x16e44c
+#define QM_REG_QVOQIDX_81                                       0x16e450
+#define QM_REG_QVOQIDX_85                                       0x16e460
+#define QM_REG_QVOQIDX_86                                       0x16e464
+#define QM_REG_QVOQIDX_87                                       0x16e468
+#define QM_REG_QVOQIDX_88                                       0x16e46c
+#define QM_REG_QVOQIDX_89                                       0x16e470
 #define QM_REG_QVOQIDX_9                                        0x168118
-/* [R 24] Remaining pause timeout for port 0 */
-#define QM_REG_REMAINPAUSETM0                                   0x168418
-/* [R 24] Remaining pause timeout for port 1 */
-#define QM_REG_REMAINPAUSETM1                                   0x16841c
+#define QM_REG_QVOQIDX_90                                       0x16e474
+#define QM_REG_QVOQIDX_91                                       0x16e478
+#define QM_REG_QVOQIDX_92                                       0x16e47c
+#define QM_REG_QVOQIDX_93                                       0x16e480
+#define QM_REG_QVOQIDX_94                                       0x16e484
+#define QM_REG_QVOQIDX_95                                       0x16e488
+#define QM_REG_QVOQIDX_96                                       0x16e48c
+#define QM_REG_QVOQIDX_97                                       0x16e490
+#define QM_REG_QVOQIDX_98                                       0x16e494
+#define QM_REG_QVOQIDX_99                                       0x16e498
+#define QM_REG_QVOQIDX_90                                       0x16e474
+#define QM_REG_QVOQIDX_91                                       0x16e478
+#define QM_REG_QVOQIDX_92                                       0x16e47c
+#define QM_REG_QVOQIDX_93                                       0x16e480
+#define QM_REG_QVOQIDX_94                                       0x16e484
+#define QM_REG_QVOQIDX_95                                       0x16e488
+#define QM_REG_QVOQIDX_96                                       0x16e48c
+#define QM_REG_QVOQIDX_97                                       0x16e490
+#define QM_REG_QVOQIDX_98                                       0x16e494
+#define QM_REG_QVOQIDX_99                                       0x16e498
 /* [RW 1] Initialization bit command */
 #define QM_REG_SOFT_RESET                                       0x168428
 /* [RW 8] The credit cost per every task in the QM. A value per each VOQ */
 #define QM_REG_VOQINITCREDIT_4                                  0x168070
 #define QM_REG_VOQINITCREDIT_5                                  0x168074
 /* [RW 1] The port of which VOQ belongs */
+#define QM_REG_VOQPORT_0                                        0x1682a0
 #define QM_REG_VOQPORT_1                                        0x1682a4
 #define QM_REG_VOQPORT_10                                       0x1682c8
 #define QM_REG_VOQPORT_11                                       0x1682cc
 #define QM_REG_VOQPORT_2                                        0x1682a8
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_0_LSB                                   0x168240
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_0_LSB_EXT_A                             0x16e524
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_0_MSB                                   0x168244
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_0_MSB_EXT_A                             0x16e528
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
+#define QM_REG_VOQQMASK_10_LSB                                  0x168290
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_10_LSB_EXT_A                            0x16e574
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
+#define QM_REG_VOQQMASK_10_MSB                                  0x168294
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_10_MSB_EXT_A                            0x16e578
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
+#define QM_REG_VOQQMASK_11_LSB                                  0x168298
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_11_LSB_EXT_A                            0x16e57c
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
+#define QM_REG_VOQQMASK_11_MSB                                  0x16829c
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_11_MSB_EXT_A                            0x16e580
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
+#define QM_REG_VOQQMASK_1_LSB                                   0x168248
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_1_LSB_EXT_A                             0x16e52c
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_1_MSB                                   0x16824c
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_1_MSB_EXT_A                             0x16e530
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_2_LSB                                   0x168250
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_2_LSB_EXT_A                             0x16e534
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_2_MSB                                   0x168254
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_2_MSB_EXT_A                             0x16e538
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_3_LSB                                   0x168258
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_3_LSB_EXT_A                             0x16e53c
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_3_MSB_EXT_A                             0x16e540
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_4_LSB                                   0x168260
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_4_LSB_EXT_A                             0x16e544
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_4_MSB                                   0x168264
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_4_MSB_EXT_A                             0x16e548
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_5_LSB                                   0x168268
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_5_LSB_EXT_A                             0x16e54c
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_5_MSB                                   0x16826c
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_5_MSB_EXT_A                             0x16e550
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_6_LSB                                   0x168270
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_6_LSB_EXT_A                             0x16e554
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_6_MSB                                   0x168274
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_6_MSB_EXT_A                             0x16e558
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_7_LSB                                   0x168278
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_7_LSB_EXT_A                             0x16e55c
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_7_MSB                                   0x16827c
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_7_MSB_EXT_A                             0x16e560
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_8_LSB                                   0x168280
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_8_LSB_EXT_A                             0x16e564
+/* [RW 32] The physical queue number associated with each VOQ; queues 63-32 */
 #define QM_REG_VOQQMASK_8_MSB                                   0x168284
-/* [RW 32] The physical queue number associated with each VOQ */
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_8_MSB_EXT_A                             0x16e568
+/* [RW 32] The physical queue number associated with each VOQ; queues 31-0 */
 #define QM_REG_VOQQMASK_9_LSB                                   0x168288
+/* [RW 32] The physical queue number associated with each VOQ; queues 95-64 */
+#define QM_REG_VOQQMASK_9_LSB_EXT_A                             0x16e56c
+/* [RW 32] The physical queue number associated with each VOQ; queues 127-96 */
+#define QM_REG_VOQQMASK_9_MSB_EXT_A                             0x16e570
 /* [RW 32] Wrr weights */
 #define QM_REG_WRRWEIGHTS_0                                     0x16880c
 #define QM_REG_WRRWEIGHTS_1                                     0x168810
 #define QM_REG_WRRWEIGHTS_15                                    0x168828
 #define QM_REG_WRRWEIGHTS_15_SIZE                               1
 /* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_16                                    0x16e000
+#define QM_REG_WRRWEIGHTS_16_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_17                                    0x16e004
+#define QM_REG_WRRWEIGHTS_17_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_18                                    0x16e008
+#define QM_REG_WRRWEIGHTS_18_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_19                                    0x16e00c
+#define QM_REG_WRRWEIGHTS_19_SIZE                               1
+/* [RW 32] Wrr weights */
 #define QM_REG_WRRWEIGHTS_10                                    0x168814
 #define QM_REG_WRRWEIGHTS_11                                    0x168818
 #define QM_REG_WRRWEIGHTS_12                                    0x16881c
 #define QM_REG_WRRWEIGHTS_13                                    0x168820
 #define QM_REG_WRRWEIGHTS_14                                    0x168824
 #define QM_REG_WRRWEIGHTS_15                                    0x168828
+#define QM_REG_WRRWEIGHTS_16                                    0x16e000
+#define QM_REG_WRRWEIGHTS_17                                    0x16e004
+#define QM_REG_WRRWEIGHTS_18                                    0x16e008
+#define QM_REG_WRRWEIGHTS_19                                    0x16e00c
 #define QM_REG_WRRWEIGHTS_2                                     0x16882c
+#define QM_REG_WRRWEIGHTS_20                                    0x16e010
+#define QM_REG_WRRWEIGHTS_20_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_21                                    0x16e014
+#define QM_REG_WRRWEIGHTS_21_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_22                                    0x16e018
+#define QM_REG_WRRWEIGHTS_22_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_23                                    0x16e01c
+#define QM_REG_WRRWEIGHTS_23_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_24                                    0x16e020
+#define QM_REG_WRRWEIGHTS_24_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_25                                    0x16e024
+#define QM_REG_WRRWEIGHTS_25_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_26                                    0x16e028
+#define QM_REG_WRRWEIGHTS_26_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_27                                    0x16e02c
+#define QM_REG_WRRWEIGHTS_27_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_28                                    0x16e030
+#define QM_REG_WRRWEIGHTS_28_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_29                                    0x16e034
+#define QM_REG_WRRWEIGHTS_29_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_20                                    0x16e010
+#define QM_REG_WRRWEIGHTS_21                                    0x16e014
+#define QM_REG_WRRWEIGHTS_22                                    0x16e018
+#define QM_REG_WRRWEIGHTS_23                                    0x16e01c
+#define QM_REG_WRRWEIGHTS_24                                    0x16e020
+#define QM_REG_WRRWEIGHTS_25                                    0x16e024
+#define QM_REG_WRRWEIGHTS_26                                    0x16e028
+#define QM_REG_WRRWEIGHTS_27                                    0x16e02c
+#define QM_REG_WRRWEIGHTS_28                                    0x16e030
+#define QM_REG_WRRWEIGHTS_29                                    0x16e034
 #define QM_REG_WRRWEIGHTS_3                                     0x168830
+#define QM_REG_WRRWEIGHTS_30                                    0x16e038
+#define QM_REG_WRRWEIGHTS_30_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_31                                    0x16e03c
+#define QM_REG_WRRWEIGHTS_31_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_30                                    0x16e038
+#define QM_REG_WRRWEIGHTS_31                                    0x16e03c
 #define QM_REG_WRRWEIGHTS_4                                     0x168834
 #define QM_REG_WRRWEIGHTS_5                                     0x168838
 #define QM_REG_WRRWEIGHTS_6                                     0x16883c
 #define QM_REG_WRRWEIGHTS_9                                     0x168848
 /* [R 6] Keep the fill level of the fifo from write client 1 */
 #define QM_REG_XQM_WRC_FIFOLVL                                  0x168000
+#define BRB1_BRB1_INT_STS_REG_ADDRESS_ERROR                     (0x1<<0)
+#define BRB1_BRB1_INT_STS_REG_ADDRESS_ERROR_SIZE                0
+#define BRB1_BRB1_INT_STS_CLR_REG_ADDRESS_ERROR                 (0x1<<0)
+#define BRB1_BRB1_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE            0
+#define BRB1_BRB1_INT_STS_WR_REG_ADDRESS_ERROR                  (0x1<<0)
+#define BRB1_BRB1_INT_STS_WR_REG_ADDRESS_ERROR_SIZE             0
+#define BRB1_BRB1_INT_MASK_REG_ADDRESS_ERROR                    (0x1<<0)
+#define BRB1_BRB1_INT_MASK_REG_ADDRESS_ERROR_SIZE               0
+#define CCM_CCM_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define CCM_CCM_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define CCM_CCM_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define CCM_CCM_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define CCM_CCM_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define CCM_CCM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define CCM_CCM_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define CCM_CCM_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define CDU_CDU_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define CDU_CDU_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define CDU_CDU_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define CDU_CDU_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define CDU_CDU_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define CDU_CDU_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define CDU_CDU_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define CDU_CDU_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define CFC_CFC_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define CFC_CFC_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define CFC_CFC_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define CFC_CFC_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define CFC_CFC_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define CFC_CFC_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define CFC_CFC_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define CFC_CFC_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define CSDM_CSDM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define CSDM_CSDM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define CSDM_CSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define CSDM_CSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define CSDM_CSDM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define CSDM_CSDM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define CSDM_CSDM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define CSDM_CSDM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define CSEM_CSEM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define CSEM_CSEM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define CSEM_CSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define CSEM_CSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define CSEM_CSEM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define CSEM_CSEM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define CSEM_CSEM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define CSEM_CSEM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define DBG_DBG_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define DBG_DBG_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define DBG_DBG_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define DBG_DBG_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define DBG_DBG_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define DBG_DBG_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define DBG_DBG_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define DBG_DBG_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define DMAE_DMAE_INT_STS_REG_ADDRESS_ERROR                     (0x1<<0)
+#define DMAE_DMAE_INT_STS_REG_ADDRESS_ERROR_SIZE                0
+#define DMAE_DMAE_INT_STS_CLR_REG_ADDRESS_ERROR                 (0x1<<0)
+#define DMAE_DMAE_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE            0
+#define DMAE_DMAE_INT_STS_WR_REG_ADDRESS_ERROR                  (0x1<<0)
+#define DMAE_DMAE_INT_STS_WR_REG_ADDRESS_ERROR_SIZE             0
+#define DMAE_DMAE_INT_MASK_REG_ADDRESS_ERROR                    (0x1<<0)
+#define DMAE_DMAE_INT_MASK_REG_ADDRESS_ERROR_SIZE               0
 #define DORQ_DORQ_INT_STS_REG_ADDRESS_ERROR                     (0x1<<0)
 #define DORQ_DORQ_INT_STS_REG_ADDRESS_ERROR_SIZE                0
 #define DORQ_DORQ_INT_STS_CLR_REG_ADDRESS_ERROR                 (0x1<<0)
 #define DORQ_DORQ_INT_STS_WR_REG_ADDRESS_ERROR_SIZE             0
 #define DORQ_DORQ_INT_MASK_REG_ADDRESS_ERROR                    (0x1<<0)
 #define DORQ_DORQ_INT_MASK_REG_ADDRESS_ERROR_SIZE               0
+#define HC_HC_INT_STS_REG_ADDRESS_ERROR                         (0x1<<0)
+#define HC_HC_INT_STS_REG_ADDRESS_ERROR_SIZE                    0
+#define HC_HC_INT_STS_CLR_REG_ADDRESS_ERROR                     (0x1<<0)
+#define HC_HC_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE                0
+#define HC_HC_INT_STS_WR_REG_ADDRESS_ERROR                      (0x1<<0)
+#define HC_HC_INT_STS_WR_REG_ADDRESS_ERROR_SIZE                 0
+#define HC_HC_INT_MASK_REG_ADDRESS_ERROR                        (0x1<<0)
+#define HC_HC_INT_MASK_REG_ADDRESS_ERROR_SIZE                   0
+#define MISC_MISC_INT_STS_REG_ADDRESS_ERROR                     (0x1<<0)
+#define MISC_MISC_INT_STS_REG_ADDRESS_ERROR_SIZE                0
+#define MISC_MISC_INT_STS_CLR_REG_ADDRESS_ERROR                 (0x1<<0)
+#define MISC_MISC_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE            0
+#define MISC_MISC_INT_STS_WR_REG_ADDRESS_ERROR                  (0x1<<0)
+#define MISC_MISC_INT_STS_WR_REG_ADDRESS_ERROR_SIZE             0
+#define MISC_MISC_INT_MASK_REG_ADDRESS_ERROR                    (0x1<<0)
+#define MISC_MISC_INT_MASK_REG_ADDRESS_ERROR_SIZE               0
 #define NIG_NIG_INT_STS_0_REG_ADDRESS_ERROR                     (0x1<<0)
 #define NIG_NIG_INT_STS_0_REG_ADDRESS_ERROR_SIZE                0
 #define NIG_NIG_INT_STS_CLR_0_REG_ADDRESS_ERROR                 (0x1<<0)
 #define NIG_NIG_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE             0
 #define NIG_NIG_INT_MASK_0_REG_ADDRESS_ERROR                    (0x1<<0)
 #define NIG_NIG_INT_MASK_0_REG_ADDRESS_ERROR_SIZE               0
+#define PBF_PBF_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define PBF_PBF_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define PBF_PBF_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define PBF_PBF_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define PBF_PBF_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define PBF_PBF_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define PBF_PBF_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define PBF_PBF_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define PB_PB_INT_STS_REG_ADDRESS_ERROR                         (0x1<<0)
+#define PB_PB_INT_STS_REG_ADDRESS_ERROR_SIZE                    0
+#define PB_PB_INT_STS_CLR_REG_ADDRESS_ERROR                     (0x1<<0)
+#define PB_PB_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE                0
+#define PB_PB_INT_STS_WR_REG_ADDRESS_ERROR                      (0x1<<0)
+#define PB_PB_INT_STS_WR_REG_ADDRESS_ERROR_SIZE                 0
+#define PB_PB_INT_MASK_REG_ADDRESS_ERROR                        (0x1<<0)
+#define PB_PB_INT_MASK_REG_ADDRESS_ERROR_SIZE                   0
+#define PRS_PRS_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define PRS_PRS_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define PRS_PRS_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define PRS_PRS_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define PRS_PRS_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define PRS_PRS_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define PRS_PRS_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define PRS_PRS_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define PXP2_PXP2_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define PXP2_PXP2_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define PXP2_PXP2_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define PXP2_PXP2_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define PXP2_PXP2_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define PXP2_PXP2_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define PXP2_PXP2_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define PXP2_PXP2_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define PXP_PXP_INT_STS_0_REG_ADDRESS_ERROR                     (0x1<<0)
+#define PXP_PXP_INT_STS_0_REG_ADDRESS_ERROR_SIZE                0
+#define PXP_PXP_INT_STS_CLR_0_REG_ADDRESS_ERROR                 (0x1<<0)
+#define PXP_PXP_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE            0
+#define PXP_PXP_INT_STS_WR_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define PXP_PXP_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE             0
+#define PXP_PXP_INT_MASK_0_REG_ADDRESS_ERROR                    (0x1<<0)
+#define PXP_PXP_INT_MASK_0_REG_ADDRESS_ERROR_SIZE               0
+#define QM_QM_INT_STS_REG_ADDRESS_ERROR                         (0x1<<0)
+#define QM_QM_INT_STS_REG_ADDRESS_ERROR_SIZE                    0
+#define QM_QM_INT_STS_CLR_REG_ADDRESS_ERROR                     (0x1<<0)
+#define QM_QM_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE                0
+#define QM_QM_INT_STS_WR_REG_ADDRESS_ERROR                      (0x1<<0)
+#define QM_QM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE                 0
+#define QM_QM_INT_MASK_REG_ADDRESS_ERROR                        (0x1<<0)
+#define QM_QM_INT_MASK_REG_ADDRESS_ERROR_SIZE                   0
+#define SEM_FAST_SEM_FAST_INT_STS_REG_ADDRESS_ERROR             (0x1<<0)
+#define SEM_FAST_SEM_FAST_INT_STS_REG_ADDRESS_ERROR_SIZE        0
+#define SEM_FAST_SEM_FAST_INT_STS_CLR_REG_ADDRESS_ERROR         (0x1<<0)
+#define SEM_FAST_SEM_FAST_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE    0
+#define SEM_FAST_SEM_FAST_INT_STS_WR_REG_ADDRESS_ERROR          (0x1<<0)
+#define SEM_FAST_SEM_FAST_INT_STS_WR_REG_ADDRESS_ERROR_SIZE     0
+#define SEM_FAST_SEM_FAST_INT_MASK_REG_ADDRESS_ERROR            (0x1<<0)
+#define SEM_FAST_SEM_FAST_INT_MASK_REG_ADDRESS_ERROR_SIZE       0
+#define SRC_SRC_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define SRC_SRC_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define SRC_SRC_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define SRC_SRC_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define SRC_SRC_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define SRC_SRC_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define SRC_SRC_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define SRC_SRC_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
 #define TCM_TCM_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
 #define TCM_TCM_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
 #define TCM_TCM_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
 #define TCM_TCM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
 #define TCM_TCM_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
 #define TCM_TCM_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define TM_TM_INT_STS_REG_ADDRESS_ERROR                         (0x1<<0)
+#define TM_TM_INT_STS_REG_ADDRESS_ERROR_SIZE                    0
+#define TM_TM_INT_STS_CLR_REG_ADDRESS_ERROR                     (0x1<<0)
+#define TM_TM_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE                0
+#define TM_TM_INT_STS_WR_REG_ADDRESS_ERROR                      (0x1<<0)
+#define TM_TM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE                 0
+#define TM_TM_INT_MASK_REG_ADDRESS_ERROR                        (0x1<<0)
+#define TM_TM_INT_MASK_REG_ADDRESS_ERROR_SIZE                   0
+#define TSDM_TSDM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define TSDM_TSDM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define TSDM_TSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define TSDM_TSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define TSDM_TSDM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define TSDM_TSDM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define TSDM_TSDM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define TSDM_TSDM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define TSEM_TSEM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define TSEM_TSEM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define TSEM_TSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define TSEM_TSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define TSEM_TSEM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define TSEM_TSEM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define TSEM_TSEM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define TSEM_TSEM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define UCM_UCM_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define UCM_UCM_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define UCM_UCM_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define UCM_UCM_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define UCM_UCM_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define UCM_UCM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define UCM_UCM_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define UCM_UCM_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define USDM_USDM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define USDM_USDM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define USDM_USDM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define USDM_USDM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define USDM_USDM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define USDM_USDM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define USDM_USDM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define USDM_USDM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define USEM_USEM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define USEM_USEM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define USEM_USEM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define USEM_USEM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define USEM_USEM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define USEM_USEM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define USEM_USEM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define USEM_USEM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define XCM_XCM_INT_STS_REG_ADDRESS_ERROR                       (0x1<<0)
+#define XCM_XCM_INT_STS_REG_ADDRESS_ERROR_SIZE                  0
+#define XCM_XCM_INT_STS_CLR_REG_ADDRESS_ERROR                   (0x1<<0)
+#define XCM_XCM_INT_STS_CLR_REG_ADDRESS_ERROR_SIZE              0
+#define XCM_XCM_INT_STS_WR_REG_ADDRESS_ERROR                    (0x1<<0)
+#define XCM_XCM_INT_STS_WR_REG_ADDRESS_ERROR_SIZE               0
+#define XCM_XCM_INT_MASK_REG_ADDRESS_ERROR                      (0x1<<0)
+#define XCM_XCM_INT_MASK_REG_ADDRESS_ERROR_SIZE                 0
+#define XSDM_XSDM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define XSDM_XSDM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define XSDM_XSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define XSDM_XSDM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define XSDM_XSDM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define XSDM_XSDM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define XSDM_XSDM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define XSDM_XSDM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
+#define XSEM_XSEM_INT_STS_0_REG_ADDRESS_ERROR                   (0x1<<0)
+#define XSEM_XSEM_INT_STS_0_REG_ADDRESS_ERROR_SIZE              0
+#define XSEM_XSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR               (0x1<<0)
+#define XSEM_XSEM_INT_STS_CLR_0_REG_ADDRESS_ERROR_SIZE          0
+#define XSEM_XSEM_INT_STS_WR_0_REG_ADDRESS_ERROR                (0x1<<0)
+#define XSEM_XSEM_INT_STS_WR_0_REG_ADDRESS_ERROR_SIZE           0
+#define XSEM_XSEM_INT_MASK_0_REG_ADDRESS_ERROR                  (0x1<<0)
+#define XSEM_XSEM_INT_MASK_0_REG_ADDRESS_ERROR_SIZE             0
 #define CFC_DEBUG1_REG_WRITE_AC                                 (0x1<<4)
 #define CFC_DEBUG1_REG_WRITE_AC_SIZE                            4
-/* [R 1] debug only: This bit indicates wheter indicates that external
+/* [R 1] debug only: This bit indicates whether indicates that external
    buffer was wrapped (oldest data was thrown); Relevant only when
    ~dbg_registers_debug_target=2 (PCI) & ~dbg_registers_full_mode=1 (wrap); */
 #define DBG_REG_WRAP_ON_EXT_BUFFER                              0xc124
 #define DBG_REG_WRAP_ON_EXT_BUFFER_SIZE                         1
-/* [R 1] debug only: This bit indicates wheter the internal buffer was
+/* [R 1] debug only: This bit indicates whether the internal buffer was
    wrapped (oldest data was thrown) Relevant only when
    ~dbg_registers_debug_target=0 (internal buffer) */
 #define DBG_REG_WRAP_ON_INT_BUFFER                              0xc128
 #define DBG_REG_WRAP_ON_INT_BUFFER_SIZE                         1
+#define QM_QM_PRTY_STS_REG_WRBUFF                               (0x1<<8)
+#define QM_QM_PRTY_STS_REG_WRBUFF_SIZE                          8
+#define QM_QM_PRTY_STS_CLR_REG_WRBUFF                           (0x1<<8)
+#define QM_QM_PRTY_STS_CLR_REG_WRBUFF_SIZE                      8
+#define QM_QM_PRTY_STS_WR_REG_WRBUFF                            (0x1<<8)
+#define QM_QM_PRTY_STS_WR_REG_WRBUFF_SIZE                       8
+#define QM_QM_PRTY_MASK_REG_WRBUFF                              (0x1<<8)
+#define QM_QM_PRTY_MASK_REG_WRBUFF_SIZE                         8
 /* [RW 32] Wrr weights */
 #define QM_REG_WRRWEIGHTS_0                                     0x16880c
 #define QM_REG_WRRWEIGHTS_0_SIZE                                1
 /* [RW 32] Wrr weights */
 #define QM_REG_WRRWEIGHTS_9                                     0x168848
 #define QM_REG_WRRWEIGHTS_9_SIZE                                1
-/* [RW 22] Number of free element in the free list of T2 entries - port 0. */
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_16                                    0x16e000
+#define QM_REG_WRRWEIGHTS_16_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_17                                    0x16e004
+#define QM_REG_WRRWEIGHTS_17_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_18                                    0x16e008
+#define QM_REG_WRRWEIGHTS_18_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_19                                    0x16e00c
+#define QM_REG_WRRWEIGHTS_19_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_20                                    0x16e010
+#define QM_REG_WRRWEIGHTS_20_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_21                                    0x16e014
+#define QM_REG_WRRWEIGHTS_21_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_22                                    0x16e018
+#define QM_REG_WRRWEIGHTS_22_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_23                                    0x16e01c
+#define QM_REG_WRRWEIGHTS_23_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_24                                    0x16e020
+#define QM_REG_WRRWEIGHTS_24_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_25                                    0x16e024
+#define QM_REG_WRRWEIGHTS_25_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_26                                    0x16e028
+#define QM_REG_WRRWEIGHTS_26_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_27                                    0x16e02c
+#define QM_REG_WRRWEIGHTS_27_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_28                                    0x16e030
+#define QM_REG_WRRWEIGHTS_28_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_29                                    0x16e034
+#define QM_REG_WRRWEIGHTS_29_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_30                                    0x16e038
+#define QM_REG_WRRWEIGHTS_30_SIZE                               1
+/* [RW 32] Wrr weights */
+#define QM_REG_WRRWEIGHTS_31                                    0x16e03c
+#define QM_REG_WRRWEIGHTS_31_SIZE                               1
 #define SRC_REG_COUNTFREE0                                      0x40500
-/* [WB 64] First free element in the free list of T2 entries - port 0. */
+/* [RW 1] If clr the searcher is compatible to E1 A0 - support only two
+   ports. If set the searcher support 8 functions. */
+#define SRC_REG_E1HMF_ENABLE                                    0x404cc
 #define SRC_REG_FIRSTFREE0                                      0x40510
 #define SRC_REG_KEYRSS0_0                                       0x40408
+#define SRC_REG_KEYRSS0_7                                       0x40424
 #define SRC_REG_KEYRSS1_9                                       0x40454
-/* [WB 64] Last free element in the free list of T2 entries - port 0. */
+#define SRC_REG_KEYSEARCH_0                                     0x40458
+#define SRC_REG_KEYSEARCH_1                                     0x4045c
+#define SRC_REG_KEYSEARCH_2                                     0x40460
+#define SRC_REG_KEYSEARCH_3                                     0x40464
+#define SRC_REG_KEYSEARCH_4                                     0x40468
+#define SRC_REG_KEYSEARCH_5                                     0x4046c
+#define SRC_REG_KEYSEARCH_6                                     0x40470
+#define SRC_REG_KEYSEARCH_7                                     0x40474
+#define SRC_REG_KEYSEARCH_8                                     0x40478
+#define SRC_REG_KEYSEARCH_9                                     0x4047c
 #define SRC_REG_LASTFREE0                                       0x40530
-/* [RW 5] The number of hash bits used for the search (h); Values can be 8
-   to 24. */
 #define SRC_REG_NUMBER_HASH_BITS0                               0x40400
 /* [RW 1] Reset internal state machines. */
 #define SRC_REG_SOFT_RST                                        0x4049c
-/* [R 1] Interrupt register #0 read */
+/* [R 3] Interrupt register #0 read */
 #define SRC_REG_SRC_INT_STS                                     0x404ac
 /* [RW 3] Parity mask register #0 read/write */
 #define SRC_REG_SRC_PRTY_MASK                                   0x404c8
 #define TCM_REG_N_SM_CTX_LD_2                                   0x50058
 #define TCM_REG_N_SM_CTX_LD_3                                   0x5005c
 #define TCM_REG_N_SM_CTX_LD_4                                   0x50060
+#define TCM_REG_N_SM_CTX_LD_5                                   0x50064
 /* [RW 1] Input pbf Interface enable. If 0 - the valid input is disregarded;
    acknowledge output is deasserted; all other signals are treated as usual;
    if 1 - normal activity. */
    weight 8 (the most prioritised); 1 stands for weight 1(least
    prioritised); 2 stands for weight 2; tc. */
 #define TCM_REG_PBF_WEIGHT                                      0x500b4
-/* [RW 6] The physical queue number 0 per port index. */
 #define TCM_REG_PHYS_QNUM0_0                                    0x500e0
 #define TCM_REG_PHYS_QNUM0_1                                    0x500e4
-/* [RW 6] The physical queue number 1 per port index. */
 #define TCM_REG_PHYS_QNUM1_0                                    0x500e8
+#define TCM_REG_PHYS_QNUM1_1                                    0x500ec
+#define TCM_REG_PHYS_QNUM2_0                                    0x500f0
+#define TCM_REG_PHYS_QNUM2_1                                    0x500f4
+#define TCM_REG_PHYS_QNUM3_0                                    0x500f8
+#define TCM_REG_PHYS_QNUM3_1                                    0x500fc
 /* [RW 1] Input prs Interface enable. If 0 - the valid input is disregarded;
    acknowledge output is deasserted; all other signals are treated as usual;
    if 1 - normal activity. */
 #define TCM_REG_TCM_INT_MASK                                    0x501dc
 /* [R 11] Interrupt register #0 read */
 #define TCM_REG_TCM_INT_STS                                     0x501d0
+/* [R 27] Parity register #0 read */
+#define TCM_REG_TCM_PRTY_STS                                    0x501e0
 /* [RW 3] The size of AG context region 0 in REG-pairs. Designates the MS
    REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5).
    Is used to determine the number of the AG context REG-pairs written back;
    mechanism. The fields are: [5:0] - length of the message; 15:6] - message
    pointer; 20:16] - next pointer. */
 #define TCM_REG_XX_DESCR_TABLE                                  0x50280
+#define TCM_REG_XX_DESCR_TABLE_SIZE                             32
 /* [R 6] Use to read the value of XX protection Free counter. */
 #define TCM_REG_XX_FREE                                         0x50178
 /* [RW 6] Initial value for the credit counter; responsible for fulfilling
 #define TM_REG_EN_CL1_INPUT                                     0x16400c
 /* [RW 1] Enable client2 input. */
 #define TM_REG_EN_CL2_INPUT                                     0x164010
+#define TM_REG_EN_LINEAR0_TIMER                                 0x164014
 /* [RW 1] Enable real time counter. */
 #define TM_REG_EN_REAL_TIME_CNT                                 0x1640d8
 /* [RW 1] Enable for Timers state machines. */
 /* [RW 4] Load value for expiration credit cnt. CFC max number of
    outstanding load requests for timers (expiration) context loading. */
 #define TM_REG_EXP_CRDCNT_VAL                                   0x164238
-/* [RW 18] Linear0 Max active cid. */
+/* [RW 32] Linear0 logic address. */
+#define TM_REG_LIN0_LOGIC_ADDR                                  0x164240
+/* [RW 18] Linear0 Max active cid (in banks of 32 entries). */
 #define TM_REG_LIN0_MAX_ACTIVE_CID                              0x164048
 /* [WB 64] Linear0 phy address. */
 #define TM_REG_LIN0_PHY_ADDR                                    0x164270
+/* [RW 1] Linear0 physical address valid. */
+#define TM_REG_LIN0_PHY_ADDR_VALID                              0x164248
 /* [RW 24] Linear0 array scan timeout. */
 #define TM_REG_LIN0_SCAN_TIME                                   0x16403c
+/* [RW 32] Linear1 logic address. */
+#define TM_REG_LIN1_LOGIC_ADDR                                  0x164250
 /* [WB 64] Linear1 phy address. */
 #define TM_REG_LIN1_PHY_ADDR                                    0x164280
+/* [RW 1] Linear1 physical address valid. */
+#define TM_REG_LIN1_PHY_ADDR_VALID                              0x164258
 /* [RW 6] Linear timer set_clear fifo threshold. */
 #define TM_REG_LIN_SETCLR_FIFO_ALFULL_THR                       0x164070
 /* [RW 2] Load value for pci arbiter credit cnt. */
 #define TM_REG_PCIARB_CRDCNT_VAL                                0x164260
-/* [RW 1] Timer software reset - active high. */
-#define TM_REG_TIMER_SOFT_RST                                   0x164004
 /* [RW 20] The amount of hardware cycles for each timer tick. */
 #define TM_REG_TIMER_TICK_SIZE                                  0x16401c
 /* [RW 8] Timers Context region. */
 #define TM_REG_TM_INT_STS                                       0x1640f0
 /* [RW 8] The event id for aggregated interrupt 0 */
 #define TSDM_REG_AGG_INT_EVENT_0                                0x42038
+#define TSDM_REG_AGG_INT_EVENT_2                                0x42040
+#define TSDM_REG_AGG_INT_EVENT_20                               0x42088
+#define TSDM_REG_AGG_INT_EVENT_21                               0x4208c
+#define TSDM_REG_AGG_INT_EVENT_22                               0x42090
+#define TSDM_REG_AGG_INT_EVENT_23                               0x42094
+#define TSDM_REG_AGG_INT_EVENT_24                               0x42098
+#define TSDM_REG_AGG_INT_EVENT_25                               0x4209c
+#define TSDM_REG_AGG_INT_EVENT_26                               0x420a0
+#define TSDM_REG_AGG_INT_EVENT_27                               0x420a4
+#define TSDM_REG_AGG_INT_EVENT_28                               0x420a8
+#define TSDM_REG_AGG_INT_EVENT_29                               0x420ac
+#define TSDM_REG_AGG_INT_EVENT_3                                0x42044
+#define TSDM_REG_AGG_INT_EVENT_30                               0x420b0
+#define TSDM_REG_AGG_INT_EVENT_31                               0x420b4
+#define TSDM_REG_AGG_INT_EVENT_4                                0x42048
 /* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */
 #define TSDM_REG_CFC_RSP_START_ADDR                             0x42008
 /* [RW 16] The maximum value of the competion counter #0 */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define TSDM_REG_TSDM_INT_MASK_0                                0x4229c
 #define TSDM_REG_TSDM_INT_MASK_1                                0x422ac
+/* [R 32] Interrupt register #0 read */
+#define TSDM_REG_TSDM_INT_STS_0                                 0x42290
+#define TSDM_REG_TSDM_INT_STS_1                                 0x422a0
 /* [RW 11] Parity mask register #0 read/write */
 #define TSDM_REG_TSDM_PRTY_MASK                                 0x422bc
 /* [R 11] Parity register #0 read */
 #define TSEM_REG_ENABLE_OUT                                     0x1800a8
 /* [RW 32] This address space contains all registers and memories that are
    placed in SEM_FAST block. The SEM_FAST registers are described in
-   appendix B. In order to access the SEM_FAST registers the base address
-   TSEM_REGISTERS_FAST_MEMORY (Offset: 0x1a0000) should be added to each
-   SEM_FAST register offset. */
+   appendix B. In order to access the sem_fast registers the base address
+   ~fast_memory.fast_memory should be added to eachsem_fast register offset. */
 #define TSEM_REG_FAST_MEMORY                                    0x1a0000
 /* [RW 1] Disables input messages from FIC0 May be updated during run_time
    by the microcode */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define TSEM_REG_TSEM_INT_MASK_0                                0x180100
 #define TSEM_REG_TSEM_INT_MASK_1                                0x180110
+/* [R 32] Interrupt register #0 read */
+#define TSEM_REG_TSEM_INT_STS_0                                 0x1800f4
+#define TSEM_REG_TSEM_INT_STS_1                                 0x180104
 /* [RW 32] Parity mask register #0 read/write */
 #define TSEM_REG_TSEM_PRTY_MASK_0                               0x180120
 #define TSEM_REG_TSEM_PRTY_MASK_1                               0x180130
 #define UCM_REG_N_SM_CTX_LD_2                                   0xe005c
 #define UCM_REG_N_SM_CTX_LD_3                                   0xe0060
 #define UCM_REG_N_SM_CTX_LD_4                                   0xe0064
-/* [RW 6] The physical queue number 0 per port index (CID[23]) */
+#define UCM_REG_N_SM_CTX_LD_5                                   0xe0068
 #define UCM_REG_PHYS_QNUM0_0                                    0xe0110
 #define UCM_REG_PHYS_QNUM0_1                                    0xe0114
-/* [RW 6] The physical queue number 1 per port index (CID[23]) */
 #define UCM_REG_PHYS_QNUM1_0                                    0xe0118
 #define UCM_REG_PHYS_QNUM1_1                                    0xe011c
+#define UCM_REG_PHYS_QNUM2_0                                    0xe0120
+#define UCM_REG_PHYS_QNUM2_1                                    0xe0124
+#define UCM_REG_PHYS_QNUM3_0                                    0xe0128
+#define UCM_REG_PHYS_QNUM3_1                                    0xe012c
 /* [RW 8] The Event ID for Timers formatting in case of stop done. */
 #define UCM_REG_STOP_EVNT_ID                                    0xe00ac
 /* [RC 1] Set when the message length mismatch (relative to last indication)
 #define UCM_REG_UCM_INT_MASK                                    0xe01d4
 /* [R 11] Interrupt register #0 read */
 #define UCM_REG_UCM_INT_STS                                     0xe01c8
+/* [R 27] Parity register #0 read */
+#define UCM_REG_UCM_PRTY_STS                                    0xe01d8
 /* [RW 2] The size of AG context region 0 in REG-pairs. Designates the MS
    REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5).
    Is used to determine the number of the AG context REG-pairs written back;
    mechanism. The fields are:[5:0] - message length; 14:6] - message
    pointer; 19:15] - next pointer. */
 #define UCM_REG_XX_DESCR_TABLE                                  0xe0280
+#define UCM_REG_XX_DESCR_TABLE_SIZE                             32
 /* [R 6] Use to read the XX protection Free counter. */
 #define UCM_REG_XX_FREE                                         0xe016c
 /* [RW 6] Initial value for the credit counter; responsible for fulfilling
 #define USDM_REG_AGG_INT_EVENT_17                               0xc407c
 #define USDM_REG_AGG_INT_EVENT_18                               0xc4080
 #define USDM_REG_AGG_INT_EVENT_19                               0xc4084
+#define USDM_REG_AGG_INT_EVENT_2                                0xc4040
+#define USDM_REG_AGG_INT_EVENT_20                               0xc4088
+#define USDM_REG_AGG_INT_EVENT_21                               0xc408c
+#define USDM_REG_AGG_INT_EVENT_22                               0xc4090
+#define USDM_REG_AGG_INT_EVENT_23                               0xc4094
+#define USDM_REG_AGG_INT_EVENT_24                               0xc4098
+#define USDM_REG_AGG_INT_EVENT_25                               0xc409c
+#define USDM_REG_AGG_INT_EVENT_26                               0xc40a0
+#define USDM_REG_AGG_INT_EVENT_27                               0xc40a4
+#define USDM_REG_AGG_INT_EVENT_28                               0xc40a8
+#define USDM_REG_AGG_INT_EVENT_29                               0xc40ac
+#define USDM_REG_AGG_INT_EVENT_3                                0xc4044
+#define USDM_REG_AGG_INT_EVENT_30                               0xc40b0
+#define USDM_REG_AGG_INT_EVENT_31                               0xc40b4
+#define USDM_REG_AGG_INT_EVENT_4                                0xc4048
+#define USDM_REG_AGG_INT_EVENT_5                                0xc404c
 /* [RW 1] For each aggregated interrupt index whether the mode is normal (0)
    or auto-mask-mode (1) */
 #define USDM_REG_AGG_INT_MODE_0                                 0xc41b8
 #define USDM_REG_AGG_INT_MODE_17                                0xc41fc
 #define USDM_REG_AGG_INT_MODE_18                                0xc4200
 #define USDM_REG_AGG_INT_MODE_19                                0xc4204
+#define USDM_REG_AGG_INT_MODE_4                                 0xc41c8
+#define USDM_REG_AGG_INT_MODE_5                                 0xc41cc
 /* [RW 13] The start address in the internal RAM for the cfc_rsp lcid */
 #define USDM_REG_CFC_RSP_START_ADDR                             0xc4008
 /* [RW 16] The maximum value of the competion counter #0 */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define USDM_REG_USDM_INT_MASK_0                                0xc42a0
 #define USDM_REG_USDM_INT_MASK_1                                0xc42b0
+/* [R 32] Interrupt register #0 read */
+#define USDM_REG_USDM_INT_STS_0                                 0xc4294
+#define USDM_REG_USDM_INT_STS_1                                 0xc42a4
 /* [RW 11] Parity mask register #0 read/write */
 #define USDM_REG_USDM_PRTY_MASK                                 0xc42c0
 /* [R 11] Parity register #0 read */
 #define USEM_REG_ENABLE_OUT                                     0x3000a8
 /* [RW 32] This address space contains all registers and memories that are
    placed in SEM_FAST block. The SEM_FAST registers are described in
-   appendix B. In order to access the SEM_FAST registers... the base address
-   USEM_REGISTERS_FAST_MEMORY (Offset: 0x320000) should be added to each
-   SEM_FAST register offset. */
+   appendix B. In order to access the sem_fast registers the base address
+   ~fast_memory.fast_memory should be added to eachsem_fast register offset. */
 #define USEM_REG_FAST_MEMORY                                    0x320000
 /* [RW 1] Disables input messages from FIC0 May be updated during run_time
    by the microcode */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define USEM_REG_USEM_INT_MASK_0                                0x300110
 #define USEM_REG_USEM_INT_MASK_1                                0x300120
+/* [R 32] Interrupt register #0 read */
+#define USEM_REG_USEM_INT_STS_0                                 0x300104
+#define USEM_REG_USEM_INT_STS_1                                 0x300114
 /* [RW 32] Parity mask register #0 read/write */
 #define USEM_REG_USEM_PRTY_MASK_0                               0x300130
 #define USEM_REG_USEM_PRTY_MASK_1                               0x300140
    writes the initial credit value; read returns the current value of the
    credit counter. Must be initialized to 64 at start-up. */
 #define XCM_REG_FIC1_INIT_CRD                                   0x20410
-/* [RW 8] The maximum delayed ACK counter value.Must be at least 2. Per port
-   value. */
 #define XCM_REG_GLB_DEL_ACK_MAX_CNT_0                           0x20118
 #define XCM_REG_GLB_DEL_ACK_MAX_CNT_1                           0x2011c
-/* [RW 28] The delayed ACK timeout in ticks. Per port value. */
 #define XCM_REG_GLB_DEL_ACK_TMR_VAL_0                           0x20108
 #define XCM_REG_GLB_DEL_ACK_TMR_VAL_1                           0x2010c
 /* [RW 1] Arbitratiojn between Input Arbiter groups: 0 - fair Round-Robin; 1
 #define XCM_REG_N_SM_CTX_LD_2                                   0x20068
 #define XCM_REG_N_SM_CTX_LD_3                                   0x2006c
 #define XCM_REG_N_SM_CTX_LD_4                                   0x20070
+#define XCM_REG_N_SM_CTX_LD_5                                   0x20074
 /* [RW 1] Input pbf Interface enable. If 0 - the valid input is disregarded;
    acknowledge output is deasserted; all other signals are treated as usual;
    if 1 - normal activity. */
    weight 8 (the most prioritised); 1 stands for weight 1(least
    prioritised); 2 stands for weight 2; tc. */
 #define XCM_REG_PBF_WEIGHT                                      0x200d0
+#define XCM_REG_PHYS_QNUM3_0                                    0x20100
+#define XCM_REG_PHYS_QNUM3_1                                    0x20104
 /* [RW 8] The Event ID for Timers formatting in case of stop done. */
 #define XCM_REG_STOP_EVNT_ID                                    0x200b8
 /* [RC 1] Set at message length mismatch (relative to last indication) at
    weight 8 (the most prioritised); 1 stands for weight 1(least
    prioritised); 2 stands for weight 2; tc. */
 #define XCM_REG_USEM_WEIGHT                                     0x200c8
-/* [RW 2] DA counter command; used in case of window update doorbell.The
-   first index stands for the value DaEnable of that connection. The second
-   index stands for port number. */
 #define XCM_REG_WU_DA_CNT_CMD00                                 0x201d4
-/* [RW 2] DA counter command; used in case of window update doorbell.The
-   first index stands for the value DaEnable of that connection. The second
-   index stands for port number. */
 #define XCM_REG_WU_DA_CNT_CMD01                                 0x201d8
-/* [RW 2] DA counter command; used in case of window update doorbell.The
-   first index stands for the value DaEnable of that connection. The second
-   index stands for port number. */
 #define XCM_REG_WU_DA_CNT_CMD10                                 0x201dc
-/* [RW 2] DA counter command; used in case of window update doorbell.The
-   first index stands for the value DaEnable of that connection. The second
-   index stands for port number. */
 #define XCM_REG_WU_DA_CNT_CMD11                                 0x201e0
-/* [RW 8] DA counter update value used in case of window update doorbell.The
-   first index stands for the value DaEnable of that connection. The second
-   index stands for port number. */
 #define XCM_REG_WU_DA_CNT_UPD_VAL00                             0x201e4
-/* [RW 8] DA counter update value; used in case of window update
-   doorbell.The first index stands for the value DaEnable of that
-   connection. The second index stands for port number. */
 #define XCM_REG_WU_DA_CNT_UPD_VAL01                             0x201e8
-/* [RW 8] DA counter update value; used in case of window update
-   doorbell.The first index stands for the value DaEnable of that
-   connection. The second index stands for port number. */
 #define XCM_REG_WU_DA_CNT_UPD_VAL10                             0x201ec
-/* [RW 8] DA counter update value; used in case of window update
-   doorbell.The first index stands for the value DaEnable of that
-   connection. The second index stands for port number. */
 #define XCM_REG_WU_DA_CNT_UPD_VAL11                             0x201f0
-/* [RW 1] DA timer command; used in case of window update doorbell.The first
-   index stands for the value DaEnable of that connection. The second index
-   stands for port number. */
 #define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD00                     0x201c4
-/* [RW 1] DA timer command; used in case of window update doorbell.The first
-   index stands for the value DaEnable of that connection. The second index
-   stands for port number. */
 #define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD01                     0x201c8
-/* [RW 1] DA timer command; used in case of window update doorbell.The first
-   index stands for the value DaEnable of that connection. The second index
-   stands for port number. */
 #define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD10                     0x201cc
-/* [RW 1] DA timer command; used in case of window update doorbell.The first
-   index stands for the value DaEnable of that connection. The second index
-   stands for port number. */
 #define XCM_REG_WU_DA_SET_TMR_CNT_FLG_CMD11                     0x201d0
 /* [RW 1] CM - CFC Interface enable. If 0 - the valid input is disregarded;
    acknowledge output is deasserted; all other signals are treated as usual;
 #define XCM_REG_XCM_INT_MASK                                    0x202b4
 /* [R 14] Interrupt register #0 read */
 #define XCM_REG_XCM_INT_STS                                     0x202a8
+/* [R 30] Parity register #0 read */
+#define XCM_REG_XCM_PRTY_STS                                    0x202b8
 /* [RW 4] The size of AG context region 0 in REG-pairs. Designates the MS
    REG-pair number (e.g. if region 0 is 6 REG-pairs; the value should be 5).
    Is used to determine the number of the AG context REG-pairs written back;
    mechanism. The fields are: [5:0] - message length; 11:6] - message
    pointer; 16:12] - next pointer. */
 #define XCM_REG_XX_DESCR_TABLE                                  0x20480
+#define XCM_REG_XX_DESCR_TABLE_SIZE                             32
 /* [R 6] Used to read the XX protection Free counter. */
 #define XCM_REG_XX_FREE                                         0x20240
 /* [RW 6] Initial value for the credit counter; responsible for fulfilling
 #define XCM_REG_XX_MSG_NUM                                      0x20428
 /* [RW 8] The Event ID; sent to the STORM in case of XX overflow. */
 #define XCM_REG_XX_OVFL_EVNT_ID                                 0x20058
-/* [RW 15] Indirect access to the XX table of the XX protection mechanism.
+/* [RW 16] Indirect access to the XX table of the XX protection mechanism.
    The fields are:[4:0] - tail pointer; 9:5] - Link List size; 14:10] -
    header pointer. */
 #define XCM_REG_XX_TABLE                                        0x20500
 #define XSDM_REG_AGG_INT_EVENT_17                               0x16607c
 #define XSDM_REG_AGG_INT_EVENT_18                               0x166080
 #define XSDM_REG_AGG_INT_EVENT_19                               0x166084
+#define XSDM_REG_AGG_INT_EVENT_10                               0x166060
+#define XSDM_REG_AGG_INT_EVENT_11                               0x166064
+#define XSDM_REG_AGG_INT_EVENT_12                               0x166068
 #define XSDM_REG_AGG_INT_EVENT_2                                0x166040
 #define XSDM_REG_AGG_INT_EVENT_20                               0x166088
 #define XSDM_REG_AGG_INT_EVENT_21                               0x16608c
 #define XSDM_REG_AGG_INT_EVENT_27                               0x1660a4
 #define XSDM_REG_AGG_INT_EVENT_28                               0x1660a8
 #define XSDM_REG_AGG_INT_EVENT_29                               0x1660ac
+#define XSDM_REG_AGG_INT_EVENT_3                                0x166044
+#define XSDM_REG_AGG_INT_EVENT_30                               0x1660b0
+#define XSDM_REG_AGG_INT_EVENT_31                               0x1660b4
+#define XSDM_REG_AGG_INT_EVENT_4                                0x166048
+#define XSDM_REG_AGG_INT_EVENT_5                                0x16604c
+#define XSDM_REG_AGG_INT_EVENT_6                                0x166050
+#define XSDM_REG_AGG_INT_EVENT_7                                0x166054
+#define XSDM_REG_AGG_INT_EVENT_8                                0x166058
+#define XSDM_REG_AGG_INT_EVENT_9                                0x16605c
 /* [RW 1] For each aggregated interrupt index whether the mode is normal (0)
    or auto-mask-mode (1) */
 #define XSDM_REG_AGG_INT_MODE_0                                 0x1661b8
 /* [RW 32] Interrupt mask register #0 read/write */
 #define XSDM_REG_XSDM_INT_MASK_0                                0x16629c
 #define XSDM_REG_XSDM_INT_MASK_1                                0x1662ac
+/* [R 32] Interrupt register #0 read */
+#define XSDM_REG_XSDM_INT_STS_0                                 0x166290
+#define XSDM_REG_XSDM_INT_STS_1                                 0x1662a0
 /* [RW 11] Parity mask register #0 read/write */
 #define XSDM_REG_XSDM_PRTY_MASK                                 0x1662bc
 /* [R 11] Parity register #0 read */
 #define XSEM_REG_ENABLE_OUT                                     0x2800a8
 /* [RW 32] This address space contains all registers and memories that are
    placed in SEM_FAST block. The SEM_FAST registers are described in
-   appendix B. In order to access the SEM_FAST registers the base address
-   XSEM_REGISTERS_FAST_MEMORY (Offset: 0x2a0000) should be added to each
-   SEM_FAST register offset. */
+   appendix B. In order to access the sem_fast registers the base address
+   ~fast_memory.fast_memory should be added to eachsem_fast register offset. */
 #define XSEM_REG_FAST_MEMORY                                    0x2a0000
 /* [RW 1] Disables input messages from FIC0 May be updated during run_time
    by the microcode */
 /* [RW 32] Interrupt mask register #0 read/write */
 #define XSEM_REG_XSEM_INT_MASK_0                                0x280110
 #define XSEM_REG_XSEM_INT_MASK_1                                0x280120
+/* [R 32] Interrupt register #0 read */
+#define XSEM_REG_XSEM_INT_STS_0                                 0x280104
+#define XSEM_REG_XSEM_INT_STS_1                                 0x280114
 /* [RW 32] Parity mask register #0 read/write */
 #define XSEM_REG_XSEM_PRTY_MASK_0                               0x280130
 #define XSEM_REG_XSEM_PRTY_MASK_1                               0x280140
 #define BIGMAC_REGISTER_TX_SOURCE_ADDR                          (0x08<<3)
 #define BIGMAC_REGISTER_TX_STAT_GTBYT                           (0x20<<3)
 #define BIGMAC_REGISTER_TX_STAT_GTPKT                           (0x0C<<3)
+#define EMAC_LED_1000MB_OVERRIDE                                (1L<<1)
+#define EMAC_LED_100MB_OVERRIDE                                 (1L<<2)
+#define EMAC_LED_10MB_OVERRIDE                                  (1L<<3)
+#define EMAC_LED_2500MB_OVERRIDE                                (1L<<12)
+#define EMAC_LED_OVERRIDE                                       (1L<<0)
+#define EMAC_LED_TRAFFIC                                        (1L<<6)
 #define EMAC_MDIO_COMM_COMMAND_ADDRESS                          (0L<<26)
-#define EMAC_MDIO_COMM_COMMAND_READ_22                          (2L<<26)
 #define EMAC_MDIO_COMM_COMMAND_READ_45                          (3L<<26)
-#define EMAC_MDIO_COMM_COMMAND_WRITE_22                         (1L<<26)
 #define EMAC_MDIO_COMM_COMMAND_WRITE_45                         (1L<<26)
 #define EMAC_MDIO_COMM_DATA                                     (0xffffL<<0)
 #define EMAC_MDIO_COMM_START_BUSY                               (1L<<29)
 #define EMAC_MDIO_MODE_CLOCK_CNT                                (0x3fL<<16)
 #define EMAC_MDIO_MODE_CLOCK_CNT_BITSHIFT                       16
 #define EMAC_MODE_25G_MODE                                      (1L<<5)
-#define EMAC_MODE_ACPI_RCVD                                     (1L<<20)
 #define EMAC_MODE_HALF_DUPLEX                                   (1L<<1)
-#define EMAC_MODE_MPKT                                          (1L<<18)
-#define EMAC_MODE_MPKT_RCVD                                     (1L<<19)
 #define EMAC_MODE_PORT_GMII                                     (2L<<2)
 #define EMAC_MODE_PORT_MII                                      (1L<<2)
 #define EMAC_MODE_PORT_MII_10M                                  (3L<<2)
 #define EMAC_MODE_RESET                                         (1L<<0)
+#define EMAC_REG_EMAC_LED                                       0xc
 #define EMAC_REG_EMAC_MAC_MATCH                                 0x10
 #define EMAC_REG_EMAC_MDIO_COMM                                 0xac
 #define EMAC_REG_EMAC_MDIO_MODE                                 0xb4
 #define EMAC_RX_MODE_FLOW_EN                                    (1L<<2)
 #define EMAC_RX_MODE_KEEP_VLAN_TAG                              (1L<<10)
 #define EMAC_RX_MODE_PROMISCUOUS                                (1L<<8)
+#define EMAC_RX_MODE_RESET                                      (1L<<0)
 #define EMAC_RX_MTU_SIZE_JUMBO_ENA                              (1L<<31)
 #define EMAC_TX_MODE_EXT_PAUSE_EN                               (1L<<3)
+#define EMAC_TX_MODE_FLOW_EN                                    (1L<<4)
 #define EMAC_TX_MODE_RESET                                      (1L<<0)
+#define MISC_REGISTERS_GPIO_0                                   0
 #define MISC_REGISTERS_GPIO_1                                   1
 #define MISC_REGISTERS_GPIO_2                                   2
 #define MISC_REGISTERS_GPIO_3                                   3
 #define MISC_REGISTERS_GPIO_CLR_POS                             16
 #define MISC_REGISTERS_GPIO_FLOAT                               (0xffL<<24)
 #define MISC_REGISTERS_GPIO_FLOAT_POS                           24
+#define MISC_REGISTERS_GPIO_HIGH                                1
 #define MISC_REGISTERS_GPIO_INPUT_HI_Z                          2
+#define MISC_REGISTERS_GPIO_LOW                                 0
 #define MISC_REGISTERS_GPIO_OUTPUT_HIGH                         1
 #define MISC_REGISTERS_GPIO_OUTPUT_LOW                          0
 #define MISC_REGISTERS_GPIO_PORT_SHIFT                          4
 #define MISC_REGISTERS_GPIO_SET_POS                             8
 #define MISC_REGISTERS_RESET_REG_1_CLEAR                        0x588
+#define MISC_REGISTERS_RESET_REG_1_RST_NIG                      (0x1<<7)
 #define MISC_REGISTERS_RESET_REG_1_SET                          0x584
 #define MISC_REGISTERS_RESET_REG_2_CLEAR                        0x598
 #define MISC_REGISTERS_RESET_REG_2_RST_BMAC0                    (0x1<<0)
 #define HW_LOCK_MAX_RESOURCE_VALUE                              31
 #define HW_LOCK_RESOURCE_8072_MDIO                              0
 #define HW_LOCK_RESOURCE_GPIO                                   1
+#define HW_LOCK_RESOURCE_PORT0_ATT_MASK                         3
 #define HW_LOCK_RESOURCE_SPIO                                   2
+#define HW_LOCK_RESOURCE_UNDI                                   5
 #define AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR                (1<<18)
 #define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT                (1<<31)
 #define AEU_INPUTS_ATTN_BITS_CDU_HW_INTERRUPT                (1<<9)
 #define AEU_INPUTS_ATTN_BITS_XSEMI_PARITY_ERROR              (1<<10)
 #define RESERVED_GENERAL_ATTENTION_BIT_0       0
 
-#define EVEREST_GEN_ATTN_IN_USE_MASK           0x3e0
+#define EVEREST_GEN_ATTN_IN_USE_MASK           0x3ffe0
 #define EVEREST_LATCHED_ATTN_IN_USE_MASK       0xffe00000
 
 #define RESERVED_GENERAL_ATTENTION_BIT_6       6
 /* mcp error attention bit */
 #define MCP_FATAL_ASSERT_ATTENTION_BIT       RESERVED_GENERAL_ATTENTION_BIT_11
 
+/*E1H NIG status sync attention mapped to group 4-7*/
+#define LINK_SYNC_ATTENTION_BIT_FUNC_0     RESERVED_GENERAL_ATTENTION_BIT_12
+#define LINK_SYNC_ATTENTION_BIT_FUNC_1     RESERVED_GENERAL_ATTENTION_BIT_13
+#define LINK_SYNC_ATTENTION_BIT_FUNC_2     RESERVED_GENERAL_ATTENTION_BIT_14
+#define LINK_SYNC_ATTENTION_BIT_FUNC_3     RESERVED_GENERAL_ATTENTION_BIT_15
+#define LINK_SYNC_ATTENTION_BIT_FUNC_4     RESERVED_GENERAL_ATTENTION_BIT_16
+#define LINK_SYNC_ATTENTION_BIT_FUNC_5     RESERVED_GENERAL_ATTENTION_BIT_17
+#define LINK_SYNC_ATTENTION_BIT_FUNC_6     RESERVED_GENERAL_ATTENTION_BIT_18
+#define LINK_SYNC_ATTENTION_BIT_FUNC_7     RESERVED_GENERAL_ATTENTION_BIT_19
+
+
 #define LATCHED_ATTN_RBCR                      23
 #define LATCHED_ATTN_RBCT                      24
 #define LATCHED_ATTN_RBCN                      25
 #define GRCBASE_MISC_AEU       GRCBASE_MISC
 
 
-/*the offset of the configuration space in the pci core register*/
+/* offset of configuration space in the pci core register */
 #define PCICFG_OFFSET                                  0x2000
 #define PCICFG_VENDOR_ID_OFFSET                        0x00
 #define PCICFG_DEVICE_ID_OFFSET                        0x02
-#define PCICFG_SUBSYSTEM_VENDOR_ID_OFFSET              0x2c
-#define PCICFG_SUBSYSTEM_ID_OFFSET                     0x2e
-#define PCICFG_INT_LINE                                0x3c
-#define PCICFG_INT_PIN                                 0x3d
+#define PCICFG_COMMAND_OFFSET                          0x04
+#define PCICFG_COMMAND_IO_SPACE                (1<<0)
+#define PCICFG_COMMAND_MEM_SPACE               (1<<1)
+#define PCICFG_COMMAND_BUS_MASTER              (1<<2)
+#define PCICFG_COMMAND_SPECIAL_CYCLES          (1<<3)
+#define PCICFG_COMMAND_MWI_CYCLES              (1<<4)
+#define PCICFG_COMMAND_VGA_SNOOP               (1<<5)
+#define PCICFG_COMMAND_PERR_ENA                (1<<6)
+#define PCICFG_COMMAND_STEPPING                (1<<7)
+#define PCICFG_COMMAND_SERR_ENA                (1<<8)
+#define PCICFG_COMMAND_FAST_B2B                (1<<9)
+#define PCICFG_COMMAND_INT_DISABLE             (1<<10)
+#define PCICFG_COMMAND_RESERVED                (0x1f<<11)
+#define PCICFG_STATUS_OFFSET                           0x06
+#define PCICFG_REVESION_ID                             0x08
 #define PCICFG_CACHE_LINE_SIZE                         0x0c
 #define PCICFG_LATENCY_TIMER                           0x0d
-#define PCICFG_REVESION_ID                             0x08
 #define PCICFG_BAR_1_LOW                               0x10
 #define PCICFG_BAR_1_HIGH                              0x14
 #define PCICFG_BAR_2_LOW                               0x18
 #define PCICFG_BAR_2_HIGH                              0x1c
+#define PCICFG_SUBSYSTEM_VENDOR_ID_OFFSET              0x2c
+#define PCICFG_SUBSYSTEM_ID_OFFSET                     0x2e
+#define PCICFG_INT_LINE                                0x3c
+#define PCICFG_INT_PIN                                 0x3d
+#define PCICFG_PM_CAPABILITY                           0x48
+#define PCICFG_PM_CAPABILITY_VERSION           (0x3<<16)
+#define PCICFG_PM_CAPABILITY_CLOCK             (1<<19)
+#define PCICFG_PM_CAPABILITY_RESERVED          (1<<20)
+#define PCICFG_PM_CAPABILITY_DSI               (1<<21)
+#define PCICFG_PM_CAPABILITY_AUX_CURRENT       (0x7<<22)
+#define PCICFG_PM_CAPABILITY_D1_SUPPORT        (1<<25)
+#define PCICFG_PM_CAPABILITY_D2_SUPPORT        (1<<26)
+#define PCICFG_PM_CAPABILITY_PME_IN_D0         (1<<27)
+#define PCICFG_PM_CAPABILITY_PME_IN_D1         (1<<28)
+#define PCICFG_PM_CAPABILITY_PME_IN_D2         (1<<29)
+#define PCICFG_PM_CAPABILITY_PME_IN_D3_HOT     (1<<30)
+#define PCICFG_PM_CAPABILITY_PME_IN_D3_COLD    (1<<31)
+#define PCICFG_PM_CSR_OFFSET                           0x4c
+#define PCICFG_PM_CSR_STATE                    (0x3<<0)
+#define PCICFG_PM_CSR_PME_ENABLE               (1<<8)
+#define PCICFG_PM_CSR_PME_STATUS               (1<<15)
 #define PCICFG_GRC_ADDRESS                             0x78
 #define PCICFG_GRC_DATA                                0x80
 #define PCICFG_DEVICE_CONTROL                          0xb4
 #define PCICFG_LINK_CONTROL                            0xbc
 
+
 #define BAR_USTRORM_INTMEM                             0x400000
 #define BAR_CSTRORM_INTMEM                             0x410000
 #define BAR_XSTRORM_INTMEM                             0x420000
 #define BAR_TSTRORM_INTMEM                             0x430000
 
+/* for accessing the IGU in case of status block ACK */
 #define BAR_IGU_INTMEM                                 0x440000
 
 #define BAR_DOORBELL_OFFSET                            0x800000
 
 #define BAR_ME_REGISTER                                0x450000
 
-
-#define GRC_CONFIG_2_SIZE_REG              0x408 /* config_2 offset */
-#define PCI_CONFIG_2_BAR1_SIZE                     (0xfL<<0)
+/* config_2 offset */
+#define GRC_CONFIG_2_SIZE_REG                          0x408
+#define PCI_CONFIG_2_BAR1_SIZE                 (0xfL<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_DISABLED        (0L<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_64K             (1L<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_128K            (2L<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_256M            (13L<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_512M            (14L<<0)
 #define PCI_CONFIG_2_BAR1_SIZE_1G              (15L<<0)
-#define PCI_CONFIG_2_BAR1_64ENA                    (1L<<4)
-#define PCI_CONFIG_2_EXP_ROM_RETRY                 (1L<<5)
-#define PCI_CONFIG_2_CFG_CYCLE_RETRY               (1L<<6)
-#define PCI_CONFIG_2_FIRST_CFG_DONE                (1L<<7)
-#define PCI_CONFIG_2_EXP_ROM_SIZE                  (0xffL<<8)
+#define PCI_CONFIG_2_BAR1_64ENA                (1L<<4)
+#define PCI_CONFIG_2_EXP_ROM_RETRY             (1L<<5)
+#define PCI_CONFIG_2_CFG_CYCLE_RETRY           (1L<<6)
+#define PCI_CONFIG_2_FIRST_CFG_DONE            (1L<<7)
+#define PCI_CONFIG_2_EXP_ROM_SIZE              (0xffL<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_DISABLED     (0L<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_2K           (1L<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_4K           (2L<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_8M           (13L<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_16M          (14L<<8)
 #define PCI_CONFIG_2_EXP_ROM_SIZE_32M          (15L<<8)
-#define PCI_CONFIG_2_BAR_PREFETCH                  (1L<<16)
-#define PCI_CONFIG_2_RESERVED0                     (0x7fffL<<17)
+#define PCI_CONFIG_2_BAR_PREFETCH              (1L<<16)
+#define PCI_CONFIG_2_RESERVED0                 (0x7fffL<<17)
 
 /* config_3 offset */
-#define GRC_CONFIG_3_SIZE_REG                          (0x40c)
-#define PCI_CONFIG_3_STICKY_BYTE                   (0xffL<<0)
-#define PCI_CONFIG_3_FORCE_PME                     (1L<<24)
-#define PCI_CONFIG_3_PME_STATUS                    (1L<<25)
-#define PCI_CONFIG_3_PME_ENABLE                    (1L<<26)
-#define PCI_CONFIG_3_PM_STATE                      (0x3L<<27)
-#define PCI_CONFIG_3_VAUX_PRESET                   (1L<<30)
-#define PCI_CONFIG_3_PCI_POWER                     (1L<<31)
-
-/* config_2 offset */
-#define GRC_CONFIG_2_SIZE_REG              0x408
+#define GRC_CONFIG_3_SIZE_REG                          0x40c
+#define PCI_CONFIG_3_STICKY_BYTE               (0xffL<<0)
+#define PCI_CONFIG_3_FORCE_PME                 (1L<<24)
+#define PCI_CONFIG_3_PME_STATUS                (1L<<25)
+#define PCI_CONFIG_3_PME_ENABLE                (1L<<26)
+#define PCI_CONFIG_3_PM_STATE                  (0x3L<<27)
+#define PCI_CONFIG_3_VAUX_PRESET               (1L<<30)
+#define PCI_CONFIG_3_PCI_POWER                 (1L<<31)
 
 #define GRC_BAR2_CONFIG                                0x4e0
-#define PCI_CONFIG_2_BAR2_SIZE                     (0xfL<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_DISABLED            (0L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_64K                 (1L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_128K                (2L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_256K                (3L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_512K                (4L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_1M                  (5L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_2M                  (6L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_4M                  (7L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_8M                  (8L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_16M                 (9L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_32M                 (10L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_64M                 (11L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_128M                (12L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_256M                (13L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_512M                (14L<<0)
-#define PCI_CONFIG_2_BAR2_SIZE_1G                  (15L<<0)
-#define PCI_CONFIG_2_BAR2_64ENA                    (1L<<4)
+#define PCI_CONFIG_2_BAR2_SIZE                 (0xfL<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_DISABLED        (0L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_64K             (1L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_128K            (2L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_256K            (3L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_512K            (4L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_1M              (5L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_2M              (6L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_4M              (7L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_8M              (8L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_16M             (9L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_32M             (10L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_64M             (11L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_128M            (12L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_256M            (13L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_512M            (14L<<0)
+#define PCI_CONFIG_2_BAR2_SIZE_1G              (15L<<0)
+#define PCI_CONFIG_2_BAR2_64ENA                (1L<<4)
+
+#define PCI_PM_DATA_A                                  0x410
+#define PCI_PM_DATA_B                                  0x414
+#define PCI_ID_VAL1                                    0x434
+#define PCI_ID_VAL2                                    0x438
 
-#define PCI_PM_DATA_A                                  (0x410)
-#define PCI_PM_DATA_B                                  (0x414)
-#define PCI_ID_VAL1                                    (0x434)
-#define PCI_ID_VAL2                                    (0x438)
 
 #define MDIO_REG_BANK_CL73_IEEEB0                      0x0
 #define MDIO_CL73_IEEEB0_CL73_AN_CONTROL               0x0
 #define MDIO_CL73_IEEEB0_CL73_AN_CONTROL_MAIN_RST      0x8000
 
 #define MDIO_REG_BANK_CL73_IEEEB1                      0x10
-#define MDIO_CL73_IEEEB1_AN_ADV2                       0x01
+#define MDIO_CL73_IEEEB1_AN_ADV2                               0x01
 #define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_1000M            0x0000
 #define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_1000M_KX         0x0020
 #define MDIO_CL73_IEEEB1_AN_ADV2_ADVR_10G_KX4          0x0040
 #define MDIO_REG_BANK_RX_ALL                           0x80f0
 #define MDIO_RX_ALL_RX_EQ_BOOST                        0x1c
 #define MDIO_RX_ALL_RX_EQ_BOOST_EQUALIZER_CTRL_MASK    0x7
-#define MDIO_RX_ALL_RX_EQ_BOOST_OFFSET_CTRL            0x10
+#define MDIO_RX_ALL_RX_EQ_BOOST_OFFSET_CTRL    0x10
 
 #define MDIO_REG_BANK_TX0                              0x8060
 #define MDIO_TX0_TX_DRIVER                             0x17
 #define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT              1
 #define MDIO_TX0_TX_DRIVER_ICBUF1T                     1
 
+#define MDIO_REG_BANK_TX1                              0x8070
+#define MDIO_TX1_TX_DRIVER                             0x17
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK            0xf000
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT           12
+#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK                0x0f00
+#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT               8
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK             0x00f0
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT            4
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK               0x000e
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT              1
+#define MDIO_TX0_TX_DRIVER_ICBUF1T                     1
+
+#define MDIO_REG_BANK_TX2                              0x8080
+#define MDIO_TX2_TX_DRIVER                             0x17
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK            0xf000
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT           12
+#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK                0x0f00
+#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT               8
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK             0x00f0
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT            4
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK               0x000e
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT              1
+#define MDIO_TX0_TX_DRIVER_ICBUF1T                     1
+
+#define MDIO_REG_BANK_TX3                              0x8090
+#define MDIO_TX3_TX_DRIVER                             0x17
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_MASK            0xf000
+#define MDIO_TX0_TX_DRIVER_PREEMPHASIS_SHIFT           12
+#define MDIO_TX0_TX_DRIVER_IDRIVER_MASK                0x0f00
+#define MDIO_TX0_TX_DRIVER_IDRIVER_SHIFT               8
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_MASK             0x00f0
+#define MDIO_TX0_TX_DRIVER_IPREDRIVER_SHIFT            4
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_MASK               0x000e
+#define MDIO_TX0_TX_DRIVER_IFULLSPD_SHIFT              1
+#define MDIO_TX0_TX_DRIVER_ICBUF1T                     1
+
 #define MDIO_REG_BANK_XGXS_BLOCK0                      0x8000
 #define MDIO_BLOCK0_XGXS_CONTROL                       0x10
 
 #define MDIO_XGXS_BLOCK2_RX_LN_SWAP                    0x10
 #define MDIO_XGXS_BLOCK2_RX_LN_SWAP_ENABLE             0x8000
 #define MDIO_XGXS_BLOCK2_RX_LN_SWAP_FORCE_ENABLE       0x4000
-#define MDIO_XGXS_BLOCK2_TX_LN_SWAP                    0x11
+#define MDIO_XGXS_BLOCK2_TX_LN_SWAP            0x11
 #define MDIO_XGXS_BLOCK2_TX_LN_SWAP_ENABLE             0x8000
-#define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G              0x14
+#define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G      0x14
 #define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_CX4_XGXS     0x0001
 #define MDIO_XGXS_BLOCK2_UNICORE_MODE_10G_HIGIG_XGXS   0x0010
-#define MDIO_XGXS_BLOCK2_TEST_MODE_LANE                0x15
+#define MDIO_XGXS_BLOCK2_TEST_MODE_LANE        0x15
 
 #define MDIO_REG_BANK_GP_STATUS                        0x8120
-#define MDIO_GP_STATUS_TOP_AN_STATUS1                      0x1B
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE 0x0001
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE 0x0002
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS          0x0004
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS        0x0008
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_MR_LP_NP_AN_ABLE 0x0010
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_LP_NP_BAM_ABLE   0x0020
-
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE 0x0040
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE 0x0080
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK     0x3f00
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M     0x0000
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M     0x0100
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G      0x0200
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G     0x0300
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G      0x0400
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G      0x0500
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG  0x0600
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4  0x0700
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG  0x0800
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G    0x0900
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G     0x0A00
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G     0x0B00
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G     0x0C00
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX    0x0D00
-#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4  0x0E00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1                          0x1B
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_AUTONEG_COMPLETE    0x0001
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL37_AUTONEG_COMPLETE    0x0002
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS              0x0004
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_DUPLEX_STATUS            0x0008
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_MR_LP_NP_AN_ABLE    0x0010
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_CL73_LP_NP_BAM_ABLE      0x0020
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_TXSIDE   0x0040
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_PAUSE_RSOLUTION_RXSIDE   0x0080
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_MASK        0x3f00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10M         0x0000
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_100M        0x0100
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G          0x0200
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_2_5G        0x0300
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_5G          0x0400
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_6G          0x0500
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_HIG     0x0600
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_CX4     0x0700
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12G_HIG     0x0800
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_12_5G       0x0900
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_13G         0x0A00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_15G         0x0B00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_16G         0x0C00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_1G_KX       0x0D00
+#define MDIO_GP_STATUS_TOP_AN_STATUS1_ACTUAL_SPEED_10G_KX4     0x0E00
 
 
 #define MDIO_REG_BANK_10G_PARALLEL_DETECT              0x8130
-#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL       0x11
-#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN 0x1
-#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK          0x13
-#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT      (0xb71<<1)
+#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL           0x11
+#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_CONTROL_PARDET10G_EN      0x1
+#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK              0x13
+#define MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_LINK_CNT          (0xb71<<1)
 
 #define MDIO_REG_BANK_SERDES_DIGITAL                   0x8300
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1           0x10
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE 0x0001
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_TBI_IF    0x0002
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN    0x0004
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT 0x0008
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET   0x0010
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE 0x0020
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2           0x11
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN 0x0001
-#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_AN_FST_TMR 0x0040
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1            0x14
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_DUPLEX     0x0004
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_MASK 0x0018
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_SHIFT 3
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_2_5G 0x0018
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_1G   0x0010
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_100M 0x0008
-#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_10M  0x0000
-#define MDIO_SERDES_DIGITAL_MISC1                      0x18
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_MASK      0xE000
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_25M       0x0000
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_100M      0x2000
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_125M      0x4000
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M   0x6000
-#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_187_5M    0x8000
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL      0x0010
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK     0x000f
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_2_5G     0x0000
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_5G       0x0001
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_6G       0x0002
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_HIG  0x0003
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4  0x0004
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12G      0x0005
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12_5G    0x0006
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_13G      0x0007
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_15G      0x0008
-#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_16G      0x0009
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1                   0x10
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_FIBER_MODE                0x0001
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_TBI_IF                    0x0002
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_SIGNAL_DETECT_EN          0x0004
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_INVERT_SIGNAL_DETECT      0x0008
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_AUTODET                   0x0010
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL1_MSTR_MODE                 0x0020
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2                   0x11
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN                 0x0001
+#define MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_AN_FST_TMR                0x0040
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1                    0x14
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_DUPLEX                     0x0004
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_MASK                 0x0018
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_SHIFT                3
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_2_5G                 0x0018
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_1G                   0x0010
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_100M                 0x0008
+#define MDIO_SERDES_DIGITAL_A_1000X_STATUS1_SPEED_10M                  0x0000
+#define MDIO_SERDES_DIGITAL_MISC1                              0x18
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_MASK                      0xE000
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_25M                       0x0000
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_100M                      0x2000
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_125M                      0x4000
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_156_25M                   0x6000
+#define MDIO_SERDES_DIGITAL_MISC1_REFCLK_SEL_187_5M                    0x8000
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL                      0x0010
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK                     0x000f
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_2_5G                     0x0000
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_5G                       0x0001
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_6G                       0x0002
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_HIG                  0x0003
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_10G_CX4                  0x0004
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12G                      0x0005
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_12_5G                    0x0006
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_13G                      0x0007
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_15G                      0x0008
+#define MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_16G                      0x0009
 
 #define MDIO_REG_BANK_OVER_1G                          0x8320
-#define MDIO_OVER_1G_DIGCTL_3_4                        0x14
-#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_MASK             0xffe0
-#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_SHIFT            5
-#define MDIO_OVER_1G_UP1                               0x19
-#define MDIO_OVER_1G_UP1_2_5G                          0x0001
-#define MDIO_OVER_1G_UP1_5G                            0x0002
-#define MDIO_OVER_1G_UP1_6G                            0x0004
-#define MDIO_OVER_1G_UP1_10G                           0x0010
-#define MDIO_OVER_1G_UP1_10GH                          0x0008
-#define MDIO_OVER_1G_UP1_12G                           0x0020
-#define MDIO_OVER_1G_UP1_12_5G                         0x0040
-#define MDIO_OVER_1G_UP1_13G                           0x0080
-#define MDIO_OVER_1G_UP1_15G                           0x0100
-#define MDIO_OVER_1G_UP1_16G                           0x0200
-#define MDIO_OVER_1G_UP2                               0x1A
-#define MDIO_OVER_1G_UP2_IPREDRIVER_MASK               0x0007
-#define MDIO_OVER_1G_UP2_IDRIVER_MASK                  0x0038
-#define MDIO_OVER_1G_UP2_PREEMPHASIS_MASK              0x03C0
-#define MDIO_OVER_1G_UP3                               0x1B
-#define MDIO_OVER_1G_UP3_HIGIG2                        0x0001
-#define MDIO_OVER_1G_LP_UP1                            0x1C
-#define MDIO_OVER_1G_LP_UP2                            0x1D
-#define MDIO_OVER_1G_LP_UP2_MR_ADV_OVER_1G_MASK        0x03ff
-#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK           0x0780
-#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT          7
-#define MDIO_OVER_1G_LP_UP3                            0x1E
+#define MDIO_OVER_1G_DIGCTL_3_4                                0x14
+#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_MASK                             0xffe0
+#define MDIO_OVER_1G_DIGCTL_3_4_MP_ID_SHIFT                            5
+#define MDIO_OVER_1G_UP1                                       0x19
+#define MDIO_OVER_1G_UP1_2_5G                                          0x0001
+#define MDIO_OVER_1G_UP1_5G                                            0x0002
+#define MDIO_OVER_1G_UP1_6G                                            0x0004
+#define MDIO_OVER_1G_UP1_10G                                           0x0010
+#define MDIO_OVER_1G_UP1_10GH                                          0x0008
+#define MDIO_OVER_1G_UP1_12G                                           0x0020
+#define MDIO_OVER_1G_UP1_12_5G                                         0x0040
+#define MDIO_OVER_1G_UP1_13G                                           0x0080
+#define MDIO_OVER_1G_UP1_15G                                           0x0100
+#define MDIO_OVER_1G_UP1_16G                                           0x0200
+#define MDIO_OVER_1G_UP2                                       0x1A
+#define MDIO_OVER_1G_UP2_IPREDRIVER_MASK                               0x0007
+#define MDIO_OVER_1G_UP2_IDRIVER_MASK                                  0x0038
+#define MDIO_OVER_1G_UP2_PREEMPHASIS_MASK                              0x03C0
+#define MDIO_OVER_1G_UP3                                       0x1B
+#define MDIO_OVER_1G_UP3_HIGIG2                                        0x0001
+#define MDIO_OVER_1G_LP_UP1                                    0x1C
+#define MDIO_OVER_1G_LP_UP2                                    0x1D
+#define MDIO_OVER_1G_LP_UP2_MR_ADV_OVER_1G_MASK                        0x03ff
+#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_MASK                           0x0780
+#define MDIO_OVER_1G_LP_UP2_PREEMPHASIS_SHIFT                          7
+#define MDIO_OVER_1G_LP_UP3                                            0x1E
 
 #define MDIO_REG_BANK_BAM_NEXT_PAGE                    0x8350
-#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL          0x10
-#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE 0x0001
-#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN 0x0002
+#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL                  0x10
+#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_BAM_MODE                 0x0001
+#define MDIO_BAM_NEXT_PAGE_MP5_NEXT_PAGE_CTRL_TETON_AN                 0x0002
+
+#define MDIO_REG_BANK_CL73_USERB0              0x8370
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL1                        0x12
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_EN                         0x8000
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_STATION_MNGR_EN            0x4000
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_NP_AFTER_BP_EN             0x2000
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL3                        0x14
+#define MDIO_CL73_USERB0_CL73_BAM_CTRL3_USE_CL73_HCD_MR                0x0001
+
+#define MDIO_REG_BANK_AER_BLOCK                0xFFD0
+#define MDIO_AER_BLOCK_AER_REG                                 0x1E
+
+#define MDIO_REG_BANK_COMBO_IEEE0              0xFFE0
+#define MDIO_COMBO_IEEE0_MII_CONTROL                           0x10
+#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK                  0x2040
+#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_10                    0x0000
+#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100                   0x2000
+#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000                  0x0040
+#define MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX                        0x0100
+#define MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN                         0x0200
+#define MDIO_COMBO_IEEO_MII_CONTROL_AN_EN                              0x1000
+#define MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK                           0x4000
+#define MDIO_COMBO_IEEO_MII_CONTROL_RESET                              0x8000
+#define MDIO_COMBO_IEEE0_MII_STATUS                            0x11
+#define MDIO_COMBO_IEEE0_MII_STATUS_LINK_PASS                          0x0004
+#define MDIO_COMBO_IEEE0_MII_STATUS_AUTONEG_COMPLETE                   0x0020
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV                          0x14
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX                      0x0020
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_HALF_DUPLEX                      0x0040
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK                       0x0180
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE                       0x0000
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC                  0x0080
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC                 0x0100
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH                       0x0180
+#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_NEXT_PAGE                        0x8000
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1        0x15
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_NEXT_PAGE      0x8000
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_ACK            0x4000
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_MASK     0x0180
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_NONE     0x0000
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_BOTH     0x0180
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_HALF_DUP_CAP   0x0040
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_FULL_DUP_CAP   0x0020
+/*WhenthelinkpartnerisinSGMIImode(bit0=1),then
+bit15=link,bit12=duplex,bits11:10=speed,bit14=acknowledge.
+Theotherbitsarereservedandshouldbezero*/
+#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_SGMII_MODE     0x0001
+
+
+#define MDIO_PMA_DEVAD                 0x1
+/*ieee*/
+#define MDIO_PMA_REG_CTRL              0x0
+#define MDIO_PMA_REG_STATUS            0x1
+#define MDIO_PMA_REG_10G_CTRL2         0x7
+#define MDIO_PMA_REG_RX_SD             0xa
+/*bcm*/
+#define MDIO_PMA_REG_BCM_CTRL          0x0096
+#define MDIO_PMA_REG_FEC_CTRL          0x00ab
+#define MDIO_PMA_REG_RX_ALARM_CTRL     0x9000
+#define MDIO_PMA_REG_LASI_CTRL         0x9002
+#define MDIO_PMA_REG_RX_ALARM          0x9003
+#define MDIO_PMA_REG_TX_ALARM          0x9004
+#define MDIO_PMA_REG_LASI_STATUS       0x9005
+#define MDIO_PMA_REG_PHY_IDENTIFIER    0xc800
+#define MDIO_PMA_REG_DIGITAL_CTRL      0xc808
+#define MDIO_PMA_REG_DIGITAL_STATUS    0xc809
+#define MDIO_PMA_REG_TX_POWER_DOWN     0xca02
+#define MDIO_PMA_REG_CMU_PLL_BYPASS    0xca09
+#define MDIO_PMA_REG_MISC_CTRL         0xca0a
+#define MDIO_PMA_REG_GEN_CTRL          0xca10
+#define MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP    0x0188
+#define MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET          0x018a
+#define MDIO_PMA_REG_M8051_MSGIN_REG   0xca12
+#define MDIO_PMA_REG_M8051_MSGOUT_REG  0xca13
+#define MDIO_PMA_REG_ROM_VER1          0xca19
+#define MDIO_PMA_REG_ROM_VER2          0xca1a
+#define MDIO_PMA_REG_EDC_FFE_MAIN      0xca1b
+#define MDIO_PMA_REG_PLL_BANDWIDTH     0xca1d
+#define MDIO_PMA_REG_MISC_CTRL0        0xca23
+#define MDIO_PMA_REG_LRM_MODE          0xca3f
+#define MDIO_PMA_REG_CDR_BANDWIDTH     0xca46
+#define MDIO_PMA_REG_MISC_CTRL1        0xca85
+
+#define MDIO_PMA_REG_8726_TWO_WIRE_CTRL        0x8000
+#define MDIO_PMA_REG_8726_TWO_WIRE_CTRL_STATUS_MASK    0x000c
+#define MDIO_PMA_REG_8726_TWO_WIRE_STATUS_IDLE         0x0000
+#define MDIO_PMA_REG_8726_TWO_WIRE_STATUS_COMPLETE     0x0004
+#define MDIO_PMA_REG_8726_TWO_WIRE_STATUS_IN_PROGRESS  0x0008
+#define MDIO_PMA_REG_8726_TWO_WIRE_STATUS_FAILED       0x000c
+#define MDIO_PMA_REG_8726_TWO_WIRE_BYTE_CNT    0x8002
+#define MDIO_PMA_REG_8726_TWO_WIRE_MEM_ADDR    0x8003
+#define MDIO_PMA_REG_8726_TWO_WIRE_DATA_BUF    0xc820
+#define MDIO_PMA_REG_8726_TWO_WIRE_DATA_MASK 0xff
+
+
+#define MDIO_PMA_REG_7101_RESET        0xc000
+#define MDIO_PMA_REG_7107_LED_CNTL     0xc007
+#define MDIO_PMA_REG_7101_VER1         0xc026
+#define MDIO_PMA_REG_7101_VER2         0xc027
+
+
+#define MDIO_WIS_DEVAD                 0x2
+/*bcm*/
+#define MDIO_WIS_REG_LASI_CNTL         0x9002
+#define MDIO_WIS_REG_LASI_STATUS       0x9005
+
+#define MDIO_PCS_DEVAD                 0x3
+#define MDIO_PCS_REG_STATUS            0x0020
+#define MDIO_PCS_REG_LASI_STATUS       0x9005
+#define MDIO_PCS_REG_7101_DSP_ACCESS   0xD000
+#define MDIO_PCS_REG_7101_SPI_MUX      0xD008
+#define MDIO_PCS_REG_7101_SPI_CTRL_ADDR 0xE12A
+#define MDIO_PCS_REG_7101_SPI_RESET_BIT (5)
+#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR 0xE02A
+#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_WRITE_ENABLE_CMD (6)
+#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_BULK_ERASE_CMD  (0xC7)
+#define MDIO_PCS_REG_7101_SPI_FIFO_ADDR_PAGE_PROGRAM_CMD (2)
+#define MDIO_PCS_REG_7101_SPI_BYTES_TO_TRANSFER_ADDR 0xE028
+
+
+#define MDIO_XS_DEVAD                  0x4
+#define MDIO_XS_PLL_SEQUENCER          0x8000
+#define MDIO_XS_SFX7101_XGXS_TEST1     0xc00a
 
-#define MDIO_REG_BANK_CL73_USERB0                      0x8370
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL1                0x12
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_EN                 0x8000
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_STATION_MNGR_EN    0x4000
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL1_BAM_NP_AFTER_BP_EN     0x2000
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL3                0x14
-#define MDIO_CL73_USERB0_CL73_BAM_CTRL3_USE_CL73_HCD_MR 0x0001
+#define MDIO_AN_DEVAD                  0x7
+/*ieee*/
+#define MDIO_AN_REG_CTRL               0x0000
+#define MDIO_AN_REG_STATUS             0x0001
+#define MDIO_AN_REG_STATUS_AN_COMPLETE         0x0020
+#define MDIO_AN_REG_ADV_PAUSE          0x0010
+#define MDIO_AN_REG_ADV_PAUSE_PAUSE            0x0400
+#define MDIO_AN_REG_ADV_PAUSE_ASYMMETRIC       0x0800
+#define MDIO_AN_REG_ADV_PAUSE_BOTH             0x0C00
+#define MDIO_AN_REG_ADV_PAUSE_MASK             0x0C00
+#define MDIO_AN_REG_ADV                0x0011
+#define MDIO_AN_REG_ADV2               0x0012
+#define MDIO_AN_REG_LP_AUTO_NEG        0x0013
+#define MDIO_AN_REG_MASTER_STATUS      0x0021
+/*bcm*/
+#define MDIO_AN_REG_LINK_STATUS        0x8304
+#define MDIO_AN_REG_CL37_CL73          0x8370
+#define MDIO_AN_REG_CL37_AN            0xffe0
+#define MDIO_AN_REG_CL37_FC_LD         0xffe4
+#define MDIO_AN_REG_CL37_FC_LP         0xffe5
 
-#define MDIO_REG_BANK_AER_BLOCK                        0xFFD0
-#define MDIO_AER_BLOCK_AER_REG                         0x1E
 
-#define MDIO_REG_BANK_COMBO_IEEE0                      0xFFE0
-#define MDIO_COMBO_IEEE0_MII_CONTROL                   0x10
-#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_MASK  0x2040
-#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_10    0x0000
-#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_100   0x2000
-#define MDIO_COMBO_IEEO_MII_CONTROL_MAN_SGMII_SP_1000  0x0040
-#define MDIO_COMBO_IEEO_MII_CONTROL_FULL_DUPLEX        0x0100
-#define MDIO_COMBO_IEEO_MII_CONTROL_RESTART_AN         0x0200
-#define MDIO_COMBO_IEEO_MII_CONTROL_AN_EN              0x1000
-#define MDIO_COMBO_IEEO_MII_CONTROL_LOOPBACK           0x4000
-#define MDIO_COMBO_IEEO_MII_CONTROL_RESET              0x8000
-#define MDIO_COMBO_IEEE0_MII_STATUS                    0x11
-#define MDIO_COMBO_IEEE0_MII_STATUS_LINK_PASS          0x0004
-#define MDIO_COMBO_IEEE0_MII_STATUS_AUTONEG_COMPLETE   0x0020
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV                  0x14
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_FULL_DUPLEX      0x0020
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_HALF_DUPLEX      0x0040
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK       0x0180
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE       0x0000
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_SYMMETRIC  0x0080
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC 0x0100
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH       0x0180
-#define MDIO_COMBO_IEEE0_AUTO_NEG_ADV_NEXT_PAGE        0x8000
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1 0x15
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_NEXT_PAGE    0x8000
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_ACK         0x4000
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_MASK   0x0180
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_NONE\
-       0x0000
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_PAUSE_BOTH\
-       0x0180
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_HALF_DUP_CAP 0x0040
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_FULL_DUP_CAP 0x0020
-#define MDIO_COMBO_IEEE0_AUTO_NEG_LINK_PARTNER_ABILITY1_SGMII_MODE   0x0001
+#define IGU_FUNC_BASE                  0x0400
 
+#define IGU_ADDR_MSIX                  0x0000
+#define IGU_ADDR_INT_ACK               0x0200
+#define IGU_ADDR_PROD_UPD              0x0201
+#define IGU_ADDR_ATTN_BITS_UPD 0x0202
+#define IGU_ADDR_ATTN_BITS_SET 0x0203
+#define IGU_ADDR_ATTN_BITS_CLR 0x0204
+#define IGU_ADDR_COALESCE_NOW  0x0205
+#define IGU_ADDR_SIMD_MASK             0x0206
+#define IGU_ADDR_SIMD_NOMASK   0x0207
+#define IGU_ADDR_MSI_CTL               0x0210
+#define IGU_ADDR_MSI_ADDR_LO   0x0211
+#define IGU_ADDR_MSI_ADDR_HI   0x0212
+#define IGU_ADDR_MSI_DATA              0x0213
 
-#define EXT_PHY_AUTO_NEG_DEVAD                         0x7
-#define EXT_PHY_OPT_PMA_PMD_DEVAD                      0x1
-#define EXT_PHY_OPT_WIS_DEVAD                          0x2
-#define EXT_PHY_OPT_PCS_DEVAD                          0x3
-#define EXT_PHY_OPT_PHY_XS_DEVAD                       0x4
-#define EXT_PHY_OPT_CNTL                               0x0
-#define EXT_PHY_OPT_CNTL2                              0x7
-#define EXT_PHY_OPT_PMD_RX_SD                          0xa
-#define EXT_PHY_OPT_PMD_MISC_CNTL                      0xca0a
-#define EXT_PHY_OPT_PHY_IDENTIFIER                     0xc800
-#define EXT_PHY_OPT_PMD_DIGITAL_CNT                    0xc808
-#define EXT_PHY_OPT_PMD_DIGITAL_SATUS                  0xc809
-#define EXT_PHY_OPT_CMU_PLL_BYPASS                     0xca09
-#define EXT_PHY_OPT_LASI_CNTL                          0x9002
-#define EXT_PHY_OPT_RX_ALARM                           0x9003
-#define EXT_PHY_OPT_LASI_STATUS                        0x9005
-#define EXT_PHY_OPT_PCS_STATUS                         0x0020
-#define EXT_PHY_OPT_XGXS_LANE_STATUS                   0x0018
-#define EXT_PHY_OPT_AN_LINK_STATUS                     0x8304
-#define EXT_PHY_OPT_AN_CL37_CL73                       0x8370
-#define EXT_PHY_OPT_AN_CL37_FD                         0xffe4
-#define EXT_PHY_OPT_AN_CL37_AN                         0xffe0
-#define EXT_PHY_OPT_AN_ADV                             0x11
+#define IGU_INT_ENABLE                 0
+#define IGU_INT_DISABLE                1
+#define IGU_INT_NOP                            2
+#define IGU_INT_NOP2                   3
 
-#define EXT_PHY_KR_PMA_PMD_DEVAD                       0x1
-#define EXT_PHY_KR_PCS_DEVAD                           0x3
-#define EXT_PHY_KR_AUTO_NEG_DEVAD                      0x7
-#define EXT_PHY_KR_CTRL                                0x0000
-#define EXT_PHY_KR_STATUS                              0x0001
-#define EXT_PHY_KR_AUTO_NEG_COMPLETE                   0x0020
-#define EXT_PHY_KR_AUTO_NEG_ADVERT                     0x0010
-#define EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE               0x0400
-#define EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_ASYMMETRIC    0x0800
-#define EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_BOTH          0x0C00
-#define EXT_PHY_KR_AUTO_NEG_ADVERT_PAUSE_MASK          0x0C00
-#define EXT_PHY_KR_LP_AUTO_NEG                         0x0013
-#define EXT_PHY_KR_CTRL2                               0x0007
-#define EXT_PHY_KR_PCS_STATUS                          0x0020
-#define EXT_PHY_KR_PMD_CTRL                            0x0096
-#define EXT_PHY_KR_LASI_CNTL                           0x9002
-#define EXT_PHY_KR_LASI_STATUS                         0x9005
-#define EXT_PHY_KR_MISC_CTRL1                          0xca85
-#define EXT_PHY_KR_GEN_CTRL                            0xca10
-#define EXT_PHY_KR_ROM_CODE                            0xca19
-#define EXT_PHY_KR_ROM_RESET_INTERNAL_MP               0x0188
-#define EXT_PHY_KR_ROM_MICRO_RESET                     0x018a
+#define COMMAND_REG_INT_ACK        0x0
+#define COMMAND_REG_PROD_UPD       0x4
+#define COMMAND_REG_ATTN_BITS_UPD   0x8
+#define COMMAND_REG_ATTN_BITS_SET   0xc
+#define COMMAND_REG_ATTN_BITS_CLR   0x10
+#define COMMAND_REG_COALESCE_NOW    0x14
+#define COMMAND_REG_SIMD_MASK      0x18
+#define COMMAND_REG_SIMD_NOMASK     0x1c
 
-#define EXT_PHY_SFX7101_XGXS_TEST1         0xc00a
 
diff --git a/drivers/net/bnx2x_self_test.h b/drivers/net/bnx2x_self_test.h
new file mode 100644 (file)
index 0000000..78d68dc
--- /dev/null
@@ -0,0 +1,1003 @@
+/* bnx2x_self_test.h: Broadcom Everest network driver.
+ *
+ * Copyright (c) 2007-2008 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ */
+
+/* self test */
+
+static int idle_chk_errors;
+static int idle_chk_warnings;
+
+
+#define IDLE_CHK_E1                    0x1
+#define IDLE_CHK_E1H                   0x2
+
+#define IDLE_CHK_ERROR                 1
+#define IDLE_CHK_ERROR_NO_TRAFFIC      2
+#define IDLE_CHK_WARNING               3
+
+
+#define CHIP_MASK_CHK(chip_mask) \
+                       (((((chip_mask) & IDLE_CHK_E1) && is_e1) || \
+                         (((chip_mask) & IDLE_CHK_E1H) && is_e1h)) ? 1 : 0)
+
+#define CONDITION_CHK(condition, severity, fail_msg, arg_list...) \
+       do { \
+               if (condition) { \
+                       switch (severity) { \
+                       case IDLE_CHK_ERROR: \
+                               BNX2X_DBG_ERR("ERROR " fail_msg, ##arg_list); \
+                               idle_chk_errors++; \
+                               break; \
+                       case IDLE_CHK_ERROR_NO_TRAFFIC: \
+                               BNX2X_DBG_ERR("INFO " fail_msg, ##arg_list); \
+                               break; \
+                       case IDLE_CHK_WARNING: \
+                               BNX2X_DBG_ERR("WARNING " fail_msg, \
+                                             ##arg_list); \
+                               idle_chk_warnings++; \
+                               break; \
+                       } \
+               } \
+       } while (0);
+
+
+static void bnx2x_idle_chk4(struct bnx2x *bp, u32 chip_mask, u32 offset1,
+                           u32 offset2, int loop, int inc, int severity)
+{
+       static const u32 leading_cids[] = { 0x0, 0x80000, 0x20000, 0xa0000,
+                                       0x40000, 0xc0000, 0x60000, 0xe0000 };
+       int is_e1  = CHIP_IS_E1(bp);
+       int is_e1h = CHIP_IS_E1H(bp);
+       int i, j, max = (is_e1 ? 2 : 8);
+       u32 val1, val2;
+       int leading;
+
+       if (CHIP_MASK_CHK(chip_mask))
+               for (i = 0; i < loop; i++) {
+                       val1 = (REG_RD(bp, offset1 + i*4) >> 1);
+                       val2 = REG_RD(bp, offset2 + i*inc);
+                       leading = 0;
+                       for (j = 0; j < max; j++) {
+                               if (val1 == leading_cids[j]) {
+                                       leading = 1;
+                                       break;
+                               }
+                       }
+                       if (!leading) {
+                               CONDITION_CHK((val2 != 0), severity,
+                                       "CFC: LCID %d, AC is not 0, "
+                                       "CID_CAM 0x%x  Value is 0x%x\n",
+                                       i, val1, val2);
+                       } else {
+                               CONDITION_CHK(((val2 != 0) && (val2 != 1)),
+                                       IDLE_CHK_ERROR_NO_TRAFFIC,
+                                       "CFC: LCID %d, AC is not 0 nor 1, "
+                                       "CID_CAM 0x%x "
+                                       "(leading). Value is 0x%x\n",
+                                       i, val1, val2);
+                       }
+               }
+}
+
+static void bnx2x_idle_chk6(struct bnx2x *bp, u32 chip_mask, u32 offset,
+                           int loop, int inc, int severity)
+{
+       int is_e1  = CHIP_IS_E1(bp);
+       int is_e1h = CHIP_IS_E1H(bp);
+       int i;
+       u32 val1, val2;
+
+       if (CHIP_MASK_CHK(chip_mask)) {
+               u32 rd_ptr, wr_ptr, rd_bank, wr_bank;
+
+               for (i = 0; i < loop; i++) {
+                       val1 = REG_RD(bp, offset + i*inc);
+                       val2 = REG_RD(bp, offset + i*inc + 4);
+                       rd_ptr = ((val1 & 0x3FFFFFC0) >> 6);
+                       wr_ptr = ((((val1 & 0xC0000000) >> 30) & 0x3) |
+                                 ((val2 & 0x3FFFFF) << 2));
+                       CONDITION_CHK((rd_ptr != wr_ptr), severity,
+                               "QM: PTRTBL entry %d - rd_ptr is not"
+                               " equal to wr_ptr. Values are 0x%x 0x%x\n",
+                               i, rd_ptr, wr_ptr);
+                       rd_bank = ((val1 & 0x30) >> 4);
+                       wr_bank = (val1 & 0x03);
+                       CONDITION_CHK((rd_bank != wr_bank), severity,
+                               "QM: PTRTBL entry %d - rd_bank is not"
+                               " equal to wr_bank. Values are 0x%x 0x%x\n",
+                               i, rd_bank, wr_bank);
+               }
+       }
+}
+
+static int bnx2x_idle_chk(struct bnx2x *bp)
+{
+
+/* read one reg and check the condition */
+#define IDLE_CHK_1(chip_mask, offset, condition, severity, fail_msg) \
+       do { \
+               if (CHIP_MASK_CHK(chip_mask)) { \
+                       val = REG_RD(bp, offset); \
+                       CONDITION_CHK(condition, severity, \
+                                     fail_msg ". Value is 0x%x\n", val); \
+               } \
+       } while (0);
+
+/* loop to read one reg and check the condition */
+#define IDLE_CHK_2(chip_mask, offset, loop, inc, condition, severity, \
+                  fail_msg) \
+       do { \
+               if (CHIP_MASK_CHK(chip_mask)) \
+                       for (i = 0; i < (loop); i++) { \
+                               val = REG_RD(bp, offset + i*(inc)); \
+                               CONDITION_CHK(condition, severity, \
+                                             fail_msg ". Value is 0x%x\n", \
+                                             i, val); \
+                       } \
+       } while (0);
+
+/* read two regs and check the condition */
+#define IDLE_CHK_3(chip_mask, offset1, offset2, condition, severity, \
+                  fail_msg) \
+       do { \
+               if (CHIP_MASK_CHK(chip_mask)) { \
+                       val1 = REG_RD(bp, offset1); \
+                       val2 = REG_RD(bp, offset2); \
+                       CONDITION_CHK(condition, severity, \
+                                     fail_msg ". Values are 0x%x 0x%x\n", \
+                                     val1, val2); \
+               } \
+       } while (0);
+
+/* read one reg and check according to CID_CAM */
+#define IDLE_CHK_4(chip_mask, offset1, offset2, loop, inc, severity) \
+       bnx2x_idle_chk4(bp, chip_mask, offset1, offset2, loop, inc, severity)
+
+/* read one reg and check according to another reg */
+#define IDLE_CHK_5(chip_mask, offset, offset1, offset2, condition, severity, \
+                  fail_msg) \
+       do { \
+               if (CHIP_MASK_CHK(chip_mask)) \
+                       if (!REG_RD(bp, offset)) \
+                               IDLE_CHK_3(chip_mask, offset1, offset2, \
+                                          condition, severity, fail_msg); \
+       } while (0);
+
+/* read wide-bus reg and check sub-fields */
+#define IDLE_CHK_6(chip_mask, offset, loop, inc, severity) \
+       bnx2x_idle_chk6(bp, chip_mask, offset, loop, inc, severity)
+
+
+       int is_e1  = CHIP_IS_E1(bp);
+       int is_e1h = CHIP_IS_E1H(bp);
+       int i;
+       u32 val, val1, val2;
+
+       idle_chk_errors = 0;
+       idle_chk_warnings = 0;
+
+       if (!netif_running(bp->dev))
+               return idle_chk_errors;
+
+       IDLE_CHK_1(0x3, 0x2114, ((val & 0x0ff010) != 0), IDLE_CHK_ERROR,
+                  "PCIE: ucorr_err_status is not 0");
+       IDLE_CHK_1(0x3, 0x2114, ((val & 0x100000) != 0), IDLE_CHK_WARNING,
+                  "PCIE: ucorr_err_status - Unsupported request error");
+       IDLE_CHK_1(0x3, 0x2120,
+                  (((val & 0x31c1) != 0x2000) && ((val & 0x31c1) != 0)),
+                  IDLE_CHK_WARNING, "PCIE: corr_err_status is not 0x2000");
+       IDLE_CHK_1(0x3, 0x2814, ((val & ~0x40100) != 0), IDLE_CHK_ERROR,
+                  "PCIE: attentions register is not 0x40100");
+       IDLE_CHK_1(0x2, 0x281c, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR,
+                  "PCIE: attentions register is not 0x40040100");
+       IDLE_CHK_1(0x2, 0x2820, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR,
+                  "PCIE: attentions register is not 0x40040100");
+       IDLE_CHK_1(0x1, PXP2_REG_PGL_EXP_ROM2, (val != 0xffffffff),
+                  IDLE_CHK_WARNING,
+                  "PXP2: There are outstanding read requests. Not all"
+                  " completions have arrived for read requests on tags that"
+                  " are marked with 0");
+       IDLE_CHK_2(0x3, 0x212c, 4, 4, ((val != 0) && (idle_chk_errors > 0)),
+                  IDLE_CHK_WARNING, "PCIE: error packet header %d is not 0");
+
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ0_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ0 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ1_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ1 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ2_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ2 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ3_ENTRY_CNT, (val > 2),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ3 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ4_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ4 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ5_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ5 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ6_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ6 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ7_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ7 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ8_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ8 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ9_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ9 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ10_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ10 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ11_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ11 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ12_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ12 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ13_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ13 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ14_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ14 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ15_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ15 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ16_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ16 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ17_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ17 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ18_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ18 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ19_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ19 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ20_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ20 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ21_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ21 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ22_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ22 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ23_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ23 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ24_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ24 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ25_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ25 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ26_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ26 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ27_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ27 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ28_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ28 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ29_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ29 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ30_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ30 is not empty");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_VQ31_ENTRY_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ31 is not empty");
+
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_UFIFO_NUM_OF_ENTRY, (val != 0),
+                  IDLE_CHK_ERROR, "PXP2: rq_ufifo_num_of_entry is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_RBC_DONE, (val != 1), IDLE_CHK_ERROR,
+                  "PXP2: rq_rbc_done is not 1");
+       IDLE_CHK_1(0x3, PXP2_REG_RQ_CFG_DONE, (val != 1), IDLE_CHK_ERROR,
+                  "PXP2: rq_cfg_done is not 1");
+       IDLE_CHK_1(0x3, PXP2_REG_PSWRQ_BW_CREDIT, (val != 0x1b),
+                  IDLE_CHK_ERROR,
+                  "PXP2: rq_read_credit and rq_write_credit are not 3");
+       IDLE_CHK_1(0x3, PXP2_REG_RD_START_INIT, (val != 1), IDLE_CHK_ERROR,
+                  "PXP2: rd_start_init is not 1");
+       IDLE_CHK_1(0x3, PXP2_REG_RD_INIT_DONE, (val != 1), IDLE_CHK_ERROR,
+                  "PXP2: rd_init_done is not 1");
+
+       IDLE_CHK_3(0x3, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG,
+                  (val1 != (val2-1)), IDLE_CHK_WARNING,
+                  "PXP2: rd_sr_cnt is not equal to rd_sr_num_cfg");
+       IDLE_CHK_3(0x3, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG,
+                  (val1 != val2), IDLE_CHK_WARNING,
+                  "PXP2: rd_blk_cnt is not equal to rd_blk_num_cfg");
+
+       IDLE_CHK_3(0x3, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG,
+                  (val1 < (val2-3)), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: There are more than two unused SRs");
+       IDLE_CHK_3(0x3, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG,
+                  (val1 < (val2-2)), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: There are more than two unused blocks");
+
+       IDLE_CHK_1(0x3, PXP2_REG_RD_PORT_IS_IDLE_0, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: P0 All delivery ports are not idle");
+       IDLE_CHK_1(0x3, PXP2_REG_RD_PORT_IS_IDLE_1, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: P1 All delivery ports are not idle");
+
+       IDLE_CHK_2(0x3, PXP2_REG_RD_ALMOST_FULL_0, 11, 4, (val != 0),
+                  IDLE_CHK_ERROR, "PXP2: rd_almost_full_%d is not 0");
+
+       IDLE_CHK_1(0x3, PXP2_REG_RD_DISABLE_INPUTS, (val != 0),
+                  IDLE_CHK_ERROR, "PXP2: PSWRD inputs are disabled");
+       IDLE_CHK_1(0x3, PXP2_REG_HST_HEADER_FIFO_STATUS, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: HST header FIFO status is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_HST_DATA_FIFO_STATUS, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: HST data FIFO status is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_PGL_WRITE_BLOCKED, (val != 0),
+                  IDLE_CHK_ERROR, "PXP2: pgl_write_blocked is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_PGL_READ_BLOCKED, (val != 0), IDLE_CHK_ERROR,
+                  "PXP2: pgl_read_blocked is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_PGL_TXW_CDTS, (((val >> 17) & 1) != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PXP2: There is data which is ready");
+
+       IDLE_CHK_1(0x3, PXP_REG_HST_ARB_IS_IDLE, (val != 1), IDLE_CHK_WARNING,
+                  "PXP: HST arbiter is not idle");
+       IDLE_CHK_1(0x3, PXP_REG_HST_CLIENTS_WAITING_TO_ARB, (val != 0),
+                  IDLE_CHK_WARNING,
+                  "PXP: HST one of the clients is waiting for delivery");
+       IDLE_CHK_1(0x2, PXP_REG_HST_DISCARD_INTERNAL_WRITES_STATUS,
+                  (val != 0), IDLE_CHK_WARNING,
+                  "PXP: HST Close the gates: Discarding internal writes");
+       IDLE_CHK_1(0x2, PXP_REG_HST_DISCARD_DOORBELLS_STATUS, (val != 0),
+                  IDLE_CHK_WARNING,
+                  "PXP: HST Close the gates: Discarding doorbells");
+
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C0, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 0 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C1, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 1 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C2, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 2 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C3, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 3 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C4, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 4 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C5, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 5 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C6, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 6 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C7, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 7 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C8, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 8 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C9, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DMAE: command 9 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C10, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 10 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C11, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 11 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C12, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 12 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C13, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 13 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C14, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 14 go is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_GO_C15, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 15 go is not 0");
+
+       IDLE_CHK_1(0x1, CFC_REG_NUM_LCIDS_INSIDE, (val > 2), IDLE_CHK_ERROR,
+                  "CFC: num_lcid_inside is larger than 2");
+       IDLE_CHK_1(0x2, CFC_REG_NUM_LCIDS_INSIDE, (val > 8), IDLE_CHK_ERROR,
+                  "CFC: num_lcid_inside is larger than 8");
+       IDLE_CHK_1(0x2, CFC_REG_NUM_LCIDS_INSIDE, (val > 2), IDLE_CHK_WARNING,
+                  "CFC: num_lcid_inside is larger than 2");
+       IDLE_CHK_1(0x3, CFC_REG_ERROR_VECTOR, (val != 0), IDLE_CHK_ERROR,
+                  "CFC: error vector is not 0");
+       IDLE_CHK_1(0x3, CFC_REG_NUM_LCIDS_ARRIVING, (val != 0),
+                  IDLE_CHK_ERROR, "CFC: number of arriving LCIDs is not 0");
+       IDLE_CHK_1(0x3, CFC_REG_NUM_LCIDS_ALLOC, (val != 0), IDLE_CHK_ERROR,
+                  "CFC: number of alloc LCIDs is not 0");
+       IDLE_CHK_1(0x3, CFC_REG_NUM_LCIDS_LEAVING, (val != 0), IDLE_CHK_ERROR,
+                  "CFC: number of leaving LCIDs is not 0");
+
+       IDLE_CHK_4(0x3, CFC_REG_CID_CAM, CFC_REG_ACTIVITY_COUNTER,
+                  CFC_REG_ACTIVITY_COUNTER_SIZE, 4, IDLE_CHK_ERROR);
+
+       IDLE_CHK_2(0x3, QM_REG_QTASKCTR_0, 64, 4, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "QM: Q_%d, queue is not empty");
+
+       IDLE_CHK_3(0x3, QM_REG_VOQCREDIT_0, QM_REG_VOQINITCREDIT_0,
+                  (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "QM: VOQ_0, VOQ credit is not equal to initial credit");
+       IDLE_CHK_3(0x3, QM_REG_VOQCREDIT_1, QM_REG_VOQINITCREDIT_1,
+                  (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "QM: VOQ_1, VOQ credit is not equal to initial credit");
+       IDLE_CHK_3(0x3, QM_REG_VOQCREDIT_4, QM_REG_VOQINITCREDIT_4,
+                  (val1 != val2), IDLE_CHK_ERROR,
+                  "QM: VOQ_4, VOQ credit is not equal to initial credit");
+
+       IDLE_CHK_3(0x3, QM_REG_PORT0BYTECRD, QM_REG_BYTECRDINITVAL,
+                  (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "QM: P0 Byte credit is not equal to initial credit");
+       IDLE_CHK_3(0x3, QM_REG_PORT1BYTECRD, QM_REG_BYTECRDINITVAL,
+                  (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "QM: P1 Byte credit is not equal to initial credit");
+
+       IDLE_CHK_1(0x3, CCM_REG_CAM_OCCUP, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "CCM: XX protection CAM is not empty");
+       IDLE_CHK_1(0x3, TCM_REG_CAM_OCCUP, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: XX protection CAM is not empty");
+       IDLE_CHK_1(0x3, UCM_REG_CAM_OCCUP, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "UCM: XX protection CAM is not empty");
+       IDLE_CHK_1(0x3, XCM_REG_CAM_OCCUP, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XCM: XX protection CAM is not empty");
+
+       IDLE_CHK_1(0x3, BRB1_REG_NUM_OF_FULL_BLOCKS, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "BRB1: BRB is not empty");
+
+       IDLE_CHK_1(0x3, CSEM_REG_SLEEP_THREADS_VALID, (val != 0),
+                  IDLE_CHK_ERROR, "CSEM: There are sleeping threads");
+       IDLE_CHK_1(0x3, TSEM_REG_SLEEP_THREADS_VALID, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: There are sleeping threads");
+       IDLE_CHK_1(0x3, USEM_REG_SLEEP_THREADS_VALID, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: There are sleeping threads");
+       IDLE_CHK_1(0x3, XSEM_REG_SLEEP_THREADS_VALID, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: There are sleeping threads");
+
+       IDLE_CHK_1(0x3, CSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR, "CSEM: External store FIFO is not empty");
+       IDLE_CHK_1(0x3, TSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: External store FIFO is not empty");
+       IDLE_CHK_1(0x3, USEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: External store FIFO is not empty");
+       IDLE_CHK_1(0x3, XSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: External store FIFO is not empty");
+
+       IDLE_CHK_1(0x3, CSDM_REG_SYNC_PARSER_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR, "CSDM: Parser serial FIFO is not empty");
+       IDLE_CHK_1(0x3, TSDM_REG_SYNC_PARSER_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSDM: Parser serial FIFO is not empty");
+       IDLE_CHK_1(0x3, USDM_REG_SYNC_PARSER_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR, "USDM: Parser serial FIFO is not empty");
+       IDLE_CHK_1(0x3, XSDM_REG_SYNC_PARSER_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR, "XSDM: Parser serial FIFO is not empty");
+
+       IDLE_CHK_1(0x3, CSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR,
+                  "CSDM: Parser SYNC serial FIFO is not empty");
+       IDLE_CHK_1(0x3, TSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR,
+                  "TSDM: Parser SYNC serial FIFO is not empty");
+       IDLE_CHK_1(0x3, USDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR,
+                  "USDM: Parser SYNC serial FIFO is not empty");
+       IDLE_CHK_1(0x3, XSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR,
+                  "XSDM: Parser SYNC serial FIFO is not empty");
+
+       IDLE_CHK_1(0x3, CSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR,
+                  "CSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp"
+                  " block");
+       IDLE_CHK_1(0x3, TSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR,
+                  "TSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp"
+                  " block");
+       IDLE_CHK_1(0x3, USDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp"
+                  " block");
+       IDLE_CHK_1(0x3, XSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp"
+                  " block");
+
+       IDLE_CHK_1(0x3, DORQ_REG_DQ_FILL_LVLF, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "DQ: DORQ queue is not empty");
+
+       IDLE_CHK_1(0x3, CFC_REG_CFC_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "CFC: interrupt status is not 0");
+       IDLE_CHK_1(0x3, CDU_REG_CDU_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "CDU: interrupt status is not 0");
+       IDLE_CHK_1(0x3, CCM_REG_CCM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: interrupt status is not 0");
+       IDLE_CHK_1(0x3, TCM_REG_TCM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: interrupt status is not 0");
+       IDLE_CHK_1(0x3, UCM_REG_UCM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: interrupt status is not 0");
+       IDLE_CHK_1(0x3, XCM_REG_XCM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: interrupt status is not 0");
+       IDLE_CHK_1(0x3, PBF_REG_PBF_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "PBF: interrupt status is not 0");
+       IDLE_CHK_1(0x3, TM_REG_TM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "TIMERS: interrupt status is not 0");
+       IDLE_CHK_1(0x3, DORQ_REG_DORQ_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "DQ: interrupt status is not 0");
+       IDLE_CHK_1(0x3, SRC_REG_SRC_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "SRCH: interrupt status is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_PRS_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "PRS: interrupt status is not 0");
+       IDLE_CHK_1(0x3, BRB1_REG_BRB1_INT_STS, ((val & ~0xfc00) != 0),
+                  IDLE_CHK_ERROR, "BRB1: interrupt status is not 0");
+       IDLE_CHK_1(0x3, GRCBASE_XPB + PB_REG_PB_INT_STS, (val != 0),
+                  IDLE_CHK_ERROR, "XPB: interrupt status is not 0");
+       IDLE_CHK_1(0x3, GRCBASE_UPB + PB_REG_PB_INT_STS, (val != 0),
+                  IDLE_CHK_ERROR, "UPB: interrupt status is not 0");
+       IDLE_CHK_1(0x3, PXP2_REG_PXP2_INT_STS_0, (val != 0), IDLE_CHK_WARNING,
+                  "PXP2: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x2, PXP2_REG_PXP2_INT_STS_1, (val != 0), IDLE_CHK_WARNING,
+                  "PXP2: interrupt status 1 is not 0");
+       IDLE_CHK_1(0x3, QM_REG_QM_INT_STS, (val != 0), IDLE_CHK_ERROR,
+                  "QM: interrupt status is not 0");
+       IDLE_CHK_1(0x3, PXP_REG_PXP_INT_STS_0, (val != 0), IDLE_CHK_ERROR,
+                  "PXP: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, PXP_REG_PXP_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "PXP: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, DORQ_REG_RSPA_CRD_CNT, (val != 2),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "DQ: Credit to XCM is not full");
+       IDLE_CHK_1(0x3, DORQ_REG_RSPB_CRD_CNT, (val != 2), IDLE_CHK_ERROR,
+                  "DQ: Credit to UCM is not full");
+
+       IDLE_CHK_1(0x3, QM_REG_VOQCRDERRREG, (val != 0), IDLE_CHK_ERROR,
+                  "QM: Credit error register is not 0 (byte or credit"
+                  " overflow/underflow)");
+       IDLE_CHK_1(0x3, DORQ_REG_DQ_FULL_ST, (val != 0), IDLE_CHK_ERROR,
+                  "DQ: DORQ queue is full");
+
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0,
+                  ((val & ~0xcffc) != 0), IDLE_CHK_WARNING,
+                  "AEU: P0 AFTER_INVERT_1 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0, (val != 0),
+                  IDLE_CHK_ERROR, "AEU: P0 AFTER_INVERT_2 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0,
+                  ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR,
+                  "AEU: P0 AFTER_INVERT_3 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0,
+                  ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR,
+                  "AEU: P0 AFTER_INVERT_4 is not 0");
+
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_1_FUNC_1,
+                  ((val & ~0xcffc) != 0), IDLE_CHK_WARNING,
+                  "AEU: P1 AFTER_INVERT_1 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_2_FUNC_1, (val != 0),
+                  IDLE_CHK_ERROR, "AEU: P1 AFTER_INVERT_2 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_3_FUNC_1,
+                  ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR,
+                  "AEU: P1 AFTER_INVERT_3 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_4_FUNC_1,
+                  ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR,
+                  "AEU: P1 AFTER_INVERT_4 is not 0");
+
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_1_MCP,
+                  ((val & ~0xcffc) != 0), IDLE_CHK_WARNING,
+                  "AEU: MCP AFTER_INVERT_1 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_2_MCP, (val != 0),
+                  IDLE_CHK_ERROR, "AEU: MCP AFTER_INVERT_2 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_3_MCP,
+                  ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR,
+                  "AEU: MCP AFTER_INVERT_3 is not 0");
+       IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_4_MCP,
+                  ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR,
+                  "AEU: MCP AFTER_INVERT_4 is not 0");
+
+       IDLE_CHK_5(0x3, PBF_REG_DISABLE_NEW_TASK_PROC_P0, PBF_REG_P0_CREDIT,
+                  PBF_REG_P0_INIT_CRD, (val1 != val2),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PBF: P0 credit is not equal to init_crd");
+       IDLE_CHK_5(0x3, PBF_REG_DISABLE_NEW_TASK_PROC_P1, PBF_REG_P1_CREDIT,
+                  PBF_REG_P1_INIT_CRD, (val1 != val2),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PBF: P1 credit is not equal to init_crd");
+       IDLE_CHK_3(0x3, PBF_REG_P4_CREDIT, PBF_REG_P4_INIT_CRD,
+                  (val1 != val2), IDLE_CHK_ERROR,
+                  "PBF: P4 credit is not equal to init_crd");
+
+       IDLE_CHK_1(0x3, PBF_REG_P0_TASK_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P0 task_cnt is not 0");
+       IDLE_CHK_1(0x3, PBF_REG_P1_TASK_CNT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P1 task_cnt is not 0");
+       IDLE_CHK_1(0x3, PBF_REG_P4_TASK_CNT, (val != 0), IDLE_CHK_ERROR,
+                  "PBF: P4 task_cnt is not 0");
+
+       IDLE_CHK_1(0x3, XCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR,
+                  "XCM: CFC_INIT_CRD is not 1");
+       IDLE_CHK_1(0x3, UCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR,
+                  "UCM: CFC_INIT_CRD is not 1");
+       IDLE_CHK_1(0x3, TCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR,
+                  "TCM: CFC_INIT_CRD is not 1");
+       IDLE_CHK_1(0x3, CCM_REG_CFC_INIT_CRD, (val != 1),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CFC_INIT_CRD is not 1");
+
+       IDLE_CHK_1(0x3, XCM_REG_XQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR,
+                  "XCM: XQM_INIT_CRD is not 32");
+       IDLE_CHK_1(0x3, UCM_REG_UQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR,
+                  "UCM: UQM_INIT_CRD is not 32");
+       IDLE_CHK_1(0x3, TCM_REG_TQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR,
+                  "TCM: TQM_INIT_CRD is not 32");
+       IDLE_CHK_1(0x3, CCM_REG_CQM_INIT_CRD, (val != 32),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CQM_INIT_CRD is not 32");
+
+       IDLE_CHK_1(0x3, XCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR,
+                  "XCM: TM_INIT_CRD is not 4");
+       IDLE_CHK_1(0x3, UCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR,
+                  "UCM: TM_INIT_CRD is not 4");
+
+       IDLE_CHK_1(0x3, XCM_REG_FIC0_INIT_CRD, (val != 64),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "XCM: FIC0_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, UCM_REG_FIC0_INIT_CRD, (val != 64),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: FIC0_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, TCM_REG_FIC0_INIT_CRD, (val != 64),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "TCM: FIC0_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, CCM_REG_FIC0_INIT_CRD, (val != 64),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: FIC0_INIT_CRD is not 64");
+
+       IDLE_CHK_1(0x3, XCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR,
+                  "XCM: FIC1_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, UCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR,
+                  "UCM: FIC1_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, TCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR,
+                  "TCM: FIC1_INIT_CRD is not 64");
+       IDLE_CHK_1(0x3, CCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR,
+                  "CCM: FIC1_INIT_CRD is not 64");
+
+       IDLE_CHK_1(0x1, XCM_REG_XX_FREE, (val != 31), IDLE_CHK_ERROR,
+                  "XCM: XX_FREE is not 31");
+       IDLE_CHK_1(0x2, XCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR,
+                  "XCM: XX_FREE is not 32");
+       IDLE_CHK_1(0x3, UCM_REG_XX_FREE, (val != 27),
+                  IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: XX_FREE is not 27");
+       IDLE_CHK_1(0x3, TCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR,
+                  "TCM: XX_FREE is not 32");
+       IDLE_CHK_1(0x3, CCM_REG_XX_FREE, (val != 24), IDLE_CHK_ERROR,
+                  "CCM: XX_FREE is not 24");
+
+       IDLE_CHK_1(0x3, XSEM_REG_FAST_MEMORY + 0x18000, (val !=  0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: FOC0 credit less than initial credit");
+       IDLE_CHK_1(0x3, XSEM_REG_FAST_MEMORY + 0x18040, (val !=  24),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: FOC1 credit less than initial credit");
+       IDLE_CHK_1(0x3, XSEM_REG_FAST_MEMORY + 0x18080, (val !=  12),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: FOC2 credit less than initial credit");
+       IDLE_CHK_1(0x3, XSEM_REG_FAST_MEMORY + 0x180C0, (val !=  102),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "XSEM: FOC3 credit less than initial credit");
+
+       IDLE_CHK_1(0x3, USEM_REG_FAST_MEMORY + 0x18000, (val != 26),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: FOC0 credit less than initial credit");
+       IDLE_CHK_1(0x3, USEM_REG_FAST_MEMORY + 0x18040, (val != 78),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: FOC1 credit less than initial credit");
+       IDLE_CHK_1(0x3, USEM_REG_FAST_MEMORY + 0x18080, (val != 16),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: FOC2 credit less than initial credit");
+       IDLE_CHK_1(0x3, USEM_REG_FAST_MEMORY + 0x180C0, (val != 32),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "USEM: FOC3 credit less than initial credit");
+
+       IDLE_CHK_1(0x3, TSEM_REG_FAST_MEMORY + 0x18000, (val != 52),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: FOC0 credit less than initial credit");
+       IDLE_CHK_1(0x3, TSEM_REG_FAST_MEMORY + 0x18040, (val != 24),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: FOC1 credit less than initial credit");
+       IDLE_CHK_1(0x3, TSEM_REG_FAST_MEMORY + 0x18080, (val != 12),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: FOC2 credit less than initial credit");
+       IDLE_CHK_1(0x3, TSEM_REG_FAST_MEMORY + 0x180C0, (val != 32),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "TSEM: FOC3 credit less than initial credit");
+
+       IDLE_CHK_1(0x3, CSEM_REG_FAST_MEMORY + 0x18000, (val != 16),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "CSEM: FOC0 credit less than initial credit");
+       IDLE_CHK_1(0x3, CSEM_REG_FAST_MEMORY + 0x18040, (val != 18),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "CSEM: FOC1 credit less than initial credit");
+       IDLE_CHK_1(0x3, CSEM_REG_FAST_MEMORY + 0x18080, (val != 48),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "CSEM: FOC2 credit less than initial credit");
+       IDLE_CHK_1(0x3, CSEM_REG_FAST_MEMORY + 0x180C0, (val != 14),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "CSEM: FOC3 credit less than initial credit");
+
+       IDLE_CHK_1(0x3, PRS_REG_TSDM_CURRENT_CREDIT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: TSDM current credit is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_TCM_CURRENT_CREDIT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: TCM current credit is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_CFC_LD_CURRENT_CREDIT, (val != 0),
+                  IDLE_CHK_ERROR, "PRS: CFC_LD current credit is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_CFC_SEARCH_CURRENT_CREDIT, (val != 0),
+                  IDLE_CHK_ERROR, "PRS: CFC_SEARCH current credit is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_SRC_CURRENT_CREDIT, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: SRCH current credit is not 0");
+
+       IDLE_CHK_1(0x3, PRS_REG_PENDING_BRB_PRS_RQ, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: PENDING_BRB_PRS_RQ is not 0");
+       IDLE_CHK_2(0x3, PRS_REG_PENDING_BRB_CAC0_RQ, 5, 4, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: PENDING_BRB_CAC%d_RQ is not 0");
+
+       IDLE_CHK_1(0x3, PRS_REG_SERIAL_NUM_STATUS_LSB, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: SERIAL_NUM_STATUS_LSB is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_SERIAL_NUM_STATUS_MSB, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "PRS: SERIAL_NUM_STATUS_MSB is not 0");
+
+       IDLE_CHK_1(0x3, CDU_REG_ERROR_DATA, (val != 0), IDLE_CHK_ERROR,
+                  "CDU: ERROR_DATA is not 0");
+
+       IDLE_CHK_1(0x3, CCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: STORM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, CCM_REG_CSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: CSDM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, CCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: TSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, CCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: XSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, CCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: USEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, CCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "CCM: PBF declared message length unequal to actual");
+
+       IDLE_CHK_1(0x3, TCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: STORM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, TCM_REG_TSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: TSDM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, TCM_REG_PRS_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: PRS declared message length unequal to actual");
+       IDLE_CHK_1(0x3, TCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: PBF declared message length unequal to actual");
+       IDLE_CHK_1(0x3, TCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: USEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, TCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "TCM: CSEM declared message length unequal to actual");
+
+       IDLE_CHK_1(0x3, UCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: STORM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, UCM_REG_USDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: USDM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, UCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: TSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, UCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: CSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, UCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: XSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, UCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "UCM: DORQ declared message length unequal to actual");
+
+       IDLE_CHK_1(0x3, XCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: STORM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_XSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: XSDM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: TSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: CSEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: USEM declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: DORQ declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: PBF declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_NIG0_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: NIG0 declared message length unequal to actual");
+       IDLE_CHK_1(0x3, XCM_REG_NIG1_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR,
+                  "XCM: NIG1 declared message length unequal to actual");
+
+       IDLE_CHK_1(0x3, QM_REG_XQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR,
+                  "QM: XQM wrc_fifolvl is not 0");
+       IDLE_CHK_1(0x3, QM_REG_UQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR,
+                  "QM: UQM wrc_fifolvl is not 0");
+       IDLE_CHK_1(0x3, QM_REG_TQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR,
+                  "QM: TQM wrc_fifolvl is not 0");
+       IDLE_CHK_1(0x3, QM_REG_CQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR,
+                  "QM: CQM wrc_fifolvl is not 0");
+       IDLE_CHK_1(0x3, QM_REG_QSTATUS_LOW, (val != 0), IDLE_CHK_ERROR,
+                  "QM: QSTATUS_LOW is not 0");
+       IDLE_CHK_1(0x3, QM_REG_QSTATUS_HIGH, (val != 0), IDLE_CHK_ERROR,
+                  "QM: QSTATUS_HIGH is not 0");
+       IDLE_CHK_1(0x3, QM_REG_PAUSESTATE0, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE0 is not 0");
+       IDLE_CHK_1(0x3, QM_REG_PAUSESTATE1, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE1 is not 0");
+       IDLE_CHK_1(0x3, QM_REG_OVFQNUM, (val != 0), IDLE_CHK_ERROR,
+                  "QM: OVFQNUM is not 0");
+       IDLE_CHK_1(0x3, QM_REG_OVFERROR, (val != 0), IDLE_CHK_ERROR,
+                  "QM: OVFERROR is not 0");
+
+       IDLE_CHK_6(0x3, QM_REG_PTRTBL, 64, 8, IDLE_CHK_ERROR_NO_TRAFFIC);
+
+       IDLE_CHK_1(0x3, BRB1_REG_BRB1_PRTY_STS, ((val & ~0x8) != 0),
+                  IDLE_CHK_WARNING, "BRB1: parity status is not 0");
+       IDLE_CHK_1(0x3, CDU_REG_CDU_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "CDU: parity status is not 0");
+       IDLE_CHK_1(0x3, CFC_REG_CFC_PRTY_STS, ((val & ~0x2) != 0),
+                  IDLE_CHK_WARNING, "CFC: parity status is not 0");
+       IDLE_CHK_1(0x3, CSDM_REG_CSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "CSDM: parity status is not 0");
+       IDLE_CHK_1(0x3, DBG_REG_DBG_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "DBG: parity status is not 0");
+       IDLE_CHK_1(0x3, DMAE_REG_DMAE_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "DMAE: parity status is not 0");
+       IDLE_CHK_1(0x3, DORQ_REG_DORQ_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "DQ: parity status is not 0");
+       IDLE_CHK_1(0x1, TCM_REG_TCM_PRTY_STS, ((val & ~0x3ffc0) != 0),
+                  IDLE_CHK_WARNING, "TCM: parity status is not 0");
+       IDLE_CHK_1(0x2, TCM_REG_TCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "TCM: parity status is not 0");
+       IDLE_CHK_1(0x1, CCM_REG_CCM_PRTY_STS, ((val & ~0x3ffc0) != 0),
+                  IDLE_CHK_WARNING, "CCM: parity status is not 0");
+       IDLE_CHK_1(0x2, CCM_REG_CCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "CCM: parity status is not 0");
+       IDLE_CHK_1(0x1, UCM_REG_UCM_PRTY_STS, ((val & ~0x3ffc0) != 0),
+                  IDLE_CHK_WARNING, "UCM: parity status is not 0");
+       IDLE_CHK_1(0x2, UCM_REG_UCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "UCM: parity status is not 0");
+       IDLE_CHK_1(0x1, XCM_REG_XCM_PRTY_STS, ((val & ~0x3ffc0) != 0),
+                  IDLE_CHK_WARNING, "XCM: parity status is not 0");
+       IDLE_CHK_1(0x2, XCM_REG_XCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "XCM: parity status is not 0");
+       IDLE_CHK_1(0x1, HC_REG_HC_PRTY_STS, ((val & ~0x1) != 0),
+                  IDLE_CHK_WARNING, "HC: parity status is not 0");
+       IDLE_CHK_1(0x1, MISC_REG_MISC_PRTY_STS, ((val & ~0x1) != 0),
+                  IDLE_CHK_WARNING, "MISC: parity status is not 0");
+       IDLE_CHK_1(0x3, PRS_REG_PRS_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "PRS: parity status is not 0");
+       IDLE_CHK_1(0x3, PXP_REG_PXP_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "PXP: parity status is not 0");
+       IDLE_CHK_1(0x3, QM_REG_QM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "QM: parity status is not 0");
+       IDLE_CHK_1(0x1, SRC_REG_SRC_PRTY_STS, ((val & ~0x4) != 0),
+                  IDLE_CHK_WARNING, "SRCH: parity status is not 0");
+       IDLE_CHK_1(0x3, TSDM_REG_TSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "TSDM: parity status is not 0");
+       IDLE_CHK_1(0x3, USDM_REG_USDM_PRTY_STS, ((val & ~0x20) != 0),
+                  IDLE_CHK_WARNING, "USDM: parity status is not 0");
+       IDLE_CHK_1(0x3, XSDM_REG_XSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "XSDM: parity status is not 0");
+       IDLE_CHK_1(0x3, GRCBASE_XPB + PB_REG_PB_PRTY_STS, (val != 0),
+                  IDLE_CHK_WARNING, "XPB: parity status is not 0");
+       IDLE_CHK_1(0x3, GRCBASE_UPB + PB_REG_PB_PRTY_STS, (val != 0),
+                  IDLE_CHK_WARNING, "UPB: parity status is not 0");
+
+       IDLE_CHK_1(0x3, CSEM_REG_CSEM_PRTY_STS_0, (val != 0),
+                  IDLE_CHK_WARNING, "CSEM: parity status 0 is not 0");
+       IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0xfff40020) != 0),
+                  IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0");
+       IDLE_CHK_1(0x2, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0x20) != 0),
+                  IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0");
+       IDLE_CHK_1(0x3, TSEM_REG_TSEM_PRTY_STS_0, (val != 0),
+                  IDLE_CHK_WARNING, "TSEM: parity status 0 is not 0");
+       IDLE_CHK_1(0x3, USEM_REG_USEM_PRTY_STS_0, (val != 0),
+                  IDLE_CHK_WARNING, "USEM: parity status 0 is not 0");
+       IDLE_CHK_1(0x3, XSEM_REG_XSEM_PRTY_STS_0, (val != 0),
+                  IDLE_CHK_WARNING, "XSEM: parity status 0 is not 0");
+
+       IDLE_CHK_1(0x3, CSEM_REG_CSEM_PRTY_STS_1, (val != 0),
+                  IDLE_CHK_WARNING, "CSEM: parity status 1 is not 0");
+       IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_1, ((val & ~0x20) != 0),
+                  IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0");
+       IDLE_CHK_1(0x2, PXP2_REG_PXP2_PRTY_STS_1, (val != 0),
+                  IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0");
+       IDLE_CHK_1(0x3, TSEM_REG_TSEM_PRTY_STS_1, (val != 0),
+                  IDLE_CHK_WARNING, "TSEM: parity status 1 is not 0");
+       IDLE_CHK_1(0x3, USEM_REG_USEM_PRTY_STS_1, (val != 0),
+                  IDLE_CHK_WARNING, "USEM: parity status 1 is not 0");
+       IDLE_CHK_1(0x3, XSEM_REG_XSEM_PRTY_STS_1, (val != 0),
+                  IDLE_CHK_WARNING, "XSEM: parity status 1 is not 0");
+
+       IDLE_CHK_2(0x2, QM_REG_QTASKCTR_EXT_A_0, 64, 4, (val != 0),
+                  IDLE_CHK_ERROR_NO_TRAFFIC,
+                  "QM: Q_EXT_A_%d, queue is not empty");
+       IDLE_CHK_1(0x2, QM_REG_QSTATUS_LOW_EXT_A, (val != 0), IDLE_CHK_ERROR,
+                  "QM: QSTATUS_LOW_EXT_A is not 0");
+       IDLE_CHK_1(0x2, QM_REG_QSTATUS_HIGH_EXT_A, (val != 0), IDLE_CHK_ERROR,
+                  "QM: QSTATUS_HIGH_EXT_A is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE2, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE2 is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE3, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE3 is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE4, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE4 is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE5, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE5 is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE6, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE6 is not 0");
+       IDLE_CHK_1(0x2, QM_REG_PAUSESTATE7, (val != 0), IDLE_CHK_ERROR,
+                  "QM: PAUSESTATE7 is not 0");
+       IDLE_CHK_6(0x2, QM_REG_PTRTBL_EXT_A, 64, 8,
+                  IDLE_CHK_ERROR_NO_TRAFFIC);
+
+       IDLE_CHK_1(0x2, MISC_REG_AEU_SYS_KILL_OCCURRED, (val != 0),
+                  IDLE_CHK_ERROR, "MISC: system kill occurd;");
+       IDLE_CHK_1(0x2, MISC_REG_AEU_SYS_KILL_STATUS_0, (val != 0),
+                  IDLE_CHK_ERROR,
+                  "MISC: system kill occurd; status_0 register");
+       IDLE_CHK_1(0x2, MISC_REG_AEU_SYS_KILL_STATUS_1, (val != 0),
+                  IDLE_CHK_ERROR,
+                  "MISC: system kill occurd; status_1 register");
+       IDLE_CHK_1(0x2, MISC_REG_AEU_SYS_KILL_STATUS_2, (val != 0),
+                  IDLE_CHK_ERROR,
+                  "MISC: system kill occurd; status_2 register");
+       IDLE_CHK_1(0x2, MISC_REG_AEU_SYS_KILL_STATUS_3, (val != 0),
+                  IDLE_CHK_ERROR,
+                  "MISC: system kill occurd; status_3 register");
+       IDLE_CHK_1(0x2, MISC_REG_PCIE_HOT_RESET, (val != 0), IDLE_CHK_WARNING,
+                  "MISC: pcie_rst_b was asserted without perst assertion");
+
+       IDLE_CHK_1(0x3, NIG_REG_NIG_INT_STS_0, ((val & ~0x300) != 0),
+                  IDLE_CHK_ERROR, "NIG: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, NIG_REG_NIG_INT_STS_0, (val == 0x300),
+                  IDLE_CHK_WARNING,
+                  "NIG: Access to BMAC while not active. If tested on FPGA,"
+                  " ignore this warning.");
+       IDLE_CHK_1(0x3, NIG_REG_NIG_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "NIG: interrupt status 1 is not 0");
+       IDLE_CHK_1(0x2, NIG_REG_NIG_PRTY_STS, ((val & ~0xffc00000) != 0),
+                  IDLE_CHK_WARNING, "NIG: parity status is not 0");
+
+       IDLE_CHK_1(0x3, TSEM_REG_TSEM_INT_STS_0, ((val & ~0x10000000) != 0),
+                  IDLE_CHK_ERROR, "TSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, TSEM_REG_TSEM_INT_STS_0, (val == 0x10000000),
+                  IDLE_CHK_WARNING, "TSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, TSEM_REG_TSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "TSEM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, CSEM_REG_CSEM_INT_STS_0, ((val & ~0x10000000) != 0),
+                  IDLE_CHK_ERROR, "CSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, CSEM_REG_CSEM_INT_STS_0, (val == 0x10000000),
+                  IDLE_CHK_WARNING, "CSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, CSEM_REG_CSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "CSEM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, USEM_REG_USEM_INT_STS_0, ((val & ~0x10000000) != 0),
+                  IDLE_CHK_ERROR, "USEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, USEM_REG_USEM_INT_STS_0, (val == 0x10000000),
+                  IDLE_CHK_WARNING, "USEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, USEM_REG_USEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "USEM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, XSEM_REG_XSEM_INT_STS_0, ((val & ~0x10000000) != 0),
+                  IDLE_CHK_ERROR, "XSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, XSEM_REG_XSEM_INT_STS_0, (val == 0x10000000),
+                  IDLE_CHK_WARNING, "XSEM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, XSEM_REG_XSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "XSEM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, TSDM_REG_TSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR,
+                  "TSDM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, TSDM_REG_TSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "TSDM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, CSDM_REG_CSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR,
+                  "CSDM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, CSDM_REG_CSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "CSDM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, USDM_REG_USDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR,
+                  "USDM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, USDM_REG_USDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "USDM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x3, XSDM_REG_XSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR,
+                  "XSDM: interrupt status 0 is not 0");
+       IDLE_CHK_1(0x3, XSDM_REG_XSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR,
+                  "XSDM: interrupt status 1 is not 0");
+
+       IDLE_CHK_1(0x2, HC_REG_HC_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "HC: parity status is not 0");
+       IDLE_CHK_1(0x2, MISC_REG_MISC_PRTY_STS, (val != 0), IDLE_CHK_WARNING,
+                  "MISC: parity status is not 0");
+       IDLE_CHK_1(0x2, SRC_REG_SRC_PRTY_STS, (val  != 0), IDLE_CHK_WARNING,
+                  "SRCH: parity status is not 0");
+
+       if (idle_chk_errors == 0) {
+               BNX2X_DBG_ERR("completed successfully (with %d warnings)\n",
+                             idle_chk_warnings);
+       } else {
+               BNX2X_DBG_ERR("failed (with %d errors, %d warnings)\n",
+                             idle_chk_errors, idle_chk_warnings);
+       }
+       return idle_chk_errors;
+}
+