Index: stable/7/sys/cddl/contrib/opensolaris =================================================================== --- stable/7/sys/cddl/contrib/opensolaris (revision 206680) +++ stable/7/sys/cddl/contrib/opensolaris (revision 206681) Property changes on: stable/7/sys/cddl/contrib/opensolaris ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/cddl/contrib/opensolaris:r205300 Index: stable/7/sys/contrib/dev/acpica =================================================================== --- stable/7/sys/contrib/dev/acpica (revision 206680) +++ stable/7/sys/contrib/dev/acpica (revision 206681) Property changes on: stable/7/sys/contrib/dev/acpica ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/contrib/dev/acpica:r205300 Index: stable/7/sys/contrib/pf =================================================================== --- stable/7/sys/contrib/pf (revision 206680) +++ stable/7/sys/contrib/pf (revision 206681) Property changes on: stable/7/sys/contrib/pf ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/contrib/pf:r205300 Index: stable/7/sys/dev/bce/if_bce.c =================================================================== --- stable/7/sys/dev/bce/if_bce.c (revision 206680) +++ stable/7/sys/dev/bce/if_bce.c (revision 206681) @@ -1,10563 +1,10475 @@ /*- - * Copyright (c) 2006-2009 Broadcom Corporation + * Copyright (c) 2006-2010 Broadcom Corporation * David Christensen . All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Broadcom Corporation nor the name of its contributors * may be used to endorse or promote products derived from this software * without specific prior written consent. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ #include __FBSDID("$FreeBSD$"); /* * The following controllers are supported by this driver: * BCM5706C A2, A3 * BCM5706S A2, A3 * BCM5708C B1, B2 * BCM5708S B1, B2 * BCM5709C A1, C0 + * BCM5709S A1, C0 * BCM5716C C0 + * BCM5716S C0 * * The following controllers are not supported by this driver: * BCM5706C A0, A1 (pre-production) * BCM5706S A0, A1 (pre-production) * BCM5708C A0, B0 (pre-production) * BCM5708S A0, B0 (pre-production) * BCM5709C A0 B0, B1, B2 (pre-production) - * BCM5709S A0, A1, B0, B1, B2, C0 (pre-production) + * BCM5709S A0, B0, B1, B2 (pre-production) */ #include "opt_bce.h" #include #include /****************************************************************************/ /* BCE Debug Options */ /****************************************************************************/ #ifdef BCE_DEBUG u32 bce_debug = BCE_WARN; /* 0 = Never */ /* 1 = 1 in 2,147,483,648 */ /* 256 = 1 in 8,388,608 */ /* 2048 = 1 in 1,048,576 */ /* 65536 = 1 in 32,768 */ /* 1048576 = 1 in 2,048 */ /* 268435456 = 1 in 8 */ /* 536870912 = 1 in 4 */ /* 1073741824 = 1 in 2 */ /* Controls how often the l2_fhdr frame error check will fail. */ int l2fhdr_error_sim_control = 0; /* Controls how often the unexpected attention check will fail. */ int unexpected_attention_sim_control = 0; /* Controls how often to simulate an mbuf allocation failure. */ int mbuf_alloc_failed_sim_control = 0; /* Controls how often to simulate a DMA mapping failure. */ int dma_map_addr_failed_sim_control = 0; /* Controls how often to simulate a bootcode failure. */ int bootcode_running_failure_sim_control = 0; #endif /****************************************************************************/ /* BCE Build Time Options */ /****************************************************************************/ /* #define BCE_NVRAM_WRITE_SUPPORT 1 */ /****************************************************************************/ /* PCI Device ID Table */ /* */ /* Used by bce_probe() to identify the devices supported by this driver. */ /****************************************************************************/ #define BCE_DEVDESC_MAX 64 static struct bce_type bce_devs[] = { /* BCM5706C Controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3101, "HP NC370T Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3106, "HP NC370i Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x3070, "HP NC380T PCIe DP Multifunc Gig Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, HP_VENDORID, 0x1709, "HP NC371i Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5706, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5706 1000Base-T" }, /* BCM5706S controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5706S, HP_VENDORID, 0x3102, "HP NC370F Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5706S, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5706 1000Base-SX" }, /* BCM5708C controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7037, "HP NC373T PCIe Multifunction Gig Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7038, "HP NC373i Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, HP_VENDORID, 0x7045, "HP NC374m PCIe Multifunction Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5708 1000Base-T" }, /* BCM5708S controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x1706, "HP NC373m Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x703b, "HP NC373i Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, HP_VENDORID, 0x703d, "HP NC373F PCIe Multifunc Giga Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5708S, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5708 1000Base-SX" }, /* BCM5709C controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, HP_VENDORID, 0x7055, "HP NC382i DP Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, HP_VENDORID, 0x7059, "HP NC382T PCIe DP Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5709, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5709 1000Base-T" }, /* BCM5709S controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, HP_VENDORID, 0x171d, "HP NC382m DP 1GbE Multifunction BL-c Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, HP_VENDORID, 0x7056, "HP NC382i DP Multifunction Gigabit Server Adapter" }, { BRCM_VENDORID, BRCM_DEVICEID_BCM5709S, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5709 1000Base-SX" }, /* BCM5716 controllers and OEM boards. */ { BRCM_VENDORID, BRCM_DEVICEID_BCM5716, PCI_ANY_ID, PCI_ANY_ID, "Broadcom NetXtreme II BCM5716 1000Base-T" }, { 0, 0, 0, 0, NULL } }; /****************************************************************************/ /* Supported Flash NVRAM device data. */ /****************************************************************************/ static struct flash_spec flash_table[] = { #define BUFFERED_FLAGS (BCE_NV_BUFFERED | BCE_NV_TRANSLATE) #define NONBUFFERED_FLAGS (BCE_NV_WREN) /* Slow EEPROM */ {0x00000000, 0x40830380, 0x009f0081, 0xa184a053, 0xaf000400, BUFFERED_FLAGS, SEEPROM_PAGE_BITS, SEEPROM_PAGE_SIZE, SEEPROM_BYTE_ADDR_MASK, SEEPROM_TOTAL_SIZE, "EEPROM - slow"}, /* Expansion entry 0001 */ {0x08000002, 0x4b808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 0001"}, /* Saifun SA25F010 (non-buffered flash) */ /* strap, cfg1, & write1 need updates */ {0x04000001, 0x47808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE*2, "Non-buffered flash (128kB)"}, /* Saifun SA25F020 (non-buffered flash) */ /* strap, cfg1, & write1 need updates */ {0x0c000003, 0x4f808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE*4, "Non-buffered flash (256kB)"}, /* Expansion entry 0100 */ {0x11000000, 0x53808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 0100"}, /* Entry 0101: ST M45PE10 (non-buffered flash, TetonII B0) */ {0x19000002, 0x5b808201, 0x000500db, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, ST_MICRO_FLASH_PAGE_BITS, ST_MICRO_FLASH_PAGE_SIZE, ST_MICRO_FLASH_BYTE_ADDR_MASK, ST_MICRO_FLASH_BASE_TOTAL_SIZE*2, "Entry 0101: ST M45PE10 (128kB non-bufferred)"}, /* Entry 0110: ST M45PE20 (non-buffered flash)*/ {0x15000001, 0x57808201, 0x000500db, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, ST_MICRO_FLASH_PAGE_BITS, ST_MICRO_FLASH_PAGE_SIZE, ST_MICRO_FLASH_BYTE_ADDR_MASK, ST_MICRO_FLASH_BASE_TOTAL_SIZE*4, "Entry 0110: ST M45PE20 (256kB non-bufferred)"}, /* Saifun SA25F005 (non-buffered flash) */ /* strap, cfg1, & write1 need updates */ {0x1d000003, 0x5f808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, SAIFUN_FLASH_BASE_TOTAL_SIZE, "Non-buffered flash (64kB)"}, /* Fast EEPROM */ {0x22000000, 0x62808380, 0x009f0081, 0xa184a053, 0xaf000400, BUFFERED_FLAGS, SEEPROM_PAGE_BITS, SEEPROM_PAGE_SIZE, SEEPROM_BYTE_ADDR_MASK, SEEPROM_TOTAL_SIZE, "EEPROM - fast"}, /* Expansion entry 1001 */ {0x2a000002, 0x6b808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 1001"}, /* Expansion entry 1010 */ {0x26000001, 0x67808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 1010"}, /* ATMEL AT45DB011B (buffered flash) */ {0x2e000003, 0x6e808273, 0x00570081, 0x68848353, 0xaf000400, BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, BUFFERED_FLASH_BYTE_ADDR_MASK, BUFFERED_FLASH_TOTAL_SIZE, "Buffered flash (128kB)"}, /* Expansion entry 1100 */ {0x33000000, 0x73808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 1100"}, /* Expansion entry 1101 */ {0x3b000002, 0x7b808201, 0x00050081, 0x03840253, 0xaf020406, NONBUFFERED_FLAGS, SAIFUN_FLASH_PAGE_BITS, SAIFUN_FLASH_PAGE_SIZE, SAIFUN_FLASH_BYTE_ADDR_MASK, 0, "Entry 1101"}, /* Ateml Expansion entry 1110 */ {0x37000001, 0x76808273, 0x00570081, 0x68848353, 0xaf000400, BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, BUFFERED_FLASH_BYTE_ADDR_MASK, 0, "Entry 1110 (Atmel)"}, /* ATMEL AT45DB021B (buffered flash) */ {0x3f000003, 0x7e808273, 0x00570081, 0x68848353, 0xaf000400, BUFFERED_FLAGS, BUFFERED_FLASH_PAGE_BITS, BUFFERED_FLASH_PAGE_SIZE, BUFFERED_FLASH_BYTE_ADDR_MASK, BUFFERED_FLASH_TOTAL_SIZE*2, "Buffered flash (256kB)"}, }; /* * The BCM5709 controllers transparently handle the * differences between Atmel 264 byte pages and all * flash devices which use 256 byte pages, so no * logical-to-physical mapping is required in the * driver. */ static struct flash_spec flash_5709 = { .flags = BCE_NV_BUFFERED, .page_bits = BCM5709_FLASH_PAGE_BITS, .page_size = BCM5709_FLASH_PAGE_SIZE, .addr_mask = BCM5709_FLASH_BYTE_ADDR_MASK, .total_size = BUFFERED_FLASH_TOTAL_SIZE * 2, .name = "5709/5716 buffered flash (256kB)", }; /****************************************************************************/ /* FreeBSD device entry points. */ /****************************************************************************/ static int bce_probe (device_t); static int bce_attach (device_t); static int bce_detach (device_t); static int bce_shutdown (device_t); /****************************************************************************/ /* BCE Debug Data Structure Dump Routines */ /****************************************************************************/ #ifdef BCE_DEBUG static u32 bce_reg_rd (struct bce_softc *, u32); static void bce_reg_wr (struct bce_softc *, u32, u32); static void bce_reg_wr16 (struct bce_softc *, u32, u16); static u32 bce_ctx_rd (struct bce_softc *, u32, u32); static void bce_dump_enet (struct bce_softc *, struct mbuf *); static void bce_dump_mbuf (struct bce_softc *, struct mbuf *); static void bce_dump_tx_mbuf_chain (struct bce_softc *, u16, int); static void bce_dump_rx_mbuf_chain (struct bce_softc *, u16, int); #ifdef BCE_JUMBO_HDRSPLIT static void bce_dump_pg_mbuf_chain (struct bce_softc *, u16, int); #endif static void bce_dump_txbd (struct bce_softc *, int, struct tx_bd *); static void bce_dump_rxbd (struct bce_softc *, int, struct rx_bd *); #ifdef BCE_JUMBO_HDRSPLIT static void bce_dump_pgbd (struct bce_softc *, int, struct rx_bd *); #endif static void bce_dump_l2fhdr (struct bce_softc *, int, struct l2_fhdr *); static void bce_dump_ctx (struct bce_softc *, u16); static void bce_dump_ftqs (struct bce_softc *); static void bce_dump_tx_chain (struct bce_softc *, u16, int); static void bce_dump_rx_chain (struct bce_softc *, u16, int); #ifdef BCE_JUMBO_HDRSPLIT static void bce_dump_pg_chain (struct bce_softc *, u16, int); #endif static void bce_dump_status_block (struct bce_softc *); static void bce_dump_stats_block (struct bce_softc *); static void bce_dump_driver_state (struct bce_softc *); static void bce_dump_hw_state (struct bce_softc *); static void bce_dump_mq_regs (struct bce_softc *); static void bce_dump_bc_state (struct bce_softc *); static void bce_dump_txp_state (struct bce_softc *, int); static void bce_dump_rxp_state (struct bce_softc *, int); static void bce_dump_tpat_state (struct bce_softc *, int); static void bce_dump_cp_state (struct bce_softc *, int); static void bce_dump_com_state (struct bce_softc *, int); +static void bce_dump_rv2p_state (struct bce_softc *); static void bce_breakpoint (struct bce_softc *); #endif /****************************************************************************/ /* BCE Register/Memory Access Routines */ /****************************************************************************/ static u32 bce_reg_rd_ind (struct bce_softc *, u32); static void bce_reg_wr_ind (struct bce_softc *, u32, u32); static void bce_shmem_wr (struct bce_softc *, u32, u32); static u32 bce_shmem_rd (struct bce_softc *, u32); static void bce_ctx_wr (struct bce_softc *, u32, u32, u32); static int bce_miibus_read_reg (device_t, int, int); static int bce_miibus_write_reg (device_t, int, int, int); static void bce_miibus_statchg (device_t); /****************************************************************************/ /* BCE NVRAM Access Routines */ /****************************************************************************/ static int bce_acquire_nvram_lock (struct bce_softc *); static int bce_release_nvram_lock (struct bce_softc *); static void bce_enable_nvram_access (struct bce_softc *); static void bce_disable_nvram_access(struct bce_softc *); static int bce_nvram_read_dword (struct bce_softc *, u32, u8 *, u32); static int bce_init_nvram (struct bce_softc *); static int bce_nvram_read (struct bce_softc *, u32, u8 *, int); static int bce_nvram_test (struct bce_softc *); #ifdef BCE_NVRAM_WRITE_SUPPORT static int bce_enable_nvram_write (struct bce_softc *); static void bce_disable_nvram_write (struct bce_softc *); static int bce_nvram_erase_page (struct bce_softc *, u32); static int bce_nvram_write_dword (struct bce_softc *, u32, u8 *, u32); static int bce_nvram_write (struct bce_softc *, u32, u8 *, int); #endif /****************************************************************************/ /* */ /****************************************************************************/ static void bce_get_media (struct bce_softc *); +static void bce_init_media (struct bce_softc *); static void bce_dma_map_addr (void *, bus_dma_segment_t *, int, int); static int bce_dma_alloc (device_t); static void bce_dma_free (struct bce_softc *); static void bce_release_resources (struct bce_softc *); /****************************************************************************/ /* BCE Firmware Synchronization and Load */ /****************************************************************************/ static int bce_fw_sync (struct bce_softc *, u32); static void bce_load_rv2p_fw (struct bce_softc *, u32 *, u32, u32); static void bce_load_cpu_fw (struct bce_softc *, struct cpu_reg *, struct fw_info *); static void bce_start_cpu (struct bce_softc *, struct cpu_reg *); static void bce_halt_cpu (struct bce_softc *, struct cpu_reg *); static void bce_start_rxp_cpu (struct bce_softc *); static void bce_init_rxp_cpu (struct bce_softc *); static void bce_init_txp_cpu (struct bce_softc *); static void bce_init_tpat_cpu (struct bce_softc *); static void bce_init_cp_cpu (struct bce_softc *); static void bce_init_com_cpu (struct bce_softc *); static void bce_init_cpus (struct bce_softc *); static void bce_print_adapter_info (struct bce_softc *); static void bce_probe_pci_caps (device_t, struct bce_softc *); static void bce_stop (struct bce_softc *); static int bce_reset (struct bce_softc *, u32); static int bce_chipinit (struct bce_softc *); static int bce_blockinit (struct bce_softc *); static int bce_init_tx_chain (struct bce_softc *); static void bce_free_tx_chain (struct bce_softc *); static int bce_get_rx_buf (struct bce_softc *, struct mbuf *, u16 *, u16 *, u32 *); static int bce_init_rx_chain (struct bce_softc *); static void bce_fill_rx_chain (struct bce_softc *); static void bce_free_rx_chain (struct bce_softc *); #ifdef BCE_JUMBO_HDRSPLIT static int bce_get_pg_buf (struct bce_softc *, struct mbuf *, u16 *, u16 *); static int bce_init_pg_chain (struct bce_softc *); static void bce_fill_pg_chain (struct bce_softc *); static void bce_free_pg_chain (struct bce_softc *); #endif static struct mbuf *bce_tso_setup (struct bce_softc *, struct mbuf **, u16 *); static int bce_tx_encap (struct bce_softc *, struct mbuf **); static void bce_start_locked (struct ifnet *); static void bce_start (struct ifnet *); static int bce_ioctl (struct ifnet *, u_long, caddr_t); static void bce_watchdog (struct bce_softc *); static int bce_ifmedia_upd (struct ifnet *); static void bce_ifmedia_upd_locked (struct ifnet *); static void bce_ifmedia_sts (struct ifnet *, struct ifmediareq *); static void bce_init_locked (struct bce_softc *); static void bce_init (void *); static void bce_mgmt_init_locked (struct bce_softc *sc); static void bce_init_ctx (struct bce_softc *); static void bce_get_mac_addr (struct bce_softc *); static void bce_set_mac_addr (struct bce_softc *); static void bce_phy_intr (struct bce_softc *); static inline u16 bce_get_hw_rx_cons(struct bce_softc *); static void bce_rx_intr (struct bce_softc *); static void bce_tx_intr (struct bce_softc *); static void bce_disable_intr (struct bce_softc *); static void bce_enable_intr (struct bce_softc *, int); static void bce_intr (void *); static void bce_set_rx_mode (struct bce_softc *); static void bce_stats_update (struct bce_softc *); static void bce_tick (void *); static void bce_pulse (void *); static void bce_add_sysctls (struct bce_softc *); /****************************************************************************/ /* FreeBSD device dispatch table. */ /****************************************************************************/ static device_method_t bce_methods[] = { /* Device interface (device_if.h) */ DEVMETHOD(device_probe, bce_probe), DEVMETHOD(device_attach, bce_attach), DEVMETHOD(device_detach, bce_detach), DEVMETHOD(device_shutdown, bce_shutdown), /* Supported by device interface but not used here. */ /* DEVMETHOD(device_identify, bce_identify), */ /* DEVMETHOD(device_suspend, bce_suspend), */ /* DEVMETHOD(device_resume, bce_resume), */ /* DEVMETHOD(device_quiesce, bce_quiesce), */ /* Bus interface (bus_if.h) */ DEVMETHOD(bus_print_child, bus_generic_print_child), DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface (miibus_if.h) */ DEVMETHOD(miibus_readreg, bce_miibus_read_reg), DEVMETHOD(miibus_writereg, bce_miibus_write_reg), DEVMETHOD(miibus_statchg, bce_miibus_statchg), /* Supported by MII interface but not used here. */ /* DEVMETHOD(miibus_linkchg, bce_miibus_linkchg), */ /* DEVMETHOD(miibus_mediainit, bce_miibus_mediainit), */ { 0, 0 } }; static driver_t bce_driver = { "bce", bce_methods, sizeof(struct bce_softc) }; static devclass_t bce_devclass; MODULE_DEPEND(bce, pci, 1, 1, 1); MODULE_DEPEND(bce, ether, 1, 1, 1); MODULE_DEPEND(bce, miibus, 1, 1, 1); DRIVER_MODULE(bce, pci, bce_driver, bce_devclass, 0, 0); DRIVER_MODULE(miibus, bce, miibus_driver, miibus_devclass, 0, 0); /****************************************************************************/ /* Tunable device values */ /****************************************************************************/ SYSCTL_NODE(_hw, OID_AUTO, bce, CTLFLAG_RD, 0, "bce driver parameters"); /* Allowable values are TRUE or FALSE */ static int bce_tso_enable = TRUE; TUNABLE_INT("hw.bce.tso_enable", &bce_tso_enable); SYSCTL_UINT(_hw_bce, OID_AUTO, tso_enable, CTLFLAG_RDTUN, &bce_tso_enable, 0, "TSO Enable/Disable"); /* Allowable values are 0 (IRQ), 1 (MSI/IRQ), and 2 (MSI-X/MSI/IRQ) */ /* ToDo: Add MSI-X support. */ static int bce_msi_enable = 1; TUNABLE_INT("hw.bce.msi_enable", &bce_msi_enable); SYSCTL_UINT(_hw_bce, OID_AUTO, msi_enable, CTLFLAG_RDTUN, &bce_msi_enable, 0, "MSI-X|MSI|INTx selector"); /* ToDo: Add tunable to enable/disable strict MTU handling. */ /* Currently allows "loose" RX MTU checking (i.e. sets the */ /* H/W RX MTU to the size of the largest receive buffer, or */ /* 2048 bytes). This will cause a UNH failure but is more */ /* desireable from a functional perspective. */ /****************************************************************************/ /* Device probe function. */ /* */ /* Compares the device to the driver's list of supported devices and */ /* reports back to the OS whether this is the right driver for the device. */ /* */ /* Returns: */ /* BUS_PROBE_DEFAULT on success, positive value on failure. */ /****************************************************************************/ static int bce_probe(device_t dev) { struct bce_type *t; struct bce_softc *sc; char *descbuf; u16 vid = 0, did = 0, svid = 0, sdid = 0; t = bce_devs; sc = device_get_softc(dev); bzero(sc, sizeof(struct bce_softc)); sc->bce_unit = device_get_unit(dev); sc->bce_dev = dev; /* Get the data for the device to be probed. */ vid = pci_get_vendor(dev); did = pci_get_device(dev); svid = pci_get_subvendor(dev); sdid = pci_get_subdevice(dev); DBPRINT(sc, BCE_EXTREME_LOAD, "%s(); VID = 0x%04X, DID = 0x%04X, SVID = 0x%04X, " "SDID = 0x%04X\n", __FUNCTION__, vid, did, svid, sdid); /* Look through the list of known devices for a match. */ while(t->bce_name != NULL) { if ((vid == t->bce_vid) && (did == t->bce_did) && ((svid == t->bce_svid) || (t->bce_svid == PCI_ANY_ID)) && ((sdid == t->bce_sdid) || (t->bce_sdid == PCI_ANY_ID))) { descbuf = malloc(BCE_DEVDESC_MAX, M_TEMP, M_NOWAIT); if (descbuf == NULL) return(ENOMEM); /* Print out the device identity. */ snprintf(descbuf, BCE_DEVDESC_MAX, "%s (%c%d)", t->bce_name, (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'), (pci_read_config(dev, PCIR_REVID, 4) & 0xf)); device_set_desc_copy(dev, descbuf); free(descbuf, M_TEMP); return(BUS_PROBE_DEFAULT); } t++; } return(ENXIO); } /****************************************************************************/ /* PCI Capabilities Probe Function. */ /* */ /* Walks the PCI capabiites list for the device to find what features are */ /* supported. */ /* */ /* Returns: */ /* None. */ /****************************************************************************/ static void bce_print_adapter_info(struct bce_softc *sc) { int i = 0; DBENTER(BCE_VERBOSE_LOAD); BCE_PRINTF("ASIC (0x%08X); ", sc->bce_chipid); printf("Rev (%c%d); ", ((BCE_CHIP_ID(sc) & 0xf000) >> 12) + 'A', ((BCE_CHIP_ID(sc) & 0x0ff0) >> 4)); /* Bus info. */ if (sc->bce_flags & BCE_PCIE_FLAG) { printf("Bus (PCIe x%d, ", sc->link_width); switch (sc->link_speed) { case 1: printf("2.5Gbps); "); break; case 2: printf("5Gbps); "); break; default: printf("Unknown link speed); "); } } else { printf("Bus (PCI%s, %s, %dMHz); ", ((sc->bce_flags & BCE_PCIX_FLAG) ? "-X" : ""), ((sc->bce_flags & BCE_PCI_32BIT_FLAG) ? "32-bit" : "64-bit"), sc->bus_speed_mhz); } /* Firmware version and device features. */ printf("B/C (%s); Flags (", sc->bce_bc_ver); #ifdef BCE_JUMBO_HDRSPLIT printf("SPLT"); i++; #endif if (sc->bce_flags & BCE_USING_MSI_FLAG) { if (i > 0) printf("|"); printf("MSI"); i++; } if (sc->bce_flags & BCE_USING_MSIX_FLAG) { if (i > 0) printf("|"); printf("MSI-X"); i++; } if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) { if (i > 0) printf("|"); printf("2.5G"); i++; } if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { if (i > 0) printf("|"); printf("MFW); MFW (%s)\n", sc->bce_mfw_ver); } else { printf(")\n"); } DBEXIT(BCE_VERBOSE_LOAD); } /****************************************************************************/ /* PCI Capabilities Probe Function. */ /* */ /* Walks the PCI capabiites list for the device to find what features are */ /* supported. */ /* */ /* Returns: */ /* None. */ /****************************************************************************/ static void bce_probe_pci_caps(device_t dev, struct bce_softc *sc) { u32 reg; DBENTER(BCE_VERBOSE_LOAD); /* Check if PCI-X capability is enabled. */ if (pci_find_extcap(dev, PCIY_PCIX, ®) == 0) { if (reg != 0) sc->bce_cap_flags |= BCE_PCIX_CAPABLE_FLAG; } /* Check if PCIe capability is enabled. */ if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) { if (reg != 0) { u16 link_status = pci_read_config(dev, reg + 0x12, 2); DBPRINT(sc, BCE_INFO_LOAD, "PCIe link_status = 0x%08X\n", link_status); sc->link_speed = link_status & 0xf; sc->link_width = (link_status >> 4) & 0x3f; sc->bce_cap_flags |= BCE_PCIE_CAPABLE_FLAG; sc->bce_flags |= BCE_PCIE_FLAG; } } /* Check if MSI capability is enabled. */ if (pci_find_extcap(dev, PCIY_MSI, ®) == 0) { if (reg != 0) sc->bce_cap_flags |= BCE_MSI_CAPABLE_FLAG; } /* Check if MSI-X capability is enabled. */ if (pci_find_extcap(dev, PCIY_MSIX, ®) == 0) { if (reg != 0) sc->bce_cap_flags |= BCE_MSIX_CAPABLE_FLAG; } DBEXIT(BCE_VERBOSE_LOAD); } /****************************************************************************/ /* Device attach function. */ /* */ /* Allocates device resources, performs secondary chip identification, */ /* resets and initializes the hardware, and initializes driver instance */ /* variables. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_attach(device_t dev) { struct bce_softc *sc; struct ifnet *ifp; u32 val; int error, rid, rc = 0; sc = device_get_softc(dev); sc->bce_dev = dev; DBENTER(BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); sc->bce_unit = device_get_unit(dev); /* Set initial device and PHY flags */ sc->bce_flags = 0; sc->bce_phy_flags = 0; pci_enable_busmaster(dev); /* Allocate PCI memory resources. */ rid = PCIR_BAR(0); sc->bce_res_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE | PCI_RF_DENSE); if (sc->bce_res_mem == NULL) { BCE_PRINTF("%s(%d): PCI memory allocation failed\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Get various resource handles. */ sc->bce_btag = rman_get_bustag(sc->bce_res_mem); sc->bce_bhandle = rman_get_bushandle(sc->bce_res_mem); sc->bce_vhandle = (vm_offset_t) rman_get_virtual(sc->bce_res_mem); bce_probe_pci_caps(dev, sc); rid = 1; #if 0 /* Try allocating MSI-X interrupts. */ if ((sc->bce_cap_flags & BCE_MSIX_CAPABLE_FLAG) && (bce_msi_enable >= 2) && ((sc->bce_res_irq = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE)) != NULL)) { msi_needed = sc->bce_msi_count = 1; if (((error = pci_alloc_msix(dev, &sc->bce_msi_count)) != 0) || (sc->bce_msi_count != msi_needed)) { BCE_PRINTF("%s(%d): MSI-X allocation failed! Requested = %d," "Received = %d, error = %d\n", __FILE__, __LINE__, msi_needed, sc->bce_msi_count, error); sc->bce_msi_count = 0; pci_release_msi(dev); bus_release_resource(dev, SYS_RES_MEMORY, rid, sc->bce_res_irq); sc->bce_res_irq = NULL; } else { DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using MSI-X interrupt.\n", __FUNCTION__); sc->bce_flags |= BCE_USING_MSIX_FLAG; sc->bce_intr = bce_intr; } } #endif /* Try allocating a MSI interrupt. */ if ((sc->bce_cap_flags & BCE_MSI_CAPABLE_FLAG) && (bce_msi_enable >= 1) && (sc->bce_msi_count == 0)) { sc->bce_msi_count = 1; if ((error = pci_alloc_msi(dev, &sc->bce_msi_count)) != 0) { BCE_PRINTF("%s(%d): MSI allocation failed! error = %d\n", __FILE__, __LINE__, error); sc->bce_msi_count = 0; pci_release_msi(dev); } else { DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using MSI interrupt.\n", __FUNCTION__); sc->bce_flags |= BCE_USING_MSI_FLAG; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) sc->bce_flags |= BCE_ONE_SHOT_MSI_FLAG; sc->bce_irq_rid = 1; sc->bce_intr = bce_intr; } } /* Try allocating a legacy interrupt. */ if (sc->bce_msi_count == 0) { DBPRINT(sc, BCE_INFO_LOAD, "%s(): Using INTx interrupt.\n", __FUNCTION__); rid = 0; sc->bce_intr = bce_intr; } sc->bce_res_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_SHAREABLE | RF_ACTIVE); sc->bce_irq_rid = rid; /* Report any IRQ allocation errors. */ if (sc->bce_res_irq == NULL) { BCE_PRINTF("%s(%d): PCI map interrupt failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Initialize mutex for the current device instance. */ BCE_LOCK_INIT(sc, device_get_nameunit(dev)); /* * Configure byte swap and enable indirect register access. * Rely on CPU to do target byte swapping on big endian systems. * Access to registers outside of PCI configurtion space are not * valid until this is done. */ pci_write_config(dev, BCE_PCICFG_MISC_CONFIG, BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP, 4); /* Save ASIC revsion info. */ sc->bce_chipid = REG_RD(sc, BCE_MISC_ID); /* Weed out any non-production controller revisions. */ switch(BCE_CHIP_ID(sc)) { case BCE_CHIP_ID_5706_A0: case BCE_CHIP_ID_5706_A1: case BCE_CHIP_ID_5708_A0: case BCE_CHIP_ID_5708_B0: case BCE_CHIP_ID_5709_A0: case BCE_CHIP_ID_5709_B0: case BCE_CHIP_ID_5709_B1: case BCE_CHIP_ID_5709_B2: BCE_PRINTF("%s(%d): Unsupported controller revision (%c%d)!\n", __FILE__, __LINE__, (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'), (pci_read_config(dev, PCIR_REVID, 4) & 0xf)); rc = ENODEV; goto bce_attach_fail; } /* * The embedded PCIe to PCI-X bridge (EPB) * in the 5708 cannot address memory above * 40 bits (E7_5708CB1_23043 & E6_5708SB1_23043). */ if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708) sc->max_bus_addr = BCE_BUS_SPACE_MAXADDR; else sc->max_bus_addr = BUS_SPACE_MAXADDR; /* * Find the base address for shared memory access. * Newer versions of bootcode use a signature and offset * while older versions use a fixed address. */ val = REG_RD_IND(sc, BCE_SHM_HDR_SIGNATURE); if ((val & BCE_SHM_HDR_SIGNATURE_SIG_MASK) == BCE_SHM_HDR_SIGNATURE_SIG) /* Multi-port devices use different offsets in shared memory. */ sc->bce_shmem_base = REG_RD_IND(sc, BCE_SHM_HDR_ADDR_0 + (pci_get_function(sc->bce_dev) << 2)); else sc->bce_shmem_base = HOST_VIEW_SHMEM_BASE; DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "%s(): bce_shmem_base = 0x%08X\n", __FUNCTION__, sc->bce_shmem_base); /* Fetch the bootcode revision. */ val = bce_shmem_rd(sc, BCE_DEV_INFO_BC_REV); for (int i = 0, j = 0; i < 3; i++) { u8 num; num = (u8) (val >> (24 - (i * 8))); for (int k = 100, skip0 = 1; k >= 1; num %= k, k /= 10) { if (num >= k || !skip0 || k == 1) { sc->bce_bc_ver[j++] = (num / k) + '0'; skip0 = 0; } } if (i != 2) sc->bce_bc_ver[j++] = '.'; } /* Check if any management firwmare is running. */ val = bce_shmem_rd(sc, BCE_PORT_FEATURE); if (val & BCE_PORT_FEATURE_ASF_ENABLED) { sc->bce_flags |= BCE_MFW_ENABLE_FLAG; /* Allow time for firmware to enter the running state. */ for (int i = 0; i < 30; i++) { val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); if (val & BCE_CONDITION_MFW_RUN_MASK) break; DELAY(10000); } } /* Check the current bootcode state. */ val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); val &= BCE_CONDITION_MFW_RUN_MASK; if (val != BCE_CONDITION_MFW_RUN_UNKNOWN && val != BCE_CONDITION_MFW_RUN_NONE) { u32 addr = bce_shmem_rd(sc, BCE_MFW_VER_PTR); int i = 0; for (int j = 0; j < 3; j++) { val = bce_reg_rd_ind(sc, addr + j * 4); val = bswap32(val); memcpy(&sc->bce_mfw_ver[i], &val, 4); i += 4; } } /* Get PCI bus information (speed and type). */ val = REG_RD(sc, BCE_PCICFG_MISC_STATUS); if (val & BCE_PCICFG_MISC_STATUS_PCIX_DET) { u32 clkreg; sc->bce_flags |= BCE_PCIX_FLAG; clkreg = REG_RD(sc, BCE_PCICFG_PCI_CLOCK_CONTROL_BITS); clkreg &= BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET; switch (clkreg) { case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_133MHZ: sc->bus_speed_mhz = 133; break; case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_95MHZ: sc->bus_speed_mhz = 100; break; case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_66MHZ: case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_80MHZ: sc->bus_speed_mhz = 66; break; case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_48MHZ: case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_55MHZ: sc->bus_speed_mhz = 50; break; case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_LOW: case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_32MHZ: case BCE_PCICFG_PCI_CLOCK_CONTROL_BITS_PCI_CLK_SPD_DET_38MHZ: sc->bus_speed_mhz = 33; break; } } else { if (val & BCE_PCICFG_MISC_STATUS_M66EN) sc->bus_speed_mhz = 66; else sc->bus_speed_mhz = 33; } if (val & BCE_PCICFG_MISC_STATUS_32BIT_DET) sc->bce_flags |= BCE_PCI_32BIT_FLAG; /* Reset the controller and announce to bootcode that driver is present. */ if (bce_reset(sc, BCE_DRV_MSG_CODE_RESET)) { BCE_PRINTF("%s(%d): Controller reset failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Initialize the controller. */ if (bce_chipinit(sc)) { BCE_PRINTF("%s(%d): Controller initialization failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Perform NVRAM test. */ if (bce_nvram_test(sc)) { BCE_PRINTF("%s(%d): NVRAM test failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Fetch the permanent Ethernet MAC address. */ bce_get_mac_addr(sc); /* * Trip points control how many BDs * should be ready before generating an * interrupt while ticks control how long * a BD can sit in the chain before * generating an interrupt. Set the default * values for the RX and TX chains. */ #ifdef BCE_DEBUG /* Force more frequent interrupts. */ sc->bce_tx_quick_cons_trip_int = 1; sc->bce_tx_quick_cons_trip = 1; sc->bce_tx_ticks_int = 0; sc->bce_tx_ticks = 0; sc->bce_rx_quick_cons_trip_int = 1; sc->bce_rx_quick_cons_trip = 1; sc->bce_rx_ticks_int = 0; sc->bce_rx_ticks = 0; #else /* Improve throughput at the expense of increased latency. */ sc->bce_tx_quick_cons_trip_int = 20; sc->bce_tx_quick_cons_trip = 20; sc->bce_tx_ticks_int = 80; sc->bce_tx_ticks = 80; sc->bce_rx_quick_cons_trip_int = 6; sc->bce_rx_quick_cons_trip = 6; sc->bce_rx_ticks_int = 18; sc->bce_rx_ticks = 18; #endif /* Update statistics once every second. */ sc->bce_stats_ticks = 1000000 & 0xffff00; /* Find the media type for the adapter. */ bce_get_media(sc); /* Store data needed by PHY driver for backplane applications */ sc->bce_shared_hw_cfg = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG); sc->bce_port_hw_cfg = bce_shmem_rd(sc, BCE_PORT_HW_CFG_CONFIG); /* Allocate DMA memory resources. */ if (bce_dma_alloc(dev)) { BCE_PRINTF("%s(%d): DMA resource allocation failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Allocate an ifnet structure. */ ifp = sc->bce_ifp = if_alloc(IFT_ETHER); if (ifp == NULL) { BCE_PRINTF("%s(%d): Interface allocation failed!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Initialize the ifnet interface. */ ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = bce_ioctl; ifp->if_start = bce_start; ifp->if_init = bce_init; ifp->if_mtu = ETHERMTU; if (bce_tso_enable) { ifp->if_hwassist = BCE_IF_HWASSIST | CSUM_TSO; ifp->if_capabilities = BCE_IF_CAPABILITIES | IFCAP_TSO4 | IFCAP_VLAN_HWTSO; } else { ifp->if_hwassist = BCE_IF_HWASSIST; ifp->if_capabilities = BCE_IF_CAPABILITIES; } ifp->if_capenable = ifp->if_capabilities; /* * Assume standard mbuf sizes for buffer allocation. * This may change later if the MTU size is set to * something other than 1500. */ #ifdef BCE_JUMBO_HDRSPLIT sc->rx_bd_mbuf_alloc_size = MHLEN; /* Make sure offset is 16 byte aligned for hardware. */ sc->rx_bd_mbuf_align_pad = roundup2((MSIZE - MHLEN), 16) - (MSIZE - MHLEN); sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - sc->rx_bd_mbuf_align_pad; sc->pg_bd_mbuf_alloc_size = MCLBYTES; #else sc->rx_bd_mbuf_alloc_size = MCLBYTES; sc->rx_bd_mbuf_align_pad = roundup2(MCLBYTES, 16) - MCLBYTES; sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - sc->rx_bd_mbuf_align_pad; #endif ifp->if_snd.ifq_drv_maxlen = USABLE_TX_BD; IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen); IFQ_SET_READY(&ifp->if_snd); if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) ifp->if_baudrate = IF_Mbps(2500ULL); else ifp->if_baudrate = IF_Mbps(1000); - /* Check for an MII child bus by probing the PHY. */ + /* Handle any special PHY initialization for SerDes PHYs. */ + bce_init_media(sc); + + /* MII child bus by probing the PHY. */ if (mii_phy_probe(dev, &sc->bce_miibus, bce_ifmedia_upd, bce_ifmedia_sts)) { BCE_PRINTF("%s(%d): No PHY found on child MII bus!\n", __FILE__, __LINE__); rc = ENXIO; goto bce_attach_fail; } /* Attach to the Ethernet interface list. */ ether_ifattach(ifp, sc->eaddr); #if __FreeBSD_version < 500000 callout_init(&sc->bce_tick_callout); callout_init(&sc->bce_pulse_callout); #else callout_init_mtx(&sc->bce_tick_callout, &sc->bce_mtx, 0); callout_init_mtx(&sc->bce_pulse_callout, &sc->bce_mtx, 0); #endif /* Hookup IRQ last. */ rc = bus_setup_intr(dev, sc->bce_res_irq, INTR_TYPE_NET | INTR_MPSAFE, NULL, bce_intr, sc, &sc->bce_intrhand); if (rc) { BCE_PRINTF("%s(%d): Failed to setup IRQ!\n", __FILE__, __LINE__); bce_detach(dev); goto bce_attach_exit; } /* * At this point we've acquired all the resources * we need to run so there's no turning back, we're * cleared for launch. */ /* Print some important debugging info. */ DBRUNMSG(BCE_INFO, bce_dump_driver_state(sc)); /* Add the supported sysctls to the kernel. */ bce_add_sysctls(sc); BCE_LOCK(sc); /* * The chip reset earlier notified the bootcode that * a driver is present. We now need to start our pulse * routine so that the bootcode is reminded that we're * still running. */ bce_pulse(sc); bce_mgmt_init_locked(sc); BCE_UNLOCK(sc); /* Finally, print some useful adapter info */ bce_print_adapter_info(sc); DBPRINT(sc, BCE_FATAL, "%s(): sc = %p\n", __FUNCTION__, sc); goto bce_attach_exit; bce_attach_fail: bce_release_resources(sc); bce_attach_exit: DBEXIT(BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); return(rc); } /****************************************************************************/ /* Device detach function. */ /* */ /* Stops the controller, resets the controller, and releases resources. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_detach(device_t dev) { struct bce_softc *sc = device_get_softc(dev); struct ifnet *ifp; u32 msg; DBENTER(BCE_VERBOSE_UNLOAD | BCE_VERBOSE_RESET); ifp = sc->bce_ifp; /* Stop and reset the controller. */ BCE_LOCK(sc); /* Stop the pulse so the bootcode can go to driver absent state. */ callout_stop(&sc->bce_pulse_callout); bce_stop(sc); if (sc->bce_flags & BCE_NO_WOL_FLAG) msg = BCE_DRV_MSG_CODE_UNLOAD_LNK_DN; else msg = BCE_DRV_MSG_CODE_UNLOAD; bce_reset(sc, msg); BCE_UNLOCK(sc); ether_ifdetach(ifp); /* If we have a child device on the MII bus remove it too. */ bus_generic_detach(dev); device_delete_child(dev, sc->bce_miibus); /* Release all remaining resources. */ bce_release_resources(sc); DBEXIT(BCE_VERBOSE_UNLOAD | BCE_VERBOSE_RESET); return(0); } /****************************************************************************/ /* Device shutdown function. */ /* */ /* Stops and resets the controller. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_shutdown(device_t dev) { struct bce_softc *sc = device_get_softc(dev); u32 msg; DBENTER(BCE_VERBOSE); BCE_LOCK(sc); bce_stop(sc); if (sc->bce_flags & BCE_NO_WOL_FLAG) msg = BCE_DRV_MSG_CODE_UNLOAD_LNK_DN; else msg = BCE_DRV_MSG_CODE_UNLOAD; bce_reset(sc, msg); BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE); return (0); } #ifdef BCE_DEBUG /****************************************************************************/ /* Register read. */ /* */ /* Returns: */ /* The value of the register. */ /****************************************************************************/ static u32 bce_reg_rd(struct bce_softc *sc, u32 offset) { u32 val = bus_space_read_4(sc->bce_btag, sc->bce_bhandle, offset); DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", __FUNCTION__, offset, val); return val; } /****************************************************************************/ /* Register write (16 bit). */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_reg_wr16(struct bce_softc *sc, u32 offset, u16 val) { DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%04X\n", __FUNCTION__, offset, val); bus_space_write_2(sc->bce_btag, sc->bce_bhandle, offset, val); } /****************************************************************************/ /* Register write. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_reg_wr(struct bce_softc *sc, u32 offset, u32 val) { DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", __FUNCTION__, offset, val); bus_space_write_4(sc->bce_btag, sc->bce_bhandle, offset, val); } #endif /****************************************************************************/ /* Indirect register read. */ /* */ /* Reads NetXtreme II registers using an index/data register pair in PCI */ /* configuration space. Using this mechanism avoids issues with posted */ /* reads but is much slower than memory-mapped I/O. */ /* */ /* Returns: */ /* The value of the register. */ /****************************************************************************/ static u32 bce_reg_rd_ind(struct bce_softc *sc, u32 offset) { device_t dev; dev = sc->bce_dev; pci_write_config(dev, BCE_PCICFG_REG_WINDOW_ADDRESS, offset, 4); #ifdef BCE_DEBUG { u32 val; val = pci_read_config(dev, BCE_PCICFG_REG_WINDOW, 4); DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", __FUNCTION__, offset, val); return val; } #else return pci_read_config(dev, BCE_PCICFG_REG_WINDOW, 4); #endif } /****************************************************************************/ /* Indirect register write. */ /* */ /* Writes NetXtreme II registers using an index/data register pair in PCI */ /* configuration space. Using this mechanism avoids issues with posted */ /* writes but is muchh slower than memory-mapped I/O. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_reg_wr_ind(struct bce_softc *sc, u32 offset, u32 val) { device_t dev; dev = sc->bce_dev; DBPRINT(sc, BCE_INSANE_REG, "%s(); offset = 0x%08X, val = 0x%08X\n", __FUNCTION__, offset, val); pci_write_config(dev, BCE_PCICFG_REG_WINDOW_ADDRESS, offset, 4); pci_write_config(dev, BCE_PCICFG_REG_WINDOW, val, 4); } /****************************************************************************/ /* Shared memory write. */ /* */ /* Writes NetXtreme II shared memory region. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_shmem_wr(struct bce_softc *sc, u32 offset, u32 val) { bce_reg_wr_ind(sc, sc->bce_shmem_base + offset, val); } /****************************************************************************/ /* Shared memory read. */ /* */ /* Reads NetXtreme II shared memory region. */ /* */ /* Returns: */ /* The 32 bit value read. */ /****************************************************************************/ static u32 bce_shmem_rd(struct bce_softc *sc, u32 offset) { return (bce_reg_rd_ind(sc, sc->bce_shmem_base + offset)); } #ifdef BCE_DEBUG /****************************************************************************/ /* Context memory read. */ /* */ /* The NetXtreme II controller uses context memory to track connection */ /* information for L2 and higher network protocols. */ /* */ /* Returns: */ /* The requested 32 bit value of context memory. */ /****************************************************************************/ static u32 bce_ctx_rd(struct bce_softc *sc, u32 cid_addr, u32 ctx_offset) { u32 idx, offset, retry_cnt = 5, val; DBRUNIF((cid_addr > MAX_CID_ADDR || ctx_offset & 0x3 || cid_addr & CTX_MASK), BCE_PRINTF("%s(): Invalid CID address: 0x%08X.\n", __FUNCTION__, cid_addr)); offset = ctx_offset + cid_addr; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { REG_WR(sc, BCE_CTX_CTX_CTRL, (offset | BCE_CTX_CTX_CTRL_READ_REQ)); for (idx = 0; idx < retry_cnt; idx++) { val = REG_RD(sc, BCE_CTX_CTX_CTRL); if ((val & BCE_CTX_CTX_CTRL_READ_REQ) == 0) break; DELAY(5); } if (val & BCE_CTX_CTX_CTRL_READ_REQ) BCE_PRINTF("%s(%d); Unable to read CTX memory: " "cid_addr = 0x%08X, offset = 0x%08X!\n", __FILE__, __LINE__, cid_addr, ctx_offset); val = REG_RD(sc, BCE_CTX_CTX_DATA); } else { REG_WR(sc, BCE_CTX_DATA_ADR, offset); val = REG_RD(sc, BCE_CTX_DATA); } DBPRINT(sc, BCE_EXTREME_CTX, "%s(); cid_addr = 0x%08X, offset = 0x%08X, " "val = 0x%08X\n", __FUNCTION__, cid_addr, ctx_offset, val); return(val); } #endif /****************************************************************************/ /* Context memory write. */ /* */ /* The NetXtreme II controller uses context memory to track connection */ /* information for L2 and higher network protocols. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_ctx_wr(struct bce_softc *sc, u32 cid_addr, u32 ctx_offset, u32 ctx_val) { u32 idx, offset = ctx_offset + cid_addr; u32 val, retry_cnt = 5; DBPRINT(sc, BCE_EXTREME_CTX, "%s(); cid_addr = 0x%08X, offset = 0x%08X, " "val = 0x%08X\n", __FUNCTION__, cid_addr, ctx_offset, ctx_val); DBRUNIF((cid_addr > MAX_CID_ADDR || ctx_offset & 0x3 || cid_addr & CTX_MASK), BCE_PRINTF("%s(): Invalid CID address: 0x%08X.\n", __FUNCTION__, cid_addr)); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { REG_WR(sc, BCE_CTX_CTX_DATA, ctx_val); REG_WR(sc, BCE_CTX_CTX_CTRL, (offset | BCE_CTX_CTX_CTRL_WRITE_REQ)); for (idx = 0; idx < retry_cnt; idx++) { val = REG_RD(sc, BCE_CTX_CTX_CTRL); if ((val & BCE_CTX_CTX_CTRL_WRITE_REQ) == 0) break; DELAY(5); } if (val & BCE_CTX_CTX_CTRL_WRITE_REQ) BCE_PRINTF("%s(%d); Unable to write CTX memory: " "cid_addr = 0x%08X, offset = 0x%08X!\n", __FILE__, __LINE__, cid_addr, ctx_offset); } else { REG_WR(sc, BCE_CTX_DATA_ADR, offset); REG_WR(sc, BCE_CTX_DATA, ctx_val); } } /****************************************************************************/ /* PHY register read. */ /* */ /* Implements register reads on the MII bus. */ /* */ /* Returns: */ /* The value of the register. */ /****************************************************************************/ static int bce_miibus_read_reg(device_t dev, int phy, int reg) { struct bce_softc *sc; u32 val; int i; sc = device_get_softc(dev); /* Make sure we are accessing the correct PHY address. */ if (phy != sc->bce_phy_addr) { DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d for PHY read!\n", phy); return(0); } - if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { + /* + * The 5709S PHY is an IEEE Clause 45 PHY + * with special mappings to work with IEEE + * Clause 22 register accesses. + */ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + if (reg >= MII_BMCR && reg <= MII_ANLPRNP) + reg += 0x10; + } + + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { val = REG_RD(sc, BCE_EMAC_MDIO_MODE); val &= ~BCE_EMAC_MDIO_MODE_AUTO_POLL; REG_WR(sc, BCE_EMAC_MDIO_MODE, val); REG_RD(sc, BCE_EMAC_MDIO_MODE); DELAY(40); } val = BCE_MIPHY(phy) | BCE_MIREG(reg) | BCE_EMAC_MDIO_COMM_COMMAND_READ | BCE_EMAC_MDIO_COMM_DISEXT | BCE_EMAC_MDIO_COMM_START_BUSY; REG_WR(sc, BCE_EMAC_MDIO_COMM, val); for (i = 0; i < BCE_PHY_TIMEOUT; i++) { DELAY(10); val = REG_RD(sc, BCE_EMAC_MDIO_COMM); if (!(val & BCE_EMAC_MDIO_COMM_START_BUSY)) { DELAY(5); val = REG_RD(sc, BCE_EMAC_MDIO_COMM); val &= BCE_EMAC_MDIO_COMM_DATA; break; } } if (val & BCE_EMAC_MDIO_COMM_START_BUSY) { BCE_PRINTF("%s(%d): Error: PHY read timeout! phy = %d, reg = 0x%04X\n", __FILE__, __LINE__, phy, reg); val = 0x0; } else { val = REG_RD(sc, BCE_EMAC_MDIO_COMM); } if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { val = REG_RD(sc, BCE_EMAC_MDIO_MODE); val |= BCE_EMAC_MDIO_MODE_AUTO_POLL; REG_WR(sc, BCE_EMAC_MDIO_MODE, val); REG_RD(sc, BCE_EMAC_MDIO_MODE); DELAY(40); } DB_PRINT_PHY_REG(reg, val); return (val & 0xffff); } /****************************************************************************/ /* PHY register write. */ /* */ /* Implements register writes on the MII bus. */ /* */ /* Returns: */ /* The value of the register. */ /****************************************************************************/ static int bce_miibus_write_reg(device_t dev, int phy, int reg, int val) { struct bce_softc *sc; u32 val1; int i; sc = device_get_softc(dev); /* Make sure we are accessing the correct PHY address. */ if (phy != sc->bce_phy_addr) { DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d for PHY write!\n", phy); return(0); } DB_PRINT_PHY_REG(reg, val); + /* + * The 5709S PHY is an IEEE Clause 45 PHY + * with special mappings to work with IEEE + * Clause 22 register accesses. + */ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + if (reg >= MII_BMCR && reg <= MII_ANLPRNP) + reg += 0x10; + } + if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { val1 = REG_RD(sc, BCE_EMAC_MDIO_MODE); val1 &= ~BCE_EMAC_MDIO_MODE_AUTO_POLL; REG_WR(sc, BCE_EMAC_MDIO_MODE, val1); REG_RD(sc, BCE_EMAC_MDIO_MODE); DELAY(40); } val1 = BCE_MIPHY(phy) | BCE_MIREG(reg) | val | BCE_EMAC_MDIO_COMM_COMMAND_WRITE | BCE_EMAC_MDIO_COMM_START_BUSY | BCE_EMAC_MDIO_COMM_DISEXT; REG_WR(sc, BCE_EMAC_MDIO_COMM, val1); for (i = 0; i < BCE_PHY_TIMEOUT; i++) { DELAY(10); val1 = REG_RD(sc, BCE_EMAC_MDIO_COMM); if (!(val1 & BCE_EMAC_MDIO_COMM_START_BUSY)) { DELAY(5); break; } } if (val1 & BCE_EMAC_MDIO_COMM_START_BUSY) BCE_PRINTF("%s(%d): PHY write timeout!\n", __FILE__, __LINE__); if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) { val1 = REG_RD(sc, BCE_EMAC_MDIO_MODE); val1 |= BCE_EMAC_MDIO_MODE_AUTO_POLL; REG_WR(sc, BCE_EMAC_MDIO_MODE, val1); REG_RD(sc, BCE_EMAC_MDIO_MODE); DELAY(40); } return 0; } /****************************************************************************/ /* MII bus status change. */ /* */ /* Called by the MII bus driver when the PHY establishes link to set the */ /* MAC interface registers. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_miibus_statchg(device_t dev) { struct bce_softc *sc; struct mii_data *mii; int val; sc = device_get_softc(dev); DBENTER(BCE_VERBOSE_PHY); mii = device_get_softc(sc->bce_miibus); val = REG_RD(sc, BCE_EMAC_MODE); val &= ~(BCE_EMAC_MODE_PORT | BCE_EMAC_MODE_HALF_DUPLEX | BCE_EMAC_MODE_MAC_LOOP | BCE_EMAC_MODE_FORCE_LINK | BCE_EMAC_MODE_25G); /* Set MII or GMII interface based on the speed negotiated by the PHY. */ switch (IFM_SUBTYPE(mii->mii_media_active)) { case IFM_10_T: if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) { DBPRINT(sc, BCE_INFO, "Enabling 10Mb interface.\n"); val |= BCE_EMAC_MODE_PORT_MII_10; break; } /* fall-through */ case IFM_100_TX: DBPRINT(sc, BCE_INFO, "Enabling MII interface.\n"); val |= BCE_EMAC_MODE_PORT_MII; break; case IFM_2500_SX: DBPRINT(sc, BCE_INFO, "Enabling 2.5G MAC mode.\n"); val |= BCE_EMAC_MODE_25G; /* fall-through */ case IFM_1000_T: case IFM_1000_SX: DBPRINT(sc, BCE_INFO, "Enabling GMII interface.\n"); val |= BCE_EMAC_MODE_PORT_GMII; break; default: DBPRINT(sc, BCE_INFO, "Unknown speed, enabling default GMII " "interface.\n"); val |= BCE_EMAC_MODE_PORT_GMII; } /* Set half or full duplex based on the duplicity negotiated by the PHY. */ if ((mii->mii_media_active & IFM_GMASK) == IFM_HDX) { DBPRINT(sc, BCE_INFO, "Setting Half-Duplex interface.\n"); val |= BCE_EMAC_MODE_HALF_DUPLEX; } else DBPRINT(sc, BCE_INFO, "Setting Full-Duplex interface.\n"); REG_WR(sc, BCE_EMAC_MODE, val); #if 0 /* ToDo: Enable flow control support in brgphy and bge. */ /* FLAG0 is set if RX is enabled and FLAG1 if TX is enabled */ if (mii->mii_media_active & IFM_FLAG0) BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); if (mii->mii_media_active & IFM_FLAG1) BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); #endif DBEXIT(BCE_VERBOSE_PHY); } /****************************************************************************/ /* Acquire NVRAM lock. */ /* */ /* Before the NVRAM can be accessed the caller must acquire an NVRAM lock. */ /* Locks 0 and 2 are reserved, lock 1 is used by firmware and lock 2 is */ /* for use by the driver. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_acquire_nvram_lock(struct bce_softc *sc) { u32 val; int j, rc = 0; DBENTER(BCE_VERBOSE_NVRAM); /* Request access to the flash interface. */ REG_WR(sc, BCE_NVM_SW_ARB, BCE_NVM_SW_ARB_ARB_REQ_SET2); for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { val = REG_RD(sc, BCE_NVM_SW_ARB); if (val & BCE_NVM_SW_ARB_ARB_ARB2) break; DELAY(5); } if (j >= NVRAM_TIMEOUT_COUNT) { DBPRINT(sc, BCE_WARN, "Timeout acquiring NVRAM lock!\n"); rc = EBUSY; } DBEXIT(BCE_VERBOSE_NVRAM); return (rc); } /****************************************************************************/ /* Release NVRAM lock. */ /* */ /* When the caller is finished accessing NVRAM the lock must be released. */ /* Locks 0 and 2 are reserved, lock 1 is used by firmware and lock 2 is */ /* for use by the driver. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_release_nvram_lock(struct bce_softc *sc) { u32 val; int j, rc = 0; DBENTER(BCE_VERBOSE_NVRAM); /* * Relinquish nvram interface. */ REG_WR(sc, BCE_NVM_SW_ARB, BCE_NVM_SW_ARB_ARB_REQ_CLR2); for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { val = REG_RD(sc, BCE_NVM_SW_ARB); if (!(val & BCE_NVM_SW_ARB_ARB_ARB2)) break; DELAY(5); } if (j >= NVRAM_TIMEOUT_COUNT) { DBPRINT(sc, BCE_WARN, "Timeout releasing NVRAM lock!\n"); rc = EBUSY; } DBEXIT(BCE_VERBOSE_NVRAM); return (rc); } #ifdef BCE_NVRAM_WRITE_SUPPORT /****************************************************************************/ /* Enable NVRAM write access. */ /* */ /* Before writing to NVRAM the caller must enable NVRAM writes. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_enable_nvram_write(struct bce_softc *sc) { u32 val; int rc = 0; DBENTER(BCE_VERBOSE_NVRAM); val = REG_RD(sc, BCE_MISC_CFG); REG_WR(sc, BCE_MISC_CFG, val | BCE_MISC_CFG_NVM_WR_EN_PCI); if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { int j; REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_WREN | BCE_NVM_COMMAND_DOIT); for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { DELAY(5); val = REG_RD(sc, BCE_NVM_COMMAND); if (val & BCE_NVM_COMMAND_DONE) break; } if (j >= NVRAM_TIMEOUT_COUNT) { DBPRINT(sc, BCE_WARN, "Timeout writing NVRAM!\n"); rc = EBUSY; } } DBENTER(BCE_VERBOSE_NVRAM); return (rc); } /****************************************************************************/ /* Disable NVRAM write access. */ /* */ /* When the caller is finished writing to NVRAM write access must be */ /* disabled. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_disable_nvram_write(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE_NVRAM); val = REG_RD(sc, BCE_MISC_CFG); REG_WR(sc, BCE_MISC_CFG, val & ~BCE_MISC_CFG_NVM_WR_EN); DBEXIT(BCE_VERBOSE_NVRAM); } #endif /****************************************************************************/ /* Enable NVRAM access. */ /* */ /* Before accessing NVRAM for read or write operations the caller must */ /* enabled NVRAM access. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_enable_nvram_access(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE_NVRAM); val = REG_RD(sc, BCE_NVM_ACCESS_ENABLE); /* Enable both bits, even on read. */ REG_WR(sc, BCE_NVM_ACCESS_ENABLE, val | BCE_NVM_ACCESS_ENABLE_EN | BCE_NVM_ACCESS_ENABLE_WR_EN); DBEXIT(BCE_VERBOSE_NVRAM); } /****************************************************************************/ /* Disable NVRAM access. */ /* */ /* When the caller is finished accessing NVRAM access must be disabled. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_disable_nvram_access(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE_NVRAM); val = REG_RD(sc, BCE_NVM_ACCESS_ENABLE); /* Disable both bits, even after read. */ REG_WR(sc, BCE_NVM_ACCESS_ENABLE, val & ~(BCE_NVM_ACCESS_ENABLE_EN | BCE_NVM_ACCESS_ENABLE_WR_EN)); DBEXIT(BCE_VERBOSE_NVRAM); } #ifdef BCE_NVRAM_WRITE_SUPPORT /****************************************************************************/ /* Erase NVRAM page before writing. */ /* */ /* Non-buffered flash parts require that a page be erased before it is */ /* written. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_nvram_erase_page(struct bce_softc *sc, u32 offset) { u32 cmd; int j, rc = 0; DBENTER(BCE_VERBOSE_NVRAM); /* Buffered flash doesn't require an erase. */ if (sc->bce_flash_info->flags & BCE_NV_BUFFERED) goto bce_nvram_erase_page_exit; /* Build an erase command. */ cmd = BCE_NVM_COMMAND_ERASE | BCE_NVM_COMMAND_WR | BCE_NVM_COMMAND_DOIT; /* * Clear the DONE bit separately, set the NVRAM adress to erase, * and issue the erase command. */ REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); REG_WR(sc, BCE_NVM_COMMAND, cmd); /* Wait for completion. */ for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { u32 val; DELAY(5); val = REG_RD(sc, BCE_NVM_COMMAND); if (val & BCE_NVM_COMMAND_DONE) break; } if (j >= NVRAM_TIMEOUT_COUNT) { DBPRINT(sc, BCE_WARN, "Timeout erasing NVRAM.\n"); rc = EBUSY; } bce_nvram_erase_page_exit: DBEXIT(BCE_VERBOSE_NVRAM); return (rc); } #endif /* BCE_NVRAM_WRITE_SUPPORT */ /****************************************************************************/ /* Read a dword (32 bits) from NVRAM. */ /* */ /* Read a 32 bit word from NVRAM. The caller is assumed to have already */ /* obtained the NVRAM lock and enabled the controller for NVRAM access. */ /* */ /* Returns: */ /* 0 on success and the 32 bit value read, positive value on failure. */ /****************************************************************************/ static int bce_nvram_read_dword(struct bce_softc *sc, u32 offset, u8 *ret_val, u32 cmd_flags) { u32 cmd; int i, rc = 0; DBENTER(BCE_EXTREME_NVRAM); /* Build the command word. */ cmd = BCE_NVM_COMMAND_DOIT | cmd_flags; /* Calculate the offset for buffered flash if translation is used. */ if (sc->bce_flash_info->flags & BCE_NV_TRANSLATE) { offset = ((offset / sc->bce_flash_info->page_size) << sc->bce_flash_info->page_bits) + (offset % sc->bce_flash_info->page_size); } /* * Clear the DONE bit separately, set the address to read, * and issue the read. */ REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); REG_WR(sc, BCE_NVM_COMMAND, cmd); /* Wait for completion. */ for (i = 0; i < NVRAM_TIMEOUT_COUNT; i++) { u32 val; DELAY(5); val = REG_RD(sc, BCE_NVM_COMMAND); if (val & BCE_NVM_COMMAND_DONE) { val = REG_RD(sc, BCE_NVM_READ); val = bce_be32toh(val); memcpy(ret_val, &val, 4); break; } } /* Check for errors. */ if (i >= NVRAM_TIMEOUT_COUNT) { BCE_PRINTF("%s(%d): Timeout error reading NVRAM at offset 0x%08X!\n", __FILE__, __LINE__, offset); rc = EBUSY; } DBEXIT(BCE_EXTREME_NVRAM); return(rc); } #ifdef BCE_NVRAM_WRITE_SUPPORT /****************************************************************************/ /* Write a dword (32 bits) to NVRAM. */ /* */ /* Write a 32 bit word to NVRAM. The caller is assumed to have already */ /* obtained the NVRAM lock, enabled the controller for NVRAM access, and */ /* enabled NVRAM write access. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_nvram_write_dword(struct bce_softc *sc, u32 offset, u8 *val, u32 cmd_flags) { u32 cmd, val32; int j, rc = 0; DBENTER(BCE_VERBOSE_NVRAM); /* Build the command word. */ cmd = BCE_NVM_COMMAND_DOIT | BCE_NVM_COMMAND_WR | cmd_flags; /* Calculate the offset for buffered flash if translation is used. */ if (sc->bce_flash_info->flags & BCE_NV_TRANSLATE) { offset = ((offset / sc->bce_flash_info->page_size) << sc->bce_flash_info->page_bits) + (offset % sc->bce_flash_info->page_size); } /* * Clear the DONE bit separately, convert NVRAM data to big-endian, * set the NVRAM address to write, and issue the write command */ REG_WR(sc, BCE_NVM_COMMAND, BCE_NVM_COMMAND_DONE); memcpy(&val32, val, 4); val32 = htobe32(val32); REG_WR(sc, BCE_NVM_WRITE, val32); REG_WR(sc, BCE_NVM_ADDR, offset & BCE_NVM_ADDR_NVM_ADDR_VALUE); REG_WR(sc, BCE_NVM_COMMAND, cmd); /* Wait for completion. */ for (j = 0; j < NVRAM_TIMEOUT_COUNT; j++) { DELAY(5); if (REG_RD(sc, BCE_NVM_COMMAND) & BCE_NVM_COMMAND_DONE) break; } if (j >= NVRAM_TIMEOUT_COUNT) { BCE_PRINTF("%s(%d): Timeout error writing NVRAM at offset 0x%08X\n", __FILE__, __LINE__, offset); rc = EBUSY; } DBEXIT(BCE_VERBOSE_NVRAM); return (rc); } #endif /* BCE_NVRAM_WRITE_SUPPORT */ /****************************************************************************/ /* Initialize NVRAM access. */ /* */ /* Identify the NVRAM device in use and prepare the NVRAM interface to */ /* access that device. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_init_nvram(struct bce_softc *sc) { u32 val; int j, entry_count, rc = 0; struct flash_spec *flash; DBENTER(BCE_VERBOSE_NVRAM); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { sc->bce_flash_info = &flash_5709; goto bce_init_nvram_get_flash_size; } /* Determine the selected interface. */ val = REG_RD(sc, BCE_NVM_CFG1); entry_count = sizeof(flash_table) / sizeof(struct flash_spec); /* * Flash reconfiguration is required to support additional * NVRAM devices not directly supported in hardware. * Check if the flash interface was reconfigured * by the bootcode. */ if (val & 0x40000000) { /* Flash interface reconfigured by bootcode. */ DBPRINT(sc,BCE_INFO_LOAD, "bce_init_nvram(): Flash WAS reconfigured.\n"); for (j = 0, flash = &flash_table[0]; j < entry_count; j++, flash++) { if ((val & FLASH_BACKUP_STRAP_MASK) == (flash->config1 & FLASH_BACKUP_STRAP_MASK)) { sc->bce_flash_info = flash; break; } } } else { /* Flash interface not yet reconfigured. */ u32 mask; DBPRINT(sc, BCE_INFO_LOAD, "%s(): Flash was NOT reconfigured.\n", __FUNCTION__); if (val & (1 << 23)) mask = FLASH_BACKUP_STRAP_MASK; else mask = FLASH_STRAP_MASK; /* Look for the matching NVRAM device configuration data. */ for (j = 0, flash = &flash_table[0]; j < entry_count; j++, flash++) { /* Check if the device matches any of the known devices. */ if ((val & mask) == (flash->strapping & mask)) { /* Found a device match. */ sc->bce_flash_info = flash; /* Request access to the flash interface. */ if ((rc = bce_acquire_nvram_lock(sc)) != 0) return rc; /* Reconfigure the flash interface. */ bce_enable_nvram_access(sc); REG_WR(sc, BCE_NVM_CFG1, flash->config1); REG_WR(sc, BCE_NVM_CFG2, flash->config2); REG_WR(sc, BCE_NVM_CFG3, flash->config3); REG_WR(sc, BCE_NVM_WRITE1, flash->write1); bce_disable_nvram_access(sc); bce_release_nvram_lock(sc); break; } } } /* Check if a matching device was found. */ if (j == entry_count) { sc->bce_flash_info = NULL; BCE_PRINTF("%s(%d): Unknown Flash NVRAM found!\n", __FILE__, __LINE__); rc = ENODEV; } bce_init_nvram_get_flash_size: /* Write the flash config data to the shared memory interface. */ val = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG2); val &= BCE_SHARED_HW_CFG2_NVM_SIZE_MASK; if (val) sc->bce_flash_size = val; else sc->bce_flash_size = sc->bce_flash_info->total_size; DBPRINT(sc, BCE_INFO_LOAD, "%s(): Found %s, size = 0x%08X\n", __FUNCTION__, sc->bce_flash_info->name, sc->bce_flash_info->total_size); DBEXIT(BCE_VERBOSE_NVRAM); return rc; } /****************************************************************************/ /* Read an arbitrary range of data from NVRAM. */ /* */ /* Prepares the NVRAM interface for access and reads the requested data */ /* into the supplied buffer. */ /* */ /* Returns: */ /* 0 on success and the data read, positive value on failure. */ /****************************************************************************/ static int bce_nvram_read(struct bce_softc *sc, u32 offset, u8 *ret_buf, int buf_size) { int rc = 0; u32 cmd_flags, offset32, len32, extra; DBENTER(BCE_VERBOSE_NVRAM); if (buf_size == 0) goto bce_nvram_read_exit; /* Request access to the flash interface. */ if ((rc = bce_acquire_nvram_lock(sc)) != 0) goto bce_nvram_read_exit; /* Enable access to flash interface */ bce_enable_nvram_access(sc); len32 = buf_size; offset32 = offset; extra = 0; cmd_flags = 0; if (offset32 & 3) { u8 buf[4]; u32 pre_len; offset32 &= ~3; pre_len = 4 - (offset & 3); if (pre_len >= len32) { pre_len = len32; cmd_flags = BCE_NVM_COMMAND_FIRST | BCE_NVM_COMMAND_LAST; } else { cmd_flags = BCE_NVM_COMMAND_FIRST; } rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); if (rc) return rc; memcpy(ret_buf, buf + (offset & 3), pre_len); offset32 += 4; ret_buf += pre_len; len32 -= pre_len; } if (len32 & 3) { extra = 4 - (len32 & 3); len32 = (len32 + 4) & ~3; } if (len32 == 4) { u8 buf[4]; if (cmd_flags) cmd_flags = BCE_NVM_COMMAND_LAST; else cmd_flags = BCE_NVM_COMMAND_FIRST | BCE_NVM_COMMAND_LAST; rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); memcpy(ret_buf, buf, 4 - extra); } else if (len32 > 0) { u8 buf[4]; /* Read the first word. */ if (cmd_flags) cmd_flags = 0; else cmd_flags = BCE_NVM_COMMAND_FIRST; rc = bce_nvram_read_dword(sc, offset32, ret_buf, cmd_flags); /* Advance to the next dword. */ offset32 += 4; ret_buf += 4; len32 -= 4; while (len32 > 4 && rc == 0) { rc = bce_nvram_read_dword(sc, offset32, ret_buf, 0); /* Advance to the next dword. */ offset32 += 4; ret_buf += 4; len32 -= 4; } if (rc) goto bce_nvram_read_locked_exit; cmd_flags = BCE_NVM_COMMAND_LAST; rc = bce_nvram_read_dword(sc, offset32, buf, cmd_flags); memcpy(ret_buf, buf, 4 - extra); } bce_nvram_read_locked_exit: /* Disable access to flash interface and release the lock. */ bce_disable_nvram_access(sc); bce_release_nvram_lock(sc); bce_nvram_read_exit: DBEXIT(BCE_VERBOSE_NVRAM); return rc; } #ifdef BCE_NVRAM_WRITE_SUPPORT /****************************************************************************/ /* Write an arbitrary range of data from NVRAM. */ /* */ /* Prepares the NVRAM interface for write access and writes the requested */ /* data from the supplied buffer. The caller is responsible for */ /* calculating any appropriate CRCs. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_nvram_write(struct bce_softc *sc, u32 offset, u8 *data_buf, int buf_size) { u32 written, offset32, len32; u8 *buf, start[4], end[4]; int rc = 0; int align_start, align_end; DBENTER(BCE_VERBOSE_NVRAM); buf = data_buf; offset32 = offset; len32 = buf_size; align_start = align_end = 0; if ((align_start = (offset32 & 3))) { offset32 &= ~3; len32 += align_start; if ((rc = bce_nvram_read(sc, offset32, start, 4))) goto bce_nvram_write_exit; } if (len32 & 3) { if ((len32 > 4) || !align_start) { align_end = 4 - (len32 & 3); len32 += align_end; if ((rc = bce_nvram_read(sc, offset32 + len32 - 4, end, 4))) { goto bce_nvram_write_exit; } } } if (align_start || align_end) { buf = malloc(len32, M_DEVBUF, M_NOWAIT); if (buf == 0) { rc = ENOMEM; goto bce_nvram_write_exit; } if (align_start) { memcpy(buf, start, 4); } if (align_end) { memcpy(buf + len32 - 4, end, 4); } memcpy(buf + align_start, data_buf, buf_size); } written = 0; while ((written < len32) && (rc == 0)) { u32 page_start, page_end, data_start, data_end; u32 addr, cmd_flags; int i; u8 flash_buffer[264]; /* Find the page_start addr */ page_start = offset32 + written; page_start -= (page_start % sc->bce_flash_info->page_size); /* Find the page_end addr */ page_end = page_start + sc->bce_flash_info->page_size; /* Find the data_start addr */ data_start = (written == 0) ? offset32 : page_start; /* Find the data_end addr */ data_end = (page_end > offset32 + len32) ? (offset32 + len32) : page_end; /* Request access to the flash interface. */ if ((rc = bce_acquire_nvram_lock(sc)) != 0) goto bce_nvram_write_exit; /* Enable access to flash interface */ bce_enable_nvram_access(sc); cmd_flags = BCE_NVM_COMMAND_FIRST; if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { int j; /* Read the whole page into the buffer * (non-buffer flash only) */ for (j = 0; j < sc->bce_flash_info->page_size; j += 4) { if (j == (sc->bce_flash_info->page_size - 4)) { cmd_flags |= BCE_NVM_COMMAND_LAST; } rc = bce_nvram_read_dword(sc, page_start + j, &flash_buffer[j], cmd_flags); if (rc) goto bce_nvram_write_locked_exit; cmd_flags = 0; } } /* Enable writes to flash interface (unlock write-protect) */ if ((rc = bce_enable_nvram_write(sc)) != 0) goto bce_nvram_write_locked_exit; /* Erase the page */ if ((rc = bce_nvram_erase_page(sc, page_start)) != 0) goto bce_nvram_write_locked_exit; /* Re-enable the write again for the actual write */ bce_enable_nvram_write(sc); /* Loop to write back the buffer data from page_start to * data_start */ i = 0; if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { for (addr = page_start; addr < data_start; addr += 4, i += 4) { rc = bce_nvram_write_dword(sc, addr, &flash_buffer[i], cmd_flags); if (rc != 0) goto bce_nvram_write_locked_exit; cmd_flags = 0; } } /* Loop to write the new data from data_start to data_end */ for (addr = data_start; addr < data_end; addr += 4, i++) { if ((addr == page_end - 4) || ((sc->bce_flash_info->flags & BCE_NV_BUFFERED) && (addr == data_end - 4))) { cmd_flags |= BCE_NVM_COMMAND_LAST; } rc = bce_nvram_write_dword(sc, addr, buf, cmd_flags); if (rc != 0) goto bce_nvram_write_locked_exit; cmd_flags = 0; buf += 4; } /* Loop to write back the buffer data from data_end * to page_end */ if (!(sc->bce_flash_info->flags & BCE_NV_BUFFERED)) { for (addr = data_end; addr < page_end; addr += 4, i += 4) { if (addr == page_end-4) { cmd_flags = BCE_NVM_COMMAND_LAST; } rc = bce_nvram_write_dword(sc, addr, &flash_buffer[i], cmd_flags); if (rc != 0) goto bce_nvram_write_locked_exit; cmd_flags = 0; } } /* Disable writes to flash interface (lock write-protect) */ bce_disable_nvram_write(sc); /* Disable access to flash interface */ bce_disable_nvram_access(sc); bce_release_nvram_lock(sc); /* Increment written */ written += data_end - data_start; } goto bce_nvram_write_exit; bce_nvram_write_locked_exit: bce_disable_nvram_write(sc); bce_disable_nvram_access(sc); bce_release_nvram_lock(sc); bce_nvram_write_exit: if (align_start || align_end) free(buf, M_DEVBUF); DBEXIT(BCE_VERBOSE_NVRAM); return (rc); } #endif /* BCE_NVRAM_WRITE_SUPPORT */ /****************************************************************************/ /* Verifies that NVRAM is accessible and contains valid data. */ /* */ /* Reads the configuration data from NVRAM and verifies that the CRC is */ /* correct. */ /* */ /* Returns: */ /* 0 on success, positive value on failure. */ /****************************************************************************/ static int bce_nvram_test(struct bce_softc *sc) { u32 buf[BCE_NVRAM_SIZE / 4]; u8 *data = (u8 *) buf; int rc = 0; u32 magic, csum; DBENTER(BCE_VERBOSE_NVRAM | BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); /* * Check that the device NVRAM is valid by reading * the magic value at offset 0. */ if ((rc = bce_nvram_read(sc, 0, data, 4)) != 0) { BCE_PRINTF("%s(%d): Unable to read NVRAM!\n", __FILE__, __LINE__); goto bce_nvram_test_exit; } /* * Verify that offset 0 of the NVRAM contains * a valid magic number. */ magic = bce_be32toh(buf[0]); if (magic != BCE_NVRAM_MAGIC) { rc = ENODEV; BCE_PRINTF("%s(%d): Invalid NVRAM magic value! Expected: 0x%08X, " "Found: 0x%08X\n", __FILE__, __LINE__, BCE_NVRAM_MAGIC, magic); goto bce_nvram_test_exit; } /* * Verify that the device NVRAM includes valid * configuration data. */ if ((rc = bce_nvram_read(sc, 0x100, data, BCE_NVRAM_SIZE)) != 0) { BCE_PRINTF("%s(%d): Unable to read Manufacturing Information from " "NVRAM!\n", __FILE__, __LINE__); goto bce_nvram_test_exit; } csum = ether_crc32_le(data, 0x100); if (csum != BCE_CRC32_RESIDUAL) { rc = ENODEV; BCE_PRINTF("%s(%d): Invalid Manufacturing Information NVRAM CRC! " "Expected: 0x%08X, Found: 0x%08X\n", __FILE__, __LINE__, BCE_CRC32_RESIDUAL, csum); goto bce_nvram_test_exit; } csum = ether_crc32_le(data + 0x100, 0x100); if (csum != BCE_CRC32_RESIDUAL) { rc = ENODEV; BCE_PRINTF("%s(%d): Invalid Feature Configuration Information " "NVRAM CRC! Expected: 0x%08X, Found: 08%08X\n", __FILE__, __LINE__, BCE_CRC32_RESIDUAL, csum); } bce_nvram_test_exit: DBEXIT(BCE_VERBOSE_NVRAM | BCE_VERBOSE_LOAD | BCE_VERBOSE_RESET); return rc; } /****************************************************************************/ /* Identifies the current media type of the controller and sets the PHY */ /* address. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_get_media(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE); /* Assume PHY address for copper controllers. */ sc->bce_phy_addr = 1; if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) { u32 val = REG_RD(sc, BCE_MISC_DUAL_MEDIA_CTRL); u32 bond_id = val & BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID; u32 strap; /* * The BCM5709S is software configurable * for Copper or SerDes operation. */ if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_C) { DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded for copper.\n"); goto bce_get_media_exit; } else if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_S) { DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded for dual media.\n"); sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; goto bce_get_media_exit; } if (val & BCE_MISC_DUAL_MEDIA_CTRL_STRAP_OVERRIDE) strap = (val & BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL) >> 21; else strap = (val & BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP) >> 8; if (pci_get_function(sc->bce_dev) == 0) { switch (strap) { case 0x4: case 0x5: case 0x6: DBPRINT(sc, BCE_INFO_LOAD, "BCM5709 s/w configured for SerDes.\n"); sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + break; default: DBPRINT(sc, BCE_INFO_LOAD, "BCM5709 s/w configured for Copper.\n"); + break; } } else { switch (strap) { case 0x1: case 0x2: case 0x4: DBPRINT(sc, BCE_INFO_LOAD, "BCM5709 s/w configured for SerDes.\n"); sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; + break; default: DBPRINT(sc, BCE_INFO_LOAD, "BCM5709 s/w configured for Copper.\n"); + break; } } } else if (BCE_CHIP_BOND_ID(sc) & BCE_CHIP_BOND_ID_SERDES_BIT) sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG; if (sc->bce_phy_flags & BCE_PHY_SERDES_FLAG) { + sc->bce_flags |= BCE_NO_WOL_FLAG; - if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) { + + /* 5708S, 5709S, and 5716S use a separate PHY for SerDes. */ + if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) sc->bce_phy_addr = 2; + + if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) { + sc->bce_phy_flags |= BCE_PHY_IEEE_CLAUSE_45_FLAG; + val = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG); if (val & BCE_SHARED_HW_CFG_PHY_2_5G) { sc->bce_phy_flags |= BCE_PHY_2_5G_CAPABLE_FLAG; DBPRINT(sc, BCE_INFO_LOAD, "Found 2.5Gb capable adapter\n"); } - } + } } else if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708)) sc->bce_phy_flags |= BCE_PHY_CRC_FIX_FLAG; bce_get_media_exit: DBPRINT(sc, (BCE_INFO_LOAD | BCE_INFO_PHY), "Using PHY address %d.\n", sc->bce_phy_addr); DBEXIT(BCE_VERBOSE); } /****************************************************************************/ +/* Performs PHY initialization required before MII drivers access the */ +/* device. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static void +bce_init_media(struct bce_softc *sc) +{ + if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) { + /* + * Configure 5709S/5716S PHYs to use traditional IEEE + * Clause 22 method. Otherwise we have no way to attach + * the PHY in mii(4) layer. PHY specific configuration + * is done in mii layer. + */ + + /* Select auto-negotiation MMD of the PHY. */ + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_ADDR_EXT); + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_ADDR_EXT, BRGPHY_ADDR_EXT_AN_MMD); + + /* Select IEEE0 block of AN MMD (assumed in all brgphy(4) code). */ + bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr, + BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_COMBO_IEEE0); + } +} + + +/****************************************************************************/ /* Free any DMA memory owned by the driver. */ /* */ /* Scans through each data structre that requires DMA memory and frees */ /* the memory if allocated. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_dma_free(struct bce_softc *sc) { int i; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_UNLOAD | BCE_VERBOSE_CTX); /* Free, unmap, and destroy the status block. */ if (sc->status_block != NULL) { bus_dmamem_free( sc->status_tag, sc->status_block, sc->status_map); sc->status_block = NULL; } if (sc->status_map != NULL) { bus_dmamap_unload( sc->status_tag, sc->status_map); bus_dmamap_destroy(sc->status_tag, sc->status_map); sc->status_map = NULL; } if (sc->status_tag != NULL) { bus_dma_tag_destroy(sc->status_tag); sc->status_tag = NULL; } /* Free, unmap, and destroy the statistics block. */ if (sc->stats_block != NULL) { bus_dmamem_free( sc->stats_tag, sc->stats_block, sc->stats_map); sc->stats_block = NULL; } if (sc->stats_map != NULL) { bus_dmamap_unload( sc->stats_tag, sc->stats_map); bus_dmamap_destroy(sc->stats_tag, sc->stats_map); sc->stats_map = NULL; } if (sc->stats_tag != NULL) { bus_dma_tag_destroy(sc->stats_tag); sc->stats_tag = NULL; } /* Free, unmap and destroy all context memory pages. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { for (i = 0; i < sc->ctx_pages; i++ ) { if (sc->ctx_block[i] != NULL) { bus_dmamem_free( sc->ctx_tag, sc->ctx_block[i], sc->ctx_map[i]); sc->ctx_block[i] = NULL; } if (sc->ctx_map[i] != NULL) { bus_dmamap_unload( sc->ctx_tag, sc->ctx_map[i]); bus_dmamap_destroy( sc->ctx_tag, sc->ctx_map[i]); sc->ctx_map[i] = NULL; } } /* Destroy the context memory tag. */ if (sc->ctx_tag != NULL) { bus_dma_tag_destroy(sc->ctx_tag); sc->ctx_tag = NULL; } } /* Free, unmap and destroy all TX buffer descriptor chain pages. */ for (i = 0; i < TX_PAGES; i++ ) { if (sc->tx_bd_chain[i] != NULL) { bus_dmamem_free( sc->tx_bd_chain_tag, sc->tx_bd_chain[i], sc->tx_bd_chain_map[i]); sc->tx_bd_chain[i] = NULL; } if (sc->tx_bd_chain_map[i] != NULL) { bus_dmamap_unload( sc->tx_bd_chain_tag, sc->tx_bd_chain_map[i]); bus_dmamap_destroy( sc->tx_bd_chain_tag, sc->tx_bd_chain_map[i]); sc->tx_bd_chain_map[i] = NULL; } } /* Destroy the TX buffer descriptor tag. */ if (sc->tx_bd_chain_tag != NULL) { bus_dma_tag_destroy(sc->tx_bd_chain_tag); sc->tx_bd_chain_tag = NULL; } /* Free, unmap and destroy all RX buffer descriptor chain pages. */ for (i = 0; i < RX_PAGES; i++ ) { if (sc->rx_bd_chain[i] != NULL) { bus_dmamem_free( sc->rx_bd_chain_tag, sc->rx_bd_chain[i], sc->rx_bd_chain_map[i]); sc->rx_bd_chain[i] = NULL; } if (sc->rx_bd_chain_map[i] != NULL) { bus_dmamap_unload( sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i]); bus_dmamap_destroy( sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i]); sc->rx_bd_chain_map[i] = NULL; } } /* Destroy the RX buffer descriptor tag. */ if (sc->rx_bd_chain_tag != NULL) { bus_dma_tag_destroy(sc->rx_bd_chain_tag); sc->rx_bd_chain_tag = NULL; } #ifdef BCE_JUMBO_HDRSPLIT /* Free, unmap and destroy all page buffer descriptor chain pages. */ for (i = 0; i < PG_PAGES; i++ ) { if (sc->pg_bd_chain[i] != NULL) { bus_dmamem_free( sc->pg_bd_chain_tag, sc->pg_bd_chain[i], sc->pg_bd_chain_map[i]); sc->pg_bd_chain[i] = NULL; } if (sc->pg_bd_chain_map[i] != NULL) { bus_dmamap_unload( sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i]); bus_dmamap_destroy( sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i]); sc->pg_bd_chain_map[i] = NULL; } } /* Destroy the page buffer descriptor tag. */ if (sc->pg_bd_chain_tag != NULL) { bus_dma_tag_destroy(sc->pg_bd_chain_tag); sc->pg_bd_chain_tag = NULL; } #endif /* Unload and destroy the TX mbuf maps. */ for (i = 0; i < TOTAL_TX_BD; i++) { if (sc->tx_mbuf_map[i] != NULL) { bus_dmamap_unload(sc->tx_mbuf_tag, sc->tx_mbuf_map[i]); bus_dmamap_destroy(sc->tx_mbuf_tag, sc->tx_mbuf_map[i]); sc->tx_mbuf_map[i] = NULL; } } /* Destroy the TX mbuf tag. */ if (sc->tx_mbuf_tag != NULL) { bus_dma_tag_destroy(sc->tx_mbuf_tag); sc->tx_mbuf_tag = NULL; } /* Unload and destroy the RX mbuf maps. */ for (i = 0; i < TOTAL_RX_BD; i++) { if (sc->rx_mbuf_map[i] != NULL) { bus_dmamap_unload(sc->rx_mbuf_tag, sc->rx_mbuf_map[i]); bus_dmamap_destroy(sc->rx_mbuf_tag, sc->rx_mbuf_map[i]); sc->rx_mbuf_map[i] = NULL; } } /* Destroy the RX mbuf tag. */ if (sc->rx_mbuf_tag != NULL) { bus_dma_tag_destroy(sc->rx_mbuf_tag); sc->rx_mbuf_tag = NULL; } #ifdef BCE_JUMBO_HDRSPLIT /* Unload and destroy the page mbuf maps. */ for (i = 0; i < TOTAL_PG_BD; i++) { if (sc->pg_mbuf_map[i] != NULL) { bus_dmamap_unload(sc->pg_mbuf_tag, sc->pg_mbuf_map[i]); bus_dmamap_destroy(sc->pg_mbuf_tag, sc->pg_mbuf_map[i]); sc->pg_mbuf_map[i] = NULL; } } /* Destroy the page mbuf tag. */ if (sc->pg_mbuf_tag != NULL) { bus_dma_tag_destroy(sc->pg_mbuf_tag); sc->pg_mbuf_tag = NULL; } #endif /* Destroy the parent tag */ if (sc->parent_tag != NULL) { bus_dma_tag_destroy(sc->parent_tag); sc->parent_tag = NULL; } DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_UNLOAD | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Get DMA memory from the OS. */ /* */ /* Validates that the OS has provided DMA buffers in response to a */ /* bus_dmamap_load() call and saves the physical address of those buffers. */ /* When the callback is used the OS will return 0 for the mapping function */ /* (bus_dmamap_load()) so we use the value of map_arg->maxsegs to pass any */ /* failures back to the caller. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error) { bus_addr_t *busaddr = arg; /* Simulate a mapping failure. */ DBRUNIF(DB_RANDOMTRUE(dma_map_addr_failed_sim_control), error = ENOMEM); /* Check for an error and signal the caller that an error occurred. */ if (error) { *busaddr = 0; } else { *busaddr = segs->ds_addr; } return; } /****************************************************************************/ /* Allocate any DMA memory needed by the driver. */ /* */ /* Allocates DMA memory needed for the various global structures needed by */ /* hardware. */ /* */ /* Memory alignment requirements: */ /* +-----------------+----------+----------+----------+----------+ */ /* | | 5706 | 5708 | 5709 | 5716 | */ /* +-----------------+----------+----------+----------+----------+ */ /* |Status Block | 8 bytes | 8 bytes | 16 bytes | 16 bytes | */ /* |Statistics Block | 8 bytes | 8 bytes | 16 bytes | 16 bytes | */ /* |RX Buffers | 16 bytes | 16 bytes | 16 bytes | 16 bytes | */ /* |PG Buffers | none | none | none | none | */ /* |TX Buffers | none | none | none | none | */ /* |Chain Pages(1) | 4KiB | 4KiB | 4KiB | 4KiB | */ /* |Context Memory | | | | | */ /* +-----------------+----------+----------+----------+----------+ */ /* */ /* (1) Must align with CPU page size (BCM_PAGE_SZIE). */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_dma_alloc(device_t dev) { struct bce_softc *sc; int i, error, rc = 0; bus_size_t max_size, max_seg_size; int max_segments; sc = device_get_softc(dev); DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); /* * Allocate the parent bus DMA tag appropriate for PCI. */ if (bus_dma_tag_create(NULL, 1, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, MAXBSIZE, BUS_SPACE_UNRESTRICTED, BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL, &sc->parent_tag)) { BCE_PRINTF("%s(%d): Could not allocate parent DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } /* * Create a DMA tag for the status block, allocate and clear the * memory, map the memory into DMA space, and fetch the physical * address of the block. */ if (bus_dma_tag_create(sc->parent_tag, BCE_DMA_ALIGN, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, BCE_STATUS_BLK_SZ, 1, BCE_STATUS_BLK_SZ, 0, NULL, NULL, &sc->status_tag)) { BCE_PRINTF("%s(%d): Could not allocate status block DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } if(bus_dmamem_alloc(sc->status_tag, (void **)&sc->status_block, BUS_DMA_NOWAIT, &sc->status_map)) { BCE_PRINTF("%s(%d): Could not allocate status block DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } bzero((char *)sc->status_block, BCE_STATUS_BLK_SZ); error = bus_dmamap_load(sc->status_tag, sc->status_map, sc->status_block, BCE_STATUS_BLK_SZ, bce_dma_map_addr, &sc->status_block_paddr, BUS_DMA_NOWAIT); if (error) { BCE_PRINTF("%s(%d): Could not map status block DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): status_block_paddr = 0x%jX\n", __FUNCTION__, (uintmax_t) sc->status_block_paddr); /* * Create a DMA tag for the statistics block, allocate and clear the * memory, map the memory into DMA space, and fetch the physical * address of the block. */ if (bus_dma_tag_create(sc->parent_tag, BCE_DMA_ALIGN, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, BCE_STATS_BLK_SZ, 1, BCE_STATS_BLK_SZ, 0, NULL, NULL, &sc->stats_tag)) { BCE_PRINTF("%s(%d): Could not allocate statistics block DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } if (bus_dmamem_alloc(sc->stats_tag, (void **)&sc->stats_block, BUS_DMA_NOWAIT, &sc->stats_map)) { BCE_PRINTF("%s(%d): Could not allocate statistics block DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } bzero((char *)sc->stats_block, BCE_STATS_BLK_SZ); error = bus_dmamap_load(sc->stats_tag, sc->stats_map, sc->stats_block, BCE_STATS_BLK_SZ, bce_dma_map_addr, &sc->stats_block_paddr, BUS_DMA_NOWAIT); if(error) { BCE_PRINTF("%s(%d): Could not map statistics block DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): stats_block_paddr = 0x%jX\n", __FUNCTION__, (uintmax_t) sc->stats_block_paddr); /* BCM5709 uses host memory as cache for context memory. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { sc->ctx_pages = 0x2000 / BCM_PAGE_SIZE; if (sc->ctx_pages == 0) sc->ctx_pages = 1; DBRUNIF((sc->ctx_pages > 512), BCE_PRINTF("%s(%d): Too many CTX pages! %d > 512\n", __FILE__, __LINE__, sc->ctx_pages)); /* * Create a DMA tag for the context pages, * allocate and clear the memory, map the * memory into DMA space, and fetch the * physical address of the block. */ if(bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, BCM_PAGE_SIZE, 1, BCM_PAGE_SIZE, 0, NULL, NULL, &sc->ctx_tag)) { BCE_PRINTF("%s(%d): Could not allocate CTX DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } for (i = 0; i < sc->ctx_pages; i++) { if(bus_dmamem_alloc(sc->ctx_tag, (void **)&sc->ctx_block[i], BUS_DMA_NOWAIT, &sc->ctx_map[i])) { BCE_PRINTF("%s(%d): Could not allocate CTX " "DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } bzero((char *)sc->ctx_block[i], BCM_PAGE_SIZE); error = bus_dmamap_load(sc->ctx_tag, sc->ctx_map[i], sc->ctx_block[i], BCM_PAGE_SIZE, bce_dma_map_addr, &sc->ctx_paddr[i], BUS_DMA_NOWAIT); if (error) { BCE_PRINTF("%s(%d): Could not map CTX DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): ctx_paddr[%d] = 0x%jX\n", __FUNCTION__, i, (uintmax_t) sc->ctx_paddr[i]); } } /* * Create a DMA tag for the TX buffer descriptor chain, * allocate and clear the memory, and fetch the * physical address of the block. */ if(bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, BCE_TX_CHAIN_PAGE_SZ, 1, BCE_TX_CHAIN_PAGE_SZ, 0, NULL, NULL, &sc->tx_bd_chain_tag)) { BCE_PRINTF("%s(%d): Could not allocate TX descriptor chain DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } for (i = 0; i < TX_PAGES; i++) { if(bus_dmamem_alloc(sc->tx_bd_chain_tag, (void **)&sc->tx_bd_chain[i], BUS_DMA_NOWAIT, &sc->tx_bd_chain_map[i])) { BCE_PRINTF("%s(%d): Could not allocate TX descriptor " "chain DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } error = bus_dmamap_load(sc->tx_bd_chain_tag, sc->tx_bd_chain_map[i], sc->tx_bd_chain[i], BCE_TX_CHAIN_PAGE_SZ, bce_dma_map_addr, &sc->tx_bd_chain_paddr[i], BUS_DMA_NOWAIT); if (error) { BCE_PRINTF("%s(%d): Could not map TX descriptor chain DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): tx_bd_chain_paddr[%d] = 0x%jX\n", __FUNCTION__, i, (uintmax_t) sc->tx_bd_chain_paddr[i]); } /* Check the required size before mapping to conserve resources. */ if (bce_tso_enable) { max_size = BCE_TSO_MAX_SIZE; max_segments = BCE_MAX_SEGMENTS; max_seg_size = BCE_TSO_MAX_SEG_SIZE; } else { max_size = MCLBYTES * BCE_MAX_SEGMENTS; max_segments = BCE_MAX_SEGMENTS; max_seg_size = MCLBYTES; } /* Create a DMA tag for TX mbufs. */ if (bus_dma_tag_create(sc->parent_tag, 1, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, max_size, max_segments, max_seg_size, 0, NULL, NULL, &sc->tx_mbuf_tag)) { BCE_PRINTF("%s(%d): Could not allocate TX mbuf DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } /* Create DMA maps for the TX mbufs clusters. */ for (i = 0; i < TOTAL_TX_BD; i++) { if (bus_dmamap_create(sc->tx_mbuf_tag, BUS_DMA_NOWAIT, &sc->tx_mbuf_map[i])) { BCE_PRINTF("%s(%d): Unable to create TX mbuf DMA map!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } } /* * Create a DMA tag for the RX buffer descriptor chain, * allocate and clear the memory, and fetch the physical * address of the blocks. */ if (bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, BCE_DMA_BOUNDARY, BUS_SPACE_MAXADDR, sc->max_bus_addr, NULL, NULL, BCE_RX_CHAIN_PAGE_SZ, 1, BCE_RX_CHAIN_PAGE_SZ, 0, NULL, NULL, &sc->rx_bd_chain_tag)) { BCE_PRINTF("%s(%d): Could not allocate RX descriptor chain DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } for (i = 0; i < RX_PAGES; i++) { if (bus_dmamem_alloc(sc->rx_bd_chain_tag, (void **)&sc->rx_bd_chain[i], BUS_DMA_NOWAIT, &sc->rx_bd_chain_map[i])) { BCE_PRINTF("%s(%d): Could not allocate RX descriptor chain " "DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } bzero((char *)sc->rx_bd_chain[i], BCE_RX_CHAIN_PAGE_SZ); error = bus_dmamap_load(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], sc->rx_bd_chain[i], BCE_RX_CHAIN_PAGE_SZ, bce_dma_map_addr, &sc->rx_bd_chain_paddr[i], BUS_DMA_NOWAIT); if (error) { BCE_PRINTF("%s(%d): Could not map RX descriptor chain DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): rx_bd_chain_paddr[%d] = 0x%jX\n", __FUNCTION__, i, (uintmax_t) sc->rx_bd_chain_paddr[i]); } /* * Create a DMA tag for RX mbufs. */ #ifdef BCE_JUMBO_HDRSPLIT max_size = max_seg_size = ((sc->rx_bd_mbuf_alloc_size < MCLBYTES) ? MCLBYTES : sc->rx_bd_mbuf_alloc_size); #else max_size = max_seg_size = MJUM9BYTES; #endif max_segments = 1; DBPRINT(sc, BCE_INFO, "%s(): Creating rx_mbuf_tag (max size = 0x%jX " "max segments = %d, max segment size = 0x%jX)\n", __FUNCTION__, (uintmax_t) max_size, max_segments, (uintmax_t) max_seg_size); if (bus_dma_tag_create(sc->parent_tag, 1, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, max_size, max_segments, max_seg_size, 0, NULL, NULL, &sc->rx_mbuf_tag)) { BCE_PRINTF("%s(%d): Could not allocate RX mbuf DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } /* Create DMA maps for the RX mbuf clusters. */ for (i = 0; i < TOTAL_RX_BD; i++) { if (bus_dmamap_create(sc->rx_mbuf_tag, BUS_DMA_NOWAIT, &sc->rx_mbuf_map[i])) { BCE_PRINTF("%s(%d): Unable to create RX mbuf DMA map!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } } #ifdef BCE_JUMBO_HDRSPLIT /* * Create a DMA tag for the page buffer descriptor chain, * allocate and clear the memory, and fetch the physical * address of the blocks. */ if (bus_dma_tag_create(sc->parent_tag, BCM_PAGE_SIZE, BCE_DMA_BOUNDARY, BUS_SPACE_MAXADDR, sc->max_bus_addr, NULL, NULL, BCE_PG_CHAIN_PAGE_SZ, 1, BCE_PG_CHAIN_PAGE_SZ, 0, NULL, NULL, &sc->pg_bd_chain_tag)) { BCE_PRINTF("%s(%d): Could not allocate page descriptor chain DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } for (i = 0; i < PG_PAGES; i++) { if (bus_dmamem_alloc(sc->pg_bd_chain_tag, (void **)&sc->pg_bd_chain[i], BUS_DMA_NOWAIT, &sc->pg_bd_chain_map[i])) { BCE_PRINTF("%s(%d): Could not allocate page descriptor chain " "DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } bzero((char *)sc->pg_bd_chain[i], BCE_PG_CHAIN_PAGE_SZ); error = bus_dmamap_load(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], sc->pg_bd_chain[i], BCE_PG_CHAIN_PAGE_SZ, bce_dma_map_addr, &sc->pg_bd_chain_paddr[i], BUS_DMA_NOWAIT); if (error) { BCE_PRINTF("%s(%d): Could not map page descriptor chain DMA memory!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } DBPRINT(sc, BCE_INFO, "%s(): pg_bd_chain_paddr[%d] = 0x%jX\n", __FUNCTION__, i, (uintmax_t) sc->pg_bd_chain_paddr[i]); } /* * Create a DMA tag for page mbufs. */ max_size = max_seg_size = ((sc->pg_bd_mbuf_alloc_size < MCLBYTES) ? MCLBYTES : sc->pg_bd_mbuf_alloc_size); if (bus_dma_tag_create(sc->parent_tag, 1, BCE_DMA_BOUNDARY, sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL, max_size, 1, max_seg_size, 0, NULL, NULL, &sc->pg_mbuf_tag)) { BCE_PRINTF("%s(%d): Could not allocate page mbuf DMA tag!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } /* Create DMA maps for the page mbuf clusters. */ for (i = 0; i < TOTAL_PG_BD; i++) { if (bus_dmamap_create(sc->pg_mbuf_tag, BUS_DMA_NOWAIT, &sc->pg_mbuf_map[i])) { BCE_PRINTF("%s(%d): Unable to create page mbuf DMA map!\n", __FILE__, __LINE__); rc = ENOMEM; goto bce_dma_alloc_exit; } } #endif bce_dma_alloc_exit: DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); return(rc); } /****************************************************************************/ /* Release all resources used by the driver. */ /* */ /* Releases all resources acquired by the driver including interrupts, */ /* interrupt handler, interfaces, mutexes, and DMA memory. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_release_resources(struct bce_softc *sc) { device_t dev; DBENTER(BCE_VERBOSE_RESET); dev = sc->bce_dev; bce_dma_free(sc); if (sc->bce_intrhand != NULL) { DBPRINT(sc, BCE_INFO_RESET, "Removing interrupt handler.\n"); bus_teardown_intr(dev, sc->bce_res_irq, sc->bce_intrhand); } if (sc->bce_res_irq != NULL) { DBPRINT(sc, BCE_INFO_RESET, "Releasing IRQ.\n"); bus_release_resource(dev, SYS_RES_IRQ, sc->bce_irq_rid, sc->bce_res_irq); } if (sc->bce_flags & (BCE_USING_MSI_FLAG | BCE_USING_MSIX_FLAG)) { DBPRINT(sc, BCE_INFO_RESET, "Releasing MSI/MSI-X vector.\n"); pci_release_msi(dev); } if (sc->bce_res_mem != NULL) { DBPRINT(sc, BCE_INFO_RESET, "Releasing PCI memory.\n"); bus_release_resource(dev, SYS_RES_MEMORY, PCIR_BAR(0), sc->bce_res_mem); } if (sc->bce_ifp != NULL) { DBPRINT(sc, BCE_INFO_RESET, "Releasing IF.\n"); if_free(sc->bce_ifp); } if (mtx_initialized(&sc->bce_mtx)) BCE_LOCK_DESTROY(sc); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Firmware synchronization. */ /* */ /* Before performing certain events such as a chip reset, synchronize with */ /* the firmware first. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_fw_sync(struct bce_softc *sc, u32 msg_data) { int i, rc = 0; u32 val; DBENTER(BCE_VERBOSE_RESET); /* Don't waste any time if we've timed out before. */ if (sc->bce_fw_timed_out) { rc = EBUSY; goto bce_fw_sync_exit; } /* Increment the message sequence number. */ sc->bce_fw_wr_seq++; msg_data |= sc->bce_fw_wr_seq; DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "bce_fw_sync(): msg_data = 0x%08X\n", msg_data); /* Send the message to the bootcode driver mailbox. */ bce_shmem_wr(sc, BCE_DRV_MB, msg_data); /* Wait for the bootcode to acknowledge the message. */ for (i = 0; i < FW_ACK_TIME_OUT_MS; i++) { /* Check for a response in the bootcode firmware mailbox. */ val = bce_shmem_rd(sc, BCE_FW_MB); if ((val & BCE_FW_MSG_ACK) == (msg_data & BCE_DRV_MSG_SEQ)) break; DELAY(1000); } /* If we've timed out, tell the bootcode that we've stopped waiting. */ if (((val & BCE_FW_MSG_ACK) != (msg_data & BCE_DRV_MSG_SEQ)) && ((msg_data & BCE_DRV_MSG_DATA) != BCE_DRV_MSG_DATA_WAIT0)) { BCE_PRINTF("%s(%d): Firmware synchronization timeout! " "msg_data = 0x%08X\n", __FILE__, __LINE__, msg_data); msg_data &= ~BCE_DRV_MSG_CODE; msg_data |= BCE_DRV_MSG_CODE_FW_TIMEOUT; bce_shmem_wr(sc, BCE_DRV_MB, msg_data); sc->bce_fw_timed_out = 1; rc = EBUSY; } bce_fw_sync_exit: DBEXIT(BCE_VERBOSE_RESET); return (rc); } /****************************************************************************/ /* Load Receive Virtual 2 Physical (RV2P) processor firmware. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_load_rv2p_fw(struct bce_softc *sc, u32 *rv2p_code, u32 rv2p_code_len, u32 rv2p_proc) { int i; u32 val; DBENTER(BCE_VERBOSE_RESET); /* Set the page size used by RV2P. */ if (rv2p_proc == RV2P_PROC2) { BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(USABLE_RX_BD_PER_PAGE); } for (i = 0; i < rv2p_code_len; i += 8) { REG_WR(sc, BCE_RV2P_INSTR_HIGH, *rv2p_code); rv2p_code++; REG_WR(sc, BCE_RV2P_INSTR_LOW, *rv2p_code); rv2p_code++; if (rv2p_proc == RV2P_PROC1) { val = (i / 8) | BCE_RV2P_PROC1_ADDR_CMD_RDWR; REG_WR(sc, BCE_RV2P_PROC1_ADDR_CMD, val); } else { val = (i / 8) | BCE_RV2P_PROC2_ADDR_CMD_RDWR; REG_WR(sc, BCE_RV2P_PROC2_ADDR_CMD, val); } } /* Reset the processor, un-stall is done later. */ if (rv2p_proc == RV2P_PROC1) { REG_WR(sc, BCE_RV2P_COMMAND, BCE_RV2P_COMMAND_PROC1_RESET); } else { REG_WR(sc, BCE_RV2P_COMMAND, BCE_RV2P_COMMAND_PROC2_RESET); } DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Load RISC processor firmware. */ /* */ /* Loads firmware from the file if_bcefw.h into the scratchpad memory */ /* associated with a particular processor. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_load_cpu_fw(struct bce_softc *sc, struct cpu_reg *cpu_reg, struct fw_info *fw) { u32 offset; DBENTER(BCE_VERBOSE_RESET); bce_halt_cpu(sc, cpu_reg); /* Load the Text area. */ offset = cpu_reg->spad_base + (fw->text_addr - cpu_reg->mips_view_base); if (fw->text) { int j; for (j = 0; j < (fw->text_len / 4); j++, offset += 4) { REG_WR_IND(sc, offset, fw->text[j]); } } /* Load the Data area. */ offset = cpu_reg->spad_base + (fw->data_addr - cpu_reg->mips_view_base); if (fw->data) { int j; for (j = 0; j < (fw->data_len / 4); j++, offset += 4) { REG_WR_IND(sc, offset, fw->data[j]); } } /* Load the SBSS area. */ offset = cpu_reg->spad_base + (fw->sbss_addr - cpu_reg->mips_view_base); if (fw->sbss) { int j; for (j = 0; j < (fw->sbss_len / 4); j++, offset += 4) { REG_WR_IND(sc, offset, fw->sbss[j]); } } /* Load the BSS area. */ offset = cpu_reg->spad_base + (fw->bss_addr - cpu_reg->mips_view_base); if (fw->bss) { int j; for (j = 0; j < (fw->bss_len/4); j++, offset += 4) { REG_WR_IND(sc, offset, fw->bss[j]); } } /* Load the Read-Only area. */ offset = cpu_reg->spad_base + (fw->rodata_addr - cpu_reg->mips_view_base); if (fw->rodata) { int j; for (j = 0; j < (fw->rodata_len / 4); j++, offset += 4) { REG_WR_IND(sc, offset, fw->rodata[j]); } } /* Clear the pre-fetch instruction and set the FW start address. */ REG_WR_IND(sc, cpu_reg->inst, 0); REG_WR_IND(sc, cpu_reg->pc, fw->start_addr); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Starts the RISC processor. */ /* */ /* Assumes the CPU starting address has already been set. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_start_cpu(struct bce_softc *sc, struct cpu_reg *cpu_reg) { u32 val; DBENTER(BCE_VERBOSE_RESET); /* Start the CPU. */ val = REG_RD_IND(sc, cpu_reg->mode); val &= ~cpu_reg->mode_value_halt; REG_WR_IND(sc, cpu_reg->state, cpu_reg->state_value_clear); REG_WR_IND(sc, cpu_reg->mode, val); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Halts the RISC processor. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_halt_cpu(struct bce_softc *sc, struct cpu_reg *cpu_reg) { u32 val; DBENTER(BCE_VERBOSE_RESET); /* Halt the CPU. */ val = REG_RD_IND(sc, cpu_reg->mode); val |= cpu_reg->mode_value_halt; REG_WR_IND(sc, cpu_reg->mode, val); REG_WR_IND(sc, cpu_reg->state, cpu_reg->state_value_clear); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the RX CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_start_rxp_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_RXP_CPU_MODE; cpu_reg.mode_value_halt = BCE_RXP_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_RXP_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_RXP_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_RXP_CPU_REG_FILE; cpu_reg.evmask = BCE_RXP_CPU_EVENT_MASK; cpu_reg.pc = BCE_RXP_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_RXP_CPU_INSTRUCTION; cpu_reg.bp = BCE_RXP_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_RXP_SCRATCH; cpu_reg.mips_view_base = 0x8000000; DBPRINT(sc, BCE_INFO_RESET, "Starting RX firmware.\n"); bce_start_cpu(sc, &cpu_reg); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the RX CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_rxp_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; struct fw_info fw; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_RXP_CPU_MODE; cpu_reg.mode_value_halt = BCE_RXP_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_RXP_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_RXP_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_RXP_CPU_REG_FILE; cpu_reg.evmask = BCE_RXP_CPU_EVENT_MASK; cpu_reg.pc = BCE_RXP_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_RXP_CPU_INSTRUCTION; cpu_reg.bp = BCE_RXP_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_RXP_SCRATCH; cpu_reg.mips_view_base = 0x8000000; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { fw.ver_major = bce_RXP_b09FwReleaseMajor; fw.ver_minor = bce_RXP_b09FwReleaseMinor; fw.ver_fix = bce_RXP_b09FwReleaseFix; fw.start_addr = bce_RXP_b09FwStartAddr; fw.text_addr = bce_RXP_b09FwTextAddr; fw.text_len = bce_RXP_b09FwTextLen; fw.text_index = 0; fw.text = bce_RXP_b09FwText; fw.data_addr = bce_RXP_b09FwDataAddr; fw.data_len = bce_RXP_b09FwDataLen; fw.data_index = 0; fw.data = bce_RXP_b09FwData; fw.sbss_addr = bce_RXP_b09FwSbssAddr; fw.sbss_len = bce_RXP_b09FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_RXP_b09FwSbss; fw.bss_addr = bce_RXP_b09FwBssAddr; fw.bss_len = bce_RXP_b09FwBssLen; fw.bss_index = 0; fw.bss = bce_RXP_b09FwBss; fw.rodata_addr = bce_RXP_b09FwRodataAddr; fw.rodata_len = bce_RXP_b09FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_RXP_b09FwRodata; } else { fw.ver_major = bce_RXP_b06FwReleaseMajor; fw.ver_minor = bce_RXP_b06FwReleaseMinor; fw.ver_fix = bce_RXP_b06FwReleaseFix; fw.start_addr = bce_RXP_b06FwStartAddr; fw.text_addr = bce_RXP_b06FwTextAddr; fw.text_len = bce_RXP_b06FwTextLen; fw.text_index = 0; fw.text = bce_RXP_b06FwText; fw.data_addr = bce_RXP_b06FwDataAddr; fw.data_len = bce_RXP_b06FwDataLen; fw.data_index = 0; fw.data = bce_RXP_b06FwData; fw.sbss_addr = bce_RXP_b06FwSbssAddr; fw.sbss_len = bce_RXP_b06FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_RXP_b06FwSbss; fw.bss_addr = bce_RXP_b06FwBssAddr; fw.bss_len = bce_RXP_b06FwBssLen; fw.bss_index = 0; fw.bss = bce_RXP_b06FwBss; fw.rodata_addr = bce_RXP_b06FwRodataAddr; fw.rodata_len = bce_RXP_b06FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_RXP_b06FwRodata; } DBPRINT(sc, BCE_INFO_RESET, "Loading RX firmware.\n"); bce_load_cpu_fw(sc, &cpu_reg, &fw); /* Delay RXP start until initialization is complete. */ DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the TX CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_txp_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; struct fw_info fw; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_TXP_CPU_MODE; cpu_reg.mode_value_halt = BCE_TXP_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_TXP_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_TXP_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_TXP_CPU_REG_FILE; cpu_reg.evmask = BCE_TXP_CPU_EVENT_MASK; cpu_reg.pc = BCE_TXP_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_TXP_CPU_INSTRUCTION; cpu_reg.bp = BCE_TXP_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_TXP_SCRATCH; cpu_reg.mips_view_base = 0x8000000; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { fw.ver_major = bce_TXP_b09FwReleaseMajor; fw.ver_minor = bce_TXP_b09FwReleaseMinor; fw.ver_fix = bce_TXP_b09FwReleaseFix; fw.start_addr = bce_TXP_b09FwStartAddr; fw.text_addr = bce_TXP_b09FwTextAddr; fw.text_len = bce_TXP_b09FwTextLen; fw.text_index = 0; fw.text = bce_TXP_b09FwText; fw.data_addr = bce_TXP_b09FwDataAddr; fw.data_len = bce_TXP_b09FwDataLen; fw.data_index = 0; fw.data = bce_TXP_b09FwData; fw.sbss_addr = bce_TXP_b09FwSbssAddr; fw.sbss_len = bce_TXP_b09FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_TXP_b09FwSbss; fw.bss_addr = bce_TXP_b09FwBssAddr; fw.bss_len = bce_TXP_b09FwBssLen; fw.bss_index = 0; fw.bss = bce_TXP_b09FwBss; fw.rodata_addr = bce_TXP_b09FwRodataAddr; fw.rodata_len = bce_TXP_b09FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_TXP_b09FwRodata; } else { fw.ver_major = bce_TXP_b06FwReleaseMajor; fw.ver_minor = bce_TXP_b06FwReleaseMinor; fw.ver_fix = bce_TXP_b06FwReleaseFix; fw.start_addr = bce_TXP_b06FwStartAddr; fw.text_addr = bce_TXP_b06FwTextAddr; fw.text_len = bce_TXP_b06FwTextLen; fw.text_index = 0; fw.text = bce_TXP_b06FwText; fw.data_addr = bce_TXP_b06FwDataAddr; fw.data_len = bce_TXP_b06FwDataLen; fw.data_index = 0; fw.data = bce_TXP_b06FwData; fw.sbss_addr = bce_TXP_b06FwSbssAddr; fw.sbss_len = bce_TXP_b06FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_TXP_b06FwSbss; fw.bss_addr = bce_TXP_b06FwBssAddr; fw.bss_len = bce_TXP_b06FwBssLen; fw.bss_index = 0; fw.bss = bce_TXP_b06FwBss; fw.rodata_addr = bce_TXP_b06FwRodataAddr; fw.rodata_len = bce_TXP_b06FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_TXP_b06FwRodata; } DBPRINT(sc, BCE_INFO_RESET, "Loading TX firmware.\n"); bce_load_cpu_fw(sc, &cpu_reg, &fw); bce_start_cpu(sc, &cpu_reg); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the TPAT CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_tpat_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; struct fw_info fw; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_TPAT_CPU_MODE; cpu_reg.mode_value_halt = BCE_TPAT_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_TPAT_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_TPAT_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_TPAT_CPU_REG_FILE; cpu_reg.evmask = BCE_TPAT_CPU_EVENT_MASK; cpu_reg.pc = BCE_TPAT_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_TPAT_CPU_INSTRUCTION; cpu_reg.bp = BCE_TPAT_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_TPAT_SCRATCH; cpu_reg.mips_view_base = 0x8000000; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { fw.ver_major = bce_TPAT_b09FwReleaseMajor; fw.ver_minor = bce_TPAT_b09FwReleaseMinor; fw.ver_fix = bce_TPAT_b09FwReleaseFix; fw.start_addr = bce_TPAT_b09FwStartAddr; fw.text_addr = bce_TPAT_b09FwTextAddr; fw.text_len = bce_TPAT_b09FwTextLen; fw.text_index = 0; fw.text = bce_TPAT_b09FwText; fw.data_addr = bce_TPAT_b09FwDataAddr; fw.data_len = bce_TPAT_b09FwDataLen; fw.data_index = 0; fw.data = bce_TPAT_b09FwData; fw.sbss_addr = bce_TPAT_b09FwSbssAddr; fw.sbss_len = bce_TPAT_b09FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_TPAT_b09FwSbss; fw.bss_addr = bce_TPAT_b09FwBssAddr; fw.bss_len = bce_TPAT_b09FwBssLen; fw.bss_index = 0; fw.bss = bce_TPAT_b09FwBss; fw.rodata_addr = bce_TPAT_b09FwRodataAddr; fw.rodata_len = bce_TPAT_b09FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_TPAT_b09FwRodata; } else { fw.ver_major = bce_TPAT_b06FwReleaseMajor; fw.ver_minor = bce_TPAT_b06FwReleaseMinor; fw.ver_fix = bce_TPAT_b06FwReleaseFix; fw.start_addr = bce_TPAT_b06FwStartAddr; fw.text_addr = bce_TPAT_b06FwTextAddr; fw.text_len = bce_TPAT_b06FwTextLen; fw.text_index = 0; fw.text = bce_TPAT_b06FwText; fw.data_addr = bce_TPAT_b06FwDataAddr; fw.data_len = bce_TPAT_b06FwDataLen; fw.data_index = 0; fw.data = bce_TPAT_b06FwData; fw.sbss_addr = bce_TPAT_b06FwSbssAddr; fw.sbss_len = bce_TPAT_b06FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_TPAT_b06FwSbss; fw.bss_addr = bce_TPAT_b06FwBssAddr; fw.bss_len = bce_TPAT_b06FwBssLen; fw.bss_index = 0; fw.bss = bce_TPAT_b06FwBss; fw.rodata_addr = bce_TPAT_b06FwRodataAddr; fw.rodata_len = bce_TPAT_b06FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_TPAT_b06FwRodata; } DBPRINT(sc, BCE_INFO_RESET, "Loading TPAT firmware.\n"); bce_load_cpu_fw(sc, &cpu_reg, &fw); bce_start_cpu(sc, &cpu_reg); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the CP CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_cp_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; struct fw_info fw; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_CP_CPU_MODE; cpu_reg.mode_value_halt = BCE_CP_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_CP_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_CP_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_CP_CPU_REG_FILE; cpu_reg.evmask = BCE_CP_CPU_EVENT_MASK; cpu_reg.pc = BCE_CP_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_CP_CPU_INSTRUCTION; cpu_reg.bp = BCE_CP_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_CP_SCRATCH; cpu_reg.mips_view_base = 0x8000000; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { fw.ver_major = bce_CP_b09FwReleaseMajor; fw.ver_minor = bce_CP_b09FwReleaseMinor; fw.ver_fix = bce_CP_b09FwReleaseFix; fw.start_addr = bce_CP_b09FwStartAddr; fw.text_addr = bce_CP_b09FwTextAddr; fw.text_len = bce_CP_b09FwTextLen; fw.text_index = 0; fw.text = bce_CP_b09FwText; fw.data_addr = bce_CP_b09FwDataAddr; fw.data_len = bce_CP_b09FwDataLen; fw.data_index = 0; fw.data = bce_CP_b09FwData; fw.sbss_addr = bce_CP_b09FwSbssAddr; fw.sbss_len = bce_CP_b09FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_CP_b09FwSbss; fw.bss_addr = bce_CP_b09FwBssAddr; fw.bss_len = bce_CP_b09FwBssLen; fw.bss_index = 0; fw.bss = bce_CP_b09FwBss; fw.rodata_addr = bce_CP_b09FwRodataAddr; fw.rodata_len = bce_CP_b09FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_CP_b09FwRodata; } else { fw.ver_major = bce_CP_b06FwReleaseMajor; fw.ver_minor = bce_CP_b06FwReleaseMinor; fw.ver_fix = bce_CP_b06FwReleaseFix; fw.start_addr = bce_CP_b06FwStartAddr; fw.text_addr = bce_CP_b06FwTextAddr; fw.text_len = bce_CP_b06FwTextLen; fw.text_index = 0; fw.text = bce_CP_b06FwText; fw.data_addr = bce_CP_b06FwDataAddr; fw.data_len = bce_CP_b06FwDataLen; fw.data_index = 0; fw.data = bce_CP_b06FwData; fw.sbss_addr = bce_CP_b06FwSbssAddr; fw.sbss_len = bce_CP_b06FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_CP_b06FwSbss; fw.bss_addr = bce_CP_b06FwBssAddr; fw.bss_len = bce_CP_b06FwBssLen; fw.bss_index = 0; fw.bss = bce_CP_b06FwBss; fw.rodata_addr = bce_CP_b06FwRodataAddr; fw.rodata_len = bce_CP_b06FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_CP_b06FwRodata; } DBPRINT(sc, BCE_INFO_RESET, "Loading CP firmware.\n"); bce_load_cpu_fw(sc, &cpu_reg, &fw); bce_start_cpu(sc, &cpu_reg); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the COM CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_com_cpu(struct bce_softc *sc) { struct cpu_reg cpu_reg; struct fw_info fw; DBENTER(BCE_VERBOSE_RESET); cpu_reg.mode = BCE_COM_CPU_MODE; cpu_reg.mode_value_halt = BCE_COM_CPU_MODE_SOFT_HALT; cpu_reg.mode_value_sstep = BCE_COM_CPU_MODE_STEP_ENA; cpu_reg.state = BCE_COM_CPU_STATE; cpu_reg.state_value_clear = 0xffffff; cpu_reg.gpr0 = BCE_COM_CPU_REG_FILE; cpu_reg.evmask = BCE_COM_CPU_EVENT_MASK; cpu_reg.pc = BCE_COM_CPU_PROGRAM_COUNTER; cpu_reg.inst = BCE_COM_CPU_INSTRUCTION; cpu_reg.bp = BCE_COM_CPU_HW_BREAKPOINT; cpu_reg.spad_base = BCE_COM_SCRATCH; cpu_reg.mips_view_base = 0x8000000; if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { fw.ver_major = bce_COM_b09FwReleaseMajor; fw.ver_minor = bce_COM_b09FwReleaseMinor; fw.ver_fix = bce_COM_b09FwReleaseFix; fw.start_addr = bce_COM_b09FwStartAddr; fw.text_addr = bce_COM_b09FwTextAddr; fw.text_len = bce_COM_b09FwTextLen; fw.text_index = 0; fw.text = bce_COM_b09FwText; fw.data_addr = bce_COM_b09FwDataAddr; fw.data_len = bce_COM_b09FwDataLen; fw.data_index = 0; fw.data = bce_COM_b09FwData; fw.sbss_addr = bce_COM_b09FwSbssAddr; fw.sbss_len = bce_COM_b09FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_COM_b09FwSbss; fw.bss_addr = bce_COM_b09FwBssAddr; fw.bss_len = bce_COM_b09FwBssLen; fw.bss_index = 0; fw.bss = bce_COM_b09FwBss; fw.rodata_addr = bce_COM_b09FwRodataAddr; fw.rodata_len = bce_COM_b09FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_COM_b09FwRodata; } else { fw.ver_major = bce_COM_b06FwReleaseMajor; fw.ver_minor = bce_COM_b06FwReleaseMinor; fw.ver_fix = bce_COM_b06FwReleaseFix; fw.start_addr = bce_COM_b06FwStartAddr; fw.text_addr = bce_COM_b06FwTextAddr; fw.text_len = bce_COM_b06FwTextLen; fw.text_index = 0; fw.text = bce_COM_b06FwText; fw.data_addr = bce_COM_b06FwDataAddr; fw.data_len = bce_COM_b06FwDataLen; fw.data_index = 0; fw.data = bce_COM_b06FwData; fw.sbss_addr = bce_COM_b06FwSbssAddr; fw.sbss_len = bce_COM_b06FwSbssLen; fw.sbss_index = 0; fw.sbss = bce_COM_b06FwSbss; fw.bss_addr = bce_COM_b06FwBssAddr; fw.bss_len = bce_COM_b06FwBssLen; fw.bss_index = 0; fw.bss = bce_COM_b06FwBss; fw.rodata_addr = bce_COM_b06FwRodataAddr; fw.rodata_len = bce_COM_b06FwRodataLen; fw.rodata_index = 0; fw.rodata = bce_COM_b06FwRodata; } DBPRINT(sc, BCE_INFO_RESET, "Loading COM firmware.\n"); bce_load_cpu_fw(sc, &cpu_reg, &fw); bce_start_cpu(sc, &cpu_reg); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the RV2P, RX, TX, TPAT, COM, and CP CPUs. */ /* */ /* Loads the firmware for each CPU and starts the CPU. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_cpus(struct bce_softc *sc) { DBENTER(BCE_VERBOSE_RESET); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { if ((BCE_CHIP_REV(sc) == BCE_CHIP_REV_Ax)) { bce_load_rv2p_fw(sc, bce_xi90_rv2p_proc1, sizeof(bce_xi90_rv2p_proc1), RV2P_PROC1); bce_load_rv2p_fw(sc, bce_xi90_rv2p_proc2, sizeof(bce_xi90_rv2p_proc2), RV2P_PROC2); } else { bce_load_rv2p_fw(sc, bce_xi_rv2p_proc1, sizeof(bce_xi_rv2p_proc1), RV2P_PROC1); bce_load_rv2p_fw(sc, bce_xi_rv2p_proc2, sizeof(bce_xi_rv2p_proc2), RV2P_PROC2); } } else { bce_load_rv2p_fw(sc, bce_rv2p_proc1, sizeof(bce_rv2p_proc1), RV2P_PROC1); bce_load_rv2p_fw(sc, bce_rv2p_proc2, sizeof(bce_rv2p_proc2), RV2P_PROC2); } bce_init_rxp_cpu(sc); bce_init_txp_cpu(sc); bce_init_tpat_cpu(sc); bce_init_com_cpu(sc); bce_init_cp_cpu(sc); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize context memory. */ /* */ /* Clears the memory associated with each Context ID (CID). */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_ctx(struct bce_softc *sc) { DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { int i, retry_cnt = CTX_INIT_RETRY_COUNT; u32 val; DBPRINT(sc, BCE_INFO_CTX, "Initializing 5709 context.\n"); /* * BCM5709 context memory may be cached * in host memory so prepare the host memory * for access. */ val = BCE_CTX_COMMAND_ENABLED | BCE_CTX_COMMAND_MEM_INIT | (1 << 12); val |= (BCM_PAGE_BITS - 8) << 16; REG_WR(sc, BCE_CTX_COMMAND, val); /* Wait for mem init command to complete. */ for (i = 0; i < retry_cnt; i++) { val = REG_RD(sc, BCE_CTX_COMMAND); if (!(val & BCE_CTX_COMMAND_MEM_INIT)) break; DELAY(2); } /* ToDo: Consider returning an error here. */ DBRUNIF((val & BCE_CTX_COMMAND_MEM_INIT), BCE_PRINTF("%s(): Context memory initialization failed!\n", __FUNCTION__)); for (i = 0; i < sc->ctx_pages; i++) { int j; /* Set the physical address of the context memory cache. */ REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_DATA0, BCE_ADDR_LO(sc->ctx_paddr[i] & 0xfffffff0) | BCE_CTX_HOST_PAGE_TBL_DATA0_VALID); REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_DATA1, BCE_ADDR_HI(sc->ctx_paddr[i])); REG_WR(sc, BCE_CTX_HOST_PAGE_TBL_CTRL, i | BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ); /* Verify that the context memory write was successful. */ for (j = 0; j < retry_cnt; j++) { val = REG_RD(sc, BCE_CTX_HOST_PAGE_TBL_CTRL); if ((val & BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ) == 0) break; DELAY(5); } /* ToDo: Consider returning an error here. */ DBRUNIF((val & BCE_CTX_HOST_PAGE_TBL_CTRL_WRITE_REQ), BCE_PRINTF("%s(): Failed to initialize context page %d!\n", __FUNCTION__, i)); } } else { u32 vcid_addr, offset; DBPRINT(sc, BCE_INFO, "Initializing 5706/5708 context.\n"); /* * For the 5706/5708, context memory is local to * the controller, so initialize the controller * context memory. */ vcid_addr = GET_CID_ADDR(96); while (vcid_addr) { vcid_addr -= PHY_CTX_SIZE; REG_WR(sc, BCE_CTX_VIRT_ADDR, 0); REG_WR(sc, BCE_CTX_PAGE_TBL, vcid_addr); for(offset = 0; offset < PHY_CTX_SIZE; offset += 4) { CTX_WR(sc, 0x00, offset, 0); } REG_WR(sc, BCE_CTX_VIRT_ADDR, vcid_addr); REG_WR(sc, BCE_CTX_PAGE_TBL, vcid_addr); } } DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Fetch the permanent MAC address of the controller. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_get_mac_addr(struct bce_softc *sc) { u32 mac_lo = 0, mac_hi = 0; DBENTER(BCE_VERBOSE_RESET); /* * The NetXtreme II bootcode populates various NIC * power-on and runtime configuration items in a * shared memory area. The factory configured MAC * address is available from both NVRAM and the * shared memory area so we'll read the value from * shared memory for speed. */ mac_hi = bce_shmem_rd(sc, BCE_PORT_HW_CFG_MAC_UPPER); mac_lo = bce_shmem_rd(sc, BCE_PORT_HW_CFG_MAC_LOWER); if ((mac_lo == 0) && (mac_hi == 0)) { BCE_PRINTF("%s(%d): Invalid Ethernet address!\n", __FILE__, __LINE__); } else { sc->eaddr[0] = (u_char)(mac_hi >> 8); sc->eaddr[1] = (u_char)(mac_hi >> 0); sc->eaddr[2] = (u_char)(mac_lo >> 24); sc->eaddr[3] = (u_char)(mac_lo >> 16); sc->eaddr[4] = (u_char)(mac_lo >> 8); sc->eaddr[5] = (u_char)(mac_lo >> 0); } DBPRINT(sc, BCE_INFO_MISC, "Permanent Ethernet address = %6D\n", sc->eaddr, ":"); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Program the MAC address. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_set_mac_addr(struct bce_softc *sc) { u32 val; u8 *mac_addr = sc->eaddr; /* ToDo: Add support for setting multiple MAC addresses. */ DBENTER(BCE_VERBOSE_RESET); DBPRINT(sc, BCE_INFO_MISC, "Setting Ethernet address = %6D\n", sc->eaddr, ":"); val = (mac_addr[0] << 8) | mac_addr[1]; REG_WR(sc, BCE_EMAC_MAC_MATCH0, val); val = (mac_addr[2] << 24) | (mac_addr[3] << 16) | (mac_addr[4] << 8) | mac_addr[5]; REG_WR(sc, BCE_EMAC_MAC_MATCH1, val); DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Stop the controller. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_stop(struct bce_softc *sc) { struct ifnet *ifp; struct ifmedia_entry *ifm; struct mii_data *mii = NULL; int mtmp, itmp; DBENTER(BCE_VERBOSE_RESET); BCE_LOCK_ASSERT(sc); ifp = sc->bce_ifp; mii = device_get_softc(sc->bce_miibus); callout_stop(&sc->bce_tick_callout); /* Disable the transmit/receive blocks. */ REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, BCE_MISC_ENABLE_CLR_DEFAULT); REG_RD(sc, BCE_MISC_ENABLE_CLR_BITS); DELAY(20); bce_disable_intr(sc); /* Free RX buffers. */ #ifdef BCE_JUMBO_HDRSPLIT bce_free_pg_chain(sc); #endif bce_free_rx_chain(sc); /* Free TX buffers. */ bce_free_tx_chain(sc); /* * Isolate/power down the PHY, but leave the media selection * unchanged so that things will be put back to normal when * we bring the interface back up. */ itmp = ifp->if_flags; ifp->if_flags |= IFF_UP; /* If we are called from bce_detach(), mii is already NULL. */ if (mii != NULL) { ifm = mii->mii_media.ifm_cur; mtmp = ifm->ifm_media; ifm->ifm_media = IFM_ETHER | IFM_NONE; mii_mediachg(mii); ifm->ifm_media = mtmp; } ifp->if_flags = itmp; sc->watchdog_timer = 0; sc->bce_link = 0; ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); DBEXIT(BCE_VERBOSE_RESET); } static int bce_reset(struct bce_softc *sc, u32 reset_code) { u32 val; int i, rc = 0; DBENTER(BCE_VERBOSE_RESET); DBPRINT(sc, BCE_VERBOSE_RESET, "%s(): reset_code = 0x%08X\n", __FUNCTION__, reset_code); /* Wait for pending PCI transactions to complete. */ REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, BCE_MISC_ENABLE_CLR_BITS_TX_DMA_ENABLE | BCE_MISC_ENABLE_CLR_BITS_DMA_ENGINE_ENABLE | BCE_MISC_ENABLE_CLR_BITS_RX_DMA_ENABLE | BCE_MISC_ENABLE_CLR_BITS_HOST_COALESCE_ENABLE); val = REG_RD(sc, BCE_MISC_ENABLE_CLR_BITS); DELAY(5); /* Disable DMA */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { val = REG_RD(sc, BCE_MISC_NEW_CORE_CTL); val &= ~BCE_MISC_NEW_CORE_CTL_DMA_ENABLE; REG_WR(sc, BCE_MISC_NEW_CORE_CTL, val); } /* Assume bootcode is running. */ sc->bce_fw_timed_out = 0; /* Give the firmware a chance to prepare for the reset. */ rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT0 | reset_code); if (rc) goto bce_reset_exit; /* Set a firmware reminder that this is a soft reset. */ bce_shmem_wr(sc, BCE_DRV_RESET_SIGNATURE, BCE_DRV_RESET_SIGNATURE_MAGIC); /* Dummy read to force the chip to complete all current transactions. */ val = REG_RD(sc, BCE_MISC_ID); /* Chip reset. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { REG_WR(sc, BCE_MISC_COMMAND, BCE_MISC_COMMAND_SW_RESET); REG_RD(sc, BCE_MISC_COMMAND); DELAY(5); val = BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP; pci_write_config(sc->bce_dev, BCE_PCICFG_MISC_CONFIG, val, 4); } else { val = BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA | BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP; REG_WR(sc, BCE_PCICFG_MISC_CONFIG, val); /* Allow up to 30us for reset to complete. */ for (i = 0; i < 10; i++) { val = REG_RD(sc, BCE_PCICFG_MISC_CONFIG); if ((val & (BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | BCE_PCICFG_MISC_CONFIG_CORE_RST_BSY)) == 0) { break; } DELAY(10); } /* Check that reset completed successfully. */ if (val & (BCE_PCICFG_MISC_CONFIG_CORE_RST_REQ | BCE_PCICFG_MISC_CONFIG_CORE_RST_BSY)) { BCE_PRINTF("%s(%d): Reset failed!\n", __FILE__, __LINE__); rc = EBUSY; goto bce_reset_exit; } } /* Make sure byte swapping is properly configured. */ val = REG_RD(sc, BCE_PCI_SWAP_DIAG0); if (val != 0x01020304) { BCE_PRINTF("%s(%d): Byte swap is incorrect!\n", __FILE__, __LINE__); rc = ENODEV; goto bce_reset_exit; } /* Just completed a reset, assume that firmware is running again. */ sc->bce_fw_timed_out = 0; /* Wait for the firmware to finish its initialization. */ rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT1 | reset_code); if (rc) BCE_PRINTF("%s(%d): Firmware did not complete initialization!\n", __FILE__, __LINE__); bce_reset_exit: DBEXIT(BCE_VERBOSE_RESET); return (rc); } static int bce_chipinit(struct bce_softc *sc) { u32 val; int rc = 0; DBENTER(BCE_VERBOSE_RESET); bce_disable_intr(sc); /* * Initialize DMA byte/word swapping, configure the number of DMA * channels and PCI clock compensation delay. */ val = BCE_DMA_CONFIG_DATA_BYTE_SWAP | BCE_DMA_CONFIG_DATA_WORD_SWAP | #if BYTE_ORDER == BIG_ENDIAN BCE_DMA_CONFIG_CNTL_BYTE_SWAP | #endif BCE_DMA_CONFIG_CNTL_WORD_SWAP | DMA_READ_CHANS << 12 | DMA_WRITE_CHANS << 16; val |= (0x2 << 20) | BCE_DMA_CONFIG_CNTL_PCI_COMP_DLY; if ((sc->bce_flags & BCE_PCIX_FLAG) && (sc->bus_speed_mhz == 133)) val |= BCE_DMA_CONFIG_PCI_FAST_CLK_CMP; /* * This setting resolves a problem observed on certain Intel PCI * chipsets that cannot handle multiple outstanding DMA operations. * See errata E9_5706A1_65. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) && (BCE_CHIP_ID(sc) != BCE_CHIP_ID_5706_A0) && !(sc->bce_flags & BCE_PCIX_FLAG)) val |= BCE_DMA_CONFIG_CNTL_PING_PONG_DMA; REG_WR(sc, BCE_DMA_CONFIG, val); /* Enable the RX_V2P and Context state machines before access. */ REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, BCE_MISC_ENABLE_SET_BITS_HOST_COALESCE_ENABLE | BCE_MISC_ENABLE_STATUS_BITS_RX_V2P_ENABLE | BCE_MISC_ENABLE_STATUS_BITS_CONTEXT_ENABLE); /* Initialize context mapping and zero out the quick contexts. */ bce_init_ctx(sc); /* Initialize the on-boards CPUs */ bce_init_cpus(sc); /* Enable management frames (NC-SI) to flow to the MCP. */ if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { val = REG_RD(sc, BCE_RPM_MGMT_PKT_CTRL) | BCE_RPM_MGMT_PKT_CTRL_MGMT_EN; REG_WR(sc, BCE_RPM_MGMT_PKT_CTRL, val); } /* Prepare NVRAM for access. */ if (bce_init_nvram(sc)) { rc = ENODEV; goto bce_chipinit_exit; } /* Set the kernel bypass block size */ val = REG_RD(sc, BCE_MQ_CONFIG); val &= ~BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE; val |= BCE_MQ_CONFIG_KNL_BYP_BLK_SIZE_256; /* Enable bins used on the 5709. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { val |= BCE_MQ_CONFIG_BIN_MQ_MODE; if (BCE_CHIP_ID(sc) == BCE_CHIP_ID_5709_A1) val |= BCE_MQ_CONFIG_HALT_DIS; } REG_WR(sc, BCE_MQ_CONFIG, val); val = 0x10000 + (MAX_CID_CNT * MB_KERNEL_CTX_SIZE); REG_WR(sc, BCE_MQ_KNL_BYP_WIND_START, val); REG_WR(sc, BCE_MQ_KNL_WIND_END, val); /* Set the page size and clear the RV2P processor stall bits. */ val = (BCM_PAGE_BITS - 8) << 24; REG_WR(sc, BCE_RV2P_CONFIG, val); /* Configure page size. */ val = REG_RD(sc, BCE_TBDR_CONFIG); val &= ~BCE_TBDR_CONFIG_PAGE_SIZE; val |= (BCM_PAGE_BITS - 8) << 24 | 0x40; REG_WR(sc, BCE_TBDR_CONFIG, val); /* Set the perfect match control register to default. */ REG_WR_IND(sc, BCE_RXP_PM_CTRL, 0); bce_chipinit_exit: DBEXIT(BCE_VERBOSE_RESET); return(rc); } /****************************************************************************/ /* Initialize the controller in preparation to send/receive traffic. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_blockinit(struct bce_softc *sc) { u32 reg, val; int rc = 0; DBENTER(BCE_VERBOSE_RESET); /* Load the hardware default MAC address. */ bce_set_mac_addr(sc); /* Set the Ethernet backoff seed value */ val = sc->eaddr[0] + (sc->eaddr[1] << 8) + (sc->eaddr[2] << 16) + (sc->eaddr[3] ) + (sc->eaddr[4] << 8) + (sc->eaddr[5] << 16); REG_WR(sc, BCE_EMAC_BACKOFF_SEED, val); sc->last_status_idx = 0; sc->rx_mode = BCE_EMAC_RX_MODE_SORT_MODE; /* Set up link change interrupt generation. */ REG_WR(sc, BCE_EMAC_ATTENTION_ENA, BCE_EMAC_ATTENTION_ENA_LINK); /* Program the physical address of the status block. */ REG_WR(sc, BCE_HC_STATUS_ADDR_L, BCE_ADDR_LO(sc->status_block_paddr)); REG_WR(sc, BCE_HC_STATUS_ADDR_H, BCE_ADDR_HI(sc->status_block_paddr)); /* Program the physical address of the statistics block. */ REG_WR(sc, BCE_HC_STATISTICS_ADDR_L, BCE_ADDR_LO(sc->stats_block_paddr)); REG_WR(sc, BCE_HC_STATISTICS_ADDR_H, BCE_ADDR_HI(sc->stats_block_paddr)); /* Program various host coalescing parameters. */ REG_WR(sc, BCE_HC_TX_QUICK_CONS_TRIP, (sc->bce_tx_quick_cons_trip_int << 16) | sc->bce_tx_quick_cons_trip); REG_WR(sc, BCE_HC_RX_QUICK_CONS_TRIP, (sc->bce_rx_quick_cons_trip_int << 16) | sc->bce_rx_quick_cons_trip); REG_WR(sc, BCE_HC_COMP_PROD_TRIP, (sc->bce_comp_prod_trip_int << 16) | sc->bce_comp_prod_trip); REG_WR(sc, BCE_HC_TX_TICKS, (sc->bce_tx_ticks_int << 16) | sc->bce_tx_ticks); REG_WR(sc, BCE_HC_RX_TICKS, (sc->bce_rx_ticks_int << 16) | sc->bce_rx_ticks); REG_WR(sc, BCE_HC_COM_TICKS, (sc->bce_com_ticks_int << 16) | sc->bce_com_ticks); REG_WR(sc, BCE_HC_CMD_TICKS, (sc->bce_cmd_ticks_int << 16) | sc->bce_cmd_ticks); REG_WR(sc, BCE_HC_STATS_TICKS, (sc->bce_stats_ticks & 0xffff00)); REG_WR(sc, BCE_HC_STAT_COLLECT_TICKS, 0xbb8); /* 3ms */ /* Configure the Host Coalescing block. */ val = BCE_HC_CONFIG_RX_TMR_MODE | BCE_HC_CONFIG_TX_TMR_MODE | BCE_HC_CONFIG_COLLECT_STATS; #if 0 /* ToDo: Add MSI-X support. */ if (sc->bce_flags & BCE_USING_MSIX_FLAG) { u32 base = ((BCE_TX_VEC - 1) * BCE_HC_SB_CONFIG_SIZE) + BCE_HC_SB_CONFIG_1; REG_WR(sc, BCE_HC_MSIX_BIT_VECTOR, BCE_HC_MSIX_BIT_VECTOR_VAL); REG_WR(sc, base, BCE_HC_SB_CONFIG_1_TX_TMR_MODE | BCE_HC_SB_CONFIG_1_ONE_SHOT); REG_WR(sc, base + BCE_HC_TX_QUICK_CONS_TRIP_OFF, (sc->tx_quick_cons_trip_int << 16) | sc->tx_quick_cons_trip); REG_WR(sc, base + BCE_HC_TX_TICKS_OFF, (sc->tx_ticks_int << 16) | sc->tx_ticks); val |= BCE_HC_CONFIG_SB_ADDR_INC_128B; } /* * Tell the HC block to automatically set the * INT_MASK bit after an MSI/MSI-X interrupt * is generated so the driver doesn't have to. */ if (sc->bce_flags & BCE_ONE_SHOT_MSI_FLAG) val |= BCE_HC_CONFIG_ONE_SHOT; /* Set the MSI-X status blocks to 128 byte boundaries. */ if (sc->bce_flags & BCE_USING_MSIX_FLAG) val |= BCE_HC_CONFIG_SB_ADDR_INC_128B; #endif REG_WR(sc, BCE_HC_CONFIG, val); /* Clear the internal statistics counters. */ REG_WR(sc, BCE_HC_COMMAND, BCE_HC_COMMAND_CLR_STAT_NOW); /* Verify that bootcode is running. */ reg = bce_shmem_rd(sc, BCE_DEV_INFO_SIGNATURE); DBRUNIF(DB_RANDOMTRUE(bootcode_running_failure_sim_control), BCE_PRINTF("%s(%d): Simulating bootcode failure.\n", __FILE__, __LINE__); reg = 0); if ((reg & BCE_DEV_INFO_SIGNATURE_MAGIC_MASK) != BCE_DEV_INFO_SIGNATURE_MAGIC) { BCE_PRINTF("%s(%d): Bootcode not running! Found: 0x%08X, " "Expected: 08%08X\n", __FILE__, __LINE__, (reg & BCE_DEV_INFO_SIGNATURE_MAGIC_MASK), BCE_DEV_INFO_SIGNATURE_MAGIC); rc = ENODEV; goto bce_blockinit_exit; } /* Enable DMA */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { val = REG_RD(sc, BCE_MISC_NEW_CORE_CTL); val |= BCE_MISC_NEW_CORE_CTL_DMA_ENABLE; REG_WR(sc, BCE_MISC_NEW_CORE_CTL, val); } /* Allow bootcode to apply any additional fixes before enabling MAC. */ rc = bce_fw_sync(sc, BCE_DRV_MSG_DATA_WAIT2 | BCE_DRV_MSG_CODE_RESET); /* Enable link state change interrupt generation. */ REG_WR(sc, BCE_HC_ATTN_BITS_ENABLE, STATUS_ATTN_BITS_LINK_STATE); /* Enable the RXP. */ bce_start_rxp_cpu(sc); /* Disable management frames (NC-SI) from flowing to the MCP. */ if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { val = REG_RD(sc, BCE_RPM_MGMT_PKT_CTRL) & ~BCE_RPM_MGMT_PKT_CTRL_MGMT_EN; REG_WR(sc, BCE_RPM_MGMT_PKT_CTRL, val); } /* Enable all remaining blocks in the MAC. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, BCE_MISC_ENABLE_DEFAULT_XI); else REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, BCE_MISC_ENABLE_DEFAULT); REG_RD(sc, BCE_MISC_ENABLE_SET_BITS); DELAY(20); /* Save the current host coalescing block settings. */ sc->hc_command = REG_RD(sc, BCE_HC_COMMAND); bce_blockinit_exit: DBEXIT(BCE_VERBOSE_RESET); return (rc); } /****************************************************************************/ /* Encapsulate an mbuf into the rx_bd chain. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_get_rx_buf(struct bce_softc *sc, struct mbuf *m, u16 *prod, u16 *chain_prod, u32 *prod_bseq) { bus_dmamap_t map; bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; struct mbuf *m_new = NULL; struct rx_bd *rxbd; int nsegs, error, rc = 0; #ifdef BCE_DEBUG u16 debug_chain_prod = *chain_prod; #endif DBENTER(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); /* Make sure the inputs are valid. */ DBRUNIF((*chain_prod > MAX_RX_BD), BCE_PRINTF("%s(%d): RX producer out of range: 0x%04X > 0x%04X\n", __FILE__, __LINE__, *chain_prod, (u16) MAX_RX_BD)); DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): prod = 0x%04X, chain_prod = 0x%04X, " "prod_bseq = 0x%08X\n", __FUNCTION__, *prod, *chain_prod, *prod_bseq); /* Update some debug statistic counters */ DBRUNIF((sc->free_rx_bd < sc->rx_low_watermark), sc->rx_low_watermark = sc->free_rx_bd); DBRUNIF((sc->free_rx_bd == sc->max_rx_bd), sc->rx_empty_count++); /* Check whether this is a new mbuf allocation. */ if (m == NULL) { /* Simulate an mbuf allocation failure. */ DBRUNIF(DB_RANDOMTRUE(mbuf_alloc_failed_sim_control), sc->mbuf_alloc_failed_count++; sc->mbuf_alloc_failed_sim_count++; rc = ENOBUFS; goto bce_get_rx_buf_exit); /* This is a new mbuf allocation. */ #ifdef BCE_JUMBO_HDRSPLIT MGETHDR(m_new, M_DONTWAIT, MT_DATA); #else if (sc->rx_bd_mbuf_alloc_size <= MCLBYTES) m_new = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); else m_new = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, sc->rx_bd_mbuf_alloc_size); #endif if (m_new == NULL) { sc->mbuf_alloc_failed_count++; rc = ENOBUFS; goto bce_get_rx_buf_exit; } DBRUN(sc->debug_rx_mbuf_alloc++); } else { /* Reuse an existing mbuf. */ m_new = m; } /* Make sure we have a valid packet header. */ M_ASSERTPKTHDR(m_new); /* Initialize the mbuf size and pad if necessary for alignment. */ m_new->m_pkthdr.len = m_new->m_len = sc->rx_bd_mbuf_alloc_size; m_adj(m_new, sc->rx_bd_mbuf_align_pad); /* ToDo: Consider calling m_fragment() to test error handling. */ /* Map the mbuf cluster into device memory. */ map = sc->rx_mbuf_map[*chain_prod]; error = bus_dmamap_load_mbuf_sg(sc->rx_mbuf_tag, map, m_new, segs, &nsegs, BUS_DMA_NOWAIT); /* Handle any mapping errors. */ if (error) { BCE_PRINTF("%s(%d): Error mapping mbuf into RX chain (%d)!\n", __FILE__, __LINE__, error); sc->dma_map_addr_rx_failed_count++; m_freem(m_new); DBRUN(sc->debug_rx_mbuf_alloc--); rc = ENOBUFS; goto bce_get_rx_buf_exit; } /* All mbufs must map to a single segment. */ KASSERT(nsegs == 1, ("%s(): Too many segments returned (%d)!", __FUNCTION__, nsegs)); /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ /* Setup the rx_bd for the segment. */ rxbd = &sc->rx_bd_chain[RX_PAGE(*chain_prod)][RX_IDX(*chain_prod)]; rxbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(segs[0].ds_addr)); rxbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(segs[0].ds_addr)); rxbd->rx_bd_len = htole32(segs[0].ds_len); rxbd->rx_bd_flags = htole32(RX_BD_FLAGS_START | RX_BD_FLAGS_END); *prod_bseq += segs[0].ds_len; /* Save the mbuf and update our counter. */ sc->rx_mbuf_ptr[*chain_prod] = m_new; sc->free_rx_bd -= nsegs; DBRUNMSG(BCE_INSANE_RECV, bce_dump_rx_mbuf_chain(sc, debug_chain_prod, nsegs)); DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): prod = 0x%04X, chain_prod = 0x%04X, " "prod_bseq = 0x%08X\n", __FUNCTION__, *prod, *chain_prod, *prod_bseq); bce_get_rx_buf_exit: DBEXIT(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); return(rc); } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Encapsulate an mbuf cluster into the page chain. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_get_pg_buf(struct bce_softc *sc, struct mbuf *m, u16 *prod, u16 *prod_idx) { bus_dmamap_t map; bus_addr_t busaddr; struct mbuf *m_new = NULL; struct rx_bd *pgbd; int error, rc = 0; #ifdef BCE_DEBUG u16 debug_prod_idx = *prod_idx; #endif DBENTER(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); /* Make sure the inputs are valid. */ DBRUNIF((*prod_idx > MAX_PG_BD), BCE_PRINTF("%s(%d): page producer out of range: 0x%04X > 0x%04X\n", __FILE__, __LINE__, *prod_idx, (u16) MAX_PG_BD)); DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): prod = 0x%04X, " "chain_prod = 0x%04X\n", __FUNCTION__, *prod, *prod_idx); /* Update counters if we've hit a new low or run out of pages. */ DBRUNIF((sc->free_pg_bd < sc->pg_low_watermark), sc->pg_low_watermark = sc->free_pg_bd); DBRUNIF((sc->free_pg_bd == sc->max_pg_bd), sc->pg_empty_count++); /* Check whether this is a new mbuf allocation. */ if (m == NULL) { /* Simulate an mbuf allocation failure. */ DBRUNIF(DB_RANDOMTRUE(mbuf_alloc_failed_sim_control), sc->mbuf_alloc_failed_count++; sc->mbuf_alloc_failed_sim_count++; rc = ENOBUFS; goto bce_get_pg_buf_exit); /* This is a new mbuf allocation. */ m_new = m_getcl(M_DONTWAIT, MT_DATA, 0); if (m_new == NULL) { sc->mbuf_alloc_failed_count++; rc = ENOBUFS; goto bce_get_pg_buf_exit; } DBRUN(sc->debug_pg_mbuf_alloc++); } else { /* Reuse an existing mbuf. */ m_new = m; m_new->m_data = m_new->m_ext.ext_buf; } m_new->m_len = sc->pg_bd_mbuf_alloc_size; /* ToDo: Consider calling m_fragment() to test error handling. */ /* Map the mbuf cluster into device memory. */ map = sc->pg_mbuf_map[*prod_idx]; error = bus_dmamap_load(sc->pg_mbuf_tag, map, mtod(m_new, void *), sc->pg_bd_mbuf_alloc_size, bce_dma_map_addr, &busaddr, BUS_DMA_NOWAIT); /* Handle any mapping errors. */ if (error) { BCE_PRINTF("%s(%d): Error mapping mbuf into page chain!\n", __FILE__, __LINE__); m_freem(m_new); DBRUN(sc->debug_pg_mbuf_alloc--); rc = ENOBUFS; goto bce_get_pg_buf_exit; } /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ /* * The page chain uses the same rx_bd data structure * as the receive chain but doesn't require a byte sequence (bseq). */ pgbd = &sc->pg_bd_chain[PG_PAGE(*prod_idx)][PG_IDX(*prod_idx)]; pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(busaddr)); pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(busaddr)); pgbd->rx_bd_len = htole32(sc->pg_bd_mbuf_alloc_size); pgbd->rx_bd_flags = htole32(RX_BD_FLAGS_START | RX_BD_FLAGS_END); /* Save the mbuf and update our counter. */ sc->pg_mbuf_ptr[*prod_idx] = m_new; sc->free_pg_bd--; DBRUNMSG(BCE_INSANE_RECV, bce_dump_pg_mbuf_chain(sc, debug_prod_idx, 1)); DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): prod = 0x%04X, " "prod_idx = 0x%04X\n", __FUNCTION__, *prod, *prod_idx); bce_get_pg_buf_exit: DBEXIT(BCE_EXTREME_RESET | BCE_EXTREME_RECV | BCE_EXTREME_LOAD); return(rc); } #endif /* BCE_JUMBO_HDRSPLIT */ /****************************************************************************/ /* Initialize the TX context memory. */ /* */ /* Returns: */ /* Nothing */ /****************************************************************************/ static void bce_init_tx_context(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); /* Initialize the context ID for an L2 TX chain. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { /* Set the CID type to support an L2 connection. */ val = BCE_L2CTX_TX_TYPE_TYPE_L2_XI | BCE_L2CTX_TX_TYPE_SIZE_L2_XI; CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TYPE_XI, val); val = BCE_L2CTX_TX_CMD_TYPE_TYPE_L2_XI | (8 << 16); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_CMD_TYPE_XI, val); /* Point the hardware to the first page in the chain. */ val = BCE_ADDR_HI(sc->tx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TBDR_BHADDR_HI_XI, val); val = BCE_ADDR_LO(sc->tx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TBDR_BHADDR_LO_XI, val); } else { /* Set the CID type to support an L2 connection. */ val = BCE_L2CTX_TX_TYPE_TYPE_L2 | BCE_L2CTX_TX_TYPE_SIZE_L2; CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TYPE, val); val = BCE_L2CTX_TX_CMD_TYPE_TYPE_L2 | (8 << 16); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_CMD_TYPE, val); /* Point the hardware to the first page in the chain. */ val = BCE_ADDR_HI(sc->tx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TBDR_BHADDR_HI, val); val = BCE_ADDR_LO(sc->tx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(TX_CID), BCE_L2CTX_TX_TBDR_BHADDR_LO, val); } DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Allocate memory and initialize the TX data structures. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_init_tx_chain(struct bce_softc *sc) { struct tx_bd *txbd; int i, rc = 0; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_LOAD); /* Set the initial TX producer/consumer indices. */ sc->tx_prod = 0; sc->tx_cons = 0; sc->tx_prod_bseq = 0; sc->used_tx_bd = 0; sc->max_tx_bd = USABLE_TX_BD; DBRUN(sc->tx_hi_watermark = USABLE_TX_BD); DBRUN(sc->tx_full_count = 0); /* * The NetXtreme II supports a linked-list structre called * a Buffer Descriptor Chain (or BD chain). A BD chain * consists of a series of 1 or more chain pages, each of which * consists of a fixed number of BD entries. * The last BD entry on each page is a pointer to the next page * in the chain, and the last pointer in the BD chain * points back to the beginning of the chain. */ /* Set the TX next pointer chain entries. */ for (i = 0; i < TX_PAGES; i++) { int j; txbd = &sc->tx_bd_chain[i][USABLE_TX_BD_PER_PAGE]; /* Check if we've reached the last page. */ if (i == (TX_PAGES - 1)) j = 0; else j = i + 1; txbd->tx_bd_haddr_hi = htole32(BCE_ADDR_HI(sc->tx_bd_chain_paddr[j])); txbd->tx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->tx_bd_chain_paddr[j])); } bce_init_tx_context(sc); DBRUNMSG(BCE_INSANE_SEND, bce_dump_tx_chain(sc, 0, TOTAL_TX_BD)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_LOAD); return(rc); } /****************************************************************************/ /* Free memory and clear the TX data structures. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_free_tx_chain(struct bce_softc *sc) { int i; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_UNLOAD); /* Unmap, unload, and free any mbufs still in the TX mbuf chain. */ for (i = 0; i < TOTAL_TX_BD; i++) { if (sc->tx_mbuf_ptr[i] != NULL) { if (sc->tx_mbuf_map[i] != NULL) bus_dmamap_sync(sc->tx_mbuf_tag, sc->tx_mbuf_map[i], BUS_DMASYNC_POSTWRITE); m_freem(sc->tx_mbuf_ptr[i]); sc->tx_mbuf_ptr[i] = NULL; DBRUN(sc->debug_tx_mbuf_alloc--); } } /* Clear each TX chain page. */ for (i = 0; i < TX_PAGES; i++) bzero((char *)sc->tx_bd_chain[i], BCE_TX_CHAIN_PAGE_SZ); sc->used_tx_bd = 0; /* Check if we lost any mbufs in the process. */ DBRUNIF((sc->debug_tx_mbuf_alloc), BCE_PRINTF("%s(%d): Memory leak! Lost %d mbufs " "from tx chain!\n", __FILE__, __LINE__, sc->debug_tx_mbuf_alloc)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_SEND | BCE_VERBOSE_UNLOAD); } /****************************************************************************/ /* Initialize the RX context memory. */ /* */ /* Returns: */ /* Nothing */ /****************************************************************************/ static void bce_init_rx_context(struct bce_softc *sc) { u32 val; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_CTX); /* Initialize the type, size, and BD cache levels for the RX context. */ val = BCE_L2CTX_RX_CTX_TYPE_CTX_BD_CHN_TYPE_VALUE | BCE_L2CTX_RX_CTX_TYPE_SIZE_L2 | (0x02 << BCE_L2CTX_RX_BD_PRE_READ_SHIFT); /* * Set the level for generating pause frames * when the number of available rx_bd's gets * too low (the low watermark) and the level * when pause frames can be stopped (the high * watermark). */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { u32 lo_water, hi_water; lo_water = BCE_L2CTX_RX_LO_WATER_MARK_DEFAULT; hi_water = USABLE_RX_BD / 4; lo_water /= BCE_L2CTX_RX_LO_WATER_MARK_SCALE; hi_water /= BCE_L2CTX_RX_HI_WATER_MARK_SCALE; if (hi_water > 0xf) hi_water = 0xf; else if (hi_water == 0) lo_water = 0; val |= (lo_water << BCE_L2CTX_RX_LO_WATER_MARK_SHIFT) | (hi_water << BCE_L2CTX_RX_HI_WATER_MARK_SHIFT); } CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_CTX_TYPE, val); /* Setup the MQ BIN mapping for l2_ctx_host_bseq. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { val = REG_RD(sc, BCE_MQ_MAP_L2_5); REG_WR(sc, BCE_MQ_MAP_L2_5, val | BCE_MQ_MAP_L2_5_ARM); } /* Point the hardware to the first page in the chain. */ val = BCE_ADDR_HI(sc->rx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_BDHADDR_HI, val); val = BCE_ADDR_LO(sc->rx_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_BDHADDR_LO, val); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Allocate memory and initialize the RX data structures. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_init_rx_chain(struct bce_softc *sc) { struct rx_bd *rxbd; int i, rc = 0; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); /* Initialize the RX producer and consumer indices. */ sc->rx_prod = 0; sc->rx_cons = 0; sc->rx_prod_bseq = 0; sc->free_rx_bd = USABLE_RX_BD; sc->max_rx_bd = USABLE_RX_BD; DBRUN(sc->rx_low_watermark = sc->max_rx_bd); DBRUN(sc->rx_empty_count = 0); /* Initialize the RX next pointer chain entries. */ for (i = 0; i < RX_PAGES; i++) { int j; rxbd = &sc->rx_bd_chain[i][USABLE_RX_BD_PER_PAGE]; /* Check if we've reached the last page. */ if (i == (RX_PAGES - 1)) j = 0; else j = i + 1; /* Setup the chain page pointers. */ rxbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(sc->rx_bd_chain_paddr[j])); rxbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->rx_bd_chain_paddr[j])); } /* Fill up the RX chain. */ bce_fill_rx_chain(sc); for (i = 0; i < RX_PAGES; i++) { bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } bce_init_rx_context(sc); DBRUNMSG(BCE_EXTREME_RECV, bce_dump_rx_chain(sc, 0, TOTAL_RX_BD)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); /* ToDo: Are there possible failure modes here? */ return(rc); } /****************************************************************************/ /* Add mbufs to the RX chain until its full or an mbuf allocation error */ /* occurs. */ /* */ /* Returns: */ /* Nothing */ /****************************************************************************/ static void bce_fill_rx_chain(struct bce_softc *sc) { u16 prod, prod_idx; u32 prod_bseq; DBENTER(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); /* Get the RX chain producer indices. */ prod = sc->rx_prod; prod_bseq = sc->rx_prod_bseq; /* Keep filling the RX chain until it's full. */ while (sc->free_rx_bd > 0) { prod_idx = RX_CHAIN_IDX(prod); if (bce_get_rx_buf(sc, NULL, &prod, &prod_idx, &prod_bseq)) { /* Bail out if we can't add an mbuf to the chain. */ break; } prod = NEXT_RX_BD(prod); } /* Save the RX chain producer indices. */ sc->rx_prod = prod; sc->rx_prod_bseq = prod_bseq; DBRUNIF(((prod & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE), BCE_PRINTF("%s(): Invalid rx_prod value: 0x%04X\n", __FUNCTION__, sc->rx_prod)); /* Write the mailbox and tell the chip about the waiting rx_bd's. */ REG_WR16(sc, MB_GET_CID_ADDR(RX_CID) + BCE_L2MQ_RX_HOST_BDIDX, sc->rx_prod); REG_WR(sc, MB_GET_CID_ADDR(RX_CID) + BCE_L2MQ_RX_HOST_BSEQ, sc->rx_prod_bseq); DBEXIT(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Free memory and clear the RX data structures. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_free_rx_chain(struct bce_softc *sc) { int i; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); /* Free any mbufs still in the RX mbuf chain. */ for (i = 0; i < TOTAL_RX_BD; i++) { if (sc->rx_mbuf_ptr[i] != NULL) { if (sc->rx_mbuf_map[i] != NULL) bus_dmamap_sync(sc->rx_mbuf_tag, sc->rx_mbuf_map[i], BUS_DMASYNC_POSTREAD); m_freem(sc->rx_mbuf_ptr[i]); sc->rx_mbuf_ptr[i] = NULL; DBRUN(sc->debug_rx_mbuf_alloc--); } } /* Clear each RX chain page. */ for (i = 0; i < RX_PAGES; i++) bzero((char *)sc->rx_bd_chain[i], BCE_RX_CHAIN_PAGE_SZ); sc->free_rx_bd = sc->max_rx_bd; /* Check if we lost any mbufs in the process. */ DBRUNIF((sc->debug_rx_mbuf_alloc), BCE_PRINTF("%s(): Memory leak! Lost %d mbufs from rx chain!\n", __FUNCTION__, sc->debug_rx_mbuf_alloc)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Allocate memory and initialize the page data structures. */ /* Assumes that bce_init_rx_chain() has not already been called. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_init_pg_chain(struct bce_softc *sc) { struct rx_bd *pgbd; int i, rc = 0; u32 val; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); /* Initialize the page producer and consumer indices. */ sc->pg_prod = 0; sc->pg_cons = 0; sc->free_pg_bd = USABLE_PG_BD; sc->max_pg_bd = USABLE_PG_BD; DBRUN(sc->pg_low_watermark = sc->max_pg_bd); DBRUN(sc->pg_empty_count = 0); /* Initialize the page next pointer chain entries. */ for (i = 0; i < PG_PAGES; i++) { int j; pgbd = &sc->pg_bd_chain[i][USABLE_PG_BD_PER_PAGE]; /* Check if we've reached the last page. */ if (i == (PG_PAGES - 1)) j = 0; else j = i + 1; /* Setup the chain page pointers. */ pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(sc->pg_bd_chain_paddr[j])); pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(sc->pg_bd_chain_paddr[j])); } /* Setup the MQ BIN mapping for host_pg_bidx. */ if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) REG_WR(sc, BCE_MQ_MAP_L2_3, BCE_MQ_MAP_L2_3_DEFAULT); CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_PG_BUF_SIZE, 0); /* Configure the rx_bd and page chain mbuf cluster size. */ val = (sc->rx_bd_mbuf_data_len << 16) | sc->pg_bd_mbuf_alloc_size; CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_PG_BUF_SIZE, val); /* Configure the context reserved for jumbo support. */ CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_RBDC_KEY, BCE_L2CTX_RX_RBDC_JUMBO_KEY); /* Point the hardware to the first page in the page chain. */ val = BCE_ADDR_HI(sc->pg_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_PG_BDHADDR_HI, val); val = BCE_ADDR_LO(sc->pg_bd_chain_paddr[0]); CTX_WR(sc, GET_CID_ADDR(RX_CID), BCE_L2CTX_RX_NX_PG_BDHADDR_LO, val); /* Fill up the page chain. */ bce_fill_pg_chain(sc); for (i = 0; i < PG_PAGES; i++) { bus_dmamap_sync(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } DBRUNMSG(BCE_EXTREME_RECV, bce_dump_pg_chain(sc, 0, TOTAL_PG_BD)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); return(rc); } /****************************************************************************/ /* Add mbufs to the page chain until its full or an mbuf allocation error */ /* occurs. */ /* */ /* Returns: */ /* Nothing */ /****************************************************************************/ static void bce_fill_pg_chain(struct bce_softc *sc) { u16 prod, prod_idx; DBENTER(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); /* Get the page chain prodcuer index. */ prod = sc->pg_prod; /* Keep filling the page chain until it's full. */ while (sc->free_pg_bd > 0) { prod_idx = PG_CHAIN_IDX(prod); if (bce_get_pg_buf(sc, NULL, &prod, &prod_idx)) { /* Bail out if we can't add an mbuf to the chain. */ break; } prod = NEXT_PG_BD(prod); } /* Save the page chain producer index. */ sc->pg_prod = prod; DBRUNIF(((prod & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE), BCE_PRINTF("%s(): Invalid pg_prod value: 0x%04X\n", __FUNCTION__, sc->pg_prod)); /* * Write the mailbox and tell the chip about * the new rx_bd's in the page chain. */ REG_WR16(sc, MB_GET_CID_ADDR(RX_CID) + BCE_L2MQ_RX_HOST_PG_BDIDX, sc->pg_prod); DBEXIT(BCE_VERBOSE_RESET | BCE_EXTREME_RECV | BCE_VERBOSE_LOAD | BCE_VERBOSE_CTX); } /****************************************************************************/ /* Free memory and clear the RX data structures. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_free_pg_chain(struct bce_softc *sc) { int i; DBENTER(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); /* Free any mbufs still in the mbuf page chain. */ for (i = 0; i < TOTAL_PG_BD; i++) { if (sc->pg_mbuf_ptr[i] != NULL) { if (sc->pg_mbuf_map[i] != NULL) bus_dmamap_sync(sc->pg_mbuf_tag, sc->pg_mbuf_map[i], BUS_DMASYNC_POSTREAD); m_freem(sc->pg_mbuf_ptr[i]); sc->pg_mbuf_ptr[i] = NULL; DBRUN(sc->debug_pg_mbuf_alloc--); } } /* Clear each page chain pages. */ for (i = 0; i < PG_PAGES; i++) bzero((char *)sc->pg_bd_chain[i], BCE_PG_CHAIN_PAGE_SZ); sc->free_pg_bd = sc->max_pg_bd; /* Check if we lost any mbufs in the process. */ DBRUNIF((sc->debug_pg_mbuf_alloc), BCE_PRINTF("%s(): Memory leak! Lost %d mbufs from page chain!\n", __FUNCTION__, sc->debug_pg_mbuf_alloc)); DBEXIT(BCE_VERBOSE_RESET | BCE_VERBOSE_RECV | BCE_VERBOSE_UNLOAD); } #endif /* BCE_JUMBO_HDRSPLIT */ /****************************************************************************/ /* Set media options. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_ifmedia_upd(struct ifnet *ifp) { struct bce_softc *sc = ifp->if_softc; DBENTER(BCE_VERBOSE); BCE_LOCK(sc); bce_ifmedia_upd_locked(ifp); BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE); return (0); } /****************************************************************************/ /* Set media options. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_ifmedia_upd_locked(struct ifnet *ifp) { struct bce_softc *sc = ifp->if_softc; struct mii_data *mii; DBENTER(BCE_VERBOSE); BCE_LOCK_ASSERT(sc); mii = device_get_softc(sc->bce_miibus); /* Make sure the MII bus has been enumerated. */ if (mii) { sc->bce_link = 0; if (mii->mii_instance) { struct mii_softc *miisc; LIST_FOREACH(miisc, &mii->mii_phys, mii_list) mii_phy_reset(miisc); } mii_mediachg(mii); } DBEXIT(BCE_VERBOSE); } /****************************************************************************/ /* Reports current media status. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) { struct bce_softc *sc = ifp->if_softc; struct mii_data *mii; DBENTER(BCE_VERBOSE); BCE_LOCK(sc); mii = device_get_softc(sc->bce_miibus); mii_pollstat(mii); ifmr->ifm_active = mii->mii_media_active; ifmr->ifm_status = mii->mii_media_status; BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE); } /****************************************************************************/ /* Handles PHY generated interrupt events. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_phy_intr(struct bce_softc *sc) { u32 new_link_state, old_link_state; DBENTER(BCE_VERBOSE_PHY | BCE_VERBOSE_INTR); new_link_state = sc->status_block->status_attn_bits & STATUS_ATTN_BITS_LINK_STATE; old_link_state = sc->status_block->status_attn_bits_ack & STATUS_ATTN_BITS_LINK_STATE; /* Handle any changes if the link state has changed. */ if (new_link_state != old_link_state) { /* Update the status_attn_bits_ack field in the status block. */ if (new_link_state) { REG_WR(sc, BCE_PCICFG_STATUS_BIT_SET_CMD, STATUS_ATTN_BITS_LINK_STATE); DBPRINT(sc, BCE_INFO_PHY, "%s(): Link is now UP.\n", __FUNCTION__); } else { REG_WR(sc, BCE_PCICFG_STATUS_BIT_CLEAR_CMD, STATUS_ATTN_BITS_LINK_STATE); DBPRINT(sc, BCE_INFO_PHY, "%s(): Link is now DOWN.\n", __FUNCTION__); } /* * Assume link is down and allow * tick routine to update the state * based on the actual media state. */ sc->bce_link = 0; callout_stop(&sc->bce_tick_callout); bce_tick(sc); } /* Acknowledge the link change interrupt. */ REG_WR(sc, BCE_EMAC_STATUS, BCE_EMAC_STATUS_LINK_CHANGE); DBEXIT(BCE_VERBOSE_PHY | BCE_VERBOSE_INTR); } /****************************************************************************/ /* Reads the receive consumer value from the status block (skipping over */ /* chain page pointer if necessary). */ /* */ /* Returns: */ /* hw_cons */ /****************************************************************************/ static inline u16 bce_get_hw_rx_cons(struct bce_softc *sc) { u16 hw_cons; rmb(); hw_cons = sc->status_block->status_rx_quick_consumer_index0; if ((hw_cons & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE) hw_cons++; return hw_cons; } /****************************************************************************/ /* Handles received frame interrupt events. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_rx_intr(struct bce_softc *sc) { struct ifnet *ifp = sc->bce_ifp; struct l2_fhdr *l2fhdr; struct ether_vlan_header *vh; unsigned int pkt_len; u16 sw_rx_cons, sw_rx_cons_idx, hw_rx_cons; u32 status; #ifdef BCE_JUMBO_HDRSPLIT unsigned int rem_len; u16 sw_pg_cons, sw_pg_cons_idx; #endif DBENTER(BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); DBRUN(sc->rx_interrupts++); DBPRINT(sc, BCE_EXTREME_RECV, "%s(enter): rx_prod = 0x%04X, " "rx_cons = 0x%04X, rx_prod_bseq = 0x%08X\n", __FUNCTION__, sc->rx_prod, sc->rx_cons, sc->rx_prod_bseq); /* Prepare the RX chain pages to be accessed by the host CPU. */ for (int i = 0; i < RX_PAGES; i++) bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], BUS_DMASYNC_POSTREAD); #ifdef BCE_JUMBO_HDRSPLIT /* Prepare the page chain pages to be accessed by the host CPU. */ for (int i = 0; i < PG_PAGES; i++) bus_dmamap_sync(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], BUS_DMASYNC_POSTREAD); #endif /* Get the hardware's view of the RX consumer index. */ hw_rx_cons = sc->hw_rx_cons = bce_get_hw_rx_cons(sc); /* Get working copies of the driver's view of the consumer indices. */ sw_rx_cons = sc->rx_cons; #ifdef BCE_JUMBO_HDRSPLIT sw_pg_cons = sc->pg_cons; #endif /* Update some debug statistics counters */ DBRUNIF((sc->free_rx_bd < sc->rx_low_watermark), sc->rx_low_watermark = sc->free_rx_bd); DBRUNIF((sc->free_rx_bd == sc->max_rx_bd), sc->rx_empty_count++); /* Scan through the receive chain as long as there is work to do */ /* ToDo: Consider setting a limit on the number of packets processed. */ rmb(); while (sw_rx_cons != hw_rx_cons) { struct mbuf *m0; /* Convert the producer/consumer indices to an actual rx_bd index. */ sw_rx_cons_idx = RX_CHAIN_IDX(sw_rx_cons); /* Unmap the mbuf from DMA space. */ bus_dmamap_sync(sc->rx_mbuf_tag, sc->rx_mbuf_map[sw_rx_cons_idx], BUS_DMASYNC_POSTREAD); bus_dmamap_unload(sc->rx_mbuf_tag, sc->rx_mbuf_map[sw_rx_cons_idx]); /* Remove the mbuf from the RX chain. */ m0 = sc->rx_mbuf_ptr[sw_rx_cons_idx]; sc->rx_mbuf_ptr[sw_rx_cons_idx] = NULL; DBRUN(sc->debug_rx_mbuf_alloc--); sc->free_rx_bd++; if(m0 == NULL) { DBPRINT(sc, BCE_EXTREME_RECV, "%s(): Oops! Empty mbuf pointer " "found in sc->rx_mbuf_ptr[0x%04X]!\n", __FUNCTION__, sw_rx_cons_idx); goto bce_rx_int_next_rx; } /* * Frames received on the NetXteme II are prepended with an * l2_fhdr structure which provides status information about * the received frame (including VLAN tags and checksum info). * The frames are also automatically adjusted to align the IP * header (i.e. two null bytes are inserted before the Ethernet * header). As a result the data DMA'd by the controller into * the mbuf is as follows: * * +---------+-----+---------------------+-----+ * | l2_fhdr | pad | packet data | FCS | * +---------+-----+---------------------+-----+ * * The l2_fhdr needs to be checked and skipped and the FCS needs * to be stripped before sending the packet up the stack. */ l2fhdr = mtod(m0, struct l2_fhdr *); /* Get the packet data + FCS length and the status. */ pkt_len = l2fhdr->l2_fhdr_pkt_len; status = l2fhdr->l2_fhdr_status; /* * Skip over the l2_fhdr and pad, resulting in the * following data in the mbuf: * +---------------------+-----+ * | packet data | FCS | * +---------------------+-----+ */ m_adj(m0, sizeof(struct l2_fhdr) + ETHER_ALIGN); #ifdef BCE_JUMBO_HDRSPLIT /* * Check whether the received frame fits in a single * mbuf or not (i.e. packet data + FCS <= * sc->rx_bd_mbuf_data_len bytes). */ if (pkt_len > m0->m_len) { /* * The received frame is larger than a single mbuf. * If the frame was a TCP frame then only the TCP * header is placed in the mbuf, the remaining * payload (including FCS) is placed in the page * chain, the SPLIT flag is set, and the header * length is placed in the IP checksum field. * If the frame is not a TCP frame then the mbuf * is filled and the remaining bytes are placed * in the page chain. */ DBPRINT(sc, BCE_INFO_RECV, "%s(): Found a large packet.\n", __FUNCTION__); /* * When the page chain is enabled and the TCP * header has been split from the TCP payload, * the ip_xsum structure will reflect the length * of the TCP header, not the IP checksum. Set * the packet length of the mbuf accordingly. */ if (status & L2_FHDR_STATUS_SPLIT) m0->m_len = l2fhdr->l2_fhdr_ip_xsum; rem_len = pkt_len - m0->m_len; /* Pull mbufs off the page chain for the remaining data. */ while (rem_len > 0) { struct mbuf *m_pg; sw_pg_cons_idx = PG_CHAIN_IDX(sw_pg_cons); /* Remove the mbuf from the page chain. */ m_pg = sc->pg_mbuf_ptr[sw_pg_cons_idx]; sc->pg_mbuf_ptr[sw_pg_cons_idx] = NULL; DBRUN(sc->debug_pg_mbuf_alloc--); sc->free_pg_bd++; /* Unmap the page chain mbuf from DMA space. */ bus_dmamap_sync(sc->pg_mbuf_tag, sc->pg_mbuf_map[sw_pg_cons_idx], BUS_DMASYNC_POSTREAD); bus_dmamap_unload(sc->pg_mbuf_tag, sc->pg_mbuf_map[sw_pg_cons_idx]); /* Adjust the mbuf length. */ if (rem_len < m_pg->m_len) { /* The mbuf chain is complete. */ m_pg->m_len = rem_len; rem_len = 0; } else { /* More packet data is waiting. */ rem_len -= m_pg->m_len; } /* Concatenate the mbuf cluster to the mbuf. */ m_cat(m0, m_pg); sw_pg_cons = NEXT_PG_BD(sw_pg_cons); } /* Set the total packet length. */ m0->m_pkthdr.len = pkt_len; } else { /* * The received packet is small and fits in a * single mbuf (i.e. the l2_fhdr + pad + packet + * FCS <= MHLEN). In other words, the packet is * 154 bytes or less in size. */ DBPRINT(sc, BCE_INFO_RECV, "%s(): Found a small packet.\n", __FUNCTION__); /* Set the total packet length. */ m0->m_pkthdr.len = m0->m_len = pkt_len; } #else /* Set the total packet length. */ m0->m_pkthdr.len = m0->m_len = pkt_len; #endif /* Remove the trailing Ethernet FCS. */ m_adj(m0, -ETHER_CRC_LEN); /* Check that the resulting mbuf chain is valid. */ DBRUN(m_sanity(m0, FALSE)); DBRUNIF(((m0->m_len < ETHER_HDR_LEN) | (m0->m_pkthdr.len > BCE_MAX_JUMBO_ETHER_MTU_VLAN)), BCE_PRINTF("Invalid Ethernet frame size!\n"); m_print(m0, 128)); DBRUNIF(DB_RANDOMTRUE(l2fhdr_error_sim_control), BCE_PRINTF("Simulating l2_fhdr status error.\n"); sc->l2fhdr_error_sim_count++; status = status | L2_FHDR_ERRORS_PHY_DECODE); /* Check the received frame for errors. */ if (status & (L2_FHDR_ERRORS_BAD_CRC | L2_FHDR_ERRORS_PHY_DECODE | L2_FHDR_ERRORS_ALIGNMENT | L2_FHDR_ERRORS_TOO_SHORT | L2_FHDR_ERRORS_GIANT_FRAME)) { /* Log the error and release the mbuf. */ ifp->if_ierrors++; sc->l2fhdr_error_count++; m_freem(m0); m0 = NULL; goto bce_rx_int_next_rx; } /* Send the packet to the appropriate interface. */ m0->m_pkthdr.rcvif = ifp; /* Assume no hardware checksum. */ m0->m_pkthdr.csum_flags = 0; /* Validate the checksum if offload enabled. */ if (ifp->if_capenable & IFCAP_RXCSUM) { /* Check for an IP datagram. */ if (!(status & L2_FHDR_STATUS_SPLIT) && (status & L2_FHDR_STATUS_IP_DATAGRAM)) { m0->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; /* Check if the IP checksum is valid. */ if ((l2fhdr->l2_fhdr_ip_xsum ^ 0xffff) == 0) m0->m_pkthdr.csum_flags |= CSUM_IP_VALID; } /* Check for a valid TCP/UDP frame. */ if (status & (L2_FHDR_STATUS_TCP_SEGMENT | L2_FHDR_STATUS_UDP_DATAGRAM)) { /* Check for a good TCP/UDP checksum. */ if ((status & (L2_FHDR_ERRORS_TCP_XSUM | L2_FHDR_ERRORS_UDP_XSUM)) == 0) { m0->m_pkthdr.csum_data = l2fhdr->l2_fhdr_tcp_udp_xsum; m0->m_pkthdr.csum_flags |= (CSUM_DATA_VALID | CSUM_PSEUDO_HDR); } } } /* Attach the VLAN tag. */ if (status & L2_FHDR_STATUS_L2_VLAN_TAG) { if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) { #if __FreeBSD_version < 700000 VLAN_INPUT_TAG(ifp, m0, l2fhdr->l2_fhdr_vlan_tag, continue); #else m0->m_pkthdr.ether_vtag = l2fhdr->l2_fhdr_vlan_tag; m0->m_flags |= M_VLANTAG; #endif } else { /* * bce(4) controllers can't disable VLAN * tag stripping if management firmware * (ASF/IPMI/UMP) is running. So we always * strip VLAN tag and manually reconstruct * the VLAN frame by appending stripped * VLAN tag in driver if VLAN tag stripping * was disabled. * * TODO: LLC SNAP handling. */ bcopy(mtod(m0, uint8_t *), mtod(m0, uint8_t *) - ETHER_VLAN_ENCAP_LEN, ETHER_ADDR_LEN * 2); m0->m_data -= ETHER_VLAN_ENCAP_LEN; vh = mtod(m0, struct ether_vlan_header *); vh->evl_encap_proto = htons(ETHERTYPE_VLAN); vh->evl_tag = htons(l2fhdr->l2_fhdr_vlan_tag); m0->m_pkthdr.len += ETHER_VLAN_ENCAP_LEN; m0->m_len += ETHER_VLAN_ENCAP_LEN; } } /* Increment received packet statistics. */ ifp->if_ipackets++; bce_rx_int_next_rx: sw_rx_cons = NEXT_RX_BD(sw_rx_cons); /* If we have a packet, pass it up the stack */ if (m0) { /* Make sure we don't lose our place when we release the lock. */ sc->rx_cons = sw_rx_cons; #ifdef BCE_JUMBO_HDRSPLIT sc->pg_cons = sw_pg_cons; #endif BCE_UNLOCK(sc); (*ifp->if_input)(ifp, m0); BCE_LOCK(sc); /* Recover our place. */ sw_rx_cons = sc->rx_cons; #ifdef BCE_JUMBO_HDRSPLIT sw_pg_cons = sc->pg_cons; #endif } /* Refresh hw_cons to see if there's new work */ if (sw_rx_cons == hw_rx_cons) hw_rx_cons = sc->hw_rx_cons = bce_get_hw_rx_cons(sc); } /* No new packets to process. Refill the RX and page chains and exit. */ #ifdef BCE_JUMBO_HDRSPLIT sc->pg_cons = sw_pg_cons; bce_fill_pg_chain(sc); #endif sc->rx_cons = sw_rx_cons; bce_fill_rx_chain(sc); /* Prepare the page chain pages to be accessed by the NIC. */ for (int i = 0; i < RX_PAGES; i++) bus_dmamap_sync(sc->rx_bd_chain_tag, sc->rx_bd_chain_map[i], BUS_DMASYNC_PREWRITE); #ifdef BCE_JUMBO_HDRSPLIT for (int i = 0; i < PG_PAGES; i++) bus_dmamap_sync(sc->pg_bd_chain_tag, sc->pg_bd_chain_map[i], BUS_DMASYNC_PREWRITE); #endif DBPRINT(sc, BCE_EXTREME_RECV, "%s(exit): rx_prod = 0x%04X, " "rx_cons = 0x%04X, rx_prod_bseq = 0x%08X\n", __FUNCTION__, sc->rx_prod, sc->rx_cons, sc->rx_prod_bseq); DBEXIT(BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); } /****************************************************************************/ /* Reads the transmit consumer value from the status block (skipping over */ /* chain page pointer if necessary). */ /* */ /* Returns: */ /* hw_cons */ /****************************************************************************/ static inline u16 bce_get_hw_tx_cons(struct bce_softc *sc) { u16 hw_cons; mb(); hw_cons = sc->status_block->status_tx_quick_consumer_index0; if ((hw_cons & USABLE_TX_BD_PER_PAGE) == USABLE_TX_BD_PER_PAGE) hw_cons++; return hw_cons; } /****************************************************************************/ /* Handles transmit completion interrupt events. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_tx_intr(struct bce_softc *sc) { struct ifnet *ifp = sc->bce_ifp; u16 hw_tx_cons, sw_tx_cons, sw_tx_chain_cons; DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_INTR); DBRUN(sc->tx_interrupts++); DBPRINT(sc, BCE_EXTREME_SEND, "%s(enter): tx_prod = 0x%04X, " "tx_cons = 0x%04X, tx_prod_bseq = 0x%08X\n", __FUNCTION__, sc->tx_prod, sc->tx_cons, sc->tx_prod_bseq); BCE_LOCK_ASSERT(sc); /* Get the hardware's view of the TX consumer index. */ hw_tx_cons = sc->hw_tx_cons = bce_get_hw_tx_cons(sc); sw_tx_cons = sc->tx_cons; /* Prevent speculative reads from getting ahead of the status block. */ bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, BUS_SPACE_BARRIER_READ); /* Cycle through any completed TX chain page entries. */ while (sw_tx_cons != hw_tx_cons) { #ifdef BCE_DEBUG struct tx_bd *txbd = NULL; #endif sw_tx_chain_cons = TX_CHAIN_IDX(sw_tx_cons); DBPRINT(sc, BCE_INFO_SEND, "%s(): hw_tx_cons = 0x%04X, sw_tx_cons = 0x%04X, " "sw_tx_chain_cons = 0x%04X\n", __FUNCTION__, hw_tx_cons, sw_tx_cons, sw_tx_chain_cons); DBRUNIF((sw_tx_chain_cons > MAX_TX_BD), BCE_PRINTF("%s(%d): TX chain consumer out of range! " " 0x%04X > 0x%04X\n", __FILE__, __LINE__, sw_tx_chain_cons, (int) MAX_TX_BD); bce_breakpoint(sc)); DBRUN(txbd = &sc->tx_bd_chain[TX_PAGE(sw_tx_chain_cons)] [TX_IDX(sw_tx_chain_cons)]); DBRUNIF((txbd == NULL), BCE_PRINTF("%s(%d): Unexpected NULL tx_bd[0x%04X]!\n", __FILE__, __LINE__, sw_tx_chain_cons); bce_breakpoint(sc)); DBRUNMSG(BCE_INFO_SEND, BCE_PRINTF("%s(): ", __FUNCTION__); bce_dump_txbd(sc, sw_tx_chain_cons, txbd)); /* * Free the associated mbuf. Remember * that only the last tx_bd of a packet * has an mbuf pointer and DMA map. */ if (sc->tx_mbuf_ptr[sw_tx_chain_cons] != NULL) { /* Validate that this is the last tx_bd. */ DBRUNIF((!(txbd->tx_bd_flags & TX_BD_FLAGS_END)), BCE_PRINTF("%s(%d): tx_bd END flag not set but " "txmbuf == NULL!\n", __FILE__, __LINE__); bce_breakpoint(sc)); DBRUNMSG(BCE_INFO_SEND, BCE_PRINTF("%s(): Unloading map/freeing mbuf " "from tx_bd[0x%04X]\n", __FUNCTION__, sw_tx_chain_cons)); /* Unmap the mbuf. */ bus_dmamap_unload(sc->tx_mbuf_tag, sc->tx_mbuf_map[sw_tx_chain_cons]); /* Free the mbuf. */ m_freem(sc->tx_mbuf_ptr[sw_tx_chain_cons]); sc->tx_mbuf_ptr[sw_tx_chain_cons] = NULL; DBRUN(sc->debug_tx_mbuf_alloc--); ifp->if_opackets++; } sc->used_tx_bd--; sw_tx_cons = NEXT_TX_BD(sw_tx_cons); /* Refresh hw_cons to see if there's new work. */ hw_tx_cons = sc->hw_tx_cons = bce_get_hw_tx_cons(sc); /* Prevent speculative reads from getting ahead of the status block. */ bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, BUS_SPACE_BARRIER_READ); } /* Clear the TX timeout timer. */ sc->watchdog_timer = 0; /* Clear the tx hardware queue full flag. */ if (sc->used_tx_bd < sc->max_tx_bd) { DBRUNIF((ifp->if_drv_flags & IFF_DRV_OACTIVE), DBPRINT(sc, BCE_INFO_SEND, "%s(): Open TX chain! %d/%d (used/total)\n", __FUNCTION__, sc->used_tx_bd, sc->max_tx_bd)); ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; } sc->tx_cons = sw_tx_cons; DBPRINT(sc, BCE_EXTREME_SEND, "%s(exit): tx_prod = 0x%04X, " "tx_cons = 0x%04X, tx_prod_bseq = 0x%08X\n", __FUNCTION__, sc->tx_prod, sc->tx_cons, sc->tx_prod_bseq); DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_INTR); } /****************************************************************************/ /* Disables interrupt generation. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_disable_intr(struct bce_softc *sc) { DBENTER(BCE_VERBOSE_INTR); REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, BCE_PCICFG_INT_ACK_CMD_MASK_INT); REG_RD(sc, BCE_PCICFG_INT_ACK_CMD); DBEXIT(BCE_VERBOSE_INTR); } /****************************************************************************/ /* Enables interrupt generation. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_enable_intr(struct bce_softc *sc, int coal_now) { DBENTER(BCE_VERBOSE_INTR); REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, BCE_PCICFG_INT_ACK_CMD_INDEX_VALID | BCE_PCICFG_INT_ACK_CMD_MASK_INT | sc->last_status_idx); REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, BCE_PCICFG_INT_ACK_CMD_INDEX_VALID | sc->last_status_idx); /* Force an immediate interrupt (whether there is new data or not). */ if (coal_now) REG_WR(sc, BCE_HC_COMMAND, sc->hc_command | BCE_HC_COMMAND_COAL_NOW); DBEXIT(BCE_VERBOSE_INTR); } /****************************************************************************/ /* Handles controller initialization. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init_locked(struct bce_softc *sc) { struct ifnet *ifp; u32 ether_mtu = 0; DBENTER(BCE_VERBOSE_RESET); BCE_LOCK_ASSERT(sc); ifp = sc->bce_ifp; /* Check if the driver is still running and bail out if it is. */ if (ifp->if_drv_flags & IFF_DRV_RUNNING) goto bce_init_locked_exit; bce_stop(sc); if (bce_reset(sc, BCE_DRV_MSG_CODE_RESET)) { BCE_PRINTF("%s(%d): Controller reset failed!\n", __FILE__, __LINE__); goto bce_init_locked_exit; } if (bce_chipinit(sc)) { BCE_PRINTF("%s(%d): Controller initialization failed!\n", __FILE__, __LINE__); goto bce_init_locked_exit; } if (bce_blockinit(sc)) { BCE_PRINTF("%s(%d): Block initialization failed!\n", __FILE__, __LINE__); goto bce_init_locked_exit; } /* Load our MAC address. */ bcopy(IF_LLADDR(sc->bce_ifp), sc->eaddr, ETHER_ADDR_LEN); bce_set_mac_addr(sc); /* * Calculate and program the hardware Ethernet MTU * size. Be generous on the receive if we have room. */ #ifdef BCE_JUMBO_HDRSPLIT if (ifp->if_mtu <= (sc->rx_bd_mbuf_data_len + sc->pg_bd_mbuf_alloc_size)) ether_mtu = sc->rx_bd_mbuf_data_len + sc->pg_bd_mbuf_alloc_size; #else if (ifp->if_mtu <= sc->rx_bd_mbuf_data_len) ether_mtu = sc->rx_bd_mbuf_data_len; #endif else ether_mtu = ifp->if_mtu; ether_mtu += ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + ETHER_CRC_LEN; DBPRINT(sc, BCE_INFO_MISC, "%s(): setting h/w mtu = %d\n", __FUNCTION__, ether_mtu); /* Program the mtu, enabling jumbo frame support if necessary. */ if (ether_mtu > (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN)) REG_WR(sc, BCE_EMAC_RX_MTU_SIZE, min(ether_mtu, BCE_MAX_JUMBO_ETHER_MTU) | BCE_EMAC_RX_MTU_SIZE_JUMBO_ENA); else REG_WR(sc, BCE_EMAC_RX_MTU_SIZE, ether_mtu); DBPRINT(sc, BCE_INFO_LOAD, "%s(): rx_bd_mbuf_alloc_size = %d, rx_bce_mbuf_data_len = %d, " "rx_bd_mbuf_align_pad = %d\n", __FUNCTION__, sc->rx_bd_mbuf_alloc_size, sc->rx_bd_mbuf_data_len, sc->rx_bd_mbuf_align_pad); /* Program appropriate promiscuous/multicast filtering. */ bce_set_rx_mode(sc); #ifdef BCE_JUMBO_HDRSPLIT DBPRINT(sc, BCE_INFO_LOAD, "%s(): pg_bd_mbuf_alloc_size = %d\n", __FUNCTION__, sc->pg_bd_mbuf_alloc_size); /* Init page buffer descriptor chain. */ bce_init_pg_chain(sc); #endif /* Init RX buffer descriptor chain. */ bce_init_rx_chain(sc); /* Init TX buffer descriptor chain. */ bce_init_tx_chain(sc); /* Enable host interrupts. */ bce_enable_intr(sc, 1); bce_ifmedia_upd_locked(ifp); /* Let the OS know the driver is up and running. */ ifp->if_drv_flags |= IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc); bce_init_locked_exit: DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Initialize the controller just enough so that any management firmware */ /* running on the device will continue to operate correctly. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_mgmt_init_locked(struct bce_softc *sc) { struct ifnet *ifp; DBENTER(BCE_VERBOSE_RESET); BCE_LOCK_ASSERT(sc); /* Bail out if management firmware is not running. */ if (!(sc->bce_flags & BCE_MFW_ENABLE_FLAG)) { DBPRINT(sc, BCE_VERBOSE_SPECIAL, "No management firmware running...\n"); goto bce_mgmt_init_locked_exit; } ifp = sc->bce_ifp; /* Enable all critical blocks in the MAC. */ REG_WR(sc, BCE_MISC_ENABLE_SET_BITS, BCE_MISC_ENABLE_DEFAULT); REG_RD(sc, BCE_MISC_ENABLE_SET_BITS); DELAY(20); bce_ifmedia_upd_locked(ifp); bce_mgmt_init_locked_exit: DBEXIT(BCE_VERBOSE_RESET); } /****************************************************************************/ /* Handles controller initialization when called from an unlocked routine. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_init(void *xsc) { struct bce_softc *sc = xsc; DBENTER(BCE_VERBOSE_RESET); BCE_LOCK(sc); bce_init_locked(sc); BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE_RESET); } static struct mbuf * bce_tso_setup(struct bce_softc *sc, struct mbuf **m_head, u16 *flags) { struct mbuf *m; struct ether_header *eh; struct ip *ip; struct tcphdr *th; u16 etype; int hdr_len, ip_hlen = 0, tcp_hlen = 0, ip_len = 0; DBRUN(sc->requested_tso_frames++); /* Controller requires to monify mbuf chains. */ if (M_WRITABLE(*m_head) == 0) { m = m_dup(*m_head, M_DONTWAIT); m_freem(*m_head); if (m == NULL) { sc->mbuf_alloc_failed_count++; *m_head = NULL; return (NULL); } *m_head = m; } /* * For TSO the controller needs two pieces of info, * the MSS and the IP+TCP options length. */ m = m_pullup(*m_head, sizeof(struct ether_header) + sizeof(struct ip)); if (m == NULL) { *m_head = NULL; return (NULL); } eh = mtod(m, struct ether_header *); etype = ntohs(eh->ether_type); /* Check for supported TSO Ethernet types (only IPv4 for now) */ switch (etype) { case ETHERTYPE_IP: ip = (struct ip *)(m->m_data + sizeof(struct ether_header)); /* TSO only supported for TCP protocol. */ if (ip->ip_p != IPPROTO_TCP) { BCE_PRINTF("%s(%d): TSO enabled for non-TCP frame!.\n", __FILE__, __LINE__); m_freem(*m_head); *m_head = NULL; return (NULL); } /* Get IP header length in bytes (min 20) */ ip_hlen = ip->ip_hl << 2; m = m_pullup(*m_head, sizeof(struct ether_header) + ip_hlen + sizeof(struct tcphdr)); if (m == NULL) { *m_head = NULL; return (NULL); } /* Get the TCP header length in bytes (min 20) */ th = (struct tcphdr *)((caddr_t)ip + ip_hlen); tcp_hlen = (th->th_off << 2); /* Make sure all IP/TCP options live in the same buffer. */ m = m_pullup(*m_head, sizeof(struct ether_header)+ ip_hlen + tcp_hlen); if (m == NULL) { *m_head = NULL; return (NULL); } /* IP header length and checksum will be calc'd by hardware */ ip_len = ip->ip_len; ip->ip_len = 0; ip->ip_sum = 0; break; case ETHERTYPE_IPV6: BCE_PRINTF("%s(%d): TSO over IPv6 not supported!.\n", __FILE__, __LINE__); m_freem(*m_head); *m_head = NULL; return (NULL); /* NOT REACHED */ default: BCE_PRINTF("%s(%d): TSO enabled for unsupported protocol!.\n", __FILE__, __LINE__); m_freem(*m_head); *m_head = NULL; return (NULL); } hdr_len = sizeof(struct ether_header) + ip_hlen + tcp_hlen; DBPRINT(sc, BCE_EXTREME_SEND, "%s(): hdr_len = %d, e_hlen = %d, " "ip_hlen = %d, tcp_hlen = %d, ip_len = %d\n", - __FUNCTION__, hdr_len, sizeof(struct ether_header), ip_hlen, + __FUNCTION__, hdr_len, (int) sizeof(struct ether_header), ip_hlen, tcp_hlen, ip_len); /* Set the LSO flag in the TX BD */ *flags |= TX_BD_FLAGS_SW_LSO; /* Set the length of IP + TCP options (in 32 bit words) */ *flags |= (((ip_hlen + tcp_hlen - sizeof(struct ip) - sizeof(struct tcphdr)) >> 2) << 8); return (*m_head); } /****************************************************************************/ /* Encapsultes an mbuf cluster into the tx_bd chain structure and makes the */ /* memory visible to the controller. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /* Modified: */ /* m_head: May be set to NULL if MBUF is excessively fragmented. */ /****************************************************************************/ static int bce_tx_encap(struct bce_softc *sc, struct mbuf **m_head) { bus_dma_segment_t segs[BCE_MAX_SEGMENTS]; bus_dmamap_t map; struct tx_bd *txbd = NULL; struct mbuf *m0; u16 prod, chain_prod, mss = 0, vlan_tag = 0, flags = 0; u32 prod_bseq; #ifdef BCE_DEBUG u16 debug_prod; #endif int i, error, nsegs, rc = 0; DBENTER(BCE_VERBOSE_SEND); DBPRINT(sc, BCE_INFO_SEND, "%s(enter): tx_prod = 0x%04X, tx_chain_prod = %04X, " "tx_prod_bseq = 0x%08X\n", __FUNCTION__, sc->tx_prod, (u16) TX_CHAIN_IDX(sc->tx_prod), sc->tx_prod_bseq); /* Transfer any checksum offload flags to the bd. */ m0 = *m_head; if (m0->m_pkthdr.csum_flags) { if (m0->m_pkthdr.csum_flags & CSUM_TSO) { m0 = bce_tso_setup(sc, m_head, &flags); if (m0 == NULL) goto bce_tx_encap_exit; mss = htole16(m0->m_pkthdr.tso_segsz); } else { if (m0->m_pkthdr.csum_flags & CSUM_IP) flags |= TX_BD_FLAGS_IP_CKSUM; if (m0->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) flags |= TX_BD_FLAGS_TCP_UDP_CKSUM; } } /* Transfer any VLAN tags to the bd. */ if (m0->m_flags & M_VLANTAG) { flags |= TX_BD_FLAGS_VLAN_TAG; vlan_tag = m0->m_pkthdr.ether_vtag; } /* Map the mbuf into DMAable memory. */ prod = sc->tx_prod; chain_prod = TX_CHAIN_IDX(prod); map = sc->tx_mbuf_map[chain_prod]; /* Map the mbuf into our DMA address space. */ error = bus_dmamap_load_mbuf_sg(sc->tx_mbuf_tag, map, m0, segs, &nsegs, BUS_DMA_NOWAIT); /* Check if the DMA mapping was successful */ if (error == EFBIG) { sc->fragmented_mbuf_count++; /* Try to defrag the mbuf. */ m0 = m_collapse(*m_head, M_DONTWAIT, BCE_MAX_SEGMENTS); if (m0 == NULL) { /* Defrag was unsuccessful */ m_freem(*m_head); *m_head = NULL; sc->mbuf_alloc_failed_count++; rc = ENOBUFS; goto bce_tx_encap_exit; } /* Defrag was successful, try mapping again */ *m_head = m0; error = bus_dmamap_load_mbuf_sg(sc->tx_mbuf_tag, map, m0, segs, &nsegs, BUS_DMA_NOWAIT); /* Still getting an error after a defrag. */ if (error == ENOMEM) { /* Insufficient DMA buffers available. */ sc->dma_map_addr_tx_failed_count++; rc = error; goto bce_tx_encap_exit; } else if (error != 0) { /* Still can't map the mbuf, release it and return an error. */ BCE_PRINTF( "%s(%d): Unknown error mapping mbuf into TX chain!\n", __FILE__, __LINE__); m_freem(m0); *m_head = NULL; sc->dma_map_addr_tx_failed_count++; rc = ENOBUFS; goto bce_tx_encap_exit; } } else if (error == ENOMEM) { /* Insufficient DMA buffers available. */ sc->dma_map_addr_tx_failed_count++; rc = error; goto bce_tx_encap_exit; } else if (error != 0) { m_freem(m0); *m_head = NULL; sc->dma_map_addr_tx_failed_count++; rc = error; goto bce_tx_encap_exit; } /* Make sure there's room in the chain */ if (nsegs > (sc->max_tx_bd - sc->used_tx_bd)) { bus_dmamap_unload(sc->tx_mbuf_tag, map); rc = ENOBUFS; goto bce_tx_encap_exit; } /* prod points to an empty tx_bd at this point. */ prod_bseq = sc->tx_prod_bseq; #ifdef BCE_DEBUG debug_prod = chain_prod; #endif DBPRINT(sc, BCE_INFO_SEND, "%s(start): prod = 0x%04X, chain_prod = 0x%04X, " "prod_bseq = 0x%08X\n", __FUNCTION__, prod, chain_prod, prod_bseq); /* * Cycle through each mbuf segment that makes up * the outgoing frame, gathering the mapping info * for that segment and creating a tx_bd for * the mbuf. */ for (i = 0; i < nsegs ; i++) { chain_prod = TX_CHAIN_IDX(prod); txbd= &sc->tx_bd_chain[TX_PAGE(chain_prod)][TX_IDX(chain_prod)]; txbd->tx_bd_haddr_lo = htole32(BCE_ADDR_LO(segs[i].ds_addr)); txbd->tx_bd_haddr_hi = htole32(BCE_ADDR_HI(segs[i].ds_addr)); txbd->tx_bd_mss_nbytes = htole32(mss << 16) | htole16(segs[i].ds_len); txbd->tx_bd_vlan_tag = htole16(vlan_tag); txbd->tx_bd_flags = htole16(flags); prod_bseq += segs[i].ds_len; if (i == 0) txbd->tx_bd_flags |= htole16(TX_BD_FLAGS_START); prod = NEXT_TX_BD(prod); } /* Set the END flag on the last TX buffer descriptor. */ txbd->tx_bd_flags |= htole16(TX_BD_FLAGS_END); DBRUNMSG(BCE_EXTREME_SEND, bce_dump_tx_chain(sc, debug_prod, nsegs)); DBPRINT(sc, BCE_INFO_SEND, "%s( end ): prod = 0x%04X, chain_prod = 0x%04X, " "prod_bseq = 0x%08X\n", __FUNCTION__, prod, chain_prod, prod_bseq); /* * Ensure that the mbuf pointer for this transmission * is placed at the array index of the last * descriptor in this chain. This is done * because a single map is used for all * segments of the mbuf and we don't want to * unload the map before all of the segments * have been freed. */ sc->tx_mbuf_ptr[chain_prod] = m0; sc->used_tx_bd += nsegs; /* Update some debug statistic counters */ DBRUNIF((sc->used_tx_bd > sc->tx_hi_watermark), sc->tx_hi_watermark = sc->used_tx_bd); DBRUNIF((sc->used_tx_bd == sc->max_tx_bd), sc->tx_full_count++); DBRUNIF(sc->debug_tx_mbuf_alloc++); DBRUNMSG(BCE_EXTREME_SEND, bce_dump_tx_mbuf_chain(sc, chain_prod, 1)); /* prod points to the next free tx_bd at this point. */ sc->tx_prod = prod; sc->tx_prod_bseq = prod_bseq; DBPRINT(sc, BCE_INFO_SEND, "%s(exit): prod = 0x%04X, chain_prod = %04X, " "prod_bseq = 0x%08X\n", __FUNCTION__, sc->tx_prod, (u16) TX_CHAIN_IDX(sc->tx_prod), sc->tx_prod_bseq); bce_tx_encap_exit: DBEXIT(BCE_VERBOSE_SEND); return(rc); } /****************************************************************************/ /* Main transmit routine when called from another routine with a lock. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_start_locked(struct ifnet *ifp) { struct bce_softc *sc = ifp->if_softc; struct mbuf *m_head = NULL; int count = 0; u16 tx_prod, tx_chain_prod; DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); BCE_LOCK_ASSERT(sc); /* prod points to the next free tx_bd. */ tx_prod = sc->tx_prod; tx_chain_prod = TX_CHAIN_IDX(tx_prod); DBPRINT(sc, BCE_INFO_SEND, "%s(enter): tx_prod = 0x%04X, tx_chain_prod = 0x%04X, " "tx_prod_bseq = 0x%08X\n", __FUNCTION__, tx_prod, tx_chain_prod, sc->tx_prod_bseq); /* If there's no link or the transmit queue is empty then just exit. */ if (!sc->bce_link) { DBPRINT(sc, BCE_INFO_SEND, "%s(): No link.\n", __FUNCTION__); goto bce_start_locked_exit; } if (IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { DBPRINT(sc, BCE_INFO_SEND, "%s(): Transmit queue empty.\n", __FUNCTION__); goto bce_start_locked_exit; } /* * Keep adding entries while there is space in the ring. */ while (sc->used_tx_bd < sc->max_tx_bd) { /* Check for any frames to send. */ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); /* Stop when the transmit queue is empty. */ if (m_head == NULL) break; /* * Pack the data into the transmit ring. If we * don't have room, place the mbuf back at the * head of the queue and set the OACTIVE flag * to wait for the NIC to drain the chain. */ if (bce_tx_encap(sc, &m_head)) { /* No room, put the frame back on the transmit queue. */ if (m_head != NULL) IFQ_DRV_PREPEND(&ifp->if_snd, m_head); ifp->if_drv_flags |= IFF_DRV_OACTIVE; DBPRINT(sc, BCE_INFO_SEND, "TX chain is closed for business! Total tx_bd used = %d\n", sc->used_tx_bd); break; } count++; /* Send a copy of the frame to any BPF listeners. */ ETHER_BPF_MTAP(ifp, m_head); } /* Exit if no packets were dequeued. */ if (count == 0) { DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): No packets were dequeued\n", __FUNCTION__); goto bce_start_locked_exit; } DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): Inserted %d frames into send queue.\n", __FUNCTION__, count); REG_WR(sc, BCE_MQ_COMMAND, REG_RD(sc, BCE_MQ_COMMAND) | BCE_MQ_COMMAND_NO_MAP_ERROR); /* Write the mailbox and tell the chip about the waiting tx_bd's. */ DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): MB_GET_CID_ADDR(TX_CID) = 0x%08X; " "BCE_L2MQ_TX_HOST_BIDX = 0x%08X, sc->tx_prod = 0x%04X\n", __FUNCTION__, MB_GET_CID_ADDR(TX_CID), BCE_L2MQ_TX_HOST_BIDX, sc->tx_prod); REG_WR16(sc, MB_GET_CID_ADDR(TX_CID) + BCE_L2MQ_TX_HOST_BIDX, sc->tx_prod); DBPRINT(sc, BCE_VERBOSE_SEND, "%s(): MB_GET_CID_ADDR(TX_CID) = 0x%08X; " "BCE_L2MQ_TX_HOST_BSEQ = 0x%08X, sc->tx_prod_bseq = 0x%04X\n", __FUNCTION__, MB_GET_CID_ADDR(TX_CID), BCE_L2MQ_TX_HOST_BSEQ, sc->tx_prod_bseq); REG_WR(sc, MB_GET_CID_ADDR(TX_CID) + BCE_L2MQ_TX_HOST_BSEQ, sc->tx_prod_bseq); /* Set the tx timeout. */ sc->watchdog_timer = BCE_TX_TIMEOUT; DBRUNMSG(BCE_VERBOSE_SEND, bce_dump_ctx(sc, TX_CID)); DBRUNMSG(BCE_VERBOSE_SEND, bce_dump_mq_regs(sc)); bce_start_locked_exit: DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_CTX); return; } /****************************************************************************/ /* Main transmit routine when called from another routine without a lock. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_start(struct ifnet *ifp) { struct bce_softc *sc = ifp->if_softc; DBENTER(BCE_VERBOSE_SEND); BCE_LOCK(sc); bce_start_locked(ifp); BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE_SEND); } /****************************************************************************/ /* Handles any IOCTL calls from the operating system. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_ioctl(struct ifnet *ifp, u_long command, caddr_t data) { struct bce_softc *sc = ifp->if_softc; struct ifreq *ifr = (struct ifreq *) data; struct mii_data *mii; int mask, error = 0, reinit; DBENTER(BCE_VERBOSE_MISC); switch(command) { /* Set the interface MTU. */ case SIOCSIFMTU: /* Check that the MTU setting is supported. */ if ((ifr->ifr_mtu < BCE_MIN_MTU) || (ifr->ifr_mtu > BCE_MAX_JUMBO_MTU)) { error = EINVAL; break; } DBPRINT(sc, BCE_INFO_MISC, "SIOCSIFMTU: Changing MTU from %d to %d\n", (int) ifp->if_mtu, (int) ifr->ifr_mtu); BCE_LOCK(sc); ifp->if_mtu = ifr->ifr_mtu; reinit = 0; if (ifp->if_drv_flags & IFF_DRV_RUNNING) { /* * Because allocation size is used in RX * buffer allocation, stop controller if * it is already running. */ bce_stop(sc); reinit = 1; } #ifdef BCE_JUMBO_HDRSPLIT /* No buffer allocation size changes are necessary. */ #else /* Recalculate our buffer allocation sizes. */ if ((ifp->if_mtu + ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + ETHER_CRC_LEN) > MCLBYTES) { sc->rx_bd_mbuf_alloc_size = MJUM9BYTES; sc->rx_bd_mbuf_align_pad = roundup2(MJUM9BYTES, 16) - MJUM9BYTES; sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - sc->rx_bd_mbuf_align_pad; } else { sc->rx_bd_mbuf_alloc_size = MCLBYTES; sc->rx_bd_mbuf_align_pad = roundup2(MCLBYTES, 16) - MCLBYTES; sc->rx_bd_mbuf_data_len = sc->rx_bd_mbuf_alloc_size - sc->rx_bd_mbuf_align_pad; } #endif if (reinit != 0) bce_init_locked(sc); BCE_UNLOCK(sc); break; /* Set interface flags. */ case SIOCSIFFLAGS: DBPRINT(sc, BCE_VERBOSE_SPECIAL, "Received SIOCSIFFLAGS\n"); BCE_LOCK(sc); /* Check if the interface is up. */ if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { /* Change promiscuous/multicast flags as necessary. */ bce_set_rx_mode(sc); } else { /* Start the HW */ bce_init_locked(sc); } } else { /* The interface is down, check if driver is running. */ if (ifp->if_drv_flags & IFF_DRV_RUNNING) { bce_stop(sc); /* If MFW is running, restart the controller a bit. */ if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) { bce_reset(sc, BCE_DRV_MSG_CODE_RESET); bce_chipinit(sc); bce_mgmt_init_locked(sc); } } } BCE_UNLOCK(sc); break; /* Add/Delete multicast address */ case SIOCADDMULTI: case SIOCDELMULTI: DBPRINT(sc, BCE_VERBOSE_MISC, "Received SIOCADDMULTI/SIOCDELMULTI\n"); BCE_LOCK(sc); if (ifp->if_drv_flags & IFF_DRV_RUNNING) bce_set_rx_mode(sc); BCE_UNLOCK(sc); break; /* Set/Get Interface media */ case SIOCSIFMEDIA: case SIOCGIFMEDIA: DBPRINT(sc, BCE_VERBOSE_MISC, "Received SIOCSIFMEDIA/SIOCGIFMEDIA\n"); mii = device_get_softc(sc->bce_miibus); error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command); break; /* Set interface capability */ case SIOCSIFCAP: mask = ifr->ifr_reqcap ^ ifp->if_capenable; DBPRINT(sc, BCE_INFO_MISC, "Received SIOCSIFCAP = 0x%08X\n", (u32) mask); /* Toggle the TX checksum capabilities enable flag. */ if (mask & IFCAP_TXCSUM && ifp->if_capabilities & IFCAP_TXCSUM) { ifp->if_capenable ^= IFCAP_TXCSUM; if (IFCAP_TXCSUM & ifp->if_capenable) ifp->if_hwassist |= BCE_IF_HWASSIST; else ifp->if_hwassist &= ~BCE_IF_HWASSIST; } /* Toggle the RX checksum capabilities enable flag. */ if (mask & IFCAP_RXCSUM && ifp->if_capabilities & IFCAP_RXCSUM) ifp->if_capenable ^= IFCAP_RXCSUM; /* Toggle the TSO capabilities enable flag. */ if (bce_tso_enable && (mask & IFCAP_TSO4) && ifp->if_capabilities & IFCAP_TSO4) { ifp->if_capenable ^= IFCAP_TSO4; if (IFCAP_TSO4 & ifp->if_capenable) ifp->if_hwassist |= CSUM_TSO; else ifp->if_hwassist &= ~CSUM_TSO; } if (mask & IFCAP_VLAN_HWCSUM && ifp->if_capabilities & IFCAP_VLAN_HWCSUM) ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; if ((mask & IFCAP_VLAN_HWTSO) != 0 && (ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; /* * Don't actually disable VLAN tag stripping as * management firmware (ASF/IPMI/UMP) requires the * feature. If VLAN tag stripping is disabled driver * will manually reconstruct the VLAN frame by * appending stripped VLAN tag. */ if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING)) { ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) == 0) ifp->if_capenable &= ~IFCAP_VLAN_HWTSO; } VLAN_CAPABILITIES(ifp); break; default: /* We don't know how to handle the IOCTL, pass it on. */ error = ether_ioctl(ifp, command, data); break; } DBEXIT(BCE_VERBOSE_MISC); return(error); } /****************************************************************************/ /* Transmit timeout handler. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_watchdog(struct bce_softc *sc) { DBENTER(BCE_EXTREME_SEND); BCE_LOCK_ASSERT(sc); /* If the watchdog timer hasn't expired then just exit. */ if (sc->watchdog_timer == 0 || --sc->watchdog_timer) goto bce_watchdog_exit; /* If pause frames are active then don't reset the hardware. */ /* ToDo: Should we reset the timer here? */ if (REG_RD(sc, BCE_EMAC_TX_STATUS) & BCE_EMAC_TX_STATUS_XOFFED) goto bce_watchdog_exit; BCE_PRINTF("%s(%d): Watchdog timeout occurred, resetting!\n", __FILE__, __LINE__); DBRUNMSG(BCE_INFO, bce_dump_driver_state(sc); bce_dump_status_block(sc); bce_dump_stats_block(sc); bce_dump_ftqs(sc); bce_dump_txp_state(sc, 0); bce_dump_rxp_state(sc, 0); bce_dump_tpat_state(sc, 0); bce_dump_cp_state(sc, 0); bce_dump_com_state(sc, 0)); DBRUN(bce_breakpoint(sc)); sc->bce_ifp->if_drv_flags &= ~IFF_DRV_RUNNING; bce_init_locked(sc); sc->bce_ifp->if_oerrors++; bce_watchdog_exit: DBEXIT(BCE_EXTREME_SEND); } /* * Interrupt handler. */ /****************************************************************************/ /* Main interrupt entry point. Verifies that the controller generated the */ /* interrupt and then calls a separate routine for handle the various */ /* interrupt causes (PHY, TX, RX). */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static void bce_intr(void *xsc) { struct bce_softc *sc; struct ifnet *ifp; u32 status_attn_bits; u16 hw_rx_cons, hw_tx_cons; sc = xsc; ifp = sc->bce_ifp; DBENTER(BCE_VERBOSE_SEND | BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); DBRUNMSG(BCE_VERBOSE_INTR, bce_dump_status_block(sc)); BCE_LOCK(sc); DBRUN(sc->interrupts_generated++); /* Synchnorize before we read from interface's status block */ bus_dmamap_sync(sc->status_tag, sc->status_map, BUS_DMASYNC_POSTREAD); /* * If the hardware status block index * matches the last value read by the * driver and we haven't asserted our * interrupt then there's nothing to do. */ if ((sc->status_block->status_idx == sc->last_status_idx) && (REG_RD(sc, BCE_PCICFG_MISC_STATUS) & BCE_PCICFG_MISC_STATUS_INTA_VALUE)) { DBPRINT(sc, BCE_VERBOSE_INTR, "%s(): Spurious interrupt.\n", __FUNCTION__); goto bce_intr_exit; } /* Ack the interrupt and stop others from occuring. */ REG_WR(sc, BCE_PCICFG_INT_ACK_CMD, BCE_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM | BCE_PCICFG_INT_ACK_CMD_MASK_INT); /* Check if the hardware has finished any work. */ hw_rx_cons = bce_get_hw_rx_cons(sc); hw_tx_cons = bce_get_hw_tx_cons(sc); /* Keep processing data as long as there is work to do. */ for (;;) { status_attn_bits = sc->status_block->status_attn_bits; DBRUNIF(DB_RANDOMTRUE(unexpected_attention_sim_control), BCE_PRINTF("Simulating unexpected status attention bit set."); sc->unexpected_attention_sim_count++; status_attn_bits = status_attn_bits | STATUS_ATTN_BITS_PARITY_ERROR); /* Was it a link change interrupt? */ if ((status_attn_bits & STATUS_ATTN_BITS_LINK_STATE) != (sc->status_block->status_attn_bits_ack & STATUS_ATTN_BITS_LINK_STATE)) { bce_phy_intr(sc); /* Clear any transient status updates during link state change. */ REG_WR(sc, BCE_HC_COMMAND, sc->hc_command | BCE_HC_COMMAND_COAL_NOW_WO_INT); REG_RD(sc, BCE_HC_COMMAND); } /* If any other attention is asserted then the chip is toast. */ if (((status_attn_bits & ~STATUS_ATTN_BITS_LINK_STATE) != (sc->status_block->status_attn_bits_ack & ~STATUS_ATTN_BITS_LINK_STATE))) { sc->unexpected_attention_count++; BCE_PRINTF("%s(%d): Fatal attention detected: 0x%08X\n", __FILE__, __LINE__, sc->status_block->status_attn_bits); DBRUNMSG(BCE_FATAL, if (unexpected_attention_sim_control == 0) bce_breakpoint(sc)); bce_init_locked(sc); goto bce_intr_exit; } /* Check for any completed RX frames. */ if (hw_rx_cons != sc->hw_rx_cons) bce_rx_intr(sc); /* Check for any completed TX frames. */ if (hw_tx_cons != sc->hw_tx_cons) bce_tx_intr(sc); /* Save the status block index value for use during the next interrupt. */ sc->last_status_idx = sc->status_block->status_idx; /* Prevent speculative reads from getting ahead of the status block. */ bus_space_barrier(sc->bce_btag, sc->bce_bhandle, 0, 0, BUS_SPACE_BARRIER_READ); /* If there's no work left then exit the interrupt service routine. */ hw_rx_cons = bce_get_hw_rx_cons(sc); hw_tx_cons = bce_get_hw_tx_cons(sc); if ((hw_rx_cons == sc->hw_rx_cons) && (hw_tx_cons == sc->hw_tx_cons)) break; } bus_dmamap_sync(sc->status_tag, sc->status_map, BUS_DMASYNC_PREREAD); /* Re-enable interrupts. */ bce_enable_intr(sc, 0); /* Handle any frames that arrived while handling the interrupt. */ if (ifp->if_drv_flags & IFF_DRV_RUNNING && !IFQ_DRV_IS_EMPTY(&ifp->if_snd)) bce_start_locked(ifp); bce_intr_exit: BCE_UNLOCK(sc); DBEXIT(BCE_VERBOSE_SEND | BCE_VERBOSE_RECV | BCE_VERBOSE_INTR); } /****************************************************************************/ /* Programs the various packet receive modes (broadcast and multicast). */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_set_rx_mode(struct bce_softc *sc) { struct ifnet *ifp; struct ifmultiaddr *ifma; u32 hashes[NUM_MC_HASH_REGISTERS] = { 0, 0, 0, 0, 0, 0, 0, 0 }; u32 rx_mode, sort_mode; int h, i; DBENTER(BCE_VERBOSE_MISC); BCE_LOCK_ASSERT(sc); ifp = sc->bce_ifp; /* Initialize receive mode default settings. */ rx_mode = sc->rx_mode & ~(BCE_EMAC_RX_MODE_PROMISCUOUS | BCE_EMAC_RX_MODE_KEEP_VLAN_TAG); sort_mode = 1 | BCE_RPM_SORT_USER0_BC_EN; /* * ASF/IPMI/UMP firmware requires that VLAN tag stripping * be enbled. */ if (!(BCE_IF_CAPABILITIES & IFCAP_VLAN_HWTAGGING) && (!(sc->bce_flags & BCE_MFW_ENABLE_FLAG))) rx_mode |= BCE_EMAC_RX_MODE_KEEP_VLAN_TAG; /* * Check for promiscuous, all multicast, or selected * multicast address filtering. */ if (ifp->if_flags & IFF_PROMISC) { DBPRINT(sc, BCE_INFO_MISC, "Enabling promiscuous mode.\n"); /* Enable promiscuous mode. */ rx_mode |= BCE_EMAC_RX_MODE_PROMISCUOUS; sort_mode |= BCE_RPM_SORT_USER0_PROM_EN; } else if (ifp->if_flags & IFF_ALLMULTI) { DBPRINT(sc, BCE_INFO_MISC, "Enabling all multicast mode.\n"); /* Enable all multicast addresses. */ for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) { REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), 0xffffffff); } sort_mode |= BCE_RPM_SORT_USER0_MC_EN; } else { /* Accept one or more multicast(s). */ DBPRINT(sc, BCE_INFO_MISC, "Enabling selective multicast mode.\n"); IF_ADDR_LOCK(ifp); TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; h = ether_crc32_le(LLADDR((struct sockaddr_dl *) ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF; hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F); } IF_ADDR_UNLOCK(ifp); for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]); sort_mode |= BCE_RPM_SORT_USER0_MC_HSH_EN; } /* Only make changes if the recive mode has actually changed. */ if (rx_mode != sc->rx_mode) { DBPRINT(sc, BCE_VERBOSE_MISC, "Enabling new receive mode: 0x%08X\n", rx_mode); sc->rx_mode = rx_mode; REG_WR(sc, BCE_EMAC_RX_MODE, rx_mode); } /* Disable and clear the exisitng sort before enabling a new sort. */ REG_WR(sc, BCE_RPM_SORT_USER0, 0x0); REG_WR(sc, BCE_RPM_SORT_USER0, sort_mode); REG_WR(sc, BCE_RPM_SORT_USER0, sort_mode | BCE_RPM_SORT_USER0_ENA); DBEXIT(BCE_VERBOSE_MISC); } /****************************************************************************/ /* Called periodically to updates statistics from the controllers */ /* statistics block. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_stats_update(struct bce_softc *sc) { struct ifnet *ifp; struct statistics_block *stats; DBENTER(BCE_EXTREME_MISC); ifp = sc->bce_ifp; stats = (struct statistics_block *) sc->stats_block; /* * Certain controllers don't report * carrier sense errors correctly. * See errata E11_5708CA0_1165. */ if (!(BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) && !(BCE_CHIP_ID(sc) == BCE_CHIP_ID_5708_A0)) ifp->if_oerrors += (u_long) stats->stat_Dot3StatsCarrierSenseErrors; /* * Update the sysctl statistics from the * hardware statistics. */ sc->stat_IfHCInOctets = ((u64) stats->stat_IfHCInOctets_hi << 32) + (u64) stats->stat_IfHCInOctets_lo; sc->stat_IfHCInBadOctets = ((u64) stats->stat_IfHCInBadOctets_hi << 32) + (u64) stats->stat_IfHCInBadOctets_lo; sc->stat_IfHCOutOctets = ((u64) stats->stat_IfHCOutOctets_hi << 32) + (u64) stats->stat_IfHCOutOctets_lo; sc->stat_IfHCOutBadOctets = ((u64) stats->stat_IfHCOutBadOctets_hi << 32) + (u64) stats->stat_IfHCOutBadOctets_lo; sc->stat_IfHCInUcastPkts = ((u64) stats->stat_IfHCInUcastPkts_hi << 32) + (u64) stats->stat_IfHCInUcastPkts_lo; sc->stat_IfHCInMulticastPkts = ((u64) stats->stat_IfHCInMulticastPkts_hi << 32) + (u64) stats->stat_IfHCInMulticastPkts_lo; sc->stat_IfHCInBroadcastPkts = ((u64) stats->stat_IfHCInBroadcastPkts_hi << 32) + (u64) stats->stat_IfHCInBroadcastPkts_lo; sc->stat_IfHCOutUcastPkts = ((u64) stats->stat_IfHCOutUcastPkts_hi << 32) + (u64) stats->stat_IfHCOutUcastPkts_lo; sc->stat_IfHCOutMulticastPkts = ((u64) stats->stat_IfHCOutMulticastPkts_hi << 32) + (u64) stats->stat_IfHCOutMulticastPkts_lo; sc->stat_IfHCOutBroadcastPkts = ((u64) stats->stat_IfHCOutBroadcastPkts_hi << 32) + (u64) stats->stat_IfHCOutBroadcastPkts_lo; sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors = stats->stat_emac_tx_stat_dot3statsinternalmactransmiterrors; sc->stat_Dot3StatsCarrierSenseErrors = stats->stat_Dot3StatsCarrierSenseErrors; sc->stat_Dot3StatsFCSErrors = stats->stat_Dot3StatsFCSErrors; sc->stat_Dot3StatsAlignmentErrors = stats->stat_Dot3StatsAlignmentErrors; sc->stat_Dot3StatsSingleCollisionFrames = stats->stat_Dot3StatsSingleCollisionFrames; sc->stat_Dot3StatsMultipleCollisionFrames = stats->stat_Dot3StatsMultipleCollisionFrames; sc->stat_Dot3StatsDeferredTransmissions = stats->stat_Dot3StatsDeferredTransmissions; sc->stat_Dot3StatsExcessiveCollisions = stats->stat_Dot3StatsExcessiveCollisions; sc->stat_Dot3StatsLateCollisions = stats->stat_Dot3StatsLateCollisions; sc->stat_EtherStatsCollisions = stats->stat_EtherStatsCollisions; sc->stat_EtherStatsFragments = stats->stat_EtherStatsFragments; sc->stat_EtherStatsJabbers = stats->stat_EtherStatsJabbers; sc->stat_EtherStatsUndersizePkts = stats->stat_EtherStatsUndersizePkts; sc->stat_EtherStatsOversizePkts = stats->stat_EtherStatsOversizePkts; sc->stat_EtherStatsPktsRx64Octets = stats->stat_EtherStatsPktsRx64Octets; sc->stat_EtherStatsPktsRx65Octetsto127Octets = stats->stat_EtherStatsPktsRx65Octetsto127Octets; sc->stat_EtherStatsPktsRx128Octetsto255Octets = stats->stat_EtherStatsPktsRx128Octetsto255Octets; sc->stat_EtherStatsPktsRx256Octetsto511Octets = stats->stat_EtherStatsPktsRx256Octetsto511Octets; sc->stat_EtherStatsPktsRx512Octetsto1023Octets = stats->stat_EtherStatsPktsRx512Octetsto1023Octets; sc->stat_EtherStatsPktsRx1024Octetsto1522Octets = stats->stat_EtherStatsPktsRx1024Octetsto1522Octets; sc->stat_EtherStatsPktsRx1523Octetsto9022Octets = stats->stat_EtherStatsPktsRx1523Octetsto9022Octets; sc->stat_EtherStatsPktsTx64Octets = stats->stat_EtherStatsPktsTx64Octets; sc->stat_EtherStatsPktsTx65Octetsto127Octets = stats->stat_EtherStatsPktsTx65Octetsto127Octets; sc->stat_EtherStatsPktsTx128Octetsto255Octets = stats->stat_EtherStatsPktsTx128Octetsto255Octets; sc->stat_EtherStatsPktsTx256Octetsto511Octets = stats->stat_EtherStatsPktsTx256Octetsto511Octets; sc->stat_EtherStatsPktsTx512Octetsto1023Octets = stats->stat_EtherStatsPktsTx512Octetsto1023Octets; sc->stat_EtherStatsPktsTx1024Octetsto1522Octets = stats->stat_EtherStatsPktsTx1024Octetsto1522Octets; sc->stat_EtherStatsPktsTx1523Octetsto9022Octets = stats->stat_EtherStatsPktsTx1523Octetsto9022Octets; sc->stat_XonPauseFramesReceived = stats->stat_XonPauseFramesReceived; sc->stat_XoffPauseFramesReceived = stats->stat_XoffPauseFramesReceived; sc->stat_OutXonSent = stats->stat_OutXonSent; sc->stat_OutXoffSent = stats->stat_OutXoffSent; sc->stat_FlowControlDone = stats->stat_FlowControlDone; sc->stat_MacControlFramesReceived = stats->stat_MacControlFramesReceived; sc->stat_XoffStateEntered = stats->stat_XoffStateEntered; sc->stat_IfInFramesL2FilterDiscards = stats->stat_IfInFramesL2FilterDiscards; sc->stat_IfInRuleCheckerDiscards = stats->stat_IfInRuleCheckerDiscards; sc->stat_IfInFTQDiscards = stats->stat_IfInFTQDiscards; sc->stat_IfInMBUFDiscards = stats->stat_IfInMBUFDiscards; sc->stat_IfInRuleCheckerP4Hit = stats->stat_IfInRuleCheckerP4Hit; sc->stat_CatchupInRuleCheckerDiscards = stats->stat_CatchupInRuleCheckerDiscards; sc->stat_CatchupInFTQDiscards = stats->stat_CatchupInFTQDiscards; sc->stat_CatchupInMBUFDiscards = stats->stat_CatchupInMBUFDiscards; sc->stat_CatchupInRuleCheckerP4Hit = stats->stat_CatchupInRuleCheckerP4Hit; sc->com_no_buffers = REG_RD_IND(sc, 0x120084); /* * Update the interface statistics from the * hardware statistics. */ ifp->if_collisions = (u_long) sc->stat_EtherStatsCollisions; /* ToDo: This method loses soft errors. */ ifp->if_ierrors = (u_long) sc->stat_EtherStatsUndersizePkts + (u_long) sc->stat_EtherStatsOversizePkts + (u_long) sc->stat_IfInMBUFDiscards + (u_long) sc->stat_Dot3StatsAlignmentErrors + (u_long) sc->stat_Dot3StatsFCSErrors + (u_long) sc->stat_IfInRuleCheckerDiscards + (u_long) sc->stat_IfInFTQDiscards + (u_long) sc->com_no_buffers; /* ToDo: This method loses soft errors. */ ifp->if_oerrors = (u_long) sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors + (u_long) sc->stat_Dot3StatsExcessiveCollisions + (u_long) sc->stat_Dot3StatsLateCollisions; /* ToDo: Add additional statistics. */ DBEXIT(BCE_EXTREME_MISC); } /****************************************************************************/ /* Periodic function to notify the bootcode that the driver is still */ /* present. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_pulse(void *xsc) { struct bce_softc *sc = xsc; u32 msg; DBENTER(BCE_EXTREME_MISC); BCE_LOCK_ASSERT(sc); /* Tell the firmware that the driver is still running. */ msg = (u32) ++sc->bce_fw_drv_pulse_wr_seq; bce_shmem_wr(sc, BCE_DRV_PULSE_MB, msg); /* Schedule the next pulse. */ callout_reset(&sc->bce_pulse_callout, hz, bce_pulse, sc); DBEXIT(BCE_EXTREME_MISC); } /****************************************************************************/ /* Periodic function to perform maintenance tasks. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static void bce_tick(void *xsc) { struct bce_softc *sc = xsc; struct mii_data *mii; struct ifnet *ifp; ifp = sc->bce_ifp; DBENTER(BCE_EXTREME_MISC); BCE_LOCK_ASSERT(sc); /* Schedule the next tick. */ callout_reset(&sc->bce_tick_callout, hz, bce_tick, sc); /* Update the statistics from the hardware statistics block. */ bce_stats_update(sc); /* Top off the receive and page chains. */ #ifdef BCE_JUMBO_HDRSPLIT bce_fill_pg_chain(sc); #endif bce_fill_rx_chain(sc); /* Check that chip hasn't hung. */ bce_watchdog(sc); /* If link is up already up then we're done. */ if (sc->bce_link) goto bce_tick_exit; /* Link is down. Check what the PHY's doing. */ mii = device_get_softc(sc->bce_miibus); mii_tick(mii); /* Check if the link has come up. */ if ((mii->mii_media_status & IFM_ACTIVE) && (IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE)) { DBPRINT(sc, BCE_VERBOSE_MISC, "%s(): Link up!\n", __FUNCTION__); sc->bce_link++; if ((IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_T || IFM_SUBTYPE(mii->mii_media_active) == IFM_1000_SX) && bootverbose) BCE_PRINTF("Gigabit link up!\n"); /* Now that link is up, handle any outstanding TX traffic. */ if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { DBPRINT(sc, BCE_VERBOSE_MISC, "%s(): Found pending TX traffic.\n", __FUNCTION__); bce_start_locked(ifp); } } bce_tick_exit: DBEXIT(BCE_EXTREME_MISC); return; } #ifdef BCE_DEBUG /****************************************************************************/ /* Allows the driver state to be dumped through the sysctl interface. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_driver_state(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_dump_driver_state(sc); } return error; } /****************************************************************************/ /* Allows the hardware state to be dumped through the sysctl interface. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_hw_state(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_dump_hw_state(sc); } return error; } /****************************************************************************/ /* Allows the bootcode state to be dumped through the sysctl interface. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_bc_state(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_dump_bc_state(sc); } return error; } /****************************************************************************/ /* Provides a sysctl interface to allow dumping the RX chain. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_dump_rx_chain(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_dump_rx_chain(sc, 0, TOTAL_RX_BD); } return error; } /****************************************************************************/ /* Provides a sysctl interface to allow dumping the TX chain. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_dump_tx_chain(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; - bce_dump_tx_chain(sc, 0, USABLE_TX_BD); + bce_dump_tx_chain(sc, 0, TOTAL_TX_BD); } return error; } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Provides a sysctl interface to allow dumping the page chain. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_dump_pg_chain(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_dump_pg_chain(sc, 0, TOTAL_PG_BD); } return error; } #endif /****************************************************************************/ /* Provides a sysctl interface to allow reading arbitrary NVRAM offsets in */ /* the device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_nvram_read(SYSCTL_HANDLER_ARGS) { struct bce_softc *sc = (struct bce_softc *)arg1; int error; u32 result; u32 val[1]; u8 *data = (u8 *) val; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || (req->newptr == NULL)) return (error); bce_nvram_read(sc, result, data, 4); BCE_PRINTF("offset 0x%08X = 0x%08X\n", result, bce_be32toh(val[0])); return (error); } /****************************************************************************/ /* Provides a sysctl interface to allow reading arbitrary registers in the */ /* device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_reg_read(SYSCTL_HANDLER_ARGS) { struct bce_softc *sc = (struct bce_softc *)arg1; int error; u32 val, result; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || (req->newptr == NULL)) return (error); /* Make sure the register is accessible. */ if (result < 0x8000) { val = REG_RD(sc, result); BCE_PRINTF("reg 0x%08X = 0x%08X\n", result, val); } else if (result < 0x0280000) { val = REG_RD_IND(sc, result); BCE_PRINTF("reg 0x%08X = 0x%08X\n", result, val); } return (error); } /****************************************************************************/ /* Provides a sysctl interface to allow reading arbitrary PHY registers in */ /* the device. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_phy_read(SYSCTL_HANDLER_ARGS) { struct bce_softc *sc; device_t dev; int error, result; u16 val; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || (req->newptr == NULL)) return (error); /* Make sure the register is accessible. */ if (result < 0x20) { sc = (struct bce_softc *)arg1; dev = sc->bce_dev; val = bce_miibus_read_reg(dev, sc->bce_phy_addr, result); BCE_PRINTF("phy 0x%02X = 0x%04X\n", result, val); } return (error); } /****************************************************************************/ /* Provides a sysctl interface to allow reading a CID. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_dump_ctx(SYSCTL_HANDLER_ARGS) { struct bce_softc *sc; int error; u16 result; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || (req->newptr == NULL)) return (error); /* Make sure the register is accessible. */ if (result <= TX_CID) { sc = (struct bce_softc *)arg1; bce_dump_ctx(sc, result); } return (error); } /****************************************************************************/ /* Provides a sysctl interface to forcing the driver to dump state and */ /* enter the debugger. DO NOT ENABLE ON PRODUCTION SYSTEMS! */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static int bce_sysctl_breakpoint(SYSCTL_HANDLER_ARGS) { int error; int result; struct bce_softc *sc; result = -1; error = sysctl_handle_int(oidp, &result, 0, req); if (error || !req->newptr) return (error); if (result == 1) { sc = (struct bce_softc *)arg1; bce_breakpoint(sc); } return error; } #endif /****************************************************************************/ /* Adds any sysctl parameters for tuning or debugging purposes. */ /* */ /* Returns: */ /* 0 for success, positive value for failure. */ /****************************************************************************/ static void bce_add_sysctls(struct bce_softc *sc) { struct sysctl_ctx_list *ctx; struct sysctl_oid_list *children; DBENTER(BCE_VERBOSE_MISC); ctx = device_get_sysctl_ctx(sc->bce_dev); children = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->bce_dev)); #ifdef BCE_DEBUG SYSCTL_ADD_INT(ctx, children, OID_AUTO, "l2fhdr_error_sim_control", CTLFLAG_RW, &l2fhdr_error_sim_control, 0, "Debug control to force l2fhdr errors"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "l2fhdr_error_sim_count", CTLFLAG_RD, &sc->l2fhdr_error_sim_count, 0, "Number of simulated l2_fhdr errors"); #endif SYSCTL_ADD_INT(ctx, children, OID_AUTO, "l2fhdr_error_count", CTLFLAG_RD, &sc->l2fhdr_error_count, 0, "Number of l2_fhdr errors"); #ifdef BCE_DEBUG SYSCTL_ADD_INT(ctx, children, OID_AUTO, "mbuf_alloc_failed_sim_control", CTLFLAG_RW, &mbuf_alloc_failed_sim_control, 0, "Debug control to force mbuf allocation failures"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "mbuf_alloc_failed_sim_count", CTLFLAG_RD, &sc->mbuf_alloc_failed_sim_count, 0, "Number of simulated mbuf cluster allocation failures"); #endif SYSCTL_ADD_INT(ctx, children, OID_AUTO, "mbuf_alloc_failed_count", CTLFLAG_RD, &sc->mbuf_alloc_failed_count, 0, "Number of mbuf allocation failures"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fragmented_mbuf_count", CTLFLAG_RD, &sc->fragmented_mbuf_count, 0, "Number of fragmented mbufs"); #ifdef BCE_DEBUG SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dma_map_addr_failed_sim_control", CTLFLAG_RW, &dma_map_addr_failed_sim_control, 0, "Debug control to force DMA mapping failures"); /* ToDo: Figure out how to update this value in bce_dma_map_addr(). */ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dma_map_addr_failed_sim_count", CTLFLAG_RD, &sc->dma_map_addr_failed_sim_count, 0, "Number of simulated DMA mapping failures"); #endif SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dma_map_addr_rx_failed_count", CTLFLAG_RD, &sc->dma_map_addr_rx_failed_count, 0, "Number of RX DMA mapping failures"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "dma_map_addr_tx_failed_count", CTLFLAG_RD, &sc->dma_map_addr_tx_failed_count, 0, "Number of TX DMA mapping failures"); #ifdef BCE_DEBUG SYSCTL_ADD_INT(ctx, children, OID_AUTO, "unexpected_attention_sim_control", CTLFLAG_RW, &unexpected_attention_sim_control, 0, "Debug control to simulate unexpected attentions"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "unexpected_attention_sim_count", CTLFLAG_RW, &sc->unexpected_attention_sim_count, 0, "Number of simulated unexpected attentions"); #endif SYSCTL_ADD_INT(ctx, children, OID_AUTO, "unexpected_attention_count", CTLFLAG_RW, &sc->unexpected_attention_count, 0, "Number of unexpected attentions"); #ifdef BCE_DEBUG SYSCTL_ADD_INT(ctx, children, OID_AUTO, "debug_bootcode_running_failure", CTLFLAG_RW, &bootcode_running_failure_sim_control, 0, "Debug control to force bootcode running failures"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "rx_low_watermark", CTLFLAG_RD, &sc->rx_low_watermark, 0, "Lowest level of free rx_bd's"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "rx_empty_count", CTLFLAG_RD, &sc->rx_empty_count, 0, "Number of times the RX chain was empty"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "tx_hi_watermark", CTLFLAG_RD, &sc->tx_hi_watermark, 0, "Highest level of used tx_bd's"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "tx_full_count", CTLFLAG_RD, &sc->tx_full_count, 0, "Number of times the TX chain was full"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "requested_tso_frames", CTLFLAG_RD, &sc->requested_tso_frames, 0, "Number of TSO frames received"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "rx_interrupts", CTLFLAG_RD, &sc->rx_interrupts, 0, "Number of RX interrupts"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "tx_interrupts", CTLFLAG_RD, &sc->tx_interrupts, 0, "Number of TX interrupts"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "rx_intr_time", CTLFLAG_RD, &sc->rx_intr_time, "RX interrupt time"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "tx_intr_time", CTLFLAG_RD, &sc->tx_intr_time, "TX interrupt time"); #endif SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHcInOctets", CTLFLAG_RD, &sc->stat_IfHCInOctets, "Bytes received"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCInBadOctets", CTLFLAG_RD, &sc->stat_IfHCInBadOctets, "Bad bytes received"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCOutOctets", CTLFLAG_RD, &sc->stat_IfHCOutOctets, "Bytes sent"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCOutBadOctets", CTLFLAG_RD, &sc->stat_IfHCOutBadOctets, "Bad bytes sent"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCInUcastPkts", CTLFLAG_RD, &sc->stat_IfHCInUcastPkts, "Unicast packets received"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCInMulticastPkts", CTLFLAG_RD, &sc->stat_IfHCInMulticastPkts, "Multicast packets received"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCInBroadcastPkts", CTLFLAG_RD, &sc->stat_IfHCInBroadcastPkts, "Broadcast packets received"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCOutUcastPkts", CTLFLAG_RD, &sc->stat_IfHCOutUcastPkts, "Unicast packets sent"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCOutMulticastPkts", CTLFLAG_RD, &sc->stat_IfHCOutMulticastPkts, "Multicast packets sent"); SYSCTL_ADD_ULONG(ctx, children, OID_AUTO, "stat_IfHCOutBroadcastPkts", CTLFLAG_RD, &sc->stat_IfHCOutBroadcastPkts, "Broadcast packets sent"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_emac_tx_stat_dot3statsinternalmactransmiterrors", CTLFLAG_RD, &sc->stat_emac_tx_stat_dot3statsinternalmactransmiterrors, 0, "Internal MAC transmit errors"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsCarrierSenseErrors", CTLFLAG_RD, &sc->stat_Dot3StatsCarrierSenseErrors, 0, "Carrier sense errors"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsFCSErrors", CTLFLAG_RD, &sc->stat_Dot3StatsFCSErrors, 0, "Frame check sequence errors"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsAlignmentErrors", CTLFLAG_RD, &sc->stat_Dot3StatsAlignmentErrors, 0, "Alignment errors"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsSingleCollisionFrames", CTLFLAG_RD, &sc->stat_Dot3StatsSingleCollisionFrames, 0, "Single Collision Frames"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsMultipleCollisionFrames", CTLFLAG_RD, &sc->stat_Dot3StatsMultipleCollisionFrames, 0, "Multiple Collision Frames"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsDeferredTransmissions", CTLFLAG_RD, &sc->stat_Dot3StatsDeferredTransmissions, 0, "Deferred Transmissions"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsExcessiveCollisions", CTLFLAG_RD, &sc->stat_Dot3StatsExcessiveCollisions, 0, "Excessive Collisions"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_Dot3StatsLateCollisions", CTLFLAG_RD, &sc->stat_Dot3StatsLateCollisions, 0, "Late Collisions"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsCollisions", CTLFLAG_RD, &sc->stat_EtherStatsCollisions, 0, "Collisions"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsFragments", CTLFLAG_RD, &sc->stat_EtherStatsFragments, 0, "Fragments"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsJabbers", CTLFLAG_RD, &sc->stat_EtherStatsJabbers, 0, "Jabbers"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsUndersizePkts", CTLFLAG_RD, &sc->stat_EtherStatsUndersizePkts, 0, "Undersize packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsOversizePkts", CTLFLAG_RD, &sc->stat_EtherStatsOversizePkts, 0, "stat_EtherStatsOversizePkts"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx64Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx64Octets, 0, "Bytes received in 64 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx65Octetsto127Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx65Octetsto127Octets, 0, "Bytes received in 65 to 127 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx128Octetsto255Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx128Octetsto255Octets, 0, "Bytes received in 128 to 255 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx256Octetsto511Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx256Octetsto511Octets, 0, "Bytes received in 256 to 511 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx512Octetsto1023Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx512Octetsto1023Octets, 0, "Bytes received in 512 to 1023 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx1024Octetsto1522Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx1024Octetsto1522Octets, 0, "Bytes received in 1024 t0 1522 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsRx1523Octetsto9022Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsRx1523Octetsto9022Octets, 0, "Bytes received in 1523 to 9022 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx64Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx64Octets, 0, "Bytes sent in 64 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx65Octetsto127Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx65Octetsto127Octets, 0, "Bytes sent in 65 to 127 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx128Octetsto255Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx128Octetsto255Octets, 0, "Bytes sent in 128 to 255 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx256Octetsto511Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx256Octetsto511Octets, 0, "Bytes sent in 256 to 511 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx512Octetsto1023Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx512Octetsto1023Octets, 0, "Bytes sent in 512 to 1023 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx1024Octetsto1522Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx1024Octetsto1522Octets, 0, "Bytes sent in 1024 to 1522 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_EtherStatsPktsTx1523Octetsto9022Octets", CTLFLAG_RD, &sc->stat_EtherStatsPktsTx1523Octetsto9022Octets, 0, "Bytes sent in 1523 to 9022 byte packets"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_XonPauseFramesReceived", CTLFLAG_RD, &sc->stat_XonPauseFramesReceived, 0, "XON pause frames receved"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_XoffPauseFramesReceived", CTLFLAG_RD, &sc->stat_XoffPauseFramesReceived, 0, "XOFF pause frames received"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_OutXonSent", CTLFLAG_RD, &sc->stat_OutXonSent, 0, "XON pause frames sent"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_OutXoffSent", CTLFLAG_RD, &sc->stat_OutXoffSent, 0, "XOFF pause frames sent"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_FlowControlDone", CTLFLAG_RD, &sc->stat_FlowControlDone, 0, "Flow control done"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_MacControlFramesReceived", CTLFLAG_RD, &sc->stat_MacControlFramesReceived, 0, "MAC control frames received"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_XoffStateEntered", CTLFLAG_RD, &sc->stat_XoffStateEntered, 0, "XOFF state entered"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_IfInFramesL2FilterDiscards", CTLFLAG_RD, &sc->stat_IfInFramesL2FilterDiscards, 0, "Received L2 packets discarded"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_IfInRuleCheckerDiscards", CTLFLAG_RD, &sc->stat_IfInRuleCheckerDiscards, 0, "Received packets discarded by rule"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_IfInFTQDiscards", CTLFLAG_RD, &sc->stat_IfInFTQDiscards, 0, "Received packet FTQ discards"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_IfInMBUFDiscards", CTLFLAG_RD, &sc->stat_IfInMBUFDiscards, 0, "Received packets discarded due to lack of controller buffer memory"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_IfInRuleCheckerP4Hit", CTLFLAG_RD, &sc->stat_IfInRuleCheckerP4Hit, 0, "Received packets rule checker hits"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_CatchupInRuleCheckerDiscards", CTLFLAG_RD, &sc->stat_CatchupInRuleCheckerDiscards, 0, "Received packets discarded in Catchup path"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_CatchupInFTQDiscards", CTLFLAG_RD, &sc->stat_CatchupInFTQDiscards, 0, "Received packets discarded in FTQ in Catchup path"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_CatchupInMBUFDiscards", CTLFLAG_RD, &sc->stat_CatchupInMBUFDiscards, 0, "Received packets discarded in controller buffer memory in Catchup path"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "stat_CatchupInRuleCheckerP4Hit", CTLFLAG_RD, &sc->stat_CatchupInRuleCheckerP4Hit, 0, "Received packets rule checker hits in Catchup path"); SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "com_no_buffers", CTLFLAG_RD, &sc->com_no_buffers, 0, "Valid packets received but no RX buffers available"); #ifdef BCE_DEBUG SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "driver_state", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_driver_state, "I", "Drive state information"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "hw_state", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_hw_state, "I", "Hardware state information"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "bc_state", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_bc_state, "I", "Bootcode state information"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dump_rx_chain", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_dump_rx_chain, "I", "Dump rx_bd chain"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dump_tx_chain", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_dump_tx_chain, "I", "Dump tx_bd chain"); #ifdef BCE_JUMBO_HDRSPLIT SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dump_pg_chain", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_dump_pg_chain, "I", "Dump page chain"); #endif SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "dump_ctx", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_dump_ctx, "I", "Dump context memory"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "breakpoint", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_breakpoint, "I", "Driver breakpoint"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "reg_read", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_reg_read, "I", "Register read"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "nvram_read", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_nvram_read, "I", "NVRAM read"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "phy_read", CTLTYPE_INT | CTLFLAG_RW, (void *)sc, 0, bce_sysctl_phy_read, "I", "PHY register read"); #endif DBEXIT(BCE_VERBOSE_MISC); } /****************************************************************************/ /* BCE Debug Routines */ /****************************************************************************/ #ifdef BCE_DEBUG /****************************************************************************/ /* Freezes the controller to allow for a cohesive state dump. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ -static void +static __attribute__ ((noinline)) void bce_freeze_controller(struct bce_softc *sc) { u32 val; val = REG_RD(sc, BCE_MISC_COMMAND); val |= BCE_MISC_COMMAND_DISABLE_ALL; REG_WR(sc, BCE_MISC_COMMAND, val); } /****************************************************************************/ /* Unfreezes the controller after a freeze operation. This may not always */ /* work and the controller will require a reset! */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ -static void +static __attribute__ ((noinline)) void bce_unfreeze_controller(struct bce_softc *sc) { u32 val; val = REG_RD(sc, BCE_MISC_COMMAND); val |= BCE_MISC_COMMAND_ENABLE_ALL; REG_WR(sc, BCE_MISC_COMMAND, val); } /****************************************************************************/ /* Prints out Ethernet frame information from an mbuf. */ /* */ /* Partially decode an Ethernet frame to look at some important headers. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ -static void +static __attribute__ ((noinline)) void bce_dump_enet(struct bce_softc *sc, struct mbuf *m) { struct ether_vlan_header *eh; u16 etype; int ehlen; struct ip *ip; struct tcphdr *th; struct udphdr *uh; struct arphdr *ah; BCE_PRINTF( "-----------------------------" " Frame Decode " "-----------------------------\n"); eh = mtod(m, struct ether_vlan_header *); /* Handle VLAN encapsulation if present. */ if (eh->evl_encap_proto == htons(ETHERTYPE_VLAN)) { etype = ntohs(eh->evl_proto); ehlen = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; } else { etype = ntohs(eh->evl_encap_proto); ehlen = ETHER_HDR_LEN; } /* ToDo: Add VLAN output. */ BCE_PRINTF("enet: dest = %6D, src = %6D, type = 0x%04X, hlen = %d\n", eh->evl_dhost, ":", eh->evl_shost, ":", etype, ehlen); switch (etype) { case ETHERTYPE_IP: ip = (struct ip *)(m->m_data + ehlen); BCE_PRINTF("--ip: dest = 0x%08X , src = 0x%08X, len = %d bytes, " "protocol = 0x%02X, xsum = 0x%04X\n", ntohl(ip->ip_dst.s_addr), ntohl(ip->ip_src.s_addr), ntohs(ip->ip_len), ip->ip_p, ntohs(ip->ip_sum)); switch (ip->ip_p) { case IPPROTO_TCP: th = (struct tcphdr *)((caddr_t)ip + (ip->ip_hl << 2)); BCE_PRINTF("-tcp: dest = %d, src = %d, hlen = %d bytes, " "flags = 0x%b, csum = 0x%04X\n", ntohs(th->th_dport), ntohs(th->th_sport), (th->th_off << 2), th->th_flags, "\20\10CWR\07ECE\06URG\05ACK\04PSH\03RST\02SYN\01FIN", ntohs(th->th_sum)); break; case IPPROTO_UDP: uh = (struct udphdr *)((caddr_t)ip + (ip->ip_hl << 2)); BCE_PRINTF("-udp: dest = %d, src = %d, len = %d bytes, " "csum = 0x%04X\n", ntohs(uh->uh_dport), ntohs(uh->uh_sport), ntohs(uh->uh_ulen), ntohs(uh->uh_sum)); break; case IPPROTO_ICMP: BCE_PRINTF("icmp:\n"); break; default: BCE_PRINTF("----: Other IP protocol.\n"); } break; case ETHERTYPE_IPV6: BCE_PRINTF("ipv6: No decode supported.\n"); break; case ETHERTYPE_ARP: BCE_PRINTF("-arp: "); ah = (struct arphdr *) (m->m_data + ehlen); switch (ntohs(ah->ar_op)) { case ARPOP_REVREQUEST: printf("reverse ARP request\n"); break; case ARPOP_REVREPLY: printf("reverse ARP reply\n"); break; case ARPOP_REQUEST: printf("ARP request\n"); break; case ARPOP_REPLY: printf("ARP reply\n"); break; default: printf("other ARP operation\n"); } break; default: BCE_PRINTF("----: Other protocol.\n"); } BCE_PRINTF( "-----------------------------" "--------------" "-----------------------------\n"); } /****************************************************************************/ /* Prints out information about an mbuf. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_mbuf(struct bce_softc *sc, struct mbuf *m) { struct mbuf *mp = m; if (m == NULL) { BCE_PRINTF("mbuf: null pointer\n"); return; } while (mp) { BCE_PRINTF("mbuf: %p, m_len = %d, m_flags = 0x%b, m_data = %p\n", mp, mp->m_len, mp->m_flags, "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY", mp->m_data); if (mp->m_flags & M_PKTHDR) { BCE_PRINTF("- m_pkthdr: len = %d, flags = 0x%b, csum_flags = %b\n", mp->m_pkthdr.len, mp->m_flags, "\20\12M_BCAST\13M_MCAST\14M_FRAG\15M_FIRSTFRAG" "\16M_LASTFRAG\21M_VLANTAG\22M_PROMISC\23M_NOFREE", mp->m_pkthdr.csum_flags, "\20\1CSUM_IP\2CSUM_TCP\3CSUM_UDP\4CSUM_IP_FRAGS" "\5CSUM_FRAGMENT\6CSUM_TSO\11CSUM_IP_CHECKED" "\12CSUM_IP_VALID\13CSUM_DATA_VALID\14CSUM_PSEUDO_HDR"); } if (mp->m_flags & M_EXT) { BCE_PRINTF("- m_ext: %p, ext_size = %d, type = ", mp->m_ext.ext_buf, mp->m_ext.ext_size); switch (mp->m_ext.ext_type) { case EXT_CLUSTER: printf("EXT_CLUSTER\n"); break; case EXT_SFBUF: printf("EXT_SFBUF\n"); break; case EXT_JUMBO9: printf("EXT_JUMBO9\n"); break; case EXT_JUMBO16: printf("EXT_JUMBO16\n"); break; case EXT_PACKET: printf("EXT_PACKET\n"); break; case EXT_MBUF: printf("EXT_MBUF\n"); break; case EXT_NET_DRV: printf("EXT_NET_DRV\n"); break; case EXT_MOD_TYPE: printf("EXT_MDD_TYPE\n"); break; case EXT_DISPOSABLE: printf("EXT_DISPOSABLE\n"); break; case EXT_EXTREF: printf("EXT_EXTREF\n"); break; default: printf("UNKNOWN\n"); } } mp = mp->m_next; } } /****************************************************************************/ /* Prints out the mbufs in the TX mbuf chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_tx_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) { struct mbuf *m; BCE_PRINTF( "----------------------------" " tx mbuf data " "----------------------------\n"); for (int i = 0; i < count; i++) { m = sc->tx_mbuf_ptr[chain_prod]; BCE_PRINTF("txmbuf[0x%04X]\n", chain_prod); bce_dump_mbuf(sc, m); chain_prod = TX_CHAIN_IDX(NEXT_TX_BD(chain_prod)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the mbufs in the RX mbuf chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_rx_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) { struct mbuf *m; BCE_PRINTF( "----------------------------" " rx mbuf data " "----------------------------\n"); for (int i = 0; i < count; i++) { m = sc->rx_mbuf_ptr[chain_prod]; BCE_PRINTF("rxmbuf[0x%04X]\n", chain_prod); bce_dump_mbuf(sc, m); chain_prod = RX_CHAIN_IDX(NEXT_RX_BD(chain_prod)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Prints out the mbufs in the mbuf page chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_pg_mbuf_chain(struct bce_softc *sc, u16 chain_prod, int count) { struct mbuf *m; BCE_PRINTF( "----------------------------" " pg mbuf data " "----------------------------\n"); for (int i = 0; i < count; i++) { m = sc->pg_mbuf_ptr[chain_prod]; BCE_PRINTF("pgmbuf[0x%04X]\n", chain_prod); bce_dump_mbuf(sc, m); chain_prod = PG_CHAIN_IDX(NEXT_PG_BD(chain_prod)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } #endif /****************************************************************************/ /* Prints out a tx_bd structure. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_txbd(struct bce_softc *sc, int idx, struct tx_bd *txbd) { - if (idx > MAX_TX_BD) + int i = 0; + + if (idx > MAX_TX_BD) /* Index out of range. */ BCE_PRINTF("tx_bd[0x%04X]: Invalid tx_bd index!\n", idx); else if ((idx & USABLE_TX_BD_PER_PAGE) == USABLE_TX_BD_PER_PAGE) /* TX Chain page pointer. */ BCE_PRINTF("tx_bd[0x%04X]: haddr = 0x%08X:%08X, chain page pointer\n", idx, txbd->tx_bd_haddr_hi, txbd->tx_bd_haddr_lo); else { - /* Normal tx_bd entry. */ - BCE_PRINTF("tx_bd[0x%04X]: haddr = 0x%08X:%08X, nbytes = 0x%08X, " - "vlan tag= 0x%04X, flags = 0x%04X (", idx, - txbd->tx_bd_haddr_hi, txbd->tx_bd_haddr_lo, - txbd->tx_bd_mss_nbytes, txbd->tx_bd_vlan_tag, - txbd->tx_bd_flags); + /* Normal tx_bd entry. */ + BCE_PRINTF("tx_bd[0x%04X]: haddr = 0x%08X:%08X, mss_nbytes = 0x%08X, " + "vlan tag = 0x%04X, flags = 0x%04X (", idx, + txbd->tx_bd_haddr_hi, txbd->tx_bd_haddr_lo, + txbd->tx_bd_mss_nbytes, txbd->tx_bd_vlan_tag, + txbd->tx_bd_flags); - if (txbd->tx_bd_flags & TX_BD_FLAGS_CONN_FAULT) - printf(" CONN_FAULT"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_CONN_FAULT) { + if (i>0) printf("|"); printf("CONN_FAULT"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_TCP_UDP_CKSUM) - printf(" TCP_UDP_CKSUM"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_TCP_UDP_CKSUM) { + if (i>0) printf("|"); printf("TCP_UDP_CKSUM"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_IP_CKSUM) - printf(" IP_CKSUM"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_IP_CKSUM) { + if (i>0) printf("|"); printf("IP_CKSUM"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_VLAN_TAG) - printf(" VLAN"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_VLAN_TAG) { + if (i>0) printf("|"); printf("VLAN"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_COAL_NOW) - printf(" COAL_NOW"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_COAL_NOW) { + if (i>0) printf("|"); printf("COAL_NOW"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_DONT_GEN_CRC) - printf(" DONT_GEN_CRC"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_DONT_GEN_CRC) { + if (i>0) printf("|"); printf("DONT_GEN_CRC"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_START) - printf(" START"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_START) { + if (i>0) printf("|"); printf("START"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_END) - printf(" END"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_END) { + if (i>0) printf("|"); printf("END"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_LSO) - printf(" LSO"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_LSO) { + if (i>0) printf("|"); printf("LSO"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_OPTION_WORD) - printf(" OPTION_WORD"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_OPTION_WORD) { + if (i>0) printf("|"); + printf("SW_OPTION=%d", ((txbd->tx_bd_flags & + TX_BD_FLAGS_SW_OPTION_WORD) >> 8)); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_FLAGS) - printf(" FLAGS"); + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_FLAGS) { + if (i>0) printf("|"); printf("SW_FLAGS"); i++; + } - if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_SNAP) - printf(" SNAP"); - - printf(" )\n"); - } - + if (txbd->tx_bd_flags & TX_BD_FLAGS_SW_SNAP) { + if (i>0) printf("|"); printf("SNAP)"); + } else { + printf(")\n"); + } + } } /****************************************************************************/ /* Prints out a rx_bd structure. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_rxbd(struct bce_softc *sc, int idx, struct rx_bd *rxbd) { if (idx > MAX_RX_BD) /* Index out of range. */ BCE_PRINTF("rx_bd[0x%04X]: Invalid rx_bd index!\n", idx); else if ((idx & USABLE_RX_BD_PER_PAGE) == USABLE_RX_BD_PER_PAGE) /* RX Chain page pointer. */ BCE_PRINTF("rx_bd[0x%04X]: haddr = 0x%08X:%08X, chain page pointer\n", idx, rxbd->rx_bd_haddr_hi, rxbd->rx_bd_haddr_lo); else /* Normal rx_bd entry. */ BCE_PRINTF("rx_bd[0x%04X]: haddr = 0x%08X:%08X, nbytes = 0x%08X, " "flags = 0x%08X\n", idx, rxbd->rx_bd_haddr_hi, rxbd->rx_bd_haddr_lo, rxbd->rx_bd_len, rxbd->rx_bd_flags); } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Prints out a rx_bd structure in the page chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_pgbd(struct bce_softc *sc, int idx, struct rx_bd *pgbd) { if (idx > MAX_PG_BD) /* Index out of range. */ BCE_PRINTF("pg_bd[0x%04X]: Invalid pg_bd index!\n", idx); else if ((idx & USABLE_PG_BD_PER_PAGE) == USABLE_PG_BD_PER_PAGE) /* Page Chain page pointer. */ BCE_PRINTF("px_bd[0x%04X]: haddr = 0x%08X:%08X, chain page pointer\n", idx, pgbd->rx_bd_haddr_hi, pgbd->rx_bd_haddr_lo); else /* Normal rx_bd entry. */ BCE_PRINTF("pg_bd[0x%04X]: haddr = 0x%08X:%08X, nbytes = 0x%08X, " "flags = 0x%08X\n", idx, pgbd->rx_bd_haddr_hi, pgbd->rx_bd_haddr_lo, pgbd->rx_bd_len, pgbd->rx_bd_flags); } #endif /****************************************************************************/ /* Prints out a l2_fhdr structure. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_l2fhdr(struct bce_softc *sc, int idx, struct l2_fhdr *l2fhdr) { BCE_PRINTF("l2_fhdr[0x%04X]: status = 0x%b, " "pkt_len = %d, vlan = 0x%04x, ip_xsum/hdr_len = 0x%04X, " "tcp_udp_xsum = 0x%04X\n", idx, l2fhdr->l2_fhdr_status, BCE_L2FHDR_PRINTFB, l2fhdr->l2_fhdr_pkt_len, l2fhdr->l2_fhdr_vlan_tag, l2fhdr->l2_fhdr_ip_xsum, l2fhdr->l2_fhdr_tcp_udp_xsum); } /****************************************************************************/ /* Prints out context memory info. (Only useful for CID 0 to 16.) */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_ctx(struct bce_softc *sc, u16 cid) { if (cid <= TX_CID) { BCE_PRINTF( "----------------------------" " CTX Data " "----------------------------\n"); BCE_PRINTF(" 0x%04X - (CID) Context ID\n", cid); if (cid == RX_CID) { BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_BDIDX) host rx " "producer index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_HOST_BDIDX)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_BSEQ) host byte sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_HOST_BSEQ)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BSEQ) h/w byte sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BSEQ)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDHADDR_HI) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BDHADDR_HI)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDHADDR_LO) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BDHADDR_LO)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_BDIDX) h/w rx consumer index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_BDIDX)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_HOST_PG_BDIDX) host page " "producer index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_HOST_PG_BDIDX)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_PG_BUF_SIZE) host rx_bd/page " "buffer size\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_PG_BUF_SIZE)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDHADDR_HI) h/w page " "chain address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_PG_BDHADDR_HI)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDHADDR_LO) h/w page " "chain address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_PG_BDHADDR_LO)); BCE_PRINTF(" 0x%08X - (L2CTX_RX_NX_PG_BDIDX) h/w page " "consumer index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_RX_NX_PG_BDIDX)); } else if (cid == TX_CID) { if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { BCE_PRINTF(" 0x%08X - (L2CTX_TX_TYPE_XI) ctx type\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TYPE_XI)); BCE_PRINTF(" 0x%08X - (L2CTX_CMD_TX_TYPE_XI) ctx cmd\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_CMD_TYPE_XI)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BDHADDR_HI_XI) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TBDR_BHADDR_HI_XI)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BHADDR_LO_XI) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TBDR_BHADDR_LO_XI)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BIDX_XI) host producer " "index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_HOST_BIDX_XI)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BSEQ_XI) host byte " "sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_HOST_BSEQ_XI)); } else { BCE_PRINTF(" 0x%08X - (L2CTX_TX_TYPE) ctx type\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TYPE)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_CMD_TYPE) ctx cmd\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_CMD_TYPE)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BDHADDR_HI) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TBDR_BHADDR_HI)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_TBDR_BHADDR_LO) h/w buffer " "descriptor address\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_TBDR_BHADDR_LO)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BIDX) host producer " "index\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_HOST_BIDX)); BCE_PRINTF(" 0x%08X - (L2CTX_TX_HOST_BSEQ) host byte " "sequence\n", CTX_RD(sc, GET_CID_ADDR(cid), BCE_L2CTX_TX_HOST_BSEQ)); } } else BCE_PRINTF(" Unknown CID\n"); BCE_PRINTF( "----------------------------" " Raw CTX " "----------------------------\n"); for (int i = 0x0; i < 0x300; i += 0x10) { BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, CTX_RD(sc, GET_CID_ADDR(cid), i), CTX_RD(sc, GET_CID_ADDR(cid), i + 0x4), CTX_RD(sc, GET_CID_ADDR(cid), i + 0x8), CTX_RD(sc, GET_CID_ADDR(cid), i + 0xc)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } } /****************************************************************************/ /* Prints out the FTQ data. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_ftqs(struct bce_softc *sc) { u32 cmd, ctl, cur_depth, max_depth, valid_cnt, val; BCE_PRINTF( "----------------------------" " FTQ Data " "----------------------------\n"); BCE_PRINTF(" FTQ Command Control Depth_Now Max_Depth Valid_Cnt \n"); BCE_PRINTF(" ------- ---------- ---------- ---------- ---------- ----------\n"); /* Setup the generic statistic counters for the FTQ valid count. */ val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PPQ_VALID_CNT << 24) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPCQ_VALID_CNT << 16) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RXPQ_VALID_CNT << 8) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RLUPQ_VALID_CNT); REG_WR(sc, BCE_HC_STAT_GEN_SEL_0, val); val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TSCHQ_VALID_CNT << 24) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RDMAQ_VALID_CNT << 16) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PTQ_VALID_CNT << 8) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PMQ_VALID_CNT); REG_WR(sc, BCE_HC_STAT_GEN_SEL_1, val); val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TPATQ_VALID_CNT << 24) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TDMAQ_VALID_CNT << 16) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TXPQ_VALID_CNT << 8) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TBDRQ_VALID_CNT); REG_WR(sc, BCE_HC_STAT_GEN_SEL_2, val); val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMQ_VALID_CNT << 24) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMTQ_VALID_CNT << 16) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_COMXQ_VALID_CNT << 8) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_TASQ_VALID_CNT); REG_WR(sc, BCE_HC_STAT_GEN_SEL_3, val); /* Input queue to the Receive Lookup state machine */ cmd = REG_RD(sc, BCE_RLUP_FTQ_CMD); ctl = REG_RD(sc, BCE_RLUP_FTQ_CTL); cur_depth = (ctl & BCE_RLUP_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RLUP_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT0); BCE_PRINTF(" RLUP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Receive Processor */ cmd = REG_RD_IND(sc, BCE_RXP_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_RXP_FTQ_CTL); cur_depth = (ctl & BCE_RXP_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RXP_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT1); BCE_PRINTF(" RXP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Recevie Processor */ cmd = REG_RD_IND(sc, BCE_RXP_CFTQ_CMD); ctl = REG_RD_IND(sc, BCE_RXP_CFTQ_CTL); cur_depth = (ctl & BCE_RXP_CFTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RXP_CFTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT2); BCE_PRINTF(" RXPC 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Receive Virtual to Physical state machine */ cmd = REG_RD(sc, BCE_RV2P_PFTQ_CMD); ctl = REG_RD(sc, BCE_RV2P_PFTQ_CTL); cur_depth = (ctl & BCE_RV2P_PFTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RV2P_PFTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT3); BCE_PRINTF(" RV2PP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Recevie Virtual to Physical state machine */ cmd = REG_RD(sc, BCE_RV2P_MFTQ_CMD); ctl = REG_RD(sc, BCE_RV2P_MFTQ_CTL); cur_depth = (ctl & BCE_RV2P_MFTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RV2P_MFTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT4); BCE_PRINTF(" RV2PM 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Receive Virtual to Physical state machine */ cmd = REG_RD(sc, BCE_RV2P_TFTQ_CMD); ctl = REG_RD(sc, BCE_RV2P_TFTQ_CTL); cur_depth = (ctl & BCE_RV2P_TFTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RV2P_TFTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT5); BCE_PRINTF(" RV2PT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Receive DMA state machine */ cmd = REG_RD(sc, BCE_RDMA_FTQ_CMD); ctl = REG_RD(sc, BCE_RDMA_FTQ_CTL); cur_depth = (ctl & BCE_RDMA_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_RDMA_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT6); BCE_PRINTF(" RDMA 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit Scheduler state machine */ cmd = REG_RD(sc, BCE_TSCH_FTQ_CMD); ctl = REG_RD(sc, BCE_TSCH_FTQ_CTL); cur_depth = (ctl & BCE_TSCH_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TSCH_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT7); BCE_PRINTF(" TSCH 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit Buffer Descriptor state machine */ cmd = REG_RD(sc, BCE_TBDR_FTQ_CMD); ctl = REG_RD(sc, BCE_TBDR_FTQ_CTL); cur_depth = (ctl & BCE_TBDR_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TBDR_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT8); BCE_PRINTF(" TBDR 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit Processor */ cmd = REG_RD_IND(sc, BCE_TXP_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_TXP_FTQ_CTL); cur_depth = (ctl & BCE_TXP_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TXP_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT9); BCE_PRINTF(" TXP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit DMA state machine */ cmd = REG_RD(sc, BCE_TDMA_FTQ_CMD); ctl = REG_RD(sc, BCE_TDMA_FTQ_CTL); cur_depth = (ctl & BCE_TDMA_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TDMA_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT10); BCE_PRINTF(" TDMA 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit Patch-Up Processor */ cmd = REG_RD_IND(sc, BCE_TPAT_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_TPAT_FTQ_CTL); cur_depth = (ctl & BCE_TPAT_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TPAT_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT11); BCE_PRINTF(" TPAT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Transmit Assembler state machine */ cmd = REG_RD_IND(sc, BCE_TAS_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_TAS_FTQ_CTL); cur_depth = (ctl & BCE_TAS_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_TAS_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT12); BCE_PRINTF(" TAS 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Completion Processor */ cmd = REG_RD_IND(sc, BCE_COM_COMXQ_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_COM_COMXQ_FTQ_CTL); cur_depth = (ctl & BCE_COM_COMXQ_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_COM_COMXQ_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT13); BCE_PRINTF(" COMX 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Completion Processor */ cmd = REG_RD_IND(sc, BCE_COM_COMTQ_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_COM_COMTQ_FTQ_CTL); cur_depth = (ctl & BCE_COM_COMTQ_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_COM_COMTQ_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT14); BCE_PRINTF(" COMT 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Completion Processor */ cmd = REG_RD_IND(sc, BCE_COM_COMQ_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_COM_COMQ_FTQ_CTL); cur_depth = (ctl & BCE_COM_COMQ_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_COM_COMQ_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT15); BCE_PRINTF(" COMX 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Setup the generic statistic counters for the FTQ valid count. */ val = (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CSQ_VALID_CNT << 16) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_CPQ_VALID_CNT << 8) | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_MGMQ_VALID_CNT); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) val = val | (BCE_HC_STAT_GEN_SEL_0_GEN_SEL_0_RV2PCSQ_VALID_CNT_XI << 24); REG_WR(sc, BCE_HC_STAT_GEN_SEL_0, val); /* Input queue to the Management Control Processor */ cmd = REG_RD_IND(sc, BCE_MCP_MCPQ_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_MCP_MCPQ_FTQ_CTL); cur_depth = (ctl & BCE_MCP_MCPQ_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_MCP_MCPQ_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT0); BCE_PRINTF(" MCP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Command Processor */ cmd = REG_RD_IND(sc, BCE_CP_CPQ_FTQ_CMD); ctl = REG_RD_IND(sc, BCE_CP_CPQ_FTQ_CTL); cur_depth = (ctl & BCE_CP_CPQ_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_CP_CPQ_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT1); BCE_PRINTF(" CP 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); /* Input queue to the Completion Scheduler state machine */ cmd = REG_RD(sc, BCE_CSCH_CH_FTQ_CMD); ctl = REG_RD(sc, BCE_CSCH_CH_FTQ_CTL); cur_depth = (ctl & BCE_CSCH_CH_FTQ_CTL_CUR_DEPTH) >> 22; max_depth = (ctl & BCE_CSCH_CH_FTQ_CTL_MAX_DEPTH) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT2); BCE_PRINTF(" CS 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) || (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5716)) { /* Input queue to the Receive Virtual to Physical Command Scheduler */ cmd = REG_RD(sc, BCE_RV2PCSR_FTQ_CMD); ctl = REG_RD(sc, BCE_RV2PCSR_FTQ_CTL); cur_depth = (ctl & 0xFFC00000) >> 22; max_depth = (ctl & 0x003FF000) >> 12; valid_cnt = REG_RD(sc, BCE_HC_STAT_GEN_STAT3); BCE_PRINTF(" RV2PCSR 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\n", cmd, ctl, cur_depth, max_depth, valid_cnt); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the TX chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_tx_chain(struct bce_softc *sc, u16 tx_prod, int count) { struct tx_bd *txbd; /* First some info about the tx_bd chain structure. */ BCE_PRINTF( "----------------------------" " tx_bd chain " "----------------------------\n"); BCE_PRINTF("page size = 0x%08X, tx chain pages = 0x%08X\n", (u32) BCM_PAGE_SIZE, (u32) TX_PAGES); - BCE_PRINTF("tx_bd per page = 0x%08X, usable tx_bd per page = 0x%08X\n", (u32) TOTAL_TX_BD_PER_PAGE, (u32) USABLE_TX_BD_PER_PAGE); - BCE_PRINTF("total tx_bd = 0x%08X\n", (u32) TOTAL_TX_BD); BCE_PRINTF( "----------------------------" " tx_bd data " "----------------------------\n"); - /* Now print out the tx_bd's themselves. */ + /* Now print out a decoded list of TX buffer descriptors. */ for (int i = 0; i < count; i++) { txbd = &sc->tx_bd_chain[TX_PAGE(tx_prod)][TX_IDX(tx_prod)]; bce_dump_txbd(sc, tx_prod, txbd); - tx_prod = NEXT_TX_BD(tx_prod); + tx_prod++; } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the RX chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_rx_chain(struct bce_softc *sc, u16 rx_prod, int count) { struct rx_bd *rxbd; /* First some info about the rx_bd chain structure. */ BCE_PRINTF( "----------------------------" " rx_bd chain " "----------------------------\n"); BCE_PRINTF("page size = 0x%08X, rx chain pages = 0x%08X\n", (u32) BCM_PAGE_SIZE, (u32) RX_PAGES); BCE_PRINTF("rx_bd per page = 0x%08X, usable rx_bd per page = 0x%08X\n", (u32) TOTAL_RX_BD_PER_PAGE, (u32) USABLE_RX_BD_PER_PAGE); BCE_PRINTF("total rx_bd = 0x%08X\n", (u32) TOTAL_RX_BD); BCE_PRINTF( "----------------------------" " rx_bd data " "----------------------------\n"); /* Now print out the rx_bd's themselves. */ for (int i = 0; i < count; i++) { rxbd = &sc->rx_bd_chain[RX_PAGE(rx_prod)][RX_IDX(rx_prod)]; bce_dump_rxbd(sc, rx_prod, rxbd); rx_prod = RX_CHAIN_IDX(rx_prod + 1); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } #ifdef BCE_JUMBO_HDRSPLIT /****************************************************************************/ /* Prints out the page chain. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_pg_chain(struct bce_softc *sc, u16 pg_prod, int count) { struct rx_bd *pgbd; /* First some info about the page chain structure. */ BCE_PRINTF( "----------------------------" " page chain " "----------------------------\n"); BCE_PRINTF("page size = 0x%08X, pg chain pages = 0x%08X\n", (u32) BCM_PAGE_SIZE, (u32) PG_PAGES); BCE_PRINTF("rx_bd per page = 0x%08X, usable rx_bd per page = 0x%08X\n", (u32) TOTAL_PG_BD_PER_PAGE, (u32) USABLE_PG_BD_PER_PAGE); BCE_PRINTF("total rx_bd = 0x%08X, max_pg_bd = 0x%08X\n", (u32) TOTAL_PG_BD, (u32) MAX_PG_BD); BCE_PRINTF( "----------------------------" " page data " "----------------------------\n"); /* Now print out the rx_bd's themselves. */ for (int i = 0; i < count; i++) { pgbd = &sc->pg_bd_chain[PG_PAGE(pg_prod)][PG_IDX(pg_prod)]; bce_dump_pgbd(sc, pg_prod, pgbd); pg_prod = PG_CHAIN_IDX(pg_prod + 1); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } #endif +#define BCE_PRINT_RX_CONS(arg) \ +if (sblk->status_rx_quick_consumer_index##arg) \ + BCE_PRINTF("0x%04X(0x%04X) - rx_quick_consumer_index##arg\n", \ + sblk->status_rx_quick_consumer_index##arg, \ + (u16) RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index##arg)); +#define BCE_PRINT_TX_CONS(arg) \ +if (sblk->status_tx_quick_consumer_index##arg) \ + BCE_PRINTF("0x%04X(0x%04X) - tx_quick_consumer_index##arg\n", \ + sblk->status_tx_quick_consumer_index##arg, \ + (u16) TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index##arg)); + /****************************************************************************/ /* Prints out the status block from host memory. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_status_block(struct bce_softc *sc) { struct status_block *sblk; sblk = sc->status_block; BCE_PRINTF( "----------------------------" " Status Block " "----------------------------\n"); + /* Theses indices are used for normal L2 drivers. */ BCE_PRINTF(" 0x%08X - attn_bits\n", sblk->status_attn_bits); BCE_PRINTF(" 0x%08X - attn_bits_ack\n", sblk->status_attn_bits_ack); - BCE_PRINTF("0x%04X(0x%04X) - rx_cons0\n", - sblk->status_rx_quick_consumer_index0, - (u16) RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index0)); + BCE_PRINT_RX_CONS(0); + BCE_PRINT_TX_CONS(0) - BCE_PRINTF("0x%04X(0x%04X) - tx_cons0\n", - sblk->status_tx_quick_consumer_index0, - (u16) TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index0)); - BCE_PRINTF(" 0x%04X - status_idx\n", sblk->status_idx); /* Theses indices are not used for normal L2 drivers. */ - if (sblk->status_rx_quick_consumer_index1) - BCE_PRINTF("0x%04X(0x%04X) - rx_cons1\n", - sblk->status_rx_quick_consumer_index1, - (u16) RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index1)); + BCE_PRINT_RX_CONS(1); BCE_PRINT_RX_CONS(2); BCE_PRINT_RX_CONS(3); + BCE_PRINT_RX_CONS(4); BCE_PRINT_RX_CONS(5); BCE_PRINT_RX_CONS(6); + BCE_PRINT_RX_CONS(7); BCE_PRINT_RX_CONS(8); BCE_PRINT_RX_CONS(9); + BCE_PRINT_RX_CONS(10); BCE_PRINT_RX_CONS(11); BCE_PRINT_RX_CONS(12); + BCE_PRINT_RX_CONS(13); BCE_PRINT_RX_CONS(14); BCE_PRINT_RX_CONS(15); - if (sblk->status_tx_quick_consumer_index1) - BCE_PRINTF("0x%04X(0x%04X) - tx_cons1\n", - sblk->status_tx_quick_consumer_index1, - (u16) TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index1)); + BCE_PRINT_TX_CONS(1); BCE_PRINT_TX_CONS(2); BCE_PRINT_TX_CONS(3); - if (sblk->status_rx_quick_consumer_index2) - BCE_PRINTF("0x%04X(0x%04X)- rx_cons2\n", - sblk->status_rx_quick_consumer_index2, - (u16) RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index2)); - - if (sblk->status_tx_quick_consumer_index2) - BCE_PRINTF("0x%04X(0x%04X) - tx_cons2\n", - sblk->status_tx_quick_consumer_index2, - (u16) TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index2)); - - if (sblk->status_rx_quick_consumer_index3) - BCE_PRINTF("0x%04X(0x%04X) - rx_cons3\n", - sblk->status_rx_quick_consumer_index3, - (u16) RX_CHAIN_IDX(sblk->status_rx_quick_consumer_index3)); - - if (sblk->status_tx_quick_consumer_index3) - BCE_PRINTF("0x%04X(0x%04X) - tx_cons3\n", - sblk->status_tx_quick_consumer_index3, - (u16) TX_CHAIN_IDX(sblk->status_tx_quick_consumer_index3)); - - if (sblk->status_rx_quick_consumer_index4 || - sblk->status_rx_quick_consumer_index5) - BCE_PRINTF("rx_cons4 = 0x%08X, rx_cons5 = 0x%08X\n", - sblk->status_rx_quick_consumer_index4, - sblk->status_rx_quick_consumer_index5); - - if (sblk->status_rx_quick_consumer_index6 || - sblk->status_rx_quick_consumer_index7) - BCE_PRINTF("rx_cons6 = 0x%08X, rx_cons7 = 0x%08X\n", - sblk->status_rx_quick_consumer_index6, - sblk->status_rx_quick_consumer_index7); - - if (sblk->status_rx_quick_consumer_index8 || - sblk->status_rx_quick_consumer_index9) - BCE_PRINTF("rx_cons8 = 0x%08X, rx_cons9 = 0x%08X\n", - sblk->status_rx_quick_consumer_index8, - sblk->status_rx_quick_consumer_index9); - - if (sblk->status_rx_quick_consumer_index10 || - sblk->status_rx_quick_consumer_index11) - BCE_PRINTF("rx_cons10 = 0x%08X, rx_cons11 = 0x%08X\n", - sblk->status_rx_quick_consumer_index10, - sblk->status_rx_quick_consumer_index11); - - if (sblk->status_rx_quick_consumer_index12 || - sblk->status_rx_quick_consumer_index13) - BCE_PRINTF("rx_cons12 = 0x%08X, rx_cons13 = 0x%08X\n", - sblk->status_rx_quick_consumer_index12, - sblk->status_rx_quick_consumer_index13); - - if (sblk->status_rx_quick_consumer_index14 || - sblk->status_rx_quick_consumer_index15) - BCE_PRINTF("rx_cons14 = 0x%08X, rx_cons15 = 0x%08X\n", - sblk->status_rx_quick_consumer_index14, - sblk->status_rx_quick_consumer_index15); - - if (sblk->status_completion_producer_index || + if (sblk->status_completion_producer_index || sblk->status_cmd_consumer_index) BCE_PRINTF("com_prod = 0x%08X, cmd_cons = 0x%08X\n", sblk->status_completion_producer_index, sblk->status_cmd_consumer_index); BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } +#define BCE_PRINT_64BIT_STAT(arg) \ +if (sblk->arg##_lo || sblk->arg##_hi) \ + BCE_PRINTF("0x%08X:%08X : arg\n", sblk->arg##_hi, sblk->arg##_lo); + +#define BCE_PRINT_32BIT_STAT(arg) \ +if (sblk->arg) \ + BCE_PRINTF(" 0x%08X : arg\n", sblk->arg); + /****************************************************************************/ /* Prints out the statistics block from host memory. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_stats_block(struct bce_softc *sc) { struct statistics_block *sblk; sblk = sc->stats_block; BCE_PRINTF( "---------------" " Stats Block (All Stats Not Shown Are 0) " "---------------\n"); - if (sblk->stat_IfHCInOctets_hi - || sblk->stat_IfHCInOctets_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcInOctets\n", - sblk->stat_IfHCInOctets_hi, - sblk->stat_IfHCInOctets_lo); + BCE_PRINT_64BIT_STAT(stat_IfHCInOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCInBadOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCOutOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCOutBadOctets); + BCE_PRINT_64BIT_STAT(stat_IfHCInUcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCInBroadcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCInMulticastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutUcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutBroadcastPkts); + BCE_PRINT_64BIT_STAT(stat_IfHCOutMulticastPkts); + BCE_PRINT_32BIT_STAT(stat_emac_tx_stat_dot3statsinternalmactransmiterrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsCarrierSenseErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsFCSErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsAlignmentErrors); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsSingleCollisionFrames); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsMultipleCollisionFrames); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsDeferredTransmissions); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsExcessiveCollisions); + BCE_PRINT_32BIT_STAT(stat_Dot3StatsLateCollisions); + BCE_PRINT_32BIT_STAT(stat_EtherStatsCollisions); + BCE_PRINT_32BIT_STAT(stat_EtherStatsFragments); + BCE_PRINT_32BIT_STAT(stat_EtherStatsJabbers); + BCE_PRINT_32BIT_STAT(stat_EtherStatsUndersizePkts); + BCE_PRINT_32BIT_STAT(stat_EtherStatsOversizePkts); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx64Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx65Octetsto127Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx128Octetsto255Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx256Octetsto511Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx512Octetsto1023Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx1024Octetsto1522Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsRx1523Octetsto9022Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx64Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx65Octetsto127Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx128Octetsto255Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx256Octetsto511Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx512Octetsto1023Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx1024Octetsto1522Octets); + BCE_PRINT_32BIT_STAT(stat_EtherStatsPktsTx1523Octetsto9022Octets); + BCE_PRINT_32BIT_STAT(stat_XonPauseFramesReceived); + BCE_PRINT_32BIT_STAT(stat_XoffPauseFramesReceived); + BCE_PRINT_32BIT_STAT(stat_OutXonSent); + BCE_PRINT_32BIT_STAT(stat_OutXoffSent); + BCE_PRINT_32BIT_STAT(stat_FlowControlDone); + BCE_PRINT_32BIT_STAT(stat_MacControlFramesReceived); + BCE_PRINT_32BIT_STAT(stat_XoffStateEntered); + BCE_PRINT_32BIT_STAT(stat_IfInFramesL2FilterDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInRuleCheckerDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInFTQDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInMBUFDiscards); + BCE_PRINT_32BIT_STAT(stat_IfInRuleCheckerP4Hit); + BCE_PRINT_32BIT_STAT(stat_CatchupInRuleCheckerDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInFTQDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInMBUFDiscards); + BCE_PRINT_32BIT_STAT(stat_CatchupInRuleCheckerP4Hit); - if (sblk->stat_IfHCInBadOctets_hi - || sblk->stat_IfHCInBadOctets_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcInBadOctets\n", - sblk->stat_IfHCInBadOctets_hi, - sblk->stat_IfHCInBadOctets_lo); - - if (sblk->stat_IfHCOutOctets_hi - || sblk->stat_IfHCOutOctets_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcOutOctets\n", - sblk->stat_IfHCOutOctets_hi, - sblk->stat_IfHCOutOctets_lo); - - if (sblk->stat_IfHCOutBadOctets_hi - || sblk->stat_IfHCOutBadOctets_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcOutBadOctets\n", - sblk->stat_IfHCOutBadOctets_hi, - sblk->stat_IfHCOutBadOctets_lo); - - if (sblk->stat_IfHCInUcastPkts_hi - || sblk->stat_IfHCInUcastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcInUcastPkts\n", - sblk->stat_IfHCInUcastPkts_hi, - sblk->stat_IfHCInUcastPkts_lo); - - if (sblk->stat_IfHCInBroadcastPkts_hi - || sblk->stat_IfHCInBroadcastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcInBroadcastPkts\n", - sblk->stat_IfHCInBroadcastPkts_hi, - sblk->stat_IfHCInBroadcastPkts_lo); - - if (sblk->stat_IfHCInMulticastPkts_hi - || sblk->stat_IfHCInMulticastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcInMulticastPkts\n", - sblk->stat_IfHCInMulticastPkts_hi, - sblk->stat_IfHCInMulticastPkts_lo); - - if (sblk->stat_IfHCOutUcastPkts_hi - || sblk->stat_IfHCOutUcastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcOutUcastPkts\n", - sblk->stat_IfHCOutUcastPkts_hi, - sblk->stat_IfHCOutUcastPkts_lo); - - if (sblk->stat_IfHCOutBroadcastPkts_hi - || sblk->stat_IfHCOutBroadcastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcOutBroadcastPkts\n", - sblk->stat_IfHCOutBroadcastPkts_hi, - sblk->stat_IfHCOutBroadcastPkts_lo); - - if (sblk->stat_IfHCOutMulticastPkts_hi - || sblk->stat_IfHCOutMulticastPkts_lo) - BCE_PRINTF("0x%08X:%08X : " - "IfHcOutMulticastPkts\n", - sblk->stat_IfHCOutMulticastPkts_hi, - sblk->stat_IfHCOutMulticastPkts_lo); - - if (sblk->stat_emac_tx_stat_dot3statsinternalmactransmiterrors) - BCE_PRINTF(" 0x%08X : " - "emac_tx_stat_dot3statsinternalmactransmiterrors\n", - sblk->stat_emac_tx_stat_dot3statsinternalmactransmiterrors); - - if (sblk->stat_Dot3StatsCarrierSenseErrors) - BCE_PRINTF(" 0x%08X : Dot3StatsCarrierSenseErrors\n", - sblk->stat_Dot3StatsCarrierSenseErrors); - - if (sblk->stat_Dot3StatsFCSErrors) - BCE_PRINTF(" 0x%08X : Dot3StatsFCSErrors\n", - sblk->stat_Dot3StatsFCSErrors); - - if (sblk->stat_Dot3StatsAlignmentErrors) - BCE_PRINTF(" 0x%08X : Dot3StatsAlignmentErrors\n", - sblk->stat_Dot3StatsAlignmentErrors); - - if (sblk->stat_Dot3StatsSingleCollisionFrames) - BCE_PRINTF(" 0x%08X : Dot3StatsSingleCollisionFrames\n", - sblk->stat_Dot3StatsSingleCollisionFrames); - - if (sblk->stat_Dot3StatsMultipleCollisionFrames) - BCE_PRINTF(" 0x%08X : Dot3StatsMultipleCollisionFrames\n", - sblk->stat_Dot3StatsMultipleCollisionFrames); - - if (sblk->stat_Dot3StatsDeferredTransmissions) - BCE_PRINTF(" 0x%08X : Dot3StatsDeferredTransmissions\n", - sblk->stat_Dot3StatsDeferredTransmissions); - - if (sblk->stat_Dot3StatsExcessiveCollisions) - BCE_PRINTF(" 0x%08X : Dot3StatsExcessiveCollisions\n", - sblk->stat_Dot3StatsExcessiveCollisions); - - if (sblk->stat_Dot3StatsLateCollisions) - BCE_PRINTF(" 0x%08X : Dot3StatsLateCollisions\n", - sblk->stat_Dot3StatsLateCollisions); - - if (sblk->stat_EtherStatsCollisions) - BCE_PRINTF(" 0x%08X : EtherStatsCollisions\n", - sblk->stat_EtherStatsCollisions); - - if (sblk->stat_EtherStatsFragments) - BCE_PRINTF(" 0x%08X : EtherStatsFragments\n", - sblk->stat_EtherStatsFragments); - - if (sblk->stat_EtherStatsJabbers) - BCE_PRINTF(" 0x%08X : EtherStatsJabbers\n", - sblk->stat_EtherStatsJabbers); - - if (sblk->stat_EtherStatsUndersizePkts) - BCE_PRINTF(" 0x%08X : EtherStatsUndersizePkts\n", - sblk->stat_EtherStatsUndersizePkts); - - if (sblk->stat_EtherStatsOversizePkts) - BCE_PRINTF(" 0x%08X : EtherStatsOverrsizePkts\n", - sblk->stat_EtherStatsOversizePkts); - - if (sblk->stat_EtherStatsPktsRx64Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx64Octets\n", - sblk->stat_EtherStatsPktsRx64Octets); - - if (sblk->stat_EtherStatsPktsRx65Octetsto127Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx65Octetsto127Octets\n", - sblk->stat_EtherStatsPktsRx65Octetsto127Octets); - - if (sblk->stat_EtherStatsPktsRx128Octetsto255Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx128Octetsto255Octets\n", - sblk->stat_EtherStatsPktsRx128Octetsto255Octets); - - if (sblk->stat_EtherStatsPktsRx256Octetsto511Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx256Octetsto511Octets\n", - sblk->stat_EtherStatsPktsRx256Octetsto511Octets); - - if (sblk->stat_EtherStatsPktsRx512Octetsto1023Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx512Octetsto1023Octets\n", - sblk->stat_EtherStatsPktsRx512Octetsto1023Octets); - - if (sblk->stat_EtherStatsPktsRx1024Octetsto1522Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx1024Octetsto1522Octets\n", - sblk->stat_EtherStatsPktsRx1024Octetsto1522Octets); - - if (sblk->stat_EtherStatsPktsRx1523Octetsto9022Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsRx1523Octetsto9022Octets\n", - sblk->stat_EtherStatsPktsRx1523Octetsto9022Octets); - - if (sblk->stat_EtherStatsPktsTx64Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx64Octets\n", - sblk->stat_EtherStatsPktsTx64Octets); - - if (sblk->stat_EtherStatsPktsTx65Octetsto127Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx65Octetsto127Octets\n", - sblk->stat_EtherStatsPktsTx65Octetsto127Octets); - - if (sblk->stat_EtherStatsPktsTx128Octetsto255Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx128Octetsto255Octets\n", - sblk->stat_EtherStatsPktsTx128Octetsto255Octets); - - if (sblk->stat_EtherStatsPktsTx256Octetsto511Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx256Octetsto511Octets\n", - sblk->stat_EtherStatsPktsTx256Octetsto511Octets); - - if (sblk->stat_EtherStatsPktsTx512Octetsto1023Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx512Octetsto1023Octets\n", - sblk->stat_EtherStatsPktsTx512Octetsto1023Octets); - - if (sblk->stat_EtherStatsPktsTx1024Octetsto1522Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx1024Octetsto1522Octets\n", - sblk->stat_EtherStatsPktsTx1024Octetsto1522Octets); - - if (sblk->stat_EtherStatsPktsTx1523Octetsto9022Octets) - BCE_PRINTF(" 0x%08X : EtherStatsPktsTx1523Octetsto9022Octets\n", - sblk->stat_EtherStatsPktsTx1523Octetsto9022Octets); - - if (sblk->stat_XonPauseFramesReceived) - BCE_PRINTF(" 0x%08X : XonPauseFramesReceived\n", - sblk->stat_XonPauseFramesReceived); - - if (sblk->stat_XoffPauseFramesReceived) - BCE_PRINTF(" 0x%08X : XoffPauseFramesReceived\n", - sblk->stat_XoffPauseFramesReceived); - - if (sblk->stat_OutXonSent) - BCE_PRINTF(" 0x%08X : OutXonSent\n", - sblk->stat_OutXonSent); - - if (sblk->stat_OutXoffSent) - BCE_PRINTF(" 0x%08X : OutXoffSent\n", - sblk->stat_OutXoffSent); - - if (sblk->stat_FlowControlDone) - BCE_PRINTF(" 0x%08X : FlowControlDone\n", - sblk->stat_FlowControlDone); - - if (sblk->stat_MacControlFramesReceived) - BCE_PRINTF(" 0x%08X : MacControlFramesReceived\n", - sblk->stat_MacControlFramesReceived); - - if (sblk->stat_XoffStateEntered) - BCE_PRINTF(" 0x%08X : XoffStateEntered\n", - sblk->stat_XoffStateEntered); - - if (sblk->stat_IfInFramesL2FilterDiscards) - BCE_PRINTF(" 0x%08X : IfInFramesL2FilterDiscards\n", - sblk->stat_IfInFramesL2FilterDiscards); - - if (sblk->stat_IfInRuleCheckerDiscards) - BCE_PRINTF(" 0x%08X : IfInRuleCheckerDiscards\n", - sblk->stat_IfInRuleCheckerDiscards); - - if (sblk->stat_IfInFTQDiscards) - BCE_PRINTF(" 0x%08X : IfInFTQDiscards\n", - sblk->stat_IfInFTQDiscards); - - if (sblk->stat_IfInMBUFDiscards) - BCE_PRINTF(" 0x%08X : IfInMBUFDiscards\n", - sblk->stat_IfInMBUFDiscards); - - if (sblk->stat_IfInRuleCheckerP4Hit) - BCE_PRINTF(" 0x%08X : IfInRuleCheckerP4Hit\n", - sblk->stat_IfInRuleCheckerP4Hit); - - if (sblk->stat_CatchupInRuleCheckerDiscards) - BCE_PRINTF(" 0x%08X : CatchupInRuleCheckerDiscards\n", - sblk->stat_CatchupInRuleCheckerDiscards); - - if (sblk->stat_CatchupInFTQDiscards) - BCE_PRINTF(" 0x%08X : CatchupInFTQDiscards\n", - sblk->stat_CatchupInFTQDiscards); - - if (sblk->stat_CatchupInMBUFDiscards) - BCE_PRINTF(" 0x%08X : CatchupInMBUFDiscards\n", - sblk->stat_CatchupInMBUFDiscards); - - if (sblk->stat_CatchupInRuleCheckerP4Hit) - BCE_PRINTF(" 0x%08X : CatchupInRuleCheckerP4Hit\n", - sblk->stat_CatchupInRuleCheckerP4Hit); - BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out a summary of the driver state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_driver_state(struct bce_softc *sc) { u32 val_hi, val_lo; BCE_PRINTF( "-----------------------------" " Driver State " "-----------------------------\n"); val_hi = BCE_ADDR_HI(sc); val_lo = BCE_ADDR_LO(sc); BCE_PRINTF("0x%08X:%08X - (sc) driver softc structure virtual address\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->bce_vhandle); val_lo = BCE_ADDR_LO(sc->bce_vhandle); BCE_PRINTF("0x%08X:%08X - (sc->bce_vhandle) PCI BAR virtual address\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->status_block); val_lo = BCE_ADDR_LO(sc->status_block); BCE_PRINTF("0x%08X:%08X - (sc->status_block) status block virtual address\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->stats_block); val_lo = BCE_ADDR_LO(sc->stats_block); BCE_PRINTF("0x%08X:%08X - (sc->stats_block) statistics block virtual address\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->tx_bd_chain); val_lo = BCE_ADDR_LO(sc->tx_bd_chain); BCE_PRINTF( "0x%08X:%08X - (sc->tx_bd_chain) tx_bd chain virtual adddress\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->rx_bd_chain); val_lo = BCE_ADDR_LO(sc->rx_bd_chain); BCE_PRINTF( "0x%08X:%08X - (sc->rx_bd_chain) rx_bd chain virtual address\n", val_hi, val_lo); #ifdef BCE_JUMBO_HDRSPLIT val_hi = BCE_ADDR_HI(sc->pg_bd_chain); val_lo = BCE_ADDR_LO(sc->pg_bd_chain); BCE_PRINTF( "0x%08X:%08X - (sc->pg_bd_chain) page chain virtual address\n", val_hi, val_lo); #endif val_hi = BCE_ADDR_HI(sc->tx_mbuf_ptr); val_lo = BCE_ADDR_LO(sc->tx_mbuf_ptr); BCE_PRINTF( "0x%08X:%08X - (sc->tx_mbuf_ptr) tx mbuf chain virtual address\n", val_hi, val_lo); val_hi = BCE_ADDR_HI(sc->rx_mbuf_ptr); val_lo = BCE_ADDR_LO(sc->rx_mbuf_ptr); BCE_PRINTF( "0x%08X:%08X - (sc->rx_mbuf_ptr) rx mbuf chain virtual address\n", val_hi, val_lo); #ifdef BCE_JUMBO_HDRSPLIT val_hi = BCE_ADDR_HI(sc->pg_mbuf_ptr); val_lo = BCE_ADDR_LO(sc->pg_mbuf_ptr); BCE_PRINTF( "0x%08X:%08X - (sc->pg_mbuf_ptr) page mbuf chain virtual address\n", val_hi, val_lo); #endif BCE_PRINTF(" 0x%08X - (sc->interrupts_generated) h/w intrs\n", sc->interrupts_generated); BCE_PRINTF(" 0x%08X - (sc->rx_interrupts) rx interrupts handled\n", sc->rx_interrupts); BCE_PRINTF(" 0x%08X - (sc->tx_interrupts) tx interrupts handled\n", sc->tx_interrupts); BCE_PRINTF(" 0x%08X - (sc->last_status_idx) status block index\n", sc->last_status_idx); BCE_PRINTF(" 0x%04X(0x%04X) - (sc->tx_prod) tx producer index\n", sc->tx_prod, (u16) TX_CHAIN_IDX(sc->tx_prod)); BCE_PRINTF(" 0x%04X(0x%04X) - (sc->tx_cons) tx consumer index\n", sc->tx_cons, (u16) TX_CHAIN_IDX(sc->tx_cons)); BCE_PRINTF(" 0x%08X - (sc->tx_prod_bseq) tx producer bseq index\n", sc->tx_prod_bseq); BCE_PRINTF(" 0x%08X - (sc->debug_tx_mbuf_alloc) tx mbufs allocated\n", sc->debug_tx_mbuf_alloc); BCE_PRINTF(" 0x%08X - (sc->used_tx_bd) used tx_bd's\n", sc->used_tx_bd); BCE_PRINTF("0x%08X/%08X - (sc->tx_hi_watermark) tx hi watermark\n", sc->tx_hi_watermark, sc->max_tx_bd); BCE_PRINTF(" 0x%04X(0x%04X) - (sc->rx_prod) rx producer index\n", sc->rx_prod, (u16) RX_CHAIN_IDX(sc->rx_prod)); BCE_PRINTF(" 0x%04X(0x%04X) - (sc->rx_cons) rx consumer index\n", sc->rx_cons, (u16) RX_CHAIN_IDX(sc->rx_cons)); BCE_PRINTF(" 0x%08X - (sc->rx_prod_bseq) rx producer bseq index\n", sc->rx_prod_bseq); BCE_PRINTF(" 0x%08X - (sc->debug_rx_mbuf_alloc) rx mbufs allocated\n", sc->debug_rx_mbuf_alloc); BCE_PRINTF(" 0x%08X - (sc->free_rx_bd) free rx_bd's\n", sc->free_rx_bd); #ifdef BCE_JUMBO_HDRSPLIT BCE_PRINTF(" 0x%04X(0x%04X) - (sc->pg_prod) page producer index\n", sc->pg_prod, (u16) PG_CHAIN_IDX(sc->pg_prod)); BCE_PRINTF(" 0x%04X(0x%04X) - (sc->pg_cons) page consumer index\n", sc->pg_cons, (u16) PG_CHAIN_IDX(sc->pg_cons)); BCE_PRINTF(" 0x%08X - (sc->debug_pg_mbuf_alloc) page mbufs allocated\n", sc->debug_pg_mbuf_alloc); BCE_PRINTF(" 0x%08X - (sc->free_pg_bd) free page rx_bd's\n", sc->free_pg_bd); BCE_PRINTF("0x%08X/%08X - (sc->pg_low_watermark) page low watermark\n", sc->pg_low_watermark, sc->max_pg_bd); #endif BCE_PRINTF(" 0x%08X - (sc->mbuf_alloc_failed_count) " "mbuf alloc failures\n", sc->mbuf_alloc_failed_count); BCE_PRINTF(" 0x%08X - (sc->bce_flags) bce mac flags\n", sc->bce_flags); BCE_PRINTF(" 0x%08X - (sc->bce_phy_flags) bce phy flags\n", sc->bce_phy_flags); BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the hardware state through a summary of important register, */ /* followed by a complete register dump. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_hw_state(struct bce_softc *sc) { u32 val; BCE_PRINTF( "----------------------------" " Hardware State " "----------------------------\n"); BCE_PRINTF("%s - bootcode version\n", sc->bce_bc_ver); val = REG_RD(sc, BCE_MISC_ENABLE_STATUS_BITS); BCE_PRINTF("0x%08X - (0x%06X) misc_enable_status_bits\n", val, BCE_MISC_ENABLE_STATUS_BITS); val = REG_RD(sc, BCE_DMA_STATUS); BCE_PRINTF("0x%08X - (0x%06X) dma_status\n", val, BCE_DMA_STATUS); val = REG_RD(sc, BCE_CTX_STATUS); BCE_PRINTF("0x%08X - (0x%06X) ctx_status\n", val, BCE_CTX_STATUS); val = REG_RD(sc, BCE_EMAC_STATUS); BCE_PRINTF("0x%08X - (0x%06X) emac_status\n", val, BCE_EMAC_STATUS); val = REG_RD(sc, BCE_RPM_STATUS); BCE_PRINTF("0x%08X - (0x%06X) rpm_status\n", val, BCE_RPM_STATUS); val = REG_RD(sc, 0x2004); BCE_PRINTF("0x%08X - (0x%06X) rlup_status\n", val, 0x2004); val = REG_RD(sc, BCE_RV2P_STATUS); BCE_PRINTF("0x%08X - (0x%06X) rv2p_status\n", val, BCE_RV2P_STATUS); val = REG_RD(sc, 0x2c04); BCE_PRINTF("0x%08X - (0x%06X) rdma_status\n", val, 0x2c04); val = REG_RD(sc, BCE_TBDR_STATUS); BCE_PRINTF("0x%08X - (0x%06X) tbdr_status\n", val, BCE_TBDR_STATUS); val = REG_RD(sc, BCE_TDMA_STATUS); BCE_PRINTF("0x%08X - (0x%06X) tdma_status\n", val, BCE_TDMA_STATUS); val = REG_RD(sc, BCE_HC_STATUS); BCE_PRINTF("0x%08X - (0x%06X) hc_status\n", val, BCE_HC_STATUS); val = REG_RD_IND(sc, BCE_TXP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_state\n", val, BCE_TXP_CPU_STATE); val = REG_RD_IND(sc, BCE_TPAT_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_state\n", val, BCE_TPAT_CPU_STATE); val = REG_RD_IND(sc, BCE_RXP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_state\n", val, BCE_RXP_CPU_STATE); val = REG_RD_IND(sc, BCE_COM_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) com_cpu_state\n", val, BCE_COM_CPU_STATE); val = REG_RD_IND(sc, BCE_MCP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) mcp_cpu_state\n", val, BCE_MCP_CPU_STATE); val = REG_RD_IND(sc, BCE_CP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_state\n", val, BCE_CP_CPU_STATE); BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = 0x400; i < 0x8000; i += 0x10) { BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD(sc, i), REG_RD(sc, i + 0x4), REG_RD(sc, i + 0x8), REG_RD(sc, i + 0xC)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the mailbox queue registers. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_mq_regs(struct bce_softc *sc) { BCE_PRINTF( "----------------------------" " MQ Regs " "----------------------------\n"); BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); for (int i = 0x3c00; i < 0x4000; i += 0x10) { BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD(sc, i), REG_RD(sc, i + 0x4), REG_RD(sc, i + 0x8), REG_RD(sc, i + 0xC)); } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the bootcode state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_bc_state(struct bce_softc *sc) { u32 val; BCE_PRINTF( "----------------------------" " Bootcode State " "----------------------------\n"); BCE_PRINTF("%s - bootcode version\n", sc->bce_bc_ver); val = bce_shmem_rd(sc, BCE_BC_RESET_TYPE); BCE_PRINTF("0x%08X - (0x%06X) reset_type\n", val, BCE_BC_RESET_TYPE); val = bce_shmem_rd(sc, BCE_BC_STATE); BCE_PRINTF("0x%08X - (0x%06X) state\n", val, BCE_BC_STATE); val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION); BCE_PRINTF("0x%08X - (0x%06X) condition\n", val, BCE_BC_STATE_CONDITION); val = bce_shmem_rd(sc, BCE_BC_STATE_DEBUG_CMD); BCE_PRINTF("0x%08X - (0x%06X) debug_cmd\n", val, BCE_BC_STATE_DEBUG_CMD); BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the TXP processor state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_txp_state(struct bce_softc *sc, int regs) { u32 val; u32 fw_version[3]; BCE_PRINTF( "----------------------------" " TXP State " "----------------------------\n"); for (int i = 0; i < 3; i++) fw_version[i] = htonl(REG_RD_IND(sc, (BCE_TXP_SCRATCH + 0x10 + i * 4))); BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); val = REG_RD_IND(sc, BCE_TXP_CPU_MODE); BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_mode\n", val, BCE_TXP_CPU_MODE); val = REG_RD_IND(sc, BCE_TXP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_state\n", val, BCE_TXP_CPU_STATE); val = REG_RD_IND(sc, BCE_TXP_CPU_EVENT_MASK); BCE_PRINTF("0x%08X - (0x%06X) txp_cpu_event_mask\n", val, BCE_TXP_CPU_EVENT_MASK); if (regs) { BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = BCE_TXP_CPU_MODE; i < 0x68000; i += 0x10) { /* Skip the big blank spaces */ if (i < 0x454000 && i > 0x5ffff) BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD_IND(sc, i), REG_RD_IND(sc, i + 0x4), REG_RD_IND(sc, i + 0x8), REG_RD_IND(sc, i + 0xC)); } } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the RXP processor state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_rxp_state(struct bce_softc *sc, int regs) { u32 val; u32 fw_version[3]; BCE_PRINTF( "----------------------------" " RXP State " "----------------------------\n"); for (int i = 0; i < 3; i++) fw_version[i] = htonl(REG_RD_IND(sc, (BCE_RXP_SCRATCH + 0x10 + i * 4))); BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); val = REG_RD_IND(sc, BCE_RXP_CPU_MODE); BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_mode\n", val, BCE_RXP_CPU_MODE); val = REG_RD_IND(sc, BCE_RXP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_state\n", val, BCE_RXP_CPU_STATE); val = REG_RD_IND(sc, BCE_RXP_CPU_EVENT_MASK); BCE_PRINTF("0x%08X - (0x%06X) rxp_cpu_event_mask\n", val, BCE_RXP_CPU_EVENT_MASK); if (regs) { BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = BCE_RXP_CPU_MODE; i < 0xe8fff; i += 0x10) { /* Skip the big blank sapces */ if (i < 0xc5400 && i > 0xdffff) BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD_IND(sc, i), REG_RD_IND(sc, i + 0x4), REG_RD_IND(sc, i + 0x8), REG_RD_IND(sc, i + 0xC)); } } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the TPAT processor state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_tpat_state(struct bce_softc *sc, int regs) { u32 val; u32 fw_version[3]; BCE_PRINTF( "----------------------------" " TPAT State " "----------------------------\n"); for (int i = 0; i < 3; i++) fw_version[i] = htonl(REG_RD_IND(sc, (BCE_TPAT_SCRATCH + 0x410 + i * 4))); BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); val = REG_RD_IND(sc, BCE_TPAT_CPU_MODE); BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_mode\n", val, BCE_TPAT_CPU_MODE); val = REG_RD_IND(sc, BCE_TPAT_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_state\n", val, BCE_TPAT_CPU_STATE); val = REG_RD_IND(sc, BCE_TPAT_CPU_EVENT_MASK); BCE_PRINTF("0x%08X - (0x%06X) tpat_cpu_event_mask\n", val, BCE_TPAT_CPU_EVENT_MASK); if (regs) { BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = BCE_TPAT_CPU_MODE; i < 0xa3fff; i += 0x10) { /* Skip the big blank spaces */ if (i < 0x854000 && i > 0x9ffff) BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD_IND(sc, i), REG_RD_IND(sc, i + 0x4), REG_RD_IND(sc, i + 0x8), REG_RD_IND(sc, i + 0xC)); } } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the Command Procesor (CP) state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_cp_state(struct bce_softc *sc, int regs) { u32 val; u32 fw_version[3]; BCE_PRINTF( "----------------------------" " CP State " "----------------------------\n"); for (int i = 0; i < 3; i++) fw_version[i] = htonl(REG_RD_IND(sc, (BCE_CP_SCRATCH + 0x10 + i * 4))); BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); val = REG_RD_IND(sc, BCE_CP_CPU_MODE); BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_mode\n", val, BCE_CP_CPU_MODE); val = REG_RD_IND(sc, BCE_CP_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_state\n", val, BCE_CP_CPU_STATE); val = REG_RD_IND(sc, BCE_CP_CPU_EVENT_MASK); BCE_PRINTF("0x%08X - (0x%06X) cp_cpu_event_mask\n", val, BCE_CP_CPU_EVENT_MASK); if (regs) { BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = BCE_CP_CPU_MODE; i < 0x1aa000; i += 0x10) { /* Skip the big blank spaces */ if (i < 0x185400 && i > 0x19ffff) BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD_IND(sc, i), REG_RD_IND(sc, i + 0x4), REG_RD_IND(sc, i + 0x8), REG_RD_IND(sc, i + 0xC)); } } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ /* Prints out the Completion Procesor (COM) state. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ static __attribute__ ((noinline)) void bce_dump_com_state(struct bce_softc *sc, int regs) { u32 val; - u32 fw_version[3]; + u32 fw_version[4]; BCE_PRINTF( "----------------------------" " COM State " "----------------------------\n"); for (int i = 0; i < 3; i++) fw_version[i] = htonl(REG_RD_IND(sc, (BCE_COM_SCRATCH + 0x10 + i * 4))); BCE_PRINTF("Firmware version - %s\n", (char *) fw_version); val = REG_RD_IND(sc, BCE_COM_CPU_MODE); BCE_PRINTF("0x%08X - (0x%06X) com_cpu_mode\n", val, BCE_COM_CPU_MODE); val = REG_RD_IND(sc, BCE_COM_CPU_STATE); BCE_PRINTF("0x%08X - (0x%06X) com_cpu_state\n", val, BCE_COM_CPU_STATE); val = REG_RD_IND(sc, BCE_COM_CPU_EVENT_MASK); BCE_PRINTF("0x%08X - (0x%06X) com_cpu_event_mask\n", val, BCE_COM_CPU_EVENT_MASK); if (regs) { BCE_PRINTF( "----------------------------" " Register Dump " "----------------------------\n"); for (int i = BCE_COM_CPU_MODE; i < 0x1053e8; i += 0x10) { BCE_PRINTF("0x%04X: 0x%08X 0x%08X 0x%08X 0x%08X\n", i, REG_RD_IND(sc, i), REG_RD_IND(sc, i + 0x4), REG_RD_IND(sc, i + 0x8), REG_RD_IND(sc, i + 0xC)); } } BCE_PRINTF( "----------------------------" "----------------" "----------------------------\n"); } /****************************************************************************/ +/* Prints out the Receive Virtual 2 Physical (RV2P) state. */ +/* */ +/* Returns: */ +/* Nothing. */ +/****************************************************************************/ +static __attribute__ ((noinline)) void +bce_dump_rv2p_state(struct bce_softc *sc) +{ + u32 val, pc1, pc2, fw_ver_high, fw_ver_low; + + BCE_PRINTF( + "----------------------------" + " RV2P State " + "----------------------------\n"); + + /* Stall the RV2P processors. */ + val = REG_RD_IND(sc, BCE_RV2P_CONFIG); + val |= BCE_RV2P_CONFIG_STALL_PROC1 | BCE_RV2P_CONFIG_STALL_PROC2; + REG_WR_IND(sc, BCE_RV2P_CONFIG, val); + + /* Read the firmware version. */ + val = 0x00000001; + REG_WR_IND(sc, BCE_RV2P_PROC1_ADDR_CMD, val); + fw_ver_low = REG_RD_IND(sc, BCE_RV2P_INSTR_LOW); + fw_ver_high = REG_RD_IND(sc, BCE_RV2P_INSTR_HIGH) & BCE_RV2P_INSTR_HIGH_HIGH; + BCE_PRINTF("RV2P1 Firmware version - 0x%08X:0x%08X\n", fw_ver_high, fw_ver_low); + + val = 0x00000001; + REG_WR_IND(sc, BCE_RV2P_PROC2_ADDR_CMD, val); + fw_ver_low = REG_RD_IND(sc, BCE_RV2P_INSTR_LOW); + fw_ver_high = REG_RD_IND(sc, BCE_RV2P_INSTR_HIGH) & BCE_RV2P_INSTR_HIGH_HIGH; + BCE_PRINTF("RV2P2 Firmware version - 0x%08X:0x%08X\n", fw_ver_high, fw_ver_low); + + /* Resume the RV2P processors. */ + val = REG_RD_IND(sc, BCE_RV2P_CONFIG); + val &= ~(BCE_RV2P_CONFIG_STALL_PROC1 | BCE_RV2P_CONFIG_STALL_PROC2); + REG_WR_IND(sc, BCE_RV2P_CONFIG, val); + + /* Fetch the program counter value. */ + val = 0x68007800; + REG_WR_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK, val); + val = REG_RD_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK); + pc1 = (val & BCE_RV2P_DEBUG_VECT_PEEK_1_VALUE); + pc2 = (val & BCE_RV2P_DEBUG_VECT_PEEK_2_VALUE) >> 16; + BCE_PRINTF("0x%08X - RV2P1 program counter (1st read)\n", pc1); + BCE_PRINTF("0x%08X - RV2P2 program counter (1st read)\n", pc2); + + /* Fetch the program counter value again to see if it is advancing. */ + val = 0x68007800; + REG_WR_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK, val); + val = REG_RD_IND(sc, BCE_RV2P_DEBUG_VECT_PEEK); + pc1 = (val & BCE_RV2P_DEBUG_VECT_PEEK_1_VALUE); + pc2 = (val & BCE_RV2P_DEBUG_VECT_PEEK_2_VALUE) >> 16; + BCE_PRINTF("0x%08X - RV2P1 program counter (2nd read)\n", pc1); + BCE_PRINTF("0x%08X - RV2P2 program counter (2nd read)\n", pc2); + + BCE_PRINTF( + "----------------------------" + "----------------" + "----------------------------\n"); +} + + +/****************************************************************************/ /* Prints out the driver state and then enters the debugger. */ /* */ /* Returns: */ /* Nothing. */ /****************************************************************************/ -static void +static __attribute__ ((noinline)) void bce_breakpoint(struct bce_softc *sc) { /* * Unreachable code to silence compiler warnings * about unused functions. */ if (0) { bce_freeze_controller(sc); bce_unfreeze_controller(sc); bce_dump_enet(sc, NULL); bce_dump_txbd(sc, 0, NULL); bce_dump_rxbd(sc, 0, NULL); bce_dump_tx_mbuf_chain(sc, 0, USABLE_TX_BD); bce_dump_rx_mbuf_chain(sc, 0, USABLE_RX_BD); bce_dump_l2fhdr(sc, 0, NULL); bce_dump_ctx(sc, RX_CID); bce_dump_ftqs(sc); bce_dump_tx_chain(sc, 0, USABLE_TX_BD); bce_dump_rx_chain(sc, 0, USABLE_RX_BD); bce_dump_status_block(sc); bce_dump_stats_block(sc); bce_dump_driver_state(sc); bce_dump_hw_state(sc); bce_dump_bc_state(sc); bce_dump_txp_state(sc, 0); bce_dump_rxp_state(sc, 0); bce_dump_tpat_state(sc, 0); bce_dump_cp_state(sc, 0); bce_dump_com_state(sc, 0); + bce_dump_rv2p_state(sc); #ifdef BCE_JUMBO_HDRSPLIT bce_dump_pgbd(sc, 0, NULL); bce_dump_pg_mbuf_chain(sc, 0, USABLE_PG_BD); bce_dump_pg_chain(sc, 0, USABLE_PG_BD); #endif } bce_dump_status_block(sc); bce_dump_driver_state(sc); /* Call the debugger. */ breakpoint(); return; } #endif Index: stable/7/sys/dev/bce/if_bcefw.h =================================================================== --- stable/7/sys/dev/bce/if_bcefw.h (revision 206680) +++ stable/7/sys/dev/bce/if_bcefw.h (revision 206681) @@ -1,14594 +1,14594 @@ /*- - * Copyright (c) 2006-2009 Broadcom Corporation + * Copyright (c) 2006-2010 Broadcom Corporation * David Christensen . All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Broadcom Corporation nor the name of its contributors * may be used to endorse or promote products derived from this software * without specific prior written consent. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD$ */ /* * This file contains firmware data derived from proprietary unpublished * source code, Copyright (c) 2004, 2005, 2007, 2008 Broadcom Corporation. * * Permission is hereby granted for the distribution of this firmware data * in hexadecimal or equivalent format, provided this copyright notice is * accompanying it. */ /* Firmware release 4.6.17 for BCM5706 and BCM5708 (b06). */ /* Firmware release 4.6.16 for BCM5709 and BCM5716 (b09). */ int bce_COM_b06FwReleaseMajor = 0x1; int bce_COM_b06FwReleaseMinor = 0x0; int bce_COM_b06FwReleaseFix = 0x0; u32 bce_COM_b06FwStartAddr = 0x080000f8; u32 bce_COM_b06FwTextAddr = 0x08000000; int bce_COM_b06FwTextLen = 0x4df0; u32 bce_COM_b06FwDataAddr = 0x00000000; int bce_COM_b06FwDataLen = 0x0; u32 bce_COM_b06FwRodataAddr = 0x08004df0; int bce_COM_b06FwRodataLen = 0x14; u32 bce_COM_b06FwBssAddr = 0x08004e58; int bce_COM_b06FwBssLen = 0xbc; u32 bce_COM_b06FwSbssAddr = 0x08004e20; int bce_COM_b06FwSbssLen = 0x38; u32 bce_COM_b06FwSDataAddr = 0x00000000; int bce_COM_b06FwSDataLen = 0x0; u32 bce_COM_b06FwText[(0x4df0/4) + 1] = { 0xa00003e, 0x0, 0x0, 0xd, 0x636f6d34, 0x2e362e31, 0x37000000, 0x4061102, 0x0, 0x3, 0x14, 0x32, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x136, 0xea60, 0x1, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24424e20, 0x3c030800, 0x24634f14, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, 0x261000f8, 0x3c1c0800, 0x279c4e20, 0xe0002bd, 0x0, 0xd, 0x3c036010, 0x8c645000, 0x2402ff7f, 0x3c1a8000, 0x822024, 0x3484380c, 0x24020037, 0xac645000, 0xaf420008, 0x24020c80, 0xaf420024, 0x3c1b8008, 0x3c060800, 0x24c607e8, 0x3c020800, 0x24424e58, 0x2404001b, 0x2484ffff, 0xac460000, 0x481fffd, 0x24420004, 0x3c020800, 0x24420380, 0x3c010800, 0xac224e60, 0x3c020800, 0x24420680, 0x3c010800, 0xac224e64, 0x3c020800, 0x24420dcc, 0x3c010800, 0xac224ea0, 0x3c020800, 0x24420a5c, 0x3c030800, 0x24630954, 0x3c040800, 0x24840990, 0x3c050800, 0x24a53c70, 0x3c010800, 0xac224ea8, 0x3c020800, 0x24420570, 0x3c010800, 0xac264ea4, 0x3c010800, 0xac254eb4, 0x3c010800, 0xac234ebc, 0x3c010800, 0xac224ec0, 0x3c010800, 0xac244ec4, 0x3c010800, 0xac234e5c, 0x3c010800, 0xac204e68, 0x3c010800, 0xac204e6c, 0x3c010800, 0xac204e70, 0x3c010800, 0xac204e74, 0x3c010800, 0xac204e78, 0x3c010800, 0xac204e7c, 0x3c010800, 0xac204e80, 0x3c010800, 0xac244e84, 0x3c010800, 0xac204e88, 0x3c010800, 0xac204e8c, 0x3c010800, 0xac204e90, 0x3c010800, 0xac204e94, 0x3c010800, 0xac204e98, 0x3c010800, 0xac264e9c, 0x3c010800, 0xac204eac, 0x3c010800, 0xac254eb0, 0x3c010800, 0xac234eb8, 0xa000707, 0x0, 0x3c030800, 0x8c630020, 0x8f820008, 0x10430003, 0x0, 0xa00053f, 0xaf830008, 0x3e00008, 0x0, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x27500100, 0x92020009, 0x1040001a, 0x24030001, 0x3c020800, 0x8c420020, 0x10400016, 0x1821, 0xe000577, 0x0, 0x96030008, 0x3c060800, 0x94c64ed6, 0x8e040018, 0x8f820020, 0x9605000c, 0x31c00, 0x661825, 0xac440000, 0xac450004, 0x24040001, 0xac400008, 0xac40000c, 0xac400010, 0xac400014, 0xac400018, 0xe00059c, 0xac43001c, 0x1821, 0x8fbf0014, 0x8fb00010, 0x601021, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x97420108, 0x30437000, 0x24022000, 0x1062000a, 0x28642001, 0x54800012, 0x8fbf0010, 0x24024000, 0x10620008, 0x24026000, 0x1062000a, 0x8fbf0010, 0xa0000fb, 0x1021, 0x8fbf0010, 0xa0000bb, 0x27bd0018, 0xe000409, 0x0, 0xa0000fa, 0x8fbf0010, 0xe000fc9, 0x0, 0x8fbf0010, 0x1021, 0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420020, 0x27bdffe8, 0x10400027, 0xafbf0010, 0xe000577, 0x0, 0x97420108, 0x9743010c, 0x8f850020, 0x3042003e, 0x3063ffff, 0x21400, 0x431025, 0xaca20000, 0x8f420100, 0x3c060800, 0x94c64ed6, 0x8fbf0010, 0xaca20004, 0x97430116, 0x9744010e, 0x3c022000, 0x31c00, 0x3084ffff, 0x641825, 0xaca30008, 0xc23025, 0x97420110, 0x97430112, 0x24040001, 0x21400, 0x3063ffff, 0x431025, 0xaca2000c, 0x97420114, 0x27bd0018, 0x3042ffff, 0xaca20010, 0xaca00014, 0xaca00018, 0xa00059c, 0xaca6001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420020, 0x27bdffe8, 0x1040002a, 0xafbf0010, 0xe000577, 0x0, 0x97420108, 0x9743010c, 0x8f850020, 0x3042003e, 0x3063ffff, 0x21400, 0x431025, 0xaca20000, 0x8f420100, 0x3c060800, 0x94c64ed6, 0x8fbf0010, 0xaca20004, 0x97430116, 0x9744010e, 0x3c022000, 0x31c00, 0x3084ffff, 0x641825, 0xaca30008, 0xc23025, 0x97420110, 0x97430112, 0x24040001, 0x21400, 0x3063ffff, 0x431025, 0xaca2000c, 0x97420114, 0x27bd0018, 0x3042ffff, 0xaca20010, 0x8f420118, 0xaca20014, 0x9342010b, 0x304200ff, 0xaca20018, 0xa00059c, 0xaca6001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe0, 0xafb00010, 0xafbf0018, 0xafb10014, 0x27500100, 0x9203000b, 0x2402001a, 0x96110008, 0x14620035, 0x2021, 0x32220001, 0x10400009, 0x0, 0x8e020000, 0x96030014, 0x211c2, 0x21040, 0x5a1021, 0xa4430080, 0xa000179, 0x32220002, 0xe00012b, 0x0, 0x3c020800, 0x8c420040, 0x24420001, 0x3c010800, 0xac220040, 0x32220002, 0x2202b, 0x3c020800, 0x8c420044, 0x32230004, 0x24420001, 0x3c010800, 0xac220044, 0x1060001a, 0x8fbf0018, 0x8f4202b8, 0x4410008, 0x24040001, 0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, 0xac220060, 0xa00019c, 0x8fb10014, 0x8e020020, 0x96030016, 0x2021, 0xaf420280, 0x8e020004, 0xa7430284, 0xaf420288, 0x3c021000, 0xaf4202b8, 0x3c020800, 0x8c42005c, 0x24420001, 0x3c010800, 0xac22005c, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb00010, 0xafbf0018, 0xafb10014, 0x27500100, 0x9203000b, 0x24020003, 0x96110008, 0x14620048, 0x2021, 0x32220001, 0x10400008, 0x0, 0x8e020000, 0x96030014, 0x211c2, 0x21040, 0x5a1021, 0xa0001bb, 0xa4430080, 0xe0000fd, 0x0, 0x3c020800, 0x8c420040, 0x24420001, 0x3c010800, 0xac220040, 0x3c020800, 0x8c420044, 0x32230004, 0x24420001, 0x3c010800, 0xac220044, 0x1060001a, 0x32220002, 0x8f4202b8, 0x4430008, 0x8e020020, 0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, 0xac220060, 0xa0001f1, 0x24040001, 0x96030016, 0x2021, 0xaf420280, 0x8e020004, 0xa7430284, 0xaf420288, 0x3c021000, 0xaf4202b8, 0x3c020800, 0x8c42005c, 0x24420001, 0x3c010800, 0xac22005c, 0xa0001f2, 0x8fbf0018, 0x10400014, 0x2021, 0x8f430104, 0x3c026020, 0xac430014, 0x8c420004, 0x240301fe, 0x304203ff, 0x1443000c, 0x2021, 0x8f420100, 0x219c2, 0x2462fffc, 0x2c420008, 0x10400003, 0x24040002, 0x2462fffd, 0x442004, 0x3c026000, 0xac446914, 0x2021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x93620000, 0x3e00008, 0xaf800004, 0x3e00008, 0x1021, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x8f420100, 0xaf420020, 0x8f420104, 0xaf4200a8, 0x9350010b, 0xe0001f7, 0x321000ff, 0x3c020800, 0x24424e58, 0x101880, 0x2e10001c, 0x16000004, 0x621021, 0xe0001fa, 0xa000212, 0x0, 0x8c420000, 0x40f809, 0x0, 0x10400005, 0x3c024000, 0x8f430104, 0x3c026020, 0xac430014, 0x3c024000, 0xaf420138, 0x3c020800, 0x8c420034, 0x8fbf0014, 0x8fb00010, 0x24420001, 0x3c010800, 0xac220034, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x8f420140, 0xe0001f7, 0xaf420020, 0xe000393, 0x0, 0x3c024000, 0xaf420178, 0x3c030800, 0x24630038, 0x8c620000, 0x8fbf0010, 0x27bd0018, 0x24420001, 0x3e00008, 0xac620000, 0x27bdffe8, 0xafbf0010, 0x8f420180, 0xe0001f7, 0xaf420020, 0x8f430180, 0x24020f00, 0x14620005, 0x0, 0x8f420188, 0xa742009c, 0xa00024c, 0x3c024000, 0x93620000, 0x24030050, 0x304200ff, 0x14430008, 0x3c024000, 0xe000377, 0x0, 0x14400004, 0x3c024000, 0xe000e55, 0x0, 0x3c024000, 0xaf4201b8, 0x3c020800, 0x8c42003c, 0x8fbf0010, 0x24420001, 0x3c010800, 0xac22003c, 0x3e00008, 0x27bd0018, 0x3e00008, 0x1021, 0x8f430104, 0x8f820010, 0x10430008, 0x0, 0x3c020800, 0x8c420084, 0x24420001, 0x3c010800, 0xac220084, 0x8f420104, 0xaf820010, 0x3e00008, 0x0, 0x27bdffe8, 0xafbf0010, 0x27440100, 0x94820008, 0x30430002, 0x30420004, 0x1040001b, 0x0, 0x8f4202b8, 0x4410008, 0x24050001, 0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, 0xac220060, 0xa000294, 0x8fbf0010, 0x8c820020, 0x94830016, 0x2821, 0xaf420280, 0x8c820004, 0xa7430284, 0xaf420288, 0x3c021000, 0xaf4202b8, 0x3c020800, 0x8c42005c, 0x24420001, 0x3c010800, 0xac22005c, 0xa000294, 0x8fbf0010, 0x10600008, 0x24050001, 0x3c020800, 0x8c420084, 0x24420001, 0x3c010800, 0xac220084, 0xa000294, 0x8fbf0010, 0x8f440100, 0xe000257, 0x0, 0x2821, 0x8fbf0010, 0xa01021, 0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420088, 0x27430100, 0x9465000c, 0x24420001, 0x3c010800, 0xac220088, 0x8c640018, 0x3451021, 0x90454000, 0xaf440038, 0x8c62001c, 0x2403fff8, 0x52e00, 0x431024, 0x34420004, 0xaf42003c, 0x3c020005, 0xaf420030, 0x0, 0x0, 0x0, 0xaf450404, 0x0, 0x0, 0x0, 0x3c020006, 0x34420001, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420010, 0x1040fffd, 0x1021, 0x3e00008, 0x0, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xe000055, 0xafb00010, 0x3c028000, 0x34420070, 0x8c420000, 0xaf820014, 0xe0000b2, 0x0, 0x3c028000, 0x34460070, 0x3c030800, 0x8c6300a0, 0x3c020800, 0x8c4200a4, 0x10430004, 0x8f840014, 0x3c010800, 0xac2300a4, 0xa743009e, 0x8cca0000, 0x3c030800, 0x8c6300bc, 0x3c020800, 0x8c4200b8, 0x1442023, 0x641821, 0x4021, 0x64202b, 0x481021, 0x441021, 0x3c010800, 0xac2300bc, 0x3c010800, 0xac2200b8, 0x8f510000, 0x32220007, 0x1040ffe1, 0xaf8a0014, 0x8cc60000, 0x3c050800, 0x8ca500bc, 0x3c040800, 0x8c8400b8, 0xca3023, 0xa62821, 0x1021, 0xa6302b, 0x822021, 0x862021, 0x32270001, 0x3c010800, 0xac2500bc, 0x3c010800, 0xac2400b8, 0x10e00021, 0x32220002, 0x8f420100, 0xaf420020, 0x8f420104, 0xaf4200a8, 0x9342010b, 0xe0001f7, 0x305000ff, 0x2e02001c, 0x54400004, 0x101080, 0xe0001fa, 0xa00030b, 0x0, 0x3c030800, 0x24634e58, 0x431021, 0x8c420000, 0x40f809, 0x0, 0x10400005, 0x3c024000, 0x8f430104, 0x3c026020, 0xac430014, 0x3c024000, 0xaf420138, 0x3c020800, 0x8c420034, 0x24420001, 0x3c010800, 0xac220034, 0x32220002, 0x1040000e, 0x32220004, 0x8f420140, 0xe0001f7, 0xaf420020, 0xe000393, 0x0, 0x3c024000, 0xaf420178, 0x3c020800, 0x8c420038, 0x24420001, 0x3c010800, 0xac220038, 0x32220004, 0x1040ff9b, 0x3c028000, 0x8f420180, 0xe0001f7, 0xaf420020, 0x8f430180, 0x24020f00, 0x14620005, 0x0, 0x8f420188, 0xa742009c, 0xa000340, 0x3c024000, 0x93620000, 0x24030050, 0x304200ff, 0x14430008, 0x3c024000, 0xe000377, 0x0, 0x54400004, 0x3c024000, 0xe000e55, 0x0, 0x3c024000, 0xaf4201b8, 0x3c020800, 0x8c42003c, 0x24420001, 0x3c010800, 0xac22003c, 0xa0002c3, 0x3c028000, 0x3c029000, 0x34420001, 0x822025, 0xaf440020, 0x8f420020, 0x440fffe, 0x0, 0x3e00008, 0x0, 0x3c028000, 0x34420001, 0x822025, 0x3e00008, 0xaf440020, 0x27bdffe0, 0xafb10014, 0xafb00010, 0x808821, 0xafbf0018, 0xe000348, 0x30b000ff, 0x9362007d, 0x2202021, 0x2028025, 0xa370007d, 0x8f700074, 0x3c028000, 0xe000351, 0x2028024, 0x16000009, 0x8fbf0018, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf5101c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffd0, 0x1021, 0x3e00008, 0x27bd0030, 0x27bdffe8, 0xafbf0010, 0x97420184, 0x30420200, 0x10400005, 0x2021, 0xe00108c, 0x0, 0xa00038b, 0x24040001, 0x8f420188, 0x4400009, 0x8fbf0010, 0x8f420188, 0x3c03ff00, 0x431024, 0x3c030400, 0x14430003, 0x24040001, 0x9362003e, 0x8fbf0010, 0x801021, 0x3e00008, 0x27bd0018, 0xa3600022, 0x8f440140, 0xa000356, 0x24050001, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x93620000, 0x24030020, 0x304200ff, 0x1043000b, 0x0, 0x93620000, 0x24030030, 0x304200ff, 0x10430006, 0x0, 0x93620000, 0x24030050, 0x304200ff, 0x14430062, 0x8fbf0014, 0x93420148, 0x304200ff, 0x2443ffff, 0x2c620005, 0x1040005c, 0x8fbf0014, 0x31080, 0x3c030800, 0x24634df0, 0x431021, 0x8c420000, 0x400008, 0x0, 0xe000348, 0x8f440140, 0x8f70000c, 0x8f420144, 0x16020002, 0x24020001, 0xaf62000c, 0xe000351, 0x8f440140, 0x8f420144, 0x14500004, 0x8fbf0014, 0x8fb00010, 0xa001000, 0x27bd0018, 0x8f62000c, 0xa0003ff, 0x0, 0x97620010, 0x8f430144, 0x3042ffff, 0x14620009, 0x0, 0x24020001, 0xa7620010, 0x8f420140, 0xaf420200, 0x3c021000, 0xaf420238, 0xa000406, 0x8fbf0014, 0x97620010, 0xa0003ff, 0x0, 0xe000348, 0x8f440140, 0x97620012, 0x8f430144, 0x3050ffff, 0x16030002, 0x24020001, 0xa7620012, 0xe000351, 0x8f440140, 0x8f420144, 0x16020004, 0x8fbf0014, 0x8fb00010, 0xa00038f, 0x27bd0018, 0x97620012, 0xa0003ff, 0x0, 0x97620014, 0x8f430144, 0x3042ffff, 0x14620006, 0x8fbf0014, 0x24020001, 0x8fb00010, 0xa7620014, 0xa00132c, 0x27bd0018, 0x97620014, 0xa0003ff, 0x0, 0x97620016, 0x8f430144, 0x3042ffff, 0x14620006, 0x24020001, 0x8fbf0014, 0x8fb00010, 0xa7620016, 0xa000bf3, 0x27bd0018, 0x97620016, 0x14400006, 0x8fbf0014, 0x3c020800, 0x8c420070, 0x24420001, 0x3c010800, 0xac220070, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x93430109, 0x2402001f, 0x8f500100, 0x106200a5, 0x28620020, 0x10400018, 0x24020038, 0x2862000a, 0x1040000c, 0x2402000b, 0x28620008, 0x1040002c, 0x0, 0x46000e7, 0x28620002, 0x14400028, 0x24020006, 0x10620026, 0x8fbf0014, 0xa000503, 0x8fb00010, 0x1062005e, 0x2862000b, 0x144000de, 0x8fbf0014, 0x2402000e, 0x10620073, 0x8fb00010, 0xa000503, 0x0, 0x106200c2, 0x28620039, 0x1040000a, 0x24020080, 0x24020036, 0x106200cc, 0x28620037, 0x104000b6, 0x24020035, 0x106200c3, 0x8fbf0014, 0xa000503, 0x8fb00010, 0x1062002b, 0x28620081, 0x10400006, 0x240200c8, 0x24020039, 0x106200b6, 0x8fbf0014, 0xa000503, 0x8fb00010, 0x10620099, 0x8fbf0014, 0xa000503, 0x8fb00010, 0x3c020800, 0x8c420020, 0x104000bb, 0x8fbf0014, 0xe000577, 0x0, 0x8f420100, 0x8f830020, 0x9745010c, 0x97460108, 0xac620000, 0x8f420104, 0x3c040800, 0x94844ed6, 0x52c00, 0xac620004, 0x8f420118, 0x63400, 0xc43025, 0xac620008, 0x8f42011c, 0x24040001, 0xac62000c, 0x9342010a, 0xa22825, 0xac650010, 0xac600014, 0xac600018, 0xac66001c, 0xa0004d7, 0x8fbf0014, 0x3c020800, 0x8c420020, 0x1040009c, 0x8fbf0014, 0xe000577, 0x0, 0x97440108, 0x3c030800, 0x94634ed6, 0x9745010c, 0x42202, 0x9746010e, 0x8f820020, 0x42600, 0x832025, 0x52c00, 0x3c030080, 0xa62825, 0x832025, 0xac400000, 0xac400004, 0xac400008, 0xac40000c, 0xac450010, 0xac400014, 0xac400018, 0xac44001c, 0xa0004d6, 0x24040001, 0x9742010c, 0x14400015, 0x0, 0x93620005, 0x30420010, 0x14400011, 0x0, 0xe000348, 0x2002021, 0x93620005, 0x2002021, 0x34420010, 0xe000351, 0xa3620005, 0x93620000, 0x24030020, 0x304200ff, 0x1043006f, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa0010a2, 0x27bd0018, 0xd, 0xa000502, 0x8fbf0014, 0x3c020800, 0x8c420020, 0x10400065, 0x8fbf0014, 0xe000577, 0x0, 0x8f420104, 0x8f830020, 0x9744010c, 0x3c050800, 0x94a54ed6, 0xac620000, 0x9762002c, 0x42400, 0x3042ffff, 0x822025, 0x3c02400e, 0xa22825, 0xac640004, 0xac600008, 0xac60000c, 0xac600010, 0xac600014, 0xac600018, 0xac65001c, 0xa0004d6, 0x24040001, 0xe000348, 0x2002021, 0xa7600008, 0xe000351, 0x2002021, 0x2002021, 0xe000356, 0x24050001, 0x3c020800, 0x8c420020, 0x10400042, 0x8fbf0014, 0xe000577, 0x0, 0x9742010c, 0x8f830020, 0x3c050800, 0x94a54ed6, 0x21400, 0xac700000, 0xac620004, 0xac600008, 0x8f64004c, 0x3c02401f, 0xa22825, 0xac64000c, 0x8f620050, 0x24040001, 0xac620010, 0x8f620054, 0xac620014, 0xac600018, 0xac65001c, 0x8fbf0014, 0x8fb00010, 0xa00059c, 0x27bd0018, 0x93620000, 0x24030020, 0x304200ff, 0x10430024, 0x8fbf0014, 0xe000fea, 0x2002021, 0x10400020, 0x8fbf0014, 0x2002021, 0x8fb00010, 0x2821, 0xa000356, 0x27bd0018, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000664, 0x27bd0018, 0x9745010c, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000684, 0x27bd0018, 0x2002021, 0x8fb00010, 0xa0006a9, 0x27bd0018, 0x9345010d, 0x2002021, 0x8fb00010, 0xa0006f3, 0x27bd0018, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa0006cf, 0x27bd0018, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x8f420278, 0x440fffe, 0x34820080, 0xaf420240, 0x24020002, 0xa3420244, 0x3c021000, 0x3e00008, 0xaf420278, 0x3c040800, 0x94844ee2, 0x3c020800, 0x8c424eec, 0x3083ffff, 0x318c0, 0x431021, 0xaf42003c, 0x3c020800, 0x8c424ee8, 0xaf420038, 0x3c020050, 0x34420008, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420020, 0x1040fffd, 0x0, 0x8f420400, 0x3c010800, 0xac224ed8, 0x8f420404, 0x3c010800, 0xac224edc, 0x3c020020, 0xaf420030, 0x0, 0x3c020800, 0x94424ee0, 0x3c030800, 0x94634ee4, 0x3c050800, 0x94a54ee6, 0x24840001, 0x431021, 0x3083ffff, 0x3c010800, 0xa4224ee0, 0x3c010800, 0xa4244ee2, 0x14650003, 0x0, 0x3c010800, 0xa4204ee2, 0x3e00008, 0x0, 0x3c05000a, 0x27bdffe8, 0x3452821, 0x3c040800, 0x24844ec8, 0xafbf0010, 0xe000601, 0x2406000a, 0x3c020800, 0x94424eca, 0x3c030800, 0x94634ee6, 0x3042000f, 0x24420003, 0x431804, 0x24027fff, 0x43102b, 0x10400002, 0xaf83001c, 0xd, 0xe00050e, 0x0, 0x3c020800, 0x94424ed2, 0x8fbf0010, 0x27bd0018, 0x3e00008, 0xa74200a2, 0x3c02000a, 0x3421021, 0x94430006, 0x3c020800, 0x94424ed2, 0x3c010800, 0xa4234ece, 0x431023, 0x8f83001c, 0x21400, 0x21403, 0x43102b, 0x3e00008, 0x38420001, 0x27bdffe8, 0xafbf0010, 0x3c02000a, 0x3421021, 0x94420006, 0x3c010800, 0xa4224ece, 0xe00055b, 0x0, 0x5440fff9, 0x3c02000a, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0xe00055b, 0x0, 0x10400003, 0x0, 0xe000569, 0x0, 0x3c020800, 0x8c424ed8, 0x8fbf0010, 0x27430400, 0xaf420038, 0x3c020800, 0x8c424edc, 0x27bd0018, 0xaf830020, 0xaf42003c, 0x3c020005, 0xaf420030, 0x3e00008, 0xaf800018, 0x8f820018, 0x3c030006, 0x21140, 0x431025, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420010, 0x1040fffd, 0x27420400, 0xaf820020, 0x3e00008, 0xaf800018, 0x3c060800, 0x8cc64edc, 0x8f850018, 0x8f830020, 0x3c020800, 0x94424ed2, 0x27bdffe0, 0x24a50001, 0x24630020, 0x24420001, 0x24c70020, 0xafb10014, 0xafb00010, 0xafbf0018, 0xaf850018, 0xaf830020, 0x3c010800, 0xa4224ed2, 0x309000ff, 0x3c010800, 0xac274edc, 0x4c10008, 0x8821, 0x4e00006, 0x0, 0x3c020800, 0x8c424ed8, 0x24420001, 0x3c010800, 0xac224ed8, 0x3c020800, 0x94424ed2, 0x3c030800, 0x94634ee0, 0x10202b, 0x431026, 0x2c420001, 0x441025, 0x14400004, 0x8f830018, 0x24020010, 0x1462000f, 0x0, 0xe00058d, 0x24110001, 0x3c030800, 0x94634ed2, 0x3c020800, 0x94424ee0, 0x14620003, 0x0, 0xe00050e, 0x0, 0x16000003, 0x0, 0xe000577, 0x0, 0x3c030800, 0x94634ed6, 0x3c020800, 0x94424ed4, 0x24630001, 0x3064ffff, 0x3c010800, 0xa4234ed6, 0x14820003, 0x0, 0x3c010800, 0xa4204ed6, 0x12000006, 0x0, 0x3c020800, 0x94424ed2, 0xa74200a2, 0xa0005ef, 0x2201021, 0xe00055b, 0x0, 0x10400004, 0x2201021, 0xe000569, 0x0, 0x2201021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3084ffff, 0x30a5ffff, 0x1821, 0x10800007, 0x0, 0x30820001, 0x10400002, 0x42042, 0x651821, 0xa0005f7, 0x52840, 0x3e00008, 0x601021, 0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, 0xac820000, 0xa000601, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x24020001, 0xaf62000c, 0xa7620010, 0xa7620012, 0xa7620014, 0x3e00008, 0xa7620016, 0x3082007f, 0x3421021, 0x3c08000e, 0x481821, 0x3c020800, 0x8c420020, 0x27bdffd8, 0x2407ff80, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0x808021, 0x30b100ff, 0x872024, 0x30d200ff, 0x1040002f, 0x9821, 0xaf44002c, 0x90620000, 0x24030050, 0x304200ff, 0x1443000e, 0x0, 0x3c020800, 0x8c4200e0, 0x2021021, 0x471024, 0xaf42002c, 0x3c020800, 0x8c4200e0, 0x2021021, 0x3042007f, 0x3421021, 0x481021, 0x944200d4, 0x3053ffff, 0xe000577, 0x0, 0x3c020800, 0x94424ed6, 0x8f830020, 0x113400, 0xc23025, 0x122c00, 0x3c024000, 0xc23025, 0x34a50001, 0xac700000, 0x8fbf0020, 0xac600004, 0x8fb20018, 0xac730008, 0x8fb10014, 0xac60000c, 0x8fb3001c, 0xac650010, 0x8fb00010, 0xac600014, 0x24040001, 0xac600018, 0x27bd0028, 0xa00059c, 0xac66001c, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x9343010f, 0x24020010, 0x1062000e, 0x28650011, 0x10a00007, 0x24020012, 0x24020008, 0x2405003a, 0x10620006, 0x3021, 0x3e00008, 0x0, 0x24050035, 0x1462fffc, 0x3021, 0xa00061c, 0x0, 0x8f420074, 0x24420fa0, 0x3e00008, 0xaf62000c, 0x27bdffe8, 0xafbf0010, 0xe000356, 0x24050001, 0x8fbf0010, 0x24020001, 0xa7620012, 0x27bd0018, 0x24020001, 0x3e00008, 0xa3600022, 0x27bdffe0, 0xafb10014, 0xafb00010, 0xafbf0018, 0x30b1ffff, 0xe000348, 0x808021, 0x9362003f, 0x24030004, 0x304200ff, 0x1443000c, 0x2002021, 0x12200008, 0x2402000a, 0xe000615, 0x0, 0x93620005, 0x2403fffe, 0x431024, 0xa3620005, 0x24020012, 0xa362003f, 0x2002021, 0xe000351, 0xa3600081, 0x16200003, 0x2002021, 0xe000679, 0x0, 0x2002021, 0x322600ff, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24050038, 0xa00061c, 0x27bd0020, 0x27bdffe0, 0xafbf001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xe000348, 0x808021, 0xe000615, 0x0, 0x9362003f, 0x24120018, 0x305100ff, 0x12320003, 0x2002021, 0x24020012, 0xa362003f, 0x93620005, 0x2403fffe, 0x431024, 0xe000351, 0xa3620005, 0x2002021, 0x24050020, 0x16320007, 0x3021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000356, 0x27bd0020, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050039, 0xa00061c, 0x27bd0020, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x9742010c, 0x24050036, 0x808021, 0x14400010, 0x304600ff, 0xe000348, 0x0, 0x24020012, 0xa362003f, 0x93620005, 0x34420010, 0xe000615, 0xa3620005, 0xe000351, 0x2002021, 0x2002021, 0xe000356, 0x24050020, 0xa0006e8, 0x0, 0xe00061c, 0x0, 0xe000348, 0x2002021, 0x93620023, 0x2403ff9f, 0x2002021, 0x431024, 0x8fbf0014, 0x8fb00010, 0xa3620023, 0xa000351, 0x27bd0018, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0x30b100ff, 0xe000348, 0x808021, 0x24020012, 0xe000615, 0xa362003f, 0xe000351, 0x2002021, 0x2002021, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24050035, 0xa00061c, 0x27bd0020, 0xa380002c, 0x3e00008, 0xa380002d, 0x8f420278, 0x440fffe, 0x8f820034, 0xaf420240, 0x24020002, 0xa3420244, 0x3c021000, 0x3e00008, 0xaf420278, 0x3c036000, 0x8c625400, 0x30420008, 0x1440fffd, 0x0, 0x8c625408, 0xaf820000, 0x24020052, 0xac605408, 0xac645430, 0xac625434, 0x24020008, 0x3e00008, 0xac625400, 0x3c026000, 0x8c425400, 0x30420008, 0x10400005, 0x3c036000, 0x8c625400, 0x30420008, 0x1440fffd, 0x0, 0x8f830000, 0x3c026000, 0x3e00008, 0xac435408, 0x90a30000, 0x24020005, 0x804021, 0x3063003f, 0x4821, 0x14620005, 0x5021, 0x90a2001c, 0x94a3001e, 0x304900ff, 0x306affff, 0xad00000c, 0xad000010, 0xad000024, 0x95020014, 0x8d05001c, 0x8d040018, 0x3042ffff, 0x491023, 0x21100, 0x237c3, 0x403821, 0x862023, 0xa2102b, 0x822023, 0xa72823, 0xad05001c, 0xad040018, 0xa5090014, 0xa5090020, 0xa50a0016, 0x3e00008, 0xa50a0022, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4401c0, 0xa34201c4, 0x3c021000, 0x3e00008, 0xaf4201f8, 0x3c020800, 0x8c4200b4, 0x27bdffe8, 0xafbf0014, 0x24420001, 0xafb00010, 0x3c010800, 0xac2200b4, 0x8f430024, 0x3c02001f, 0x30aa00ff, 0x3442ff80, 0x30d800ff, 0x628024, 0x80f821, 0x30ef00ff, 0x1158003b, 0x1405821, 0x240cff80, 0x3c19000a, 0x3163007f, 0x310c0, 0x31940, 0x621821, 0x3c020800, 0x8c4200dc, 0x25680001, 0x310d007f, 0x3e21021, 0x431021, 0x3043007f, 0x3431821, 0x4c1024, 0x794821, 0xaf420024, 0x8d220024, 0x16c1824, 0x6c7026, 0xad22000c, 0x8d220024, 0x310800ff, 0xad220010, 0x95220014, 0x95230020, 0x8d27001c, 0x3042ffff, 0x3063ffff, 0x8d260018, 0x431023, 0x21100, 0x227c3, 0x402821, 0xc43023, 0xe2102b, 0xc23023, 0xe53823, 0xad27001c, 0xad260018, 0x95220020, 0xa5220014, 0x95220022, 0x154b000a, 0xa5220016, 0x8d230024, 0x8d220008, 0x25460001, 0x31450080, 0x14620004, 0x30c4007f, 0x108f0002, 0x38aa0080, 0xc05021, 0x51af0001, 0x31c800ff, 0x1518ffc9, 0x1005821, 0x8f840034, 0x3082007f, 0x3421821, 0x3c02000a, 0x621821, 0x2402ff80, 0x822024, 0xaf440024, 0xa06a0079, 0xa06a0083, 0x8c620050, 0x8f840034, 0xac620070, 0x8c650074, 0x3c027fff, 0x3442ffff, 0xa22824, 0xe00074f, 0xac650074, 0xaf500024, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x27bdffc0, 0xafbe0038, 0xafb70034, 0xafb5002c, 0xafb20020, 0xafb1001c, 0xafb00018, 0xafbf003c, 0xafb60030, 0xafb40028, 0xafb30024, 0x8f450024, 0x8f460028, 0x8f43002c, 0x3c02001f, 0x3442ff80, 0x621824, 0xc23024, 0x80a821, 0xafa30014, 0xa2f024, 0xe000713, 0xafa60010, 0x3c020800, 0x8c4200e0, 0x2410ff80, 0x3608821, 0x2a21021, 0x501024, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x2a21021, 0x3042007f, 0x3421821, 0x3c02000a, 0x629021, 0x924200d2, 0x93630084, 0x305700ff, 0x306300ff, 0x24020001, 0x10620034, 0x3602021, 0x24020002, 0x14620036, 0x0, 0xe0012f8, 0x2402821, 0x92230083, 0x92220083, 0x3063007f, 0x3042007f, 0x210c0, 0x31940, 0x621821, 0x3c020800, 0x8c4200dc, 0x2a21021, 0x433821, 0xf01024, 0xaf420028, 0x92250078, 0x92240083, 0x30e2007f, 0x3421821, 0x3c02000c, 0x14850007, 0x628021, 0x2402ffff, 0xa24200f1, 0x2402ffff, 0xa64200f2, 0xa00080b, 0x2402ffff, 0x96020020, 0xa24200f1, 0x96020022, 0xa64200f2, 0x8e020024, 0xae4200f4, 0x92220083, 0xa24200f0, 0x8e4200c8, 0xae4200fc, 0x8e4200c4, 0xae4200f8, 0x8e220050, 0xae420100, 0x8e4200cc, 0xae420104, 0x92220085, 0x3042003f, 0xa000866, 0x34420040, 0xe00131b, 0x2402821, 0x92220085, 0xa000866, 0x3042003f, 0x93620085, 0x2403ffdf, 0x3042003f, 0xa3620085, 0x93620085, 0x431024, 0xa3620085, 0x93630083, 0x93620078, 0x307400ff, 0x304200ff, 0x10540036, 0x240aff80, 0x3c0c000c, 0x3283007f, 0x310c0, 0x31940, 0x621821, 0x3c020800, 0x8c4200dc, 0x26880001, 0x3109007f, 0x2a21021, 0x433821, 0x30e2007f, 0x3421821, 0xea1024, 0xaf420028, 0x6c8021, 0x8e020024, 0x28a1824, 0x6a5826, 0xae02000c, 0x8e020024, 0x310800ff, 0xae020010, 0x96020014, 0x96030020, 0x8e07001c, 0x3042ffff, 0x3063ffff, 0x8e060018, 0x431023, 0x21100, 0x227c3, 0x402821, 0xc43023, 0xe2102b, 0xc23023, 0xe53823, 0xae07001c, 0xae060018, 0x96020020, 0xa6020014, 0x96020022, 0xa6020016, 0x92220079, 0x304200ff, 0x10540007, 0x0, 0x51370001, 0x316800ff, 0x92220078, 0x304200ff, 0x1448ffcd, 0x100a021, 0x92220083, 0xa2220079, 0x8e220050, 0xa0008c6, 0xae220070, 0xa2220085, 0x8e22004c, 0x2405ff80, 0xae42010c, 0x92220085, 0x34420020, 0xa2220085, 0x924200d1, 0x3c030800, 0x8c6300dc, 0x305400ff, 0x3c020800, 0x8c4200e4, 0x143140, 0x1420c0, 0x2a31821, 0xc42021, 0x2a21021, 0x643821, 0x461021, 0x451824, 0xe52824, 0xaf450028, 0xaf43002c, 0x3042007f, 0x924400d0, 0x30e3007f, 0x3422821, 0x3431821, 0x3c02000c, 0x628021, 0x3c02000e, 0x309600ff, 0xa29821, 0x1296002a, 0x0, 0x8e02000c, 0x2002021, 0x2602821, 0x10400025, 0x26100028, 0xe00072e, 0x0, 0x9262000d, 0x26830001, 0x307400ff, 0x3042007f, 0xa262000d, 0x2404ff80, 0x1697fff0, 0x26730020, 0x3c020800, 0x8c4200dc, 0xa021, 0x2a21021, 0x441024, 0xaf420028, 0x3c020800, 0x8c4200e4, 0x3c030800, 0x8c6300dc, 0x2a21021, 0x441024, 0xaf42002c, 0x3c020800, 0x8c4200e4, 0x2a31821, 0x3063007f, 0x2a21021, 0x3042007f, 0x3422021, 0x3431821, 0x3c02000c, 0x628021, 0x3c02000e, 0xa000888, 0x829821, 0x8e4200d8, 0xae220050, 0x8e4200d8, 0xae220070, 0x92250083, 0x924600d1, 0x92230083, 0x924400d1, 0x2402ff80, 0xa22824, 0x3063007f, 0x308400ff, 0xa62825, 0x64182a, 0x10600002, 0x30a500ff, 0x38a50080, 0xa2250083, 0xa2250079, 0xe000721, 0x0, 0x9222007e, 0x2a02021, 0xa222007a, 0x8e230074, 0x3c027fff, 0x3442ffff, 0x621824, 0xe00074f, 0xae230074, 0x8fa20010, 0xaf5e0024, 0x8fbf003c, 0xaf420028, 0x8fbe0038, 0x8fa20014, 0x8fb70034, 0x8fb60030, 0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x27bd0040, 0x3e00008, 0xaf42002c, 0x90a20000, 0x24420001, 0xa0a20000, 0x3c030800, 0x8c6300f4, 0x304200ff, 0x1443000f, 0x803021, 0xa0a00000, 0x3c020800, 0x8c4200e4, 0x8f840034, 0x822021, 0x3082007f, 0x3421821, 0x3c02000c, 0x621821, 0x2402ff80, 0x822024, 0xacc30000, 0x3e00008, 0xaf440028, 0x8c820000, 0x24420020, 0x3e00008, 0xac820000, 0x94c20000, 0x3c080800, 0x950800ca, 0x30e7ffff, 0x804821, 0x1021021, 0xa4c20000, 0x94c20000, 0x3042ffff, 0xe2102b, 0x54400001, 0xa4c70000, 0x94a20000, 0x3c030800, 0x8c6300cc, 0x24420001, 0xa4a20000, 0x94a20000, 0x3042ffff, 0x54430007, 0x8f860028, 0x107102b, 0xa4a00000, 0x54400001, 0x1003821, 0xa4c70000, 0x8f860028, 0x8cc4001c, 0xaf44003c, 0x94a20000, 0x8f43003c, 0x3042ffff, 0x210c0, 0x621821, 0xaf43003c, 0x8f42003c, 0x822023, 0x18800004, 0x0, 0x8cc20018, 0xa000927, 0x24420001, 0x8cc20018, 0xaf420038, 0x3c020050, 0x34420010, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420020, 0x1040fffd, 0x0, 0x8f420404, 0xad220004, 0x8f420400, 0xad220000, 0x3c020020, 0xaf420030, 0x3e00008, 0x0, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x94c20000, 0xc08021, 0x3c120800, 0x965200c6, 0x24420001, 0xa6020000, 0x96030000, 0x94e20000, 0xe03021, 0x14430005, 0x8fb10030, 0xe0008fc, 0x2403821, 0xa000959, 0x0, 0x8c830004, 0x8c820004, 0x24420040, 0x4610007, 0xac820004, 0x8c820004, 0x4400004, 0x0, 0x8c820000, 0x24420001, 0xac820000, 0x96020000, 0x3042ffff, 0x50520001, 0xa6000000, 0x96220000, 0x24420001, 0xa6220000, 0x8f820028, 0x96230000, 0x94420016, 0x14430004, 0x8fbf001c, 0x24020001, 0xa6220000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x8f890028, 0x27bdffe0, 0xafbf0018, 0x8d220028, 0x27480400, 0x30e700ff, 0xaf420038, 0x8d22002c, 0xaf880030, 0xaf42003c, 0x3c020005, 0xaf420030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c82000c, 0x8c82000c, 0xad020000, 0x8c820010, 0xad020004, 0x8c820018, 0xad020008, 0x8c82001c, 0xad02000c, 0x8ca20014, 0xad020010, 0x8c820020, 0xad020014, 0x90820005, 0x304200ff, 0x21200, 0xad020018, 0x8ca20018, 0xad02001c, 0x8ca2000c, 0xad020020, 0x8ca20010, 0xad020024, 0x8ca2001c, 0xad020028, 0x8ca20020, 0xad02002c, 0xad060030, 0xad000034, 0x97830026, 0x3402ffff, 0x14620002, 0x602021, 0x3404ffff, 0x10e00011, 0xad040038, 0x95230036, 0x95240036, 0x24020001, 0x3063ffff, 0x318c2, 0x691821, 0x90650040, 0x30840007, 0x821004, 0x451025, 0xa0620040, 0x8f820028, 0x94420056, 0x3042ffff, 0xa0009c0, 0xad02003c, 0x95230036, 0x95240036, 0x24020001, 0x3063ffff, 0x318c2, 0x691821, 0x90650040, 0x30840007, 0x821004, 0x21027, 0x451024, 0xa0620040, 0xad00003c, 0x0, 0x0, 0x0, 0x3c020006, 0x34420040, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420010, 0x1040fffd, 0x8f860028, 0xaf880030, 0x24c20056, 0x24c7003c, 0x24c40028, 0x24c50032, 0x24c60036, 0xe00093a, 0xafa20010, 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8f830024, 0x3c050800, 0x8ca500e8, 0x8f820034, 0x30633fff, 0x31980, 0x451021, 0x431021, 0x2403ff80, 0x3045007f, 0x431024, 0xaf420028, 0x3451821, 0x3c02000c, 0x623021, 0x90c2000d, 0x3821, 0x34420010, 0xa0c2000d, 0x8f890028, 0x8f8a0024, 0x95230036, 0xa1382, 0x30480003, 0x24020001, 0xa4c3000e, 0x1102000b, 0x29020002, 0x10400005, 0x24020002, 0x1100000c, 0x24030001, 0xa000a03, 0x1821, 0x11020006, 0x0, 0xa000a03, 0x1821, 0x8cc2002c, 0xa000a03, 0x24430001, 0x8cc20014, 0x24430001, 0x8cc20018, 0x43102b, 0x14400003, 0x0, 0xa000a0c, 0x24070001, 0x9522003e, 0x24420001, 0xa522003e, 0xa1382, 0x30430003, 0x2c620002, 0x10400009, 0x802821, 0x14600004, 0x0, 0x94c20036, 0xa000a1c, 0x3046ffff, 0x8cc60038, 0xa000a1c, 0x802821, 0x3021, 0x3c040800, 0x24844ef0, 0xa00096d, 0x0, 0x27490100, 0x8d22000c, 0x95230006, 0x1202021, 0x21602, 0x3045003f, 0x3063ffff, 0x24020027, 0x28a60028, 0x10a2000e, 0xaf830024, 0x10c00008, 0x24020031, 0x24020021, 0x10a20009, 0x24020025, 0x10a20007, 0x9382002d, 0xa000a3a, 0x0, 0x10a20005, 0x9382002d, 0xa000a3a, 0x0, 0xa0009d8, 0x0, 0xa00070a, 0x0, 0x95230006, 0x91240005, 0x8d25000c, 0x8d260010, 0x8d270018, 0x8d28001c, 0x8d290020, 0x24420001, 0x3c010800, 0xa4234ef6, 0x3c010800, 0xa0244ef5, 0x3c010800, 0xac254efc, 0x3c010800, 0xac264f00, 0x3c010800, 0xac274f08, 0x3c010800, 0xac284f0c, 0x3c010800, 0xac294f10, 0x3e00008, 0xa382002d, 0x8f870028, 0x27bdffc0, 0xafb30034, 0xafb20030, 0xafb1002c, 0xafb00028, 0xafbf0038, 0x3c020800, 0x8c4200d0, 0x94e30030, 0x30b0ffff, 0x501007, 0x3045ffff, 0x3063ffff, 0xc09821, 0xa7a20010, 0x3c110800, 0x963100c6, 0x14a30006, 0x3092ffff, 0x8ce20024, 0x24420030, 0xaf42003c, 0xa000a73, 0x8ce20020, 0x94e20032, 0x3042ffff, 0x54a20008, 0x27a40018, 0x8ce2002c, 0x24420030, 0xaf42003c, 0x8ce20028, 0xaf420038, 0xa000a81, 0x8f840028, 0x27a50010, 0x27a60020, 0x2203821, 0xe0008fc, 0xa7a00020, 0x8fa20018, 0x24420030, 0xaf420038, 0x8fa2001c, 0xaf42003c, 0x8f840028, 0x3c020005, 0xaf420030, 0x94820034, 0x27430400, 0x3042ffff, 0x202102b, 0x14400007, 0xaf830030, 0x94820054, 0x94830034, 0x2021021, 0x431023, 0xa000a95, 0x3043ffff, 0x94830054, 0x94820034, 0x2231821, 0x501023, 0x621823, 0x3063ffff, 0x94820016, 0x3042ffff, 0x14430003, 0x0, 0xa000aa3, 0x24030001, 0x94820016, 0x3042ffff, 0x43102b, 0x10400005, 0x8f820030, 0x94820016, 0x621023, 0x3043ffff, 0x8f820030, 0xac530000, 0xac400004, 0xac520008, 0xac43000c, 0x3c020006, 0x34420010, 0xaf420030, 0x0, 0x0, 0x0, 0x8f420000, 0x30420010, 0x1040fffd, 0x1018c2, 0x641821, 0x90650040, 0x32040007, 0x24020001, 0x8fbf0038, 0x8fb30034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, 0x821004, 0x451025, 0x27bd0040, 0x3e00008, 0xa0620040, 0x27bdffa8, 0xafb60050, 0xafb5004c, 0xafb40048, 0xafb30044, 0xafb1003c, 0xafbf0054, 0xafb20040, 0xafb00038, 0x8c900000, 0x3c020800, 0x8c4200e8, 0x8f860034, 0x96030002, 0x2413ff80, 0xc23021, 0x30633fff, 0x31980, 0xc33821, 0xf31024, 0x90b20000, 0xaf42002c, 0x92030002, 0x30e2007f, 0x3423021, 0x3c02000e, 0xc28821, 0x306300c0, 0x24020040, 0x80a821, 0xa0b021, 0x14620026, 0xa021, 0x8e340038, 0x8e220018, 0x14400002, 0x24020001, 0xae220018, 0x9202000d, 0x30420020, 0x14400015, 0x8f820034, 0x3c030800, 0x8c6300dc, 0x1238c0, 0x123140, 0x431021, 0xc73021, 0x463821, 0x30e30007, 0x3c020080, 0x30e60078, 0xc23025, 0x3431821, 0xf31024, 0xaf420800, 0x24630900, 0xaf460810, 0x8e220018, 0x8c630008, 0x431021, 0xae220018, 0x8e22002c, 0x8e230018, 0x24420001, 0x62182b, 0x1060003d, 0x0, 0xa000b57, 0x0, 0x92030002, 0x2402ffc0, 0x431024, 0x304200ff, 0x14400005, 0x24020001, 0xae220018, 0x96220036, 0xa000b40, 0x3054ffff, 0x8e220014, 0x24420001, 0xae220018, 0x92020000, 0x21600, 0x21603, 0x4410029, 0x0, 0x96020002, 0x27a40010, 0x802821, 0xa7a20016, 0x96020002, 0x24070001, 0x3021, 0x3042ffff, 0xaf820024, 0xe00096d, 0xafa0001c, 0x96030002, 0x3c040800, 0x8c8400e8, 0x8f820034, 0x30633fff, 0x31980, 0x441021, 0x431021, 0x3043007f, 0x3c05000c, 0x531024, 0x3431821, 0xaf420028, 0x651821, 0x9062000d, 0x122140, 0x3042007f, 0xa062000d, 0x3c030800, 0x8c6300e4, 0x8f820034, 0x431021, 0x443821, 0x30e2007f, 0x3421021, 0x451021, 0xf31824, 0xaf430028, 0xaea20000, 0x9222000d, 0x30420010, 0x10400013, 0x2a02021, 0x8f830028, 0x8ea40000, 0x2803021, 0x9462003e, 0x2442ffff, 0xa462003e, 0x94840002, 0x9625000e, 0x3084ffff, 0xe000a52, 0x30a5ffff, 0x8f820028, 0x94430034, 0x9622000e, 0x14430003, 0x2a02021, 0x24020001, 0xa382002c, 0x2c02821, 0xe0008e2, 0x0, 0x8fbf0054, 0x8fb60050, 0x8fb5004c, 0x8fb40048, 0x8fb30044, 0x8fb20040, 0x8fb1003c, 0x8fb00038, 0x3e00008, 0x27bd0058, 0x8f850028, 0x27bdffd0, 0xafb40028, 0xafb20020, 0xafbf002c, 0xafb30024, 0xafb1001c, 0xafb00018, 0x90a800d0, 0x90a600d1, 0x3c020800, 0x8c4200e4, 0x8f830034, 0x30c700ff, 0xa3a60010, 0x621821, 0x71140, 0x621821, 0x3062007f, 0x3422021, 0x3c02000c, 0x822021, 0x2402ff80, 0x621824, 0x311200ff, 0x8cb100d8, 0xafa40014, 0x8cb300dc, 0xa021, 0xaf430028, 0x10f2001f, 0x24020001, 0x8fa60014, 0x27a40014, 0x27a50010, 0x8cc20004, 0x2228021, 0x2701023, 0x4400017, 0x24020001, 0x90c3000d, 0x2402ff80, 0x431024, 0x304200ff, 0x14400007, 0x2008821, 0x90c2000d, 0x34420040, 0xe0008e2, 0xa0c2000d, 0xa000b9e, 0x93a20010, 0xe000ac0, 0x24140001, 0x8f830028, 0xac7000d8, 0x93a20010, 0xa06200d1, 0x93a20010, 0x1452ffe5, 0x8fa60014, 0x24020001, 0x16820004, 0x8fbf002c, 0xe00070a, 0x0, 0x8fbf002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0x809821, 0xe08021, 0x30b1ffff, 0xe000577, 0x30d200ff, 0x0, 0x0, 0x0, 0x8f820020, 0xac510000, 0xac520004, 0xac530008, 0xac40000c, 0xac400010, 0xac400014, 0xac400018, 0x3c030800, 0x94634ed6, 0x2038025, 0xac50001c, 0x0, 0x0, 0x0, 0x24040001, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa00059c, 0x27bd0028, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x30a5ffff, 0x30c600ff, 0x808021, 0x24020c80, 0xaf420024, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe000bad, 0x0, 0x3c040800, 0x248400e0, 0x8c820000, 0x2403ff80, 0x8fbf0014, 0x2021021, 0x431024, 0xaf420024, 0x8c820000, 0x3c03000a, 0x2028021, 0x3210007f, 0x3501021, 0x8fb00010, 0x431021, 0x27bd0018, 0x3e00008, 0xaf820028, 0x27bdffe8, 0xafbf0010, 0x8f440140, 0x3c030800, 0x8c6300e0, 0x2402ff80, 0xaf840034, 0x831821, 0x621024, 0xaf420024, 0x3c020008, 0x3424021, 0x95050002, 0x3063007f, 0x3c02000a, 0x3431821, 0x621821, 0x30a5ffff, 0x3402ffff, 0x3021, 0x3c076020, 0x10a20006, 0xaf830028, 0x2402ffff, 0xa5020002, 0x946500d4, 0xe000bd2, 0x30a5ffff, 0x8fbf0010, 0x24020c80, 0x27bd0018, 0x3e00008, 0xaf420024, 0x3c020008, 0x3424021, 0x95020002, 0x3c0a0800, 0x954a00c6, 0x3046ffff, 0x14c00007, 0x3402ffff, 0x8f820028, 0x8f840034, 0x3c076020, 0x944500d4, 0xa000c3b, 0x30a5ffff, 0x10c20024, 0x8f870028, 0x94e20054, 0x94e40016, 0x3045ffff, 0xa61023, 0xa6182b, 0x3089ffff, 0x10600004, 0x3044ffff, 0xc51023, 0x1221023, 0x3044ffff, 0x8a102b, 0x1040000c, 0x12a1023, 0x24020001, 0xa5020016, 0x2402ffff, 0xa5020002, 0x94e500d4, 0x8f840034, 0x3021, 0x30a5ffff, 0x3c076020, 0xa000bd2, 0x0, 0x44102a, 0x10400008, 0x0, 0x95020016, 0x30420001, 0x10400004, 0x0, 0x9742007e, 0x24420014, 0xa5020016, 0x3e00008, 0x0, 0x8f840028, 0x27bdffe0, 0xafbf0018, 0x94820034, 0x9483003e, 0x1060001a, 0x3048ffff, 0x9383002c, 0x24020001, 0x14620027, 0x8fbf0018, 0x8f820028, 0x818c2, 0x31080007, 0x621821, 0x2447003a, 0x24490054, 0x24440020, 0x24450030, 0x24460034, 0x90620040, 0x304200ff, 0x1021007, 0x30420001, 0x10400016, 0x8fbf0018, 0xe00093a, 0xafa90010, 0x8f820028, 0x94420034, 0xa000c54, 0x3048ffff, 0x94830036, 0x94820034, 0x1043000e, 0x8fbf0018, 0x94820036, 0xa4820034, 0x94820056, 0xa4820054, 0x8c82002c, 0xac820024, 0x94820032, 0xa4820030, 0x9482003c, 0xa482003a, 0x8fbf0018, 0xa000c14, 0x27bd0020, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0010, 0x8f4a0100, 0x3c050800, 0x8ca500e0, 0x3c020800, 0x90424efc, 0x3c0c0800, 0x958c4ef6, 0x1452821, 0x304b003f, 0x30a2007f, 0x3424021, 0x39690032, 0x3c02000a, 0x3963003f, 0x2c630001, 0x1024021, 0x2d290001, 0x2402ff80, 0xa22824, 0x1234825, 0xaf8a0034, 0x801821, 0xaf450024, 0x3021, 0x802821, 0x24070001, 0xaf880028, 0x3c040800, 0x24844ef0, 0xaf8c0024, 0x15200006, 0xa380002d, 0x24020020, 0x1562000e, 0x3402ffff, 0x1582000c, 0x0, 0x24020020, 0x15620005, 0x0, 0x8c630014, 0x2402ffff, 0x10620007, 0x0, 0xe00096d, 0x0, 0xa000cb0, 0x0, 0xe0009d8, 0x602021, 0xe000c49, 0x0, 0x8fbf0010, 0x24020c80, 0x27bd0018, 0x3e00008, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x27bdffa0, 0xafb1003c, 0x821021, 0x2411ff80, 0xafbe0058, 0xafb70054, 0xafb20040, 0xafb00038, 0xafbf005c, 0xafb60050, 0xafb5004c, 0xafb40048, 0xafb30044, 0x511024, 0x8f480024, 0x8f490028, 0x8f470028, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x809021, 0x24060006, 0x821021, 0x3042007f, 0x3421821, 0x3c02000a, 0x628021, 0x3c02001f, 0x3442ff80, 0xe23824, 0x27a40010, 0x260500f0, 0x122f024, 0x102b824, 0xe000601, 0xafa70030, 0x8fa20018, 0xae0200c4, 0x8fa2001c, 0xae0200c8, 0x8fa20024, 0xae0200cc, 0x93a40010, 0x920300d1, 0x2402ff80, 0x821024, 0x431025, 0x304900ff, 0x3083007f, 0x3122007f, 0x62102a, 0x10400004, 0x310c0, 0x1311026, 0x304900ff, 0x310c0, 0x31940, 0x621821, 0x3c020800, 0x8c4200dc, 0x920400d2, 0x2421021, 0x431021, 0x511024, 0xaf420028, 0x93a30010, 0x3063007f, 0x310c0, 0x31940, 0x621821, 0x3c020800, 0x8c4200dc, 0x2421021, 0x431021, 0x3042007f, 0x3421821, 0x3c02000c, 0x624021, 0x8fa30014, 0x2402ffff, 0x10620030, 0x309500ff, 0x93a20011, 0x95030014, 0x304400ff, 0x3063ffff, 0x64182b, 0x1060000d, 0x0, 0x95040014, 0x8d07001c, 0x8d060018, 0x3084ffff, 0x442023, 0x42100, 0x1021, 0xe43821, 0xe4202b, 0xc23021, 0xa000d2a, 0xc43021, 0x95040014, 0x8d07001c, 0x8d060018, 0x3084ffff, 0x822023, 0x42100, 0x1021, 0x801821, 0xc23023, 0xe4202b, 0xc43023, 0xe33823, 0xad07001c, 0xad060018, 0x93a20011, 0xa5020014, 0x97a20012, 0xa5020016, 0x8fa20014, 0xad020010, 0x8fa20014, 0xad02000c, 0x93a20011, 0xa5020020, 0x97a20012, 0xa5020022, 0x8fa20014, 0xad020024, 0x2406ff80, 0x2461024, 0x3256007f, 0xaf420024, 0x3561821, 0x3c02000a, 0x628021, 0x8e02004c, 0x8fa20020, 0x3124007f, 0x428c0, 0xae020050, 0x8fa20020, 0x42140, 0x852821, 0xae020070, 0x93a20010, 0x1208821, 0xa2020083, 0x93a20010, 0xa2020079, 0x92020085, 0x3042003f, 0xa2020085, 0x3c020800, 0x8c4200dc, 0x2421021, 0x451021, 0x461024, 0xaf42002c, 0x3c020800, 0x8c4200e4, 0x3c030800, 0x8c6300dc, 0x2421021, 0x441021, 0x461024, 0xaf420028, 0x3c020800, 0x8c4200e4, 0x2431821, 0x651821, 0x2421021, 0x441021, 0x3042007f, 0x3063007f, 0x93a50010, 0x3422021, 0x3431821, 0x3c02000e, 0x624021, 0x3c02000c, 0x10b1008c, 0x824821, 0x3233007f, 0x16600019, 0x2404ff80, 0x3c020800, 0x8c4200dc, 0x2421021, 0x441024, 0xaf42002c, 0x3c020800, 0x8c4200e4, 0x3c030800, 0x8c6300dc, 0x2421021, 0x441024, 0xaf420028, 0x3c020800, 0x8c4200e4, 0x2431821, 0x3063007f, 0x2421021, 0x3042007f, 0x3422021, 0x3431821, 0x3c02000e, 0x624021, 0x3c02000c, 0x824821, 0x9124000d, 0x2414ff80, 0x1021, 0x942025, 0xa124000d, 0x95040002, 0x95050014, 0x8d07001c, 0x3084ffff, 0x30a5ffff, 0x8d060018, 0x852023, 0x42100, 0xe43821, 0xc23021, 0xe4202b, 0xc43021, 0xad07001c, 0xad060018, 0x95020002, 0xa5020014, 0xa5000016, 0x8d020008, 0xad020010, 0x8d020008, 0xad02000c, 0x95020002, 0xa5020020, 0xa5000022, 0x8d020008, 0xad020024, 0x9122000d, 0x30420040, 0x10400042, 0x26220001, 0x3c020800, 0x8c4200e0, 0xa3b30028, 0x3c10000a, 0x2421021, 0x541024, 0xaf420024, 0x3c020800, 0x8c4200e0, 0xa380002c, 0x27a4002c, 0x2421021, 0x3042007f, 0x3421821, 0x701821, 0x8c6200d8, 0x8d260004, 0x27a50028, 0xafa9002c, 0x461021, 0xac6200d8, 0xe000ac0, 0xaf830028, 0x93a30028, 0x8f820028, 0xe00070a, 0xa04300d1, 0xe000c49, 0x0, 0x2541024, 0xaf420024, 0x3c020800, 0x8c4200dc, 0x132940, 0x1320c0, 0xa42021, 0x2421021, 0x441021, 0x541024, 0xaf42002c, 0x3c020800, 0x8c4200e4, 0x3c030800, 0x8c6300dc, 0x3563021, 0x2421021, 0x451021, 0x541024, 0xaf420028, 0x3c020800, 0x8c4200e4, 0x2431821, 0x641821, 0x2421021, 0x451021, 0x3042007f, 0x3063007f, 0x3422021, 0x3431821, 0x3c02000e, 0x624021, 0x3c02000c, 0xd08021, 0x824821, 0x26220001, 0x3043007f, 0x14750005, 0x304400ff, 0x2403ff80, 0x2231024, 0x431026, 0x304400ff, 0x93a20010, 0x808821, 0x25080028, 0x1444ff76, 0x25290020, 0x93a40010, 0x8fa30014, 0x2402ffff, 0x1062000a, 0x308900ff, 0x24820001, 0x24830001, 0x3042007f, 0x14550005, 0x306900ff, 0x2403ff80, 0x831024, 0x431026, 0x304900ff, 0x92020078, 0x305300ff, 0x11330032, 0x1208821, 0x3c020800, 0x8c4200dc, 0x3225007f, 0x520c0, 0x52940, 0xa42021, 0x2421021, 0x2406ff80, 0x441021, 0x461024, 0xaf42002c, 0x3c030800, 0x8c6300dc, 0x3c020800, 0x8c4200e4, 0x2431821, 0x2421021, 0x451021, 0x641821, 0x461024, 0x3063007f, 0xaf420028, 0x3431821, 0x3c02000e, 0x624021, 0x3c020800, 0x8c4200e4, 0x8d06000c, 0x1002021, 0x2421021, 0x451021, 0x3042007f, 0x3421821, 0x3c02000c, 0x624821, 0x10c0000d, 0x1202821, 0xe00072e, 0x0, 0x2402ff80, 0x2221824, 0x26240001, 0x622826, 0x3082007f, 0x14550002, 0x308300ff, 0x30a300ff, 0x1473ffd0, 0x608821, 0x8e030074, 0x3c027fff, 0x3442ffff, 0x621824, 0xae030074, 0xe00074f, 0x2402021, 0xaf570024, 0x8fa20030, 0xaf5e0028, 0x8fbf005c, 0x8fbe0058, 0x8fb70054, 0x8fb60050, 0x8fb5004c, 0x8fb40048, 0x8fb30044, 0x8fb20040, 0x8fb1003c, 0x8fb00038, 0x27bd0060, 0x3e00008, 0xaf42002c, 0x27bdffd8, 0xafb1001c, 0xafbf0020, 0xafb00018, 0x27510188, 0x92220003, 0x2408ff80, 0x3c03000a, 0x3047007f, 0xa3a70010, 0x8f460180, 0x3c020800, 0x8c4200e0, 0xaf860034, 0xc22821, 0xa81024, 0xaf420024, 0x92240000, 0x30a2007f, 0x3421021, 0x431021, 0xaf820028, 0x3084007f, 0x24020002, 0x14820025, 0x71940, 0x3c020800, 0x8c4200e4, 0xc21021, 0x432821, 0x30a2007f, 0x3421821, 0xa81024, 0xaf420028, 0x3c02000c, 0x621821, 0x9062000d, 0xafa30014, 0x481025, 0xa062000d, 0x8fa30014, 0x9062000d, 0x30420040, 0x5040006a, 0x8fbf0020, 0x8f860028, 0xa380002c, 0x27a40014, 0x8cc200d8, 0x8c630004, 0x27a50010, 0x431021, 0xe000ac0, 0xacc200d8, 0x93a30010, 0x8f820028, 0xe00070a, 0xa04300d1, 0xe000c49, 0x0, 0xa000eeb, 0x8fbf0020, 0xe000713, 0xc02021, 0xe000721, 0x0, 0x3c020008, 0x3428021, 0x92230001, 0x9202007b, 0x1443004f, 0x8fbf0020, 0x92220000, 0x3044007f, 0x24020004, 0x10820017, 0x28820005, 0x10400006, 0x24020005, 0x24020003, 0x10820007, 0x8fb1001c, 0xa000eec, 0x0, 0x10820012, 0x8fbf0020, 0xa000eec, 0x8fb1001c, 0x92050083, 0x92060078, 0x8e070074, 0x8f840034, 0x30a500ff, 0x73e02, 0x30c600ff, 0xe000757, 0x30e7007f, 0xa000eeb, 0x8fbf0020, 0xe000cb7, 0x8f840034, 0xa000eeb, 0x8fbf0020, 0x24020c80, 0xaf420024, 0x9202003e, 0x30420040, 0x10400020, 0x0, 0x9202003e, 0x21600, 0x21603, 0x4410006, 0x0, 0x8f840034, 0xe000684, 0x24050093, 0xa000eeb, 0x8fbf0020, 0x9202003f, 0x24030018, 0x304200ff, 0x1443000c, 0x8f840034, 0x24050039, 0xe00061c, 0x3021, 0xe000348, 0x8f840034, 0x24020012, 0xa202003f, 0xe000351, 0x8f840034, 0xa000eeb, 0x8fbf0020, 0x24050036, 0xe00061c, 0x3021, 0xa000eeb, 0x8fbf0020, 0xe000348, 0x8f840034, 0x92020005, 0x34420020, 0xa2020005, 0xe000351, 0x8f840034, 0xe0010a2, 0x8f840034, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x24020c80, 0x27bd0028, 0x3e00008, 0xaf420024, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x27430100, 0x94620008, 0x21400, 0x21403, 0x4410002, 0x8021, 0x24100001, 0x94620008, 0x30420080, 0x1040001a, 0x2001021, 0x94620008, 0x30422000, 0x10400016, 0x2001021, 0x8c630018, 0x3c021c2d, 0x344219ed, 0x24060006, 0x1062000f, 0x3c076021, 0x3c020800, 0x8c4200d4, 0x10400007, 0x8f820028, 0x8f830028, 0x90620062, 0x3042000f, 0x34420040, 0xa0620062, 0x8f820028, 0x8f840034, 0x944500d4, 0xe000bd2, 0x30a5ffff, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x27bdffe0, 0xafb10014, 0xafb00010, 0xa380002c, 0xafbf0018, 0x8f450100, 0x3c030800, 0x8c6300e0, 0x2402ff80, 0xaf850034, 0xa31821, 0x3064007f, 0x3442021, 0x621824, 0x3c02000a, 0x822021, 0xaf430024, 0x27500100, 0x8e020014, 0x8c8300dc, 0xaf840028, 0x431023, 0x18400004, 0x8821, 0x8e020014, 0xe000b63, 0xac8200dc, 0x9202000b, 0x24030002, 0x304200ff, 0x1443002f, 0x0, 0x96020008, 0x304300ff, 0x24020082, 0x14620005, 0x24020084, 0xe000a1e, 0x0, 0xa000f77, 0x0, 0x14620009, 0x24020081, 0x8f820028, 0x8f840034, 0x3c076021, 0x944500d4, 0x92060005, 0x30a5ffff, 0xa000f66, 0x30c600ff, 0x14620027, 0x0, 0x9202000a, 0x304300ff, 0x30620020, 0x10400004, 0x30620040, 0x8f840034, 0xa000f62, 0x24060040, 0x10400004, 0x31600, 0x8f840034, 0xa000f62, 0x24060041, 0x21603, 0x4410017, 0x8f840034, 0x24060042, 0x8f820028, 0x3c076019, 0x944500d4, 0x30a5ffff, 0xe000bd2, 0x0, 0xa000f77, 0x0, 0x9202000b, 0x24030016, 0x304200ff, 0x10430006, 0x0, 0x9202000b, 0x24030017, 0x304200ff, 0x14430004, 0x0, 0xe000ef1, 0x0, 0x408821, 0xe000c49, 0x0, 0x9202000a, 0x30420008, 0x10400006, 0x24020c80, 0x8f850028, 0x3c040008, 0xe0012d0, 0x3442021, 0x24020c80, 0xaf420024, 0x8fbf0018, 0x2201021, 0x8fb00010, 0x8fb10014, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x8f500024, 0x3c030800, 0x8c6300e0, 0x8f450100, 0x2402ff80, 0xa31821, 0x3064007f, 0x3442021, 0x621824, 0x3c02000a, 0x822021, 0xaf850034, 0xaf430024, 0x90820062, 0xaf840028, 0x3042000f, 0x34420050, 0xa0820062, 0x3c02001f, 0x3442ff80, 0xe00070a, 0x2028024, 0xaf500024, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420020, 0x1040001d, 0x27450100, 0x90a30009, 0x3c020008, 0x3422021, 0x24020018, 0x54620003, 0x3c020008, 0xa000fb8, 0x24020008, 0x3422021, 0x24020016, 0x14620005, 0x24020017, 0x24020012, 0xa082003f, 0xa000fc2, 0x94a70008, 0x54620006, 0x94a70008, 0x93620005, 0x2403fffe, 0x431024, 0xa3620005, 0x94a70008, 0x90a6001b, 0x8ca40000, 0x94a50006, 0xa000bad, 0x73c00, 0x3e00008, 0x0, 0x27440100, 0x94820008, 0x304500ff, 0x38a30082, 0x38a20084, 0x2c630001, 0x2c420001, 0x621825, 0x10600006, 0x24020083, 0x9382002d, 0x1040000d, 0x0, 0xa000c7c, 0x0, 0x14a20005, 0x24a2ff80, 0x8f430104, 0x3c026020, 0x3e00008, 0xac430014, 0x304200ff, 0x2c420002, 0x10400003, 0x24020022, 0xa000f1c, 0x0, 0x14a20003, 0x0, 0xa000f89, 0x0, 0xa000fa7, 0x0, 0x9363007e, 0x9362007a, 0x14430009, 0x2021, 0x93620000, 0x24030050, 0x304200ff, 0x14430004, 0x24040001, 0x9362007e, 0x24420001, 0xa362007e, 0x3e00008, 0x801021, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4401c0, 0xa34201c4, 0x3c021000, 0x3e00008, 0xaf4201f8, 0x27bdffe8, 0xafbf0010, 0x9362003f, 0x2403000a, 0x304200ff, 0x14430046, 0x0, 0x8f630054, 0x8f62004c, 0x1062007f, 0x3603021, 0x93620000, 0x24030050, 0x304200ff, 0x1443002f, 0x0, 0x8f440140, 0x3c020800, 0x8c4200e0, 0x2403ff80, 0x821021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x8f650054, 0x3c03000a, 0x822021, 0x3084007f, 0x3441021, 0x431021, 0xac450108, 0x9762003c, 0x8f63004c, 0x3042ffff, 0x21040, 0x621821, 0xaf63005c, 0x8f630054, 0x8f64004c, 0x9762003c, 0x641823, 0x3042ffff, 0x31843, 0x21040, 0x43102a, 0x10400006, 0x0, 0x8f620054, 0x8f63004c, 0x431023, 0xa001038, 0x21043, 0x9762003c, 0x3042ffff, 0x21040, 0xacc20064, 0x24020001, 0xa0c0007c, 0xa0c20084, 0x24020c80, 0xaf420024, 0xe000fea, 0x8f440140, 0x10400049, 0x8fbf0010, 0x8f430140, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0xa00108a, 0x8fbf0010, 0x9362003f, 0x24030010, 0x304200ff, 0x14430004, 0x0, 0x8f440140, 0xa001076, 0x2821, 0x9362003f, 0x24030016, 0x304200ff, 0x14430004, 0x24020014, 0xa362003f, 0xa001084, 0x0, 0x8f62004c, 0x8f630050, 0x431023, 0x441002a, 0x8fbf0010, 0x93620081, 0x24420001, 0xa3620081, 0x93620081, 0x3c030800, 0x8c6300c0, 0x304200ff, 0x14430010, 0x0, 0x9362003f, 0x24030004, 0x304200ff, 0x14430006, 0x0, 0x8f440140, 0x8fbf0010, 0x24050093, 0xa000684, 0x27bd0018, 0x8f440140, 0x24050093, 0x8fbf0010, 0xa0006f3, 0x27bd0018, 0x8f440140, 0xe000348, 0x0, 0x8f620054, 0x2442ffff, 0xaf620054, 0x8f620050, 0x2442ffff, 0xaf620050, 0xe000351, 0x8f440140, 0x8f440140, 0x8fbf0010, 0x24050004, 0xa000356, 0x27bd0018, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8f420188, 0x9363007e, 0x21402, 0x304400ff, 0x306300ff, 0x1464000d, 0x0, 0x93620080, 0x304200ff, 0x10440009, 0x0, 0xa3640080, 0x93620000, 0x24030050, 0x304200ff, 0x14430004, 0x0, 0xa0007bb, 0x8f440180, 0xa3640080, 0x3e00008, 0x0, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x93620005, 0x24030030, 0x30420030, 0x14430089, 0x808021, 0x3c020800, 0x8c420020, 0x10400080, 0x2002021, 0xe000577, 0x0, 0x8f850020, 0xacb00000, 0x9362003e, 0x9363003f, 0x304200ff, 0x21200, 0x306300ff, 0x431025, 0xaca20004, 0x93620082, 0x21600, 0x21603, 0x4410005, 0x0, 0x3c030800, 0x8c630048, 0xa0010c8, 0x0, 0x9362003e, 0x30420040, 0x14400003, 0x1821, 0x93620081, 0x304300ff, 0x93620082, 0x31e00, 0x304200ff, 0x21400, 0x621825, 0xaca30008, 0x8f620040, 0xaca2000c, 0x8f620048, 0xaca20010, 0x8f62004c, 0xaca20014, 0x8f620050, 0x8f63004c, 0x431023, 0x4410003, 0x0, 0xa0010dc, 0x8f62004c, 0x8f620050, 0xaca20018, 0x3c020800, 0x94424ed6, 0x3c03c00b, 0x2021, 0x431025, 0xe00059c, 0xaca2001c, 0x8f620054, 0x8f840020, 0xac820000, 0x8f620058, 0xac820004, 0x8f62005c, 0xac820008, 0x8f620060, 0x8f430074, 0x431021, 0xac82000c, 0x8f620064, 0xac820010, 0x97630068, 0x9762006a, 0x31c00, 0x3042ffff, 0x621825, 0xac830014, 0x93620082, 0x24030080, 0x304200ff, 0x14430003, 0x0, 0xa001110, 0xac800018, 0x8f63000c, 0x24020001, 0x1062000e, 0x2402ffff, 0x9362003e, 0x30420040, 0x1440000a, 0x2402ffff, 0x8f63000c, 0x8f420074, 0x621823, 0x3c020800, 0x621024, 0x14400002, 0x2821, 0x602821, 0x51043, 0xac820018, 0x3c020800, 0x94424ed6, 0x3c03c00c, 0x2021, 0x431025, 0x8f830020, 0xe00059c, 0xac62001c, 0x8f620018, 0x8f830020, 0x3c050800, 0x94a54ed6, 0x24040001, 0xac620000, 0xac600004, 0x8f66006c, 0x3c02400d, 0xa22825, 0xac660008, 0x8f6200dc, 0xac62000c, 0xac600010, 0x93620005, 0x21600, 0xac620014, 0xac600018, 0xe00059c, 0xac65001c, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa3600005, 0xa000505, 0x27bd0018, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x9742007c, 0x30c600ff, 0xa0860084, 0x3047ffff, 0x24020005, 0x14c2000b, 0x24e34650, 0x90a20112, 0x2c420007, 0x10400007, 0x24e30a00, 0x90a30112, 0x24020014, 0x621004, 0xe21021, 0xa001148, 0x3047ffff, 0x3067ffff, 0x3e00008, 0xa4870014, 0xac87004c, 0x8ca20108, 0x804021, 0xa04821, 0xe21023, 0x30c600ff, 0x18400003, 0x93aa0013, 0x24e2fffc, 0xaca20108, 0x30c20001, 0x10400008, 0x0, 0x8d020050, 0xe21023, 0x4410013, 0x24060005, 0x8d020054, 0x10e20010, 0x0, 0x8d020054, 0x14e2001a, 0x0, 0x3c020800, 0x8c4200d8, 0x30420020, 0x1040000a, 0x24020001, 0x91030078, 0x91020083, 0x14430006, 0x24020001, 0x1002021, 0x1202821, 0x24060004, 0xa001136, 0x0, 0xa1000084, 0x11400009, 0xa5020014, 0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0x3e00008, 0x0, 0x27bdffe8, 0x8fa90028, 0xafbf0010, 0x804021, 0xe91823, 0x18600073, 0x30c600ff, 0xa080007c, 0xa0800081, 0x8ca20108, 0xe21023, 0x440004d, 0x0, 0x8c820050, 0x9483003c, 0x8c840064, 0x474823, 0x3063ffff, 0x1231821, 0x83202b, 0x10800004, 0x0, 0x8d020064, 0xa001199, 0xe21021, 0x9502003c, 0x3042ffff, 0x1221021, 0xe21021, 0xad02005c, 0x9502003c, 0x8d03005c, 0x3042ffff, 0x21040, 0xe21021, 0x43102b, 0x10400003, 0x0, 0xa0011a8, 0x8d02005c, 0x9502003c, 0x3042ffff, 0x21040, 0xe21021, 0xad02005c, 0xa1000084, 0xad07004c, 0x8ca20108, 0xe21023, 0x18400002, 0x24e2fffc, 0xaca20108, 0x30c20001, 0x1040000a, 0x0, 0x8d020050, 0xe21023, 0x4410004, 0x1002021, 0x8d020054, 0x14e20003, 0x0, 0xa0011ca, 0x24060005, 0x8d020054, 0x14e20047, 0x8fbf0010, 0x3c020800, 0x8c4200d8, 0x30420020, 0x1040000a, 0x24020001, 0x91030078, 0x91020083, 0x14430006, 0x24020001, 0x1002021, 0x24060004, 0x8fbf0010, 0xa001136, 0x27bd0018, 0xa1000084, 0xa5020014, 0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, 0xa0011ef, 0x0, 0x8c82005c, 0x491023, 0x43102b, 0x54400001, 0xac87005c, 0x9502003c, 0x3042ffff, 0x62102b, 0x14400007, 0x24020002, 0x9502003c, 0x8d03005c, 0x3042ffff, 0x621821, 0xad03005c, 0x24020002, 0xad07004c, 0xa1020084, 0xe000fea, 0x8f440100, 0x1040001b, 0x8fbf0010, 0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0xa001205, 0x8fbf0010, 0x30c20010, 0x1040000e, 0x8fbf0010, 0x8c83005c, 0x9482003c, 0x691823, 0x3042ffff, 0x621821, 0x3c023fff, 0x3444ffff, 0x83102b, 0x54400001, 0x801821, 0x1231021, 0xad02005c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0x8faa0028, 0xafbf0010, 0x804021, 0xea4823, 0x19200021, 0x30c600ff, 0x8c83005c, 0x8c820064, 0x6a1823, 0x43102b, 0x50400010, 0x691821, 0x94a20110, 0x1221021, 0xa4a20110, 0x94a20110, 0x3042ffff, 0x43102b, 0x1440000a, 0x3c023fff, 0x94a20110, 0x431023, 0xa4a20110, 0x9482003c, 0x3042ffff, 0xa001224, 0x621821, 0xa4a00110, 0x3c023fff, 0x3444ffff, 0x83102b, 0x54400001, 0x801821, 0x671021, 0xad02005c, 0xa100007c, 0xa00126c, 0xa1000081, 0x30c20010, 0x1040003c, 0x0, 0x8c820050, 0x4a1023, 0x18400038, 0x0, 0x9082007c, 0x24420001, 0xa082007c, 0x9082007c, 0x3c030800, 0x8c630024, 0x304200ff, 0x43102b, 0x1440005c, 0x8fbf0010, 0x8ca20108, 0xe21023, 0x18400058, 0x0, 0x8c830054, 0x9482003c, 0x6a1823, 0x3042ffff, 0x31843, 0x21040, 0x43102a, 0x10400005, 0x0, 0x8c820054, 0x4a1023, 0xa001253, 0x21043, 0x9482003c, 0x3042ffff, 0x21040, 0xad020064, 0x9502003c, 0x8d040064, 0x9503003c, 0x3042ffff, 0x21040, 0x822021, 0x3063ffff, 0x831821, 0x1431021, 0xad02005c, 0x8d020054, 0xaca20108, 0x24020002, 0xa1020084, 0xe000fea, 0x8f440100, 0x10400035, 0x8fbf0010, 0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, 0xa001295, 0x0, 0xad07004c, 0x8ca20108, 0xe21023, 0x18400002, 0x24e2fffc, 0xaca20108, 0x30c20001, 0x1040000a, 0x0, 0x8d020050, 0xe21023, 0x4410004, 0x1002021, 0x8d020054, 0x14e20003, 0x0, 0xa00128c, 0x24060005, 0x8d020054, 0x14e2001a, 0x8fbf0010, 0x3c020800, 0x8c4200d8, 0x30420020, 0x1040000a, 0x24020001, 0x91030078, 0x91020083, 0x14430006, 0x24020001, 0x1002021, 0x24060004, 0x8fbf0010, 0xa001136, 0x27bd0018, 0xa1000084, 0xa5020014, 0x8f430100, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf4301c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8faa0010, 0x8c820050, 0x804021, 0x30c600ff, 0x4a1023, 0xa04821, 0x18400007, 0xe01821, 0x24020001, 0xa0800084, 0xa0a00112, 0xa4820014, 0xa001207, 0xafaa0010, 0xa0800081, 0xad07004c, 0x8ca20108, 0xe21023, 0x18400002, 0x24e2fffc, 0xaca20108, 0x30c20001, 0x10400008, 0x0, 0x8d020050, 0x621023, 0x4410013, 0x24060005, 0x8d020054, 0x10620010, 0x0, 0x8d020054, 0x14620011, 0x0, 0x3c020800, 0x8c4200d8, 0x30420020, 0x1040000a, 0x24020001, 0x91030078, 0x91020083, 0x14430006, 0x24020001, 0x1002021, 0x1202821, 0x24060004, 0xa001136, 0x0, 0xa1000084, 0xa5020014, 0x3e00008, 0x0, 0x27bdffe0, 0xafbf0018, 0x27420100, 0x9046000a, 0x8c480014, 0x8c8b004c, 0x90820084, 0x30c900ff, 0x1681823, 0x304a00ff, 0x1c60001a, 0x2d460006, 0x24020001, 0x1421004, 0x10c00016, 0x30430003, 0x1203021, 0x1003821, 0x14600007, 0x304c000c, 0x15800009, 0x30420030, 0x1440000b, 0x8fbf0018, 0xa0012f6, 0x0, 0xe001207, 0xafab0010, 0xa0012f6, 0x8fbf0018, 0xe00117c, 0xafab0010, 0xa0012f6, 0x8fbf0018, 0xafab0010, 0xe00129c, 0xafaa0014, 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x24020003, 0xa0820084, 0x8c820054, 0x3e00008, 0xaca20108, 0x3c020008, 0x3421821, 0x90620081, 0x24060043, 0x3c076019, 0x24420001, 0xa0620081, 0x90630081, 0x3c020800, 0x8c4200c0, 0x306300ff, 0x14620010, 0x2403ff80, 0x3c020800, 0x8c4200e0, 0x821021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x3c03000a, 0x821021, 0x3042007f, 0x3421021, 0x431021, 0x944500d4, 0xa000bd2, 0x30a5ffff, 0x3e00008, 0x0, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0x8f420180, 0x808021, 0xa08821, 0xe0012fd, 0x402021, 0xa2000084, 0x8e020054, 0x8fbf0018, 0x8fb00010, 0xae220108, 0x8fb10014, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c020008, 0xafb00010, 0xafbf0018, 0xafb10014, 0x3428021, 0x8f510140, 0x92030084, 0x8e040050, 0x8e02004c, 0x14820040, 0x306600ff, 0x3c020800, 0x8c4200e0, 0x2403ff80, 0x2221021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4200e0, 0x9744007c, 0x92050081, 0x2221021, 0x3042007f, 0x3421821, 0x3c02000a, 0x621821, 0x14a0000b, 0x3084ffff, 0x24020005, 0x54c20014, 0x248205dc, 0x90620112, 0x24420001, 0xa0620112, 0x24020c80, 0xaf420024, 0xa001355, 0x24020005, 0xa0600112, 0x24020005, 0x14c20009, 0x248205dc, 0x92020081, 0x2c420007, 0x50400005, 0x24820a00, 0x92030081, 0x24020014, 0x621004, 0x821021, 0x3044ffff, 0xa6040014, 0xe0012fd, 0x2202021, 0x9602003c, 0x8e03004c, 0x2202021, 0x3042ffff, 0x21040, 0x621821, 0xe000348, 0xae03005c, 0x9202007d, 0x2202021, 0x34420040, 0xe000351, 0xa202007d, 0x8f4201f8, 0x440fffe, 0x24020002, 0xaf5101c0, 0xa34201c4, 0x3c021000, 0xaf4201f8, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x0 }; u32 bce_COM_b06FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_COM_b06FwRodata[(0x14/4) + 1] = { 0x8000ec8, 0x8000f10, 0x8000f50, 0x8000f9c, 0x8000fd0, 0x0 }; u32 bce_COM_b06FwBss[(0xbc/4) + 1] = { 0x0 }; u32 bce_COM_b06FwSbss[(0x38/4) + 1] = { 0x0 }; u32 bce_COM_b06FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_RXP_b06FwReleaseMajor = 0x1; int bce_RXP_b06FwReleaseMinor = 0x0; int bce_RXP_b06FwReleaseFix = 0x0; u32 bce_RXP_b06FwStartAddr = 0x080031d8; u32 bce_RXP_b06FwTextAddr = 0x08000000; int bce_RXP_b06FwTextLen = 0x70dc; u32 bce_RXP_b06FwDataAddr = 0x00000000; int bce_RXP_b06FwDataLen = 0x0; u32 bce_RXP_b06FwRodataAddr = 0x080070dc; int bce_RXP_b06FwRodataLen = 0x24; u32 bce_RXP_b06FwBssAddr = 0x08007178; int bce_RXP_b06FwBssLen = 0x450; u32 bce_RXP_b06FwSbssAddr = 0x08007120; int bce_RXP_b06FwSbssLen = 0x54; u32 bce_RXP_b06FwSDataAddr = 0x00000000; int bce_RXP_b06FwSDataLen = 0x0; u32 bce_RXP_b06FwText[(0x70dc/4) + 1] = { 0xa000c76, 0x0, 0x0, 0xd, 0x72787034, 0x2e362e31, 0x37000000, 0x4061103, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24427120, 0x3c030800, 0x246375c8, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, 0x261031d8, 0x3c1c0800, 0x279c7120, 0xe001164, 0x0, 0xd, 0x30a5ffff, 0x30c600ff, 0x27430180, 0x8f4201b8, 0x440fffe, 0x24020002, 0xac640000, 0xa4650008, 0xa066000a, 0xa062000b, 0x3c021000, 0xac670018, 0x3e00008, 0xaf4201b8, 0x3c036000, 0x8c624ff8, 0x440fffe, 0x3c020200, 0xac644fc0, 0xac624fc4, 0x3c021000, 0x3e00008, 0xac624ff8, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0xe0011b3, 0x808021, 0x93620005, 0x2403fffe, 0x2002021, 0x431024, 0x8fbf0014, 0x8fb00010, 0xa3620005, 0xa0011bc, 0x27bd0018, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0xe000ea4, 0x808021, 0x93620000, 0x24030050, 0x304200ff, 0x14430004, 0x24020100, 0xaf420180, 0xa000cc1, 0x2002021, 0xaf400180, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000f7d, 0x27bd0018, 0x27bdff98, 0xafbe0060, 0xafb7005c, 0xafb20048, 0xafbf0064, 0xafb60058, 0xafb50054, 0xafb40050, 0xafb3004c, 0xafb10044, 0xafb00040, 0x8f500128, 0x9363003f, 0x93620005, 0xf021, 0x307200ff, 0x21027, 0x30420001, 0xb821, 0x14400066, 0xafa00038, 0x93420116, 0x93430112, 0x304200ff, 0x306300ff, 0x3422021, 0x3431021, 0x24454000, 0x8f820000, 0x10400018, 0x24884000, 0x8f420104, 0x3c030001, 0x431024, 0x10400013, 0x0, 0x8ca3000c, 0x8f620030, 0x146201a2, 0x24020001, 0x8ca30010, 0x8f62002c, 0x1462019e, 0x24020001, 0x9762003a, 0x94834000, 0x3042ffff, 0x14620199, 0x24020001, 0x97620038, 0x95030002, 0x3042ffff, 0x14620194, 0x24020001, 0x93620000, 0x304300ff, 0x24020020, 0x10620005, 0x24020050, 0x10620006, 0x0, 0xa000d0b, 0x0, 0xd, 0xa000d14, 0xafa00030, 0x3c1e0800, 0x27de7188, 0xa000d14, 0xafa00030, 0x3c020800, 0x8c4200dc, 0x24420001, 0x3c010800, 0xac2200dc, 0xe00127d, 0x0, 0xa000e8f, 0x8fbf0064, 0x8f420104, 0x3c030020, 0x9113000d, 0x431024, 0x2202b, 0x42140, 0xafa40030, 0x8f430104, 0x3c020040, 0x621824, 0x14600002, 0x34870040, 0x803821, 0x32620020, 0xafa70030, 0x14400002, 0x34e60080, 0xe03021, 0x10c0000b, 0xafa60030, 0x93c50008, 0x8f67004c, 0x2002021, 0x52b00, 0x34a50081, 0x30a5f081, 0xe000c8d, 0x30c600ff, 0xa000e8c, 0x0, 0x9362003e, 0x30420040, 0x1040000e, 0x24020004, 0x56420006, 0x24020012, 0x2002021, 0xe0013da, 0x1003021, 0xa000e8f, 0x8fbf0064, 0x16420005, 0x0, 0xe000cb2, 0x2021, 0xa000e8f, 0x8fbf0064, 0x9742011a, 0x9504000e, 0x93630035, 0x32650004, 0x3055ffff, 0x642004, 0xafa4003c, 0x8d110004, 0x10a00015, 0x8d140008, 0x9362003e, 0x30420040, 0x10400007, 0x0, 0xe00133b, 0x2202021, 0x1040000d, 0x0, 0xa000e8c, 0x0, 0x8f620044, 0x2221023, 0x4400132, 0x0, 0x8f620048, 0x2221023, 0x441012e, 0x24040016, 0xa000da2, 0x8fc20004, 0x8f620048, 0x2221023, 0x4400008, 0x0, 0x3c020800, 0x8c423100, 0x24420001, 0x3c010800, 0xac223100, 0xa000e81, 0x0, 0x8f620040, 0x2221023, 0x18400009, 0x2402000c, 0x3c020800, 0x8c423100, 0x327300fc, 0xa821, 0x24420001, 0x3c010800, 0xac223100, 0x2402000c, 0xafa20030, 0x8f620040, 0x511823, 0x1860000d, 0x2a3102a, 0x14400103, 0x0, 0x14750006, 0x2a31023, 0x3a620001, 0x30420001, 0x144000fd, 0x0, 0x2a31023, 0x2238821, 0xa000d8a, 0x3055ffff, 0x1821, 0x32620002, 0x1040001a, 0x32620010, 0x9362003e, 0x30420040, 0x50400011, 0x8fc20004, 0xe0011b3, 0x2002021, 0x24020018, 0xa362003f, 0x93620005, 0x2403fffe, 0x2002021, 0x431024, 0xe0011bc, 0xa3620005, 0x24040039, 0x2821, 0xe001324, 0x24060018, 0xa000e8e, 0x24020001, 0x24040017, 0x40f809, 0x0, 0xa000e8e, 0x24020001, 0x104000e5, 0x0, 0x8f64004c, 0x8f620054, 0x2821023, 0x1c4000e0, 0x2841023, 0x4420001, 0x80a021, 0xafa30018, 0xafb10010, 0xafb50014, 0x93420120, 0x8f660040, 0x9764003c, 0x304200ff, 0x3422821, 0x8fa2003c, 0xa32821, 0x8fa30030, 0x3084ffff, 0x44202b, 0x8fc20000, 0x641825, 0x24a54000, 0xafa50020, 0xafa60028, 0xafa30030, 0xafa60024, 0xafa0002c, 0xafb40034, 0x40f809, 0x27a40010, 0x8fa20030, 0x30420002, 0x54400001, 0x327300fe, 0x9362003e, 0x30420040, 0x10400037, 0x8fa30014, 0x8f620054, 0x1682001a, 0x32620001, 0x24020014, 0x12420010, 0x2a420015, 0x10400006, 0x24020016, 0x2402000c, 0x12420007, 0x32620001, 0xa000deb, 0x0, 0x12420005, 0x32620001, 0xa000deb, 0x0, 0xa000de6, 0x2417000e, 0xa000de6, 0x24170010, 0xa000dea, 0x24170012, 0x93620023, 0x2403ffbd, 0x431024, 0xa3620023, 0x32620001, 0x10400019, 0x8fa30014, 0x2402000c, 0x1242000e, 0x2a42000d, 0x10400006, 0x2402000e, 0x2402000a, 0x12420007, 0x8fa20024, 0xa000e03, 0x24420001, 0x12420008, 0x8fa20024, 0xa000e03, 0x24420001, 0xa000e01, 0x24170008, 0x2402000e, 0x16e20002, 0x24170016, 0x24170010, 0x8fa20024, 0x24420001, 0xafa20024, 0x8fa30014, 0x8fa20024, 0x8f760040, 0x431021, 0xaf620040, 0x8fa2003c, 0x93640036, 0x8f630040, 0x2829021, 0x3402ffff, 0x821004, 0x621821, 0xaf630048, 0x8fa60030, 0x30c20008, 0x1040000e, 0x0, 0x8f620058, 0x16420004, 0x30c600ff, 0x9742011a, 0x50400001, 0x34c60010, 0x93c50008, 0x8fa70034, 0x2002021, 0x52b00, 0x34a50080, 0xe000c8d, 0x30a5f080, 0x8f620040, 0x561023, 0x18400017, 0x8fa20018, 0x3c020800, 0x8c423198, 0x30420010, 0x10400009, 0x24020001, 0x97620068, 0x14400006, 0x24020001, 0xa7620068, 0x9742007a, 0x2442000a, 0xa000e47, 0xa7620012, 0xa7620012, 0xe0011b3, 0x2002021, 0x9362007d, 0x24030001, 0x2002021, 0x34420001, 0xa000e45, 0xafa30038, 0x1840000a, 0x0, 0xe0011b3, 0x2002021, 0x9362007d, 0x24030001, 0x2002021, 0xafa30038, 0x34420004, 0xe0011bc, 0xa362007d, 0x9362003e, 0x30420040, 0x1440000c, 0x32620001, 0x1040000a, 0x0, 0x8f630040, 0x8fc20004, 0x24040018, 0x24630001, 0x40f809, 0xaf630040, 0x8fa20030, 0xa000e8e, 0x30420004, 0x8f620058, 0x10520010, 0x0, 0x8f620018, 0x2221023, 0x1c400008, 0x24020001, 0x8f620018, 0x16220009, 0x0, 0x8f62001c, 0x2821023, 0x4400005, 0x24020001, 0xaf720058, 0xafa20038, 0xaf710018, 0xaf74001c, 0x12e0000b, 0x8fa30038, 0xe0011b3, 0x2002021, 0xa377003f, 0xe0011bc, 0x2002021, 0x2e03021, 0x24040037, 0xe001324, 0x2821, 0x8fa30038, 0x10600003, 0x0, 0xe000c9b, 0x2002021, 0x12a00005, 0x1821, 0x8fa20030, 0x30420004, 0x50400011, 0x601021, 0x24030001, 0xa000e8e, 0x601021, 0xe0011b3, 0x2002021, 0x9362007d, 0x2002021, 0x34420004, 0xe0011bc, 0xa362007d, 0xe000c9b, 0x2002021, 0xa000e8e, 0x24020001, 0xaf400044, 0x24020001, 0x8fbf0064, 0x8fbe0060, 0x8fb7005c, 0x8fb60058, 0x8fb50054, 0x8fb40050, 0x8fb3004c, 0x8fb20048, 0x8fb10044, 0x8fb00040, 0x3e00008, 0x27bd0068, 0x8c870004, 0x8c860000, 0x1021, 0xe53821, 0xe5282b, 0xc23021, 0xc53021, 0xac870004, 0x3e00008, 0xac860000, 0x8f4201b8, 0x440fffe, 0x24020800, 0xaf4201b8, 0x3e00008, 0x0, 0x3c020008, 0x3422821, 0x94a20048, 0x3084ffff, 0x1040001b, 0x24840012, 0x94a20048, 0x3042ffff, 0x44102a, 0x10400017, 0x24020003, 0x2402001a, 0x93430120, 0xa342018b, 0x8f820008, 0x306300ff, 0x30424000, 0x10400009, 0x2463fffe, 0x94a20048, 0x3042ffff, 0x43102b, 0x14400005, 0x8f820014, 0xa7430194, 0xa000ec8, 0x34420001, 0x8f820014, 0x2403fffe, 0x431024, 0x3e00008, 0xaf820014, 0x24020003, 0x3e00008, 0xa342018b, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x30b1ffff, 0x30d0ffff, 0x30f2ffff, 0x8f4201b8, 0x440fffe, 0x0, 0xaf440180, 0xaf440020, 0xe000eaa, 0x2002021, 0x8f830008, 0x8f840014, 0xa751018c, 0xa750018e, 0xa7430190, 0x8f830004, 0x30828000, 0xaf4301a8, 0xa7520188, 0x1040000e, 0x8f820014, 0x93420116, 0x304200fc, 0x24420004, 0x5a1021, 0x8c424000, 0x3042ffff, 0x14400006, 0x8f820014, 0x3c02ffff, 0x34427fff, 0x821024, 0xaf820014, 0x8f820014, 0x2403bfff, 0x431024, 0xa74201a6, 0x9743010c, 0x8f420104, 0x31c00, 0x3042ffff, 0x621825, 0xaf4301ac, 0x3c021000, 0xaf4201b8, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb20018, 0x30d2ffff, 0xaf440180, 0xaf440020, 0x2402021, 0xafb10014, 0xafb00010, 0x30f1ffff, 0xafbf001c, 0xe000eaa, 0x30b0ffff, 0x8f830014, 0x2402bfff, 0xa750018c, 0x621824, 0x8f820008, 0xa752018e, 0xa7510188, 0xa74301a6, 0xa7420190, 0x3c021000, 0xaf4201b8, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27430180, 0x8f4201b8, 0x440fffe, 0x24022000, 0xa4620008, 0x24020002, 0xa062000b, 0xa4600010, 0x3c021000, 0xaf4201b8, 0x3e00008, 0x0, 0x8f470070, 0x93420112, 0x8f830008, 0x27bdfff0, 0x304200ff, 0x22882, 0x30620100, 0x3021, 0x10400043, 0x24a40003, 0x30624000, 0x10400010, 0x30622000, 0x41080, 0x5a1021, 0x8c434000, 0x24a40004, 0x41080, 0xafa30000, 0x5a1021, 0x8c424000, 0xafa20004, 0x93420116, 0x304200fc, 0x5a1021, 0x8c424000, 0xa000f56, 0xafa20008, 0x1040002f, 0x3021, 0x41080, 0x5a1021, 0x8c434000, 0x24a40004, 0x41080, 0xafa30000, 0x5a1021, 0x8c424000, 0xafa00008, 0xafa20004, 0x8fa80008, 0x3021, 0x2021, 0x240a0008, 0x3c090800, 0x25290100, 0x3a41021, 0x148a0003, 0x42a00, 0x1100000a, 0x0, 0x90420000, 0x24840001, 0x2c83000c, 0xa21021, 0x21080, 0x491021, 0x8c420000, 0x1460fff3, 0xc23026, 0x3c040800, 0x8c843104, 0x8f420070, 0x2c830020, 0x10600009, 0x473823, 0x3c030800, 0x24633108, 0x41080, 0x431021, 0x24830001, 0xac470000, 0x3c010800, 0xac233104, 0xaf860004, 0x24060001, 0xc01021, 0x3e00008, 0x27bd0010, 0x3c020800, 0x8c420038, 0x27bdffd0, 0xafb50024, 0xafb3001c, 0xafbf0028, 0xafb40020, 0xafb20018, 0xafb10014, 0xafb00010, 0x3c150800, 0x26b50038, 0x14400002, 0x2453ffff, 0x9821, 0x8f840008, 0x30824000, 0x1040000a, 0x30828000, 0x3c020020, 0x821024, 0x50400006, 0x30828000, 0x8f820014, 0x2403bfff, 0x831824, 0xa000fa2, 0x34421000, 0x1040000a, 0x3c020020, 0x821024, 0x10400007, 0x8f820014, 0x3c03ffff, 0x34637fff, 0x831824, 0x34428000, 0xaf820014, 0xaf830008, 0xe000f2e, 0x0, 0x14400008, 0x8f840008, 0x9743011e, 0x9742011c, 0x3063ffff, 0x21400, 0x621825, 0xaf830004, 0x8f840008, 0x9742010c, 0x30831000, 0x10600011, 0x3046ffff, 0x30820020, 0x1440000f, 0x24120005, 0x3c021000, 0x821024, 0x1040000b, 0x24120001, 0x3c030e00, 0x3c020dff, 0x831824, 0x3442ffff, 0x43102b, 0x10400004, 0x0, 0xa000fc4, 0x24120005, 0x24120001, 0x3c050800, 0x8ca50034, 0x54a00019, 0x8f840008, 0x8f82001c, 0x54400016, 0x8f840008, 0x8f820014, 0x30424000, 0x54400012, 0x8f840008, 0x3c021f01, 0x821024, 0x3c031000, 0x1443000d, 0x8f840008, 0x30c20200, 0x1440000b, 0x3c020001, 0x9746010e, 0x36470002, 0x2021, 0x24c60004, 0x30c6ffff, 0xe000f05, 0x24050002, 0xa00108d, 0x8fbf0028, 0x3c020001, 0x821024, 0x1040000c, 0x8f830014, 0x3c020800, 0x8c4200d8, 0x9746010e, 0x24040080, 0x24420001, 0x30c6ffff, 0x24050002, 0x3c010800, 0xac2200d8, 0xa00108a, 0x24070003, 0x30624000, 0x10400006, 0x3c021000, 0x3c020f00, 0x821024, 0x50400001, 0x93420116, 0x3c021000, 0x821024, 0x10400044, 0x0, 0x3c020800, 0x8c420030, 0x1040000c, 0x30624000, 0x1040000a, 0x3c030f00, 0x831824, 0x3c020100, 0x43102b, 0x14400005, 0x0, 0x9746010e, 0x36470002, 0xa001087, 0x24040080, 0x10a0000d, 0x30820100, 0x1040000b, 0x3c020f00, 0x821024, 0x3c030200, 0x10430007, 0x8f820004, 0x531024, 0x551021, 0x90420004, 0x24420004, 0xa00103a, 0x221c0, 0x0, 0x8f860008, 0x3c050800, 0x8ca500d0, 0x61602, 0x3050000f, 0x38a20001, 0x2c420001, 0x2e03000c, 0x431024, 0x14400018, 0x1021c0, 0x2602fffc, 0x2c420004, 0x54400014, 0x2021, 0x38a20002, 0x2c420001, 0x431024, 0x10400003, 0x61242, 0xa00103a, 0x2021, 0x10182b, 0x431024, 0x50400009, 0x1021c0, 0x9746010e, 0x2021, 0x24050002, 0x24c60004, 0x30c6ffff, 0xe000ecd, 0x3247fffb, 0x1021c0, 0x9746010e, 0xa001087, 0x36470002, 0x8f424000, 0x3c110800, 0x8e310024, 0x30420100, 0x10400040, 0x32220001, 0x2208021, 0x10a00017, 0x32540004, 0x30820100, 0x10400015, 0x24020001, 0x3c020f00, 0x821024, 0x3c030200, 0x1043000f, 0x8f820004, 0x9746010e, 0x2403821, 0x531024, 0x551021, 0x90440004, 0x24c60004, 0x30c6ffff, 0x24840004, 0x421c0, 0xe000ecd, 0x24050002, 0x2402fffe, 0x2228024, 0x3252fffb, 0x24020001, 0x16020007, 0x32020001, 0x32420004, 0x50400001, 0x36520002, 0x9746010e, 0xa001086, 0x2403821, 0x1040000a, 0x32020004, 0x9746010e, 0x2403821, 0x2021, 0x24c60004, 0x30c6ffff, 0xe000ecd, 0x24050002, 0x3252fffb, 0x32020004, 0x1040000b, 0x8f820008, 0x30420800, 0x10400008, 0x0, 0x9746010e, 0x2403821, 0x24040100, 0x24c60004, 0x30c6ffff, 0xe000ecd, 0x24050002, 0x56800010, 0x8fbf0028, 0xe000f22, 0x0, 0xa00108d, 0x8fbf0028, 0x1040000a, 0x8fbf0028, 0x9746010e, 0x36470002, 0x2021, 0x24c60004, 0x30c6ffff, 0x24050002, 0xe000ecd, 0x0, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x1021, 0x3e00008, 0x27bd0030, 0x27430180, 0x8f4201b8, 0x440fffe, 0x0, 0x8f420148, 0x21402, 0xa4620008, 0x24020002, 0xa062000b, 0x8f420148, 0xa4620010, 0x8f420144, 0xac620024, 0x3c021000, 0x3e00008, 0xaf4201b8, 0x27bdffe8, 0xafb00010, 0x3c04600c, 0xafbf0014, 0x8c825000, 0x2403ff7f, 0x3c1a8000, 0x431024, 0x3442380c, 0xac825000, 0x24020003, 0x3c106000, 0xaf420008, 0x8e020808, 0x3c1b8008, 0x3c010800, 0xac200020, 0x3042fff0, 0x38420010, 0x2c420001, 0xe001b39, 0xaf820000, 0x3c04ffff, 0x3c020400, 0x34830806, 0x3442000c, 0xae021948, 0xae03194c, 0x3c056016, 0x8e021980, 0x8ca30000, 0x34420200, 0x641824, 0xae021980, 0x3c025353, 0x14620003, 0x34a47c00, 0x8ca20004, 0x502021, 0x8c82007c, 0x8c830078, 0x8fbf0014, 0x8fb00010, 0x27bd0018, 0xaf820018, 0x3e00008, 0xaf830010, 0x27bdffe8, 0xafbf0010, 0x8f434000, 0x3402ffff, 0x3c040800, 0x248400f0, 0x10620007, 0x0, 0x8f424000, 0x3c040800, 0x248400e8, 0x30420100, 0x10400009, 0x0, 0x9745010e, 0xe000e9a, 0x30a5ffff, 0x9745010e, 0x3c040800, 0x248431c8, 0xa0010fc, 0x8fbf0010, 0x8f434000, 0x8f820010, 0x3c040800, 0x248400e0, 0x1462000a, 0x0, 0x8f434004, 0x8f820018, 0x14620006, 0x0, 0x9745010e, 0x3c040800, 0x248431b8, 0xa0010fc, 0x8fbf0010, 0x9745010e, 0x8fbf0010, 0x30a5ffff, 0xa000e9a, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x8f420128, 0xaf420020, 0x8f420104, 0x8f430100, 0xaf820008, 0xe000ea4, 0xaf830014, 0xe0010d5, 0x0, 0x3c020800, 0x8c4200c0, 0x10400008, 0x8f840008, 0x3c020800, 0x8c4200c4, 0x24420001, 0x3c010800, 0xac2200c4, 0xa001135, 0x0, 0x3c020010, 0x821024, 0x1440000a, 0x8f830014, 0x3c020800, 0x8c420020, 0x24420001, 0x3c010800, 0xac220020, 0xe000f7d, 0x2021, 0xa001133, 0x0, 0x2402bfff, 0x621024, 0x10400008, 0x0, 0x240287ff, 0x621024, 0x14400008, 0x3c020060, 0x821024, 0x10400005, 0x0, 0xe000cc5, 0x0, 0xa001133, 0x0, 0xe00119d, 0x0, 0x10400006, 0x3c024000, 0x8f430124, 0x3c026020, 0xac430014, 0x0, 0x3c024000, 0xaf420138, 0x0, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x8f420140, 0x3c044000, 0xaf420020, 0x8f430148, 0x3c027000, 0x621824, 0x10640010, 0x83102b, 0x14400006, 0x3c026000, 0x3c022000, 0x10620007, 0x0, 0xa00115f, 0x3c024000, 0x1062000b, 0x3c024000, 0xa00115f, 0x0, 0xe001096, 0x0, 0xa00115f, 0x3c024000, 0xe0011c1, 0x0, 0xa00115f, 0x3c024000, 0xe001b46, 0x0, 0x3c024000, 0xaf420178, 0x0, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0014, 0xe0010a6, 0xafb00010, 0x3c028000, 0x34420070, 0x8c430000, 0x403821, 0xaf830020, 0x603021, 0x8ce80000, 0x3c050800, 0x8ca500fc, 0x3c040800, 0x8c8400f8, 0x1063023, 0x1021, 0xa62821, 0xa6302b, 0x822021, 0x862021, 0x3c010800, 0xac2500fc, 0x3c010800, 0xac2400f8, 0x8f500000, 0x32020003, 0x1040ffee, 0x1003021, 0x8ce60000, 0x3c050800, 0x8ca500fc, 0x3c040800, 0x8c8400f8, 0xc83023, 0xa62821, 0x1021, 0xa6302b, 0x822021, 0x862021, 0x32070001, 0x3c010800, 0xac2500fc, 0xaf880020, 0x3c010800, 0xac2400f8, 0x10e00004, 0x32020002, 0xe0010ff, 0x0, 0x32020002, 0x5040ffd1, 0x3c028000, 0xe00113f, 0x0, 0xa001169, 0x3c028000, 0x8f420100, 0x3042003e, 0x14400011, 0x24020001, 0xaf400048, 0x8f420100, 0x304207c0, 0x10400005, 0x0, 0xaf40004c, 0xaf400050, 0x3e00008, 0x24020001, 0xaf400054, 0xaf400040, 0x8f420100, 0x30423800, 0x54400001, 0xaf400044, 0x24020001, 0x3e00008, 0x0, 0x3c029000, 0x34420001, 0x822025, 0xaf440020, 0x8f420020, 0x440fffe, 0x0, 0x3e00008, 0x0, 0x3c028000, 0x34420001, 0x822025, 0x3e00008, 0xaf440020, 0x27bdffe0, 0xafb20018, 0xafbf001c, 0xafb10014, 0xafb00010, 0x8f500140, 0x8f510148, 0x3c028000, 0x119402, 0x2222024, 0x324300ff, 0x2402000e, 0x1062008a, 0x2862000f, 0x10400012, 0x28620037, 0x24020006, 0x1062003b, 0x28620007, 0x10400007, 0x24020009, 0x1060001a, 0x24020001, 0x10620025, 0x0, 0xa001276, 0x0, 0x1062007b, 0x2402000b, 0x1062005b, 0x3222ffff, 0xa001276, 0x0, 0x10400008, 0x24020038, 0x28620035, 0x10400080, 0x2402001f, 0x1062007e, 0x0, 0xa001276, 0x0, 0x1062007a, 0x24020080, 0x10620042, 0x0, 0xa001276, 0x0, 0x8f4201b8, 0x440fffe, 0x24020001, 0xaf500180, 0xaf400184, 0xa7520188, 0xa342018a, 0x24020002, 0xa342018b, 0xa7510190, 0x8f420144, 0xa001271, 0xaf4201a4, 0x1080000a, 0x24020002, 0x3c010800, 0xa0227178, 0x3c010800, 0xac307180, 0x8f420144, 0x3c010800, 0xac22717c, 0xa001278, 0x8fbf001c, 0x8f4201b8, 0x440fffe, 0x24020002, 0xa00125b, 0x0, 0x8f4201b8, 0x440fffe, 0x0, 0xaf500180, 0x3c020800, 0x90427178, 0x10400003, 0x1821, 0x3c030800, 0x8c637180, 0xaf430184, 0xa7520188, 0x3c020800, 0x90427178, 0x1821, 0x34420001, 0xa342018a, 0x24020002, 0xa342018b, 0xa7510190, 0x8f420144, 0xaf4201a4, 0x3c020800, 0x90427178, 0x10400003, 0x3c021000, 0x3c030800, 0x8c63717c, 0xaf4301a8, 0xaf4201b8, 0x3c010800, 0xa0207178, 0xa001278, 0x8fbf001c, 0x8f4201b8, 0x440fffe, 0x24020002, 0xa342018b, 0xa7520188, 0xa7510190, 0x8f420144, 0xa7420192, 0xa001273, 0x3c021000, 0x1440001d, 0x0, 0x93620005, 0x30420004, 0x14400037, 0x0, 0xe0011b3, 0x2002021, 0x93620005, 0x2002021, 0x34420004, 0xe0011bc, 0xa3620005, 0x93620005, 0x30420004, 0x14400002, 0x0, 0xd, 0x93620000, 0x24030020, 0x304200ff, 0x14430008, 0x0, 0x8f4201b8, 0x440fffe, 0x24020005, 0xaf500180, 0xa342018b, 0x3c021000, 0xaf4201b8, 0x8f4201b8, 0x440fffe, 0x24020002, 0xaf400180, 0xaf500184, 0xa7520188, 0xa342018a, 0xa342018b, 0xa7510190, 0xaf4001a4, 0x8f420144, 0xaf4201a8, 0xa001273, 0x3c021000, 0x8f4201b8, 0x440fffe, 0x24020001, 0xaf500180, 0xaf400184, 0xa7520188, 0xa342018a, 0x24020002, 0xa342018b, 0xa7510190, 0xaf4001a4, 0xaf4001a8, 0x3c021000, 0xaf4201b8, 0xa001278, 0x8fbf001c, 0xd, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0010, 0xe000ea4, 0x0, 0xaf400180, 0x8fbf0010, 0x2021, 0xa000f7d, 0x27bd0018, 0x3084ffff, 0x30a5ffff, 0x1821, 0x10800007, 0x0, 0x30820001, 0x10400002, 0x42042, 0x651821, 0xa001289, 0x52840, 0x3e00008, 0x601021, 0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, 0xac820000, 0xa001293, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x9482000c, 0xa08821, 0x24900014, 0x21302, 0x21080, 0x829021, 0x3021, 0xa02021, 0xe00129c, 0x24050005, 0x212102b, 0x10400057, 0x1021, 0x92030000, 0x2c620009, 0x50400051, 0x92020001, 0x31080, 0x3c030800, 0x246370dc, 0x431021, 0x8c420000, 0x400008, 0x0, 0x92030001, 0x2402000c, 0x14620048, 0x24020001, 0x2501023, 0x2c42000a, 0x14400036, 0x26100002, 0x8e220000, 0x34420100, 0xae220000, 0x92020000, 0x92030001, 0x92040002, 0x92050003, 0x31c00, 0x21600, 0x431025, 0x42200, 0x441025, 0x451025, 0x26100004, 0xae220004, 0x92020000, 0x92030001, 0x92040002, 0x92050003, 0x21600, 0x31c00, 0x431025, 0x42200, 0x441025, 0x451025, 0x26100004, 0xa0012b6, 0xae220008, 0x92030001, 0x24020004, 0x14620016, 0x26100002, 0x92020000, 0x92040001, 0x8e230000, 0x21200, 0x441025, 0x34630004, 0x26100002, 0xae22000c, 0xa0012b6, 0xae230000, 0x92030001, 0x24020003, 0x14620008, 0x26100002, 0x8e220000, 0x92030000, 0x26100001, 0x34420008, 0xa2230010, 0xa0012b6, 0xae220000, 0xa00130f, 0x24020001, 0x92030001, 0x24020002, 0x10620002, 0x26040002, 0x2402021, 0xa0012b6, 0x808021, 0xa0012b6, 0x26100001, 0x92020001, 0xa0012b6, 0x2028021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0xe0011b3, 0x808021, 0x9362007d, 0x2002021, 0x34420020, 0xe0011bc, 0xa362007d, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000c9b, 0x27bd0018, 0x308300ff, 0x30a500ff, 0x30c600ff, 0x27470180, 0x8f4201b8, 0x440fffe, 0x0, 0x8f420128, 0x34634000, 0xace20000, 0x24020001, 0xace00004, 0xa4e30008, 0xa0e2000a, 0x24020002, 0xa0e2000b, 0x3c021000, 0xa4e50010, 0xace00024, 0xace00028, 0xa4e60012, 0x3e00008, 0xaf4201b8, 0x27bdffe8, 0xafbf0010, 0x9362003f, 0x24030012, 0x304200ff, 0x1043000d, 0x803021, 0x8f620044, 0x821023, 0x440000a, 0x8fbf0010, 0x8f620048, 0x24040039, 0x2821, 0xc21023, 0x4410004, 0x24060012, 0xe001324, 0x0, 0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, 0x27bdffc8, 0xafb1002c, 0xa08821, 0xafb20030, 0x27a50010, 0x809021, 0x2202021, 0xafbf0034, 0xe0012a7, 0xafb00028, 0x10400009, 0x2402021, 0x8e220008, 0xaf620084, 0xe001315, 0xaf600040, 0x24040038, 0x2405008d, 0xa0013d1, 0x24060012, 0x93620034, 0x93630037, 0x8f640084, 0x304200ff, 0x306300ff, 0x432821, 0xa4202b, 0x1080000b, 0x0, 0x9763003c, 0x8f620084, 0x3063ffff, 0x451023, 0x62182b, 0x14600004, 0x0, 0x8f620084, 0xa00137b, 0x458023, 0x9762003c, 0x3050ffff, 0x8fa30010, 0x30620004, 0x50400003, 0x2e020218, 0x8fa2001c, 0x202102b, 0x14400005, 0x2002021, 0x30620004, 0x10400002, 0x24040218, 0x8fa4001c, 0x2c820080, 0x10400002, 0x808021, 0x24100080, 0xe0011b3, 0x2402021, 0x24020001, 0xaf62000c, 0x9362003e, 0x102040, 0x3042007f, 0xa362003e, 0x8e220004, 0x24420001, 0xaf620040, 0xa770003c, 0x8f620050, 0x9623000e, 0x431021, 0xaf620058, 0x8f620050, 0x441021, 0xaf62005c, 0x8e220004, 0xaf620018, 0x8e220008, 0xaf62001c, 0x8fa20010, 0x30420008, 0x5440000a, 0x93a20020, 0xa3600036, 0x93620036, 0x2403ffdf, 0xa3620035, 0x9362003e, 0x431024, 0xa362003e, 0xa0013b1, 0x8e220008, 0xa3620035, 0x8e220008, 0xaf62004c, 0x8f620024, 0x8f630040, 0x431021, 0xaf620048, 0x93620000, 0x24030050, 0x304200ff, 0x14430012, 0x2403ff80, 0x3c020800, 0x8c4231a0, 0x2421021, 0x431024, 0xaf420028, 0x3c020800, 0x8c4231a0, 0x8e240008, 0x3c03000c, 0x2421021, 0x3042007f, 0x3421021, 0x431021, 0xac4400d8, 0x8e230008, 0xaf820028, 0xac4300dc, 0xe0011bc, 0x2402021, 0x24040038, 0x2821, 0x2406000a, 0xe001324, 0x0, 0x8fbf0034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, 0x24020001, 0x3e00008, 0x27bd0038, 0x27bdffe8, 0xafbf0010, 0x90c7000d, 0xc02821, 0x30e60010, 0x10c0000a, 0x30e20004, 0x8ca30008, 0x8f620054, 0x10620006, 0x30e20004, 0x14400017, 0x8fbf0010, 0x2021, 0xa000cb2, 0x27bd0018, 0x1040000d, 0x30e30012, 0x10c00010, 0x8fbf0010, 0x8ca30008, 0x8f620054, 0x1462000d, 0x24020001, 0x24040038, 0x2405008d, 0xe001324, 0x24060012, 0xa0013fd, 0x8fbf0010, 0x24020012, 0x14620003, 0x8fbf0010, 0xa001352, 0x27bd0018, 0x24020001, 0x3e00008, 0x27bd0018, 0x27bdfff8, 0x27420180, 0xafa20000, 0x308a00ff, 0x8f4201b8, 0x440fffe, 0x0, 0x8f460128, 0x3c020800, 0x8c4231a0, 0x2403ff80, 0xaf860050, 0xc21021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4231a0, 0x8fa90000, 0x8fa80000, 0xc21021, 0x3042007f, 0x3421821, 0x3c02000a, 0x621821, 0x946400d4, 0x8fa70000, 0x8fa50000, 0x24020002, 0xaf830028, 0xa0a2000b, 0x8fa30000, 0x35426000, 0x3084ffff, 0xa4e20008, 0x3c021000, 0xad260000, 0xad040004, 0xac600024, 0x27bd0008, 0xaf4201b8, 0x3e00008, 0x24020001, 0x8c820004, 0x8f830028, 0x451023, 0xac820004, 0x90620063, 0x3042007f, 0xa0620063, 0x8c820020, 0x93830030, 0x8f850028, 0x34420002, 0xaf830044, 0xa7800042, 0xac820020, 0xa4a000e4, 0x90a20063, 0x2403ffbf, 0x431024, 0x3e00008, 0xa0a20063, 0x27430180, 0x8f4201b8, 0x440fffe, 0x8f820050, 0xac620000, 0x8f420124, 0xac620004, 0x24026083, 0xa4620008, 0x24020002, 0xa062000b, 0x3c021000, 0x3e00008, 0xaf4201b8, 0x8f880044, 0x93820030, 0x8f830028, 0x3c070800, 0x24e77594, 0x481023, 0x304200ff, 0x304900fc, 0x24650088, 0x8f860048, 0x304a0003, 0x11200009, 0x2021, 0x24820004, 0x8ca30000, 0x304400ff, 0x89102a, 0xace30000, 0x24a50004, 0x1440fff9, 0x24e70004, 0x11400009, 0x2021, 0x24820001, 0x90a30000, 0x304400ff, 0x8a102b, 0xa0e30000, 0x24a50001, 0x1440fff9, 0x24e70001, 0x30c20003, 0x14400004, 0x8f850044, 0x31020003, 0x1040000d, 0x0, 0x10a00009, 0x2021, 0x24820001, 0x90c30000, 0x304400ff, 0x85102b, 0xa0e30000, 0x24c60001, 0x1440fff9, 0x24e70001, 0x3e00008, 0x0, 0x1100fffd, 0x2021, 0x24820004, 0x8cc30000, 0x304400ff, 0x88102b, 0xace30000, 0x24c60004, 0x1440fff9, 0x24e70004, 0x3e00008, 0x0, 0x8f830044, 0x93820030, 0x30c600ff, 0x30a500ff, 0x431023, 0x304300ff, 0x8f820028, 0x803821, 0x431021, 0x14c00002, 0x24480088, 0x833821, 0x30e20003, 0x14400005, 0x30a20003, 0x14400003, 0x30620003, 0x1040000d, 0x0, 0x10a00009, 0x2021, 0x24820001, 0x90e30000, 0x304400ff, 0x85102b, 0xa1030000, 0x24e70001, 0x1440fff9, 0x25080001, 0x3e00008, 0x0, 0x10a0fffd, 0x2021, 0x24820004, 0x8ce30000, 0x304400ff, 0x85102b, 0xad030000, 0x24e70004, 0x1440fff9, 0x25080004, 0x3e00008, 0x0, 0x27bdfff8, 0x2402ffff, 0xafa20000, 0x803821, 0x2405002f, 0x3c090800, 0x25297194, 0x240800ff, 0x2406ffff, 0x90e20000, 0x24a3ffff, 0x62202, 0xc21026, 0x304200ff, 0x21080, 0x491021, 0x8c420000, 0x306500ff, 0x24e70001, 0x14a8fff5, 0x823026, 0x61027, 0xafa20004, 0xafa20000, 0x2821, 0x27a60004, 0xc51023, 0x90440003, 0x24a20001, 0xbd1821, 0x304500ff, 0x2ca20004, 0x1440fff9, 0xa0640000, 0x8fa20000, 0x3e00008, 0x27bd0008, 0x804821, 0x30aaffff, 0x30c600ff, 0x30e7ffff, 0x27480180, 0x8f4201b8, 0x440fffe, 0x8f820050, 0xad020000, 0x8f420124, 0xad020004, 0x8d220020, 0xa5070008, 0xa102000a, 0x24020016, 0xa102000b, 0x93430120, 0x8d220008, 0x8d240004, 0x306300ff, 0x431021, 0x97830042, 0x441021, 0x8d250024, 0x431023, 0x3c030800, 0x8c6331a0, 0x8f840028, 0xa502000c, 0x246300e8, 0x2402ffff, 0xa50a000e, 0xa5030010, 0xa5060012, 0xad050018, 0xad020024, 0x94820114, 0x2403fff7, 0x3042ffff, 0xad020028, 0x8c820118, 0xad02002c, 0x3c021000, 0xad000030, 0xaf4201b8, 0x8d220020, 0x431024, 0x3e00008, 0xad220020, 0x8f820028, 0x30e7ffff, 0x804821, 0x904200d3, 0x30a5ffff, 0x30c600ff, 0x21100, 0x30420f00, 0xe23825, 0x27480180, 0x8f4201b8, 0x440fffe, 0x8f820050, 0xad020000, 0x8f420124, 0xad020004, 0x8d220020, 0xa5070008, 0xa102000a, 0x24020017, 0xa102000b, 0x93430120, 0x8d220008, 0x8d240004, 0x306300ff, 0x431021, 0x97830042, 0x441021, 0x8f840028, 0x431023, 0x3c030800, 0x8c6331a0, 0xa502000c, 0xa505000e, 0x246300e8, 0xa5030010, 0xa5060012, 0xad000014, 0x8d220024, 0xad020018, 0x8c82005c, 0xad02001c, 0x8c820058, 0xad020020, 0x2402ffff, 0xad020024, 0x948200e6, 0x3042ffff, 0xad020028, 0x94820060, 0x948300be, 0x30427fff, 0x3063ffff, 0x21200, 0x431021, 0xad02002c, 0x3c021000, 0xad000030, 0xaf4201b8, 0x948200be, 0x2403fff7, 0xa21021, 0xa48200be, 0x8d220020, 0x431024, 0x3e00008, 0xad220020, 0x27430180, 0x8f4201b8, 0x440fffe, 0x24020018, 0xac640000, 0xa062000b, 0x8f820028, 0x944200e6, 0xa4620010, 0x3c021000, 0xac600030, 0x3e00008, 0xaf4201b8, 0x27430180, 0x8f4201b8, 0x440fffe, 0x8f82002c, 0x9442001c, 0x3042ffff, 0x211c0, 0xac620000, 0x24020019, 0xa062000b, 0x3c021000, 0xac600030, 0x3e00008, 0xaf4201b8, 0x8f870034, 0x30c300ff, 0x8f4201b8, 0x440fffe, 0x8f820050, 0x34636000, 0xaca20000, 0x9382004c, 0xa0a20005, 0x8ce20010, 0xa4a20006, 0xa4a30008, 0x8c820020, 0x2403fff7, 0xa0a2000a, 0x24020002, 0xa0a2000b, 0x8ce20000, 0xaca20010, 0x8ce20004, 0xaca20014, 0x8ce2001c, 0xaca20024, 0x8ce20020, 0xaca20028, 0x8ce2002c, 0xaca2002c, 0x8c820024, 0xaca20018, 0x3c021000, 0xaf4201b8, 0x8c820020, 0x431024, 0x3e00008, 0xac820020, 0x9382004c, 0x24030001, 0x27bdffe8, 0x433004, 0x2c420020, 0xafb00010, 0xafbf0014, 0x2410fffe, 0x10400005, 0x27450180, 0x3c020800, 0x8c423190, 0xa00159c, 0x461024, 0x3c020800, 0x8c423194, 0x461024, 0x14400007, 0x24060084, 0x8f830028, 0x2410ffff, 0x90620062, 0x3042000f, 0x34420040, 0xa0620062, 0xe001568, 0x0, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x8f83002c, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x9062000d, 0xa09021, 0x30d100ff, 0x3042007f, 0xa062000d, 0x8f850028, 0x8e430018, 0x808021, 0x8ca2007c, 0x14620005, 0x2402000e, 0x90a20063, 0x34420020, 0xa0015c5, 0xa0a20063, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430047, 0x2404ffff, 0x52200045, 0x2021, 0x8e430000, 0x3c020010, 0x621024, 0x50400004, 0x3c020008, 0x2002021, 0xa0015d4, 0x24020015, 0x621024, 0x50400009, 0x8e450000, 0x2002021, 0x24020014, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430033, 0x2404ffff, 0x8e450000, 0x3c020002, 0xa21024, 0x10400016, 0x3c020004, 0x8f86002c, 0x8cc20014, 0x8cc30010, 0x8cc40014, 0x431023, 0x44102b, 0x50400005, 0x2002021, 0x8e43002c, 0x8cc20010, 0x10620003, 0x2002021, 0xa001605, 0x24020012, 0x3c020004, 0xa21024, 0x5040001c, 0x2021, 0x2002021, 0xa001605, 0x24020013, 0xa21024, 0x10400006, 0x8f83002c, 0x8c620010, 0x50400013, 0x2021, 0xa0015ff, 0x2002021, 0x8c620010, 0x50400004, 0x8e42002c, 0x2002021, 0xa001605, 0x24020011, 0x50400009, 0x2021, 0x2002021, 0x24020017, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430002, 0x2404ffff, 0x2021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x93830030, 0x27bdffe0, 0x24020034, 0xafb20018, 0xafb10014, 0xafbf001c, 0xafb00010, 0x808821, 0x1462000c, 0xa09021, 0x8f840034, 0xe0014b4, 0x8c900030, 0x12020007, 0x24020005, 0x2202021, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043005f, 0x2404ffff, 0x92420004, 0x10400009, 0x8f820028, 0x2202021, 0x2402000c, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430055, 0x2404ffff, 0x8f820028, 0xa3800024, 0x8e430004, 0x8c440080, 0x3c0200ff, 0x3442ffff, 0x621824, 0x83202b, 0x10800008, 0xaf83003c, 0x2202021, 0x24020019, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430044, 0x2404ffff, 0x97820042, 0x8f870044, 0x8f88003c, 0x471023, 0x11000039, 0xa7820042, 0x8f860028, 0x3045ffff, 0x8f840050, 0x90c300bc, 0x3c020800, 0x8c4231a0, 0x31882, 0x30700001, 0x822021, 0x101080, 0x1021021, 0xa2282b, 0x10a00010, 0x24820088, 0x8f840034, 0x1082000d, 0x3c033f01, 0x8e420000, 0x431024, 0x3c032500, 0x14430006, 0x30e500ff, 0x8c820000, 0xacc20088, 0x8c820010, 0xa001665, 0xacc20098, 0xe001489, 0x3021, 0x8f85003c, 0x93830024, 0x8f860028, 0x30a20003, 0x21023, 0x30420003, 0x433821, 0xa3870024, 0x94c400e4, 0xa22821, 0x8f830044, 0x8f820048, 0x34841000, 0xa4c400e4, 0x431021, 0xaf820048, 0x1200000e, 0xaf850044, 0x24e20004, 0xa3820024, 0x94c200e4, 0x24a30004, 0xaf830044, 0x34422000, 0xa4c200e4, 0xa001685, 0x2021, 0x8f820048, 0xaf800044, 0x471021, 0xaf820048, 0x2021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x8f860028, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x90c20063, 0x30420020, 0x10400008, 0x30a500ff, 0x8cc2007c, 0x2403ffdf, 0x24420001, 0xacc2007c, 0x90c20063, 0x431024, 0xa0c20063, 0x10a00023, 0x8f830028, 0x27500180, 0x2002821, 0xe001568, 0x24060082, 0x8f820028, 0x90420063, 0x30420040, 0x50400019, 0xa380004c, 0x8f830034, 0x8f4201b8, 0x440fffe, 0x8f820050, 0xae020000, 0x24026082, 0xa6020008, 0x24020002, 0xa202000b, 0x8c620008, 0xae020010, 0x8c62000c, 0xae020014, 0x8c620014, 0xae020018, 0x8c620018, 0xae020024, 0x8c620024, 0xae020028, 0x8c620028, 0xae02002c, 0x3c021000, 0xaf4201b8, 0xa380004c, 0x8f830028, 0x8fbf0014, 0x8fb00010, 0x90620063, 0x27bd0018, 0x3042007f, 0xa0620063, 0x97820042, 0x8f860044, 0x8f850028, 0x93830030, 0x461023, 0xa7820042, 0xa4a000e4, 0x90a40063, 0x8f820048, 0xaf830044, 0x2403ffbf, 0x461021, 0x832024, 0xaf820048, 0xa0a40063, 0x8f820028, 0xa04000bd, 0x8f820028, 0x3e00008, 0xa44000be, 0x8f8a0028, 0x27bdffe0, 0xafb10014, 0xafb00010, 0x8f880044, 0xafbf0018, 0x93890024, 0x954200e4, 0x30d100ff, 0x109182b, 0x808021, 0x30ac00ff, 0x3047ffff, 0x5821, 0x14600003, 0x310600ff, 0x1203021, 0x1095823, 0x97830042, 0x68102b, 0x14400032, 0x0, 0x14680007, 0x24020001, 0x8e020020, 0x2403fffb, 0x34e78000, 0x431024, 0xae020020, 0x24020001, 0x34e70880, 0x15820005, 0x3165ffff, 0xe0014d9, 0x2002021, 0xa00171a, 0x2002021, 0xe00150a, 0x2002021, 0xe00154d, 0x8f840050, 0x8f840028, 0x94820060, 0x24420001, 0xa4820060, 0x94820060, 0x3c030800, 0x8c633188, 0x30427fff, 0x5443000f, 0x2002021, 0x94820060, 0x24038000, 0x431024, 0xa4820060, 0x90820060, 0x90830060, 0x304200ff, 0x211c2, 0x21027, 0x211c0, 0x3063007f, 0x621825, 0xa0830060, 0x2002021, 0x2202821, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa00168c, 0x27bd0020, 0x91420063, 0x2403ff80, 0x431025, 0xa1420063, 0x97820042, 0x3048ffff, 0x11000020, 0x93830024, 0x8f840028, 0x4b1023, 0x304600ff, 0x948300e4, 0x2402efff, 0x168282b, 0x621824, 0xa48300e4, 0x14a00003, 0x8e020020, 0x1005821, 0x3021, 0x2403fffb, 0x34e78000, 0x431024, 0xae020020, 0x24020001, 0x15820005, 0x3165ffff, 0xe0014d9, 0x2002021, 0xa001742, 0x97830042, 0xe00150a, 0x2002021, 0x97830042, 0x8f820044, 0xa7800042, 0x431023, 0xaf820044, 0x93830024, 0x8f820028, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, 0x3e00008, 0xa04300bd, 0x8f820028, 0x90430088, 0x904500bd, 0x24490088, 0x3063003f, 0x2463ffe0, 0x24020001, 0x623804, 0x2c630020, 0x30e80019, 0xa3850024, 0x10600010, 0xaf890034, 0x3c028000, 0x34420002, 0x24050001, 0x24060001, 0x15000008, 0xe21824, 0x2821, 0x14600005, 0x30e20020, 0x10400005, 0x24050001, 0x91260001, 0x30c60001, 0xa0016d9, 0x0, 0x3e00008, 0x0, 0x27bdffd8, 0xafb00010, 0x8f900034, 0xafb40020, 0xafb10014, 0xafbf0024, 0xafb3001c, 0xafb20018, 0x8e050010, 0x3c020800, 0x8c4231b0, 0x8f860038, 0x30a33fff, 0x62182b, 0x8cd30014, 0x808821, 0x8cd20020, 0x10600078, 0xa021, 0x90c3000d, 0x2402ff80, 0x431024, 0x304200ff, 0x50400073, 0x2202021, 0x51382, 0x30420003, 0x5440006f, 0x2202021, 0x94c3001c, 0x8f820028, 0x8e050028, 0xa4430114, 0x8cc20010, 0x2621823, 0x14650007, 0x2402001f, 0x8f82003c, 0x621021, 0x262102b, 0x10400008, 0x8f83002c, 0x24020018, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043006f, 0x2404ffff, 0x8f83002c, 0x8f84003c, 0x8c620010, 0x2449021, 0x441023, 0xac620010, 0x8f820028, 0xac720020, 0x8c420068, 0x52102b, 0x10400009, 0x8f830038, 0x2202021, 0x2402001d, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043005c, 0x2404ffff, 0x8f830038, 0x8e020024, 0x8c630024, 0x10430007, 0x2202021, 0x2402001c, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430051, 0x2404ffff, 0x8f84002c, 0x8c820024, 0x24420001, 0xac820024, 0x12530004, 0x8f820028, 0x8c420068, 0x5642000e, 0x8e020000, 0x8e020000, 0x3c030080, 0x431024, 0x1440000d, 0x2402001a, 0x2202021, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043003d, 0x2404ffff, 0xa0017d6, 0x8e020014, 0x3c030080, 0x431024, 0x50400003, 0x8e020014, 0xac800020, 0x8e020014, 0x2412ffff, 0x10520006, 0x2402001b, 0x2202021, 0xe00158b, 0xa382004c, 0x1052002d, 0x2404ffff, 0x8e030000, 0x3c020001, 0x621024, 0x1040001f, 0x3c020080, 0x621024, 0x14400008, 0x2202021, 0x2402001a, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043001f, 0x2404ffff, 0x2202021, 0x2002821, 0xe0015ab, 0x24060001, 0x2403ffff, 0x2404ffff, 0x1443000e, 0x24140001, 0xa00180b, 0x8fbf0024, 0x2202021, 0x2402000d, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, 0xa00158b, 0xa382004c, 0x8f83002c, 0x2202021, 0x2803021, 0x94620036, 0x24050001, 0x24420001, 0xe0016d9, 0xa4620036, 0x2021, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8f830028, 0x27bdffd8, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0024, 0x90620063, 0x8f910034, 0x2412ffff, 0x34420040, 0x92250000, 0xa0620063, 0x8e220010, 0x809821, 0x30b0003f, 0x10520006, 0x360a021, 0x2402000d, 0xe00158b, 0xa382004c, 0x10520052, 0x2404ffff, 0x8f830028, 0x8e220018, 0x8c63007c, 0x10430007, 0x2602021, 0x2402000e, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430047, 0x2404ffff, 0x24040020, 0x12040004, 0x8f830028, 0x90620063, 0x34420020, 0xa0620063, 0x8f85003c, 0x10a0001e, 0x0, 0x56040004, 0x8f820028, 0x2602021, 0xa001855, 0x2402000a, 0x9683000a, 0x2404fffd, 0x94420060, 0x3042ffff, 0x10430034, 0x8fbf0024, 0x3c020800, 0x8c42318c, 0x45102b, 0x14400006, 0x2602021, 0x2821, 0xe0016d9, 0x24060001, 0xa00187c, 0x2021, 0x2402002d, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430023, 0x2404ffff, 0xa00187c, 0x2021, 0x16040005, 0x8f840028, 0x8e230014, 0x2402ffff, 0x50620018, 0x2602021, 0x94820060, 0x24420001, 0xa4820060, 0x94820060, 0x3c030800, 0x8c633188, 0x30427fff, 0x5443000f, 0x2602021, 0x94820060, 0x24038000, 0x431024, 0xa4820060, 0x90820060, 0x90830060, 0x304200ff, 0x211c2, 0x21027, 0x211c0, 0x3063007f, 0x621825, 0xa0830060, 0x2602021, 0xe00168c, 0x24050001, 0x2021, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8f830028, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x90620063, 0x8f870034, 0x808021, 0x34420040, 0x8ce60010, 0xa0620063, 0x3c030800, 0x8c6331b0, 0x30c23fff, 0x43102b, 0x1040004e, 0x8f850038, 0x2402ff80, 0x90a3000d, 0x431024, 0x304200ff, 0x50400049, 0x2002021, 0x61382, 0x30480003, 0x24020002, 0x55020044, 0x2002021, 0x94a2001c, 0x8f850028, 0x24030023, 0xa4a20114, 0x8ce60000, 0x61602, 0x3042003f, 0x10430010, 0x3c030083, 0x8ce30018, 0x8ca2007c, 0x10620006, 0x2402000e, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430038, 0x2404ffff, 0x8f830028, 0x90620063, 0x34420020, 0xa0620063, 0xa0018c1, 0x8f83002c, 0xc31024, 0x14430007, 0x8f83002c, 0x90a20062, 0x3042000f, 0x34420020, 0xa0a20062, 0xa3880040, 0x8f83002c, 0x9062000d, 0x3042007f, 0xa062000d, 0x8f83003c, 0x10600018, 0x2002021, 0x8f840038, 0x8c820010, 0x43102b, 0x10400009, 0x24020018, 0x2002021, 0xe00158b, 0xa382004c, 0x2403ffff, 0x10430018, 0x2404ffff, 0xa0018e9, 0x2021, 0x8c820010, 0x24050001, 0x2002021, 0x431023, 0x8f83002c, 0x24060001, 0xe0016d9, 0xac620010, 0xa0018e9, 0x2021, 0xe00168c, 0x24050001, 0xa0018e9, 0x2021, 0x2002021, 0x2402000d, 0x8fbf0014, 0x8fb00010, 0x27bd0018, 0xa00158b, 0xa382004c, 0x8fbf0014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0018, 0x27bdffd8, 0xafb00010, 0x8f900034, 0xafb3001c, 0xafbf0020, 0xafb20018, 0xafb10014, 0x8e120010, 0x3c030800, 0x8c6331b0, 0x32423fff, 0x43102b, 0x1040007c, 0x809821, 0x8f850038, 0x2402ff80, 0x90a3000d, 0x431024, 0x304200ff, 0x50400076, 0x2602021, 0x121382, 0x30420003, 0x24030001, 0x54430071, 0x2602021, 0x90a2000d, 0x30420008, 0x54400003, 0x8f82003c, 0xa001919, 0x24020024, 0x50400003, 0x8e03000c, 0xa001919, 0x24020027, 0x8ca20020, 0x14620005, 0x24020020, 0x8e030008, 0x8ca20024, 0x10620008, 0x24020020, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043006a, 0x2404ffff, 0xa001944, 0x8f84002c, 0x8e020014, 0x2411ffff, 0x14510003, 0x8f870028, 0xa00193f, 0x24020025, 0x8e030018, 0x8ce2007c, 0x14620016, 0x2402000e, 0x8e030024, 0x8ca20028, 0x14620012, 0x24020021, 0x8e060028, 0x8ca2002c, 0x14c2000e, 0x2402001f, 0x8e03002c, 0x1060000b, 0x24020023, 0x8ce20068, 0x43102b, 0x14400007, 0x24020026, 0x8ca20014, 0x661821, 0x43102b, 0x50400007, 0x8f84002c, 0x24020022, 0xe00158b, 0xa382004c, 0x10510045, 0x2404ffff, 0x8f84002c, 0x2403fff7, 0x9082000d, 0x431024, 0xa082000d, 0x8f860028, 0x3c030800, 0x8c6331ac, 0x8f820050, 0x94c400e0, 0x8f85002c, 0x431021, 0x30847fff, 0x42040, 0x441021, 0x3043007f, 0x3432021, 0x3c03000e, 0x832021, 0x2403ff80, 0x431024, 0xaf42002c, 0xa4920000, 0x8ca20028, 0x24420001, 0xaca20028, 0x8ca2002c, 0x8e03002c, 0x431021, 0xaca2002c, 0x8e02002c, 0xaca20030, 0x8e020014, 0xaca20034, 0x94a2003a, 0x24420001, 0xa4a2003a, 0x94c600e0, 0x3c020800, 0x8c4231b0, 0x24c40001, 0x30837fff, 0x14620013, 0x803021, 0x24028000, 0x823024, 0x30c2ffff, 0x213c2, 0x304200ff, 0x21027, 0xa001981, 0x233c0, 0x2602021, 0x2402000d, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, 0xa00158b, 0xa382004c, 0x8f820028, 0x2602021, 0x24050001, 0xe00168c, 0xa44600e0, 0x2021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x27bdffe0, 0xafb10014, 0x8f910034, 0xafb00010, 0xafbf0018, 0x8e260010, 0x3c030800, 0x8c6331b0, 0x30c23fff, 0x43102b, 0x1040005e, 0x808021, 0x8f850038, 0x2402ff80, 0x90a3000d, 0x431024, 0x304200ff, 0x50400058, 0x2002021, 0x8f82003c, 0x10400008, 0x61382, 0x8f820028, 0x9763000a, 0x2404fffd, 0x94420060, 0x3042ffff, 0x10430055, 0x61382, 0x30420003, 0x1440000e, 0x0, 0x92220002, 0x10400005, 0x8e230024, 0x50600015, 0x92230003, 0xa0019ba, 0x2002021, 0x8ca20024, 0x50620010, 0x92230003, 0x2002021, 0xa0019c2, 0x2402000f, 0x90a2000d, 0x30420008, 0x54400009, 0x92230003, 0x2002021, 0x24020010, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043003a, 0x2404ffff, 0x92230003, 0x24020002, 0x5462000c, 0x92220003, 0x8f82003c, 0x54400009, 0x92220003, 0x2002021, 0x2402002c, 0xe00158b, 0xa382004c, 0x2403ffff, 0x1043002c, 0x2404ffff, 0x92220003, 0x2202821, 0x2002021, 0x38460010, 0x2cc60001, 0x2c420001, 0xe0015ab, 0x463025, 0x2411ffff, 0x10510021, 0x2404ffff, 0x8f83003c, 0x10600012, 0x2002021, 0x3c020800, 0x8c42318c, 0x43102b, 0x14400006, 0x0, 0x2821, 0xe0016d9, 0x24060001, 0xa001a00, 0x2021, 0x2402002d, 0xe00158b, 0xa382004c, 0x1051000f, 0x2404ffff, 0xa001a00, 0x2021, 0xe00168c, 0x24050001, 0xa001a00, 0x2021, 0x2002021, 0x2402000d, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, 0xa00158b, 0xa382004c, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x93830040, 0x27bdffe0, 0x24020002, 0xafb10014, 0xafb00010, 0x808821, 0xafbf0018, 0x8021, 0x1062008c, 0x2404fffd, 0x97850042, 0x8f830044, 0x30a2ffff, 0x43102b, 0x5440007d, 0x8f840048, 0xe00144c, 0x0, 0x3c020800, 0x24427594, 0x2202021, 0x402821, 0xe001612, 0xaf820034, 0x2409ffff, 0x1049007b, 0x2404ffff, 0x3c080800, 0x8d0875a4, 0x3c020800, 0x8c4231b0, 0x3c030800, 0x90637594, 0x31043fff, 0x82102b, 0x1040001b, 0x3067003f, 0x3c020800, 0x8c4231a8, 0x8f830050, 0x42180, 0x621821, 0x641821, 0x3062007f, 0x3422821, 0x3c02000c, 0xa22821, 0x3c020080, 0x34420001, 0x30660078, 0xc23025, 0x2402ff80, 0x621024, 0xaf420028, 0x30640007, 0xaf420804, 0x8f820028, 0x3442021, 0x24840940, 0xaf460814, 0xaf85002c, 0xaf840038, 0xac430118, 0x93830040, 0x24020003, 0x1462003b, 0x24020001, 0x24020026, 0x10e2003d, 0x28e20027, 0x10400013, 0x24020032, 0x24020022, 0x10e20038, 0x28e20023, 0x10400008, 0x24020024, 0x24020020, 0x10e20024, 0x24020021, 0x10e2001e, 0x2202021, 0xa001a7f, 0x2402000b, 0x10e2002d, 0x24020025, 0x10e20010, 0x2202021, 0xa001a7f, 0x2402000b, 0x10e2001a, 0x28e20033, 0x10400006, 0x2402003f, 0x24020031, 0x10e2000b, 0x2202021, 0xa001a7f, 0x2402000b, 0x10e20011, 0x2202021, 0xa001a7f, 0x2402000b, 0xe00176c, 0x2202021, 0xa001a9a, 0x408021, 0xe0018ee, 0x2202021, 0xa001a9a, 0x408021, 0xe00198f, 0x2202021, 0xa001a9a, 0x408021, 0x1509000e, 0x0, 0xe001813, 0x2202021, 0xa001a9a, 0x408021, 0xe00158b, 0xa382004c, 0xa001a9a, 0x408021, 0x14620017, 0x2002021, 0x24020023, 0x14e20005, 0x2402000b, 0xe001885, 0x2202021, 0xa001a9a, 0x408021, 0x2202021, 0xa382004c, 0xe00158b, 0x2410ffff, 0xa001a9b, 0x2002021, 0x30a500ff, 0xe001489, 0x24060001, 0x97830042, 0x8f820044, 0xa7800042, 0x431023, 0xaf820044, 0x2002021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, 0x8f460128, 0x3c030800, 0x8c6331a0, 0x2402ff80, 0xaf860050, 0xc31821, 0x3065007f, 0x3452821, 0x621824, 0x3c02000a, 0xaf430024, 0xa22821, 0x90a20062, 0x808821, 0xaf850028, 0x304200ff, 0x21102, 0xa3820040, 0x90a200bc, 0x30420002, 0x14400002, 0x24030034, 0x24030030, 0x8f820028, 0xa3830030, 0x93830040, 0x8c4200c0, 0xa380004c, 0xaf820044, 0x24020004, 0x10620030, 0x8f840044, 0x8e240004, 0x5080002d, 0x8f840044, 0x8e220010, 0x3083ffff, 0xa7840042, 0x1060001f, 0xaf820048, 0x8f830028, 0x2405ff80, 0x2202021, 0x90620063, 0xa21024, 0x304200ff, 0x1440000d, 0x0, 0xe001a06, 0x97900042, 0x10400010, 0x401821, 0x2402fffd, 0x54620011, 0x8e230020, 0x2002821, 0xe00142a, 0x2202021, 0xa001aec, 0x8e230020, 0x90620063, 0xa21024, 0x304200ff, 0x10400003, 0x2202021, 0xe00174e, 0x0, 0x97820042, 0x1440ffe4, 0x8f830028, 0x8e230020, 0x30620004, 0x10400006, 0x8f840044, 0x2402fffb, 0x621024, 0xe00143e, 0xae220020, 0x8f840044, 0x8f830028, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24020001, 0x27bd0020, 0x3e00008, 0xac6400c0, 0x30a500ff, 0x24030001, 0x24a90001, 0x69102b, 0x1040000c, 0x4021, 0x240a0001, 0xa31023, 0x4a3804, 0x24630001, 0x30820001, 0x69302b, 0x10400002, 0x42042, 0x1074025, 0x54c0fff8, 0xa31023, 0x3e00008, 0x1001021, 0x27bdffe0, 0x3c021edc, 0xafb20018, 0xafb10014, 0xafbf001c, 0xafb00010, 0x34526f41, 0x8821, 0x24050008, 0xe001afc, 0x2202021, 0x118080, 0x3c070800, 0x24e77194, 0x21600, 0x2071821, 0xac620000, 0x2821, 0x24a20001, 0x3045ffff, 0x8c620000, 0x2ca60008, 0x4410002, 0x22040, 0x922026, 0x14c0fff8, 0xac640000, 0x2078021, 0x8e040000, 0xe001afc, 0x24050020, 0x26230001, 0x3071ffff, 0x2e230100, 0x1460ffe5, 0xae020000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3c020800, 0x24426a84, 0x3c010800, 0xac227188, 0x3c020800, 0x24425000, 0x3c010800, 0xac22718c, 0x24020006, 0x3c010800, 0xa0227190, 0xa001b0f, 0x0, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafbf0020, 0xafb10014, 0xafb00010, 0x8f510140, 0x8f480148, 0x89402, 0x324300ff, 0x311300ff, 0x8f4201b8, 0x440fffe, 0x27500180, 0xae110000, 0x8f420144, 0xae020004, 0x24020002, 0xa6120008, 0xa202000b, 0x24020014, 0xae130024, 0x10620025, 0x28620015, 0x10400008, 0x24020015, 0x24020010, 0x10620030, 0x24020012, 0x10620009, 0x8fbf0020, 0xa001c30, 0x8fb3001c, 0x10620067, 0x24020022, 0x10620037, 0x8fbf0020, 0xa001c30, 0x8fb3001c, 0x3c020800, 0x8c4231a0, 0x2403ff80, 0x2221021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4231a0, 0x2221021, 0x3042007f, 0x3421821, 0x3c02000a, 0x621821, 0x166000b3, 0xaf830028, 0x90620062, 0x3042000f, 0x34420030, 0xa0620062, 0xa001c2f, 0x8fbf0020, 0x3c046000, 0x8c832c08, 0x3c02f003, 0x3442ffff, 0x621824, 0xac832c08, 0x3c020800, 0x8c4231a0, 0x8c832c08, 0x24420074, 0x21082, 0x21480, 0x621825, 0xac832c08, 0xa001c2f, 0x8fbf0020, 0x3c020800, 0x8c4231a0, 0x2403ff80, 0x2221021, 0x431024, 0xaf420024, 0x3c020800, 0x8c4231a0, 0x3c03000a, 0x2221021, 0x3042007f, 0x3421021, 0x431021, 0xa001c2e, 0xaf820028, 0x3c020800, 0x8c4231a0, 0x2404ff80, 0x2221021, 0x441024, 0xaf420024, 0x3c020800, 0x8c4231a0, 0x2221021, 0x3042007f, 0x3421821, 0x3c02000a, 0x621821, 0x90620063, 0x821024, 0x304200ff, 0x1040007c, 0xaf830028, 0x24620088, 0x94430012, 0x3c020800, 0x8c4231a8, 0x30633fff, 0x31980, 0x2221021, 0x431021, 0x3043007f, 0x3431821, 0x441024, 0x3c04000c, 0x641821, 0xaf420028, 0xe00155a, 0xaf83002c, 0x8f4201b8, 0x440fffe, 0x0, 0xae110000, 0x8f420144, 0xae020004, 0x24020002, 0xa6120008, 0xa202000b, 0xae130024, 0xa001c2f, 0x8fbf0020, 0x2406ff80, 0x2261024, 0xaf420020, 0x3c020800, 0x8c4231a0, 0x31043fff, 0x42180, 0x2221021, 0x461024, 0xaf420024, 0x3c030800, 0x8c6331a8, 0x3c020800, 0x8c4231a0, 0x3227007f, 0x2231821, 0x2221021, 0x641821, 0x3042007f, 0x3064007f, 0x3422821, 0x3c02000a, 0x661824, 0xa22821, 0x3442021, 0x3c02000c, 0x822021, 0xaf430028, 0x3c020008, 0x3471821, 0x629021, 0xaf850028, 0xaf84002c, 0xe00155a, 0x1008021, 0x8f4201b8, 0x440fffe, 0x8f82002c, 0x8f840028, 0x27450180, 0x9042000d, 0xacb10000, 0xa4b00006, 0x21600, 0x21603, 0x21027, 0x237c2, 0x14c00016, 0x24820088, 0x94420012, 0x32033fff, 0x30423fff, 0x14430012, 0x24026082, 0x90830063, 0x2402ff80, 0x431024, 0x304200ff, 0x5040000c, 0x24026082, 0x90820062, 0x3042000f, 0x34420040, 0xa0820062, 0x24026084, 0xa4a20008, 0x2402000d, 0xa0a20005, 0xa001c19, 0x3c022700, 0x24026082, 0xa4a20008, 0xa0a00005, 0x3c022700, 0x61c00, 0x621825, 0x24020002, 0xa0a2000b, 0xaca30010, 0xaca00014, 0xaca00024, 0xaca00028, 0xaca0002c, 0x8e42004c, 0x8f84002c, 0xaca20018, 0x9083000d, 0x2402ff80, 0x431024, 0x304200ff, 0x10400005, 0x8fbf0020, 0x9082000d, 0x3042007f, 0xa082000d, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3c021000, 0x27bd0028, 0x3e00008, 0xaf4201b8, 0x0 }; u32 bce_RXP_b06FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_RXP_b06FwRodata[(0x24/4) + 1] = { 0x8004c28, 0x8004c28, 0x8004ba0, 0x8004bd8, 0x8004c0c, 0x8004c30, 0x8004c30, 0x8004c30, 0x8004b10, 0x0 }; u32 bce_RXP_b06FwBss[(0x450/4) + 1] = { 0x0 }; u32 bce_RXP_b06FwSbss[(0x54/4) + 1] = { 0x0 }; u32 bce_RXP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_TPAT_b06FwReleaseMajor = 0x1; int bce_TPAT_b06FwReleaseMinor = 0x0; int bce_TPAT_b06FwReleaseFix = 0x0; u32 bce_TPAT_b06FwStartAddr = 0x08000488; u32 bce_TPAT_b06FwTextAddr = 0x08000400; int bce_TPAT_b06FwTextLen = 0x175c; u32 bce_TPAT_b06FwDataAddr = 0x00000000; int bce_TPAT_b06FwDataLen = 0x0; u32 bce_TPAT_b06FwRodataAddr = 0x00000000; int bce_TPAT_b06FwRodataLen = 0x0; u32 bce_TPAT_b06FwBssAddr = 0x08001bc4; int bce_TPAT_b06FwBssLen = 0x450; u32 bce_TPAT_b06FwSbssAddr = 0x08001b80; int bce_TPAT_b06FwSbssLen = 0x44; u32 bce_TPAT_b06FwSDataAddr = 0x00000000; int bce_TPAT_b06FwSDataLen = 0x0; u32 bce_TPAT_b06FwText[(0x175c/4) + 1] = { 0xa000122, 0x0, 0x0, 0xd, 0x74706134, 0x2e362e31, 0x37000000, 0x4061101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24421b80, 0x3c030800, 0x24632014, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd2ffc, 0x3a0f021, 0x3c100800, 0x26100488, 0x3c1c0800, 0x279c1b80, 0xe00015a, 0x0, 0xd, 0x3084ffff, 0x30820007, 0x8f850018, 0x10400002, 0x24830007, 0x3064fff8, 0x853021, 0x30c41fff, 0x3441821, 0x247b4000, 0xaf85001c, 0xaf840018, 0x3e00008, 0xaf440084, 0x3084ffff, 0x30820007, 0x8f850020, 0x8f860028, 0x10400002, 0x24830007, 0x3064fff8, 0x852021, 0x86182b, 0x14600002, 0xaf850024, 0x862023, 0x3442821, 0x34068000, 0xaf840020, 0xaf440080, 0xa62021, 0x3e00008, 0xaf840038, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb00010, 0xafbf0024, 0xafb40020, 0xafb10014, 0x3c086008, 0x8d145000, 0x2418ff7f, 0x3c1a8000, 0x2989824, 0x3672380c, 0xad125000, 0x8f510008, 0x3c07601c, 0x3c086000, 0x36300001, 0xaf500008, 0xaf800018, 0xaf400080, 0xaf400084, 0x8ce60008, 0x8d0f0808, 0x3c076016, 0x8cec0000, 0x31eefff0, 0x39ca0010, 0x3c0dffff, 0x340b8000, 0x3c030080, 0x34b4821, 0x2d440001, 0x18d2824, 0x3c025353, 0x3c010800, 0xac230420, 0xaf890038, 0xaf860028, 0xaf840010, 0x275b4000, 0x14a20003, 0x34e37c00, 0x8cf90004, 0x3281821, 0x8c7f007c, 0x8c650078, 0x3c028000, 0x34520070, 0xaf85003c, 0xaf9f0040, 0x3c130800, 0x26731bc4, 0x240a021, 0x8e480000, 0x8f460000, 0x38c30001, 0x30640001, 0x10800017, 0xaf880034, 0x2804821, 0x8d2d0000, 0x3c190800, 0x8f39045c, 0x3c110800, 0x8e310458, 0x1a8f823, 0x33f7821, 0x4021, 0x2283821, 0x1ff802b, 0xf07021, 0x3c010800, 0xac2f045c, 0x3c010800, 0xac2e0458, 0x8f4c0000, 0x398b0001, 0x316a0001, 0x1540ffed, 0x1a04021, 0xaf8d0034, 0x8e4e0000, 0x3c0c0800, 0x8d8c045c, 0x3c0a0800, 0x8d4a0458, 0x1c86823, 0x18d2821, 0x5821, 0xad302b, 0x14b2021, 0x861021, 0x3c010800, 0xac25045c, 0x3c010800, 0xac220458, 0x8f450108, 0x8f440100, 0x30a92000, 0xaf850000, 0xaf84000c, 0x1120000a, 0xa03021, 0x3c070800, 0x8ce7042c, 0x24ef0001, 0x3c010800, 0xac2f042c, 0x3c104000, 0xaf500138, 0xa000190, 0x0, 0x30b00200, 0x16000014, 0x24110f00, 0x10910012, 0x24070d00, 0x10870233, 0x30b00006, 0x5200fff5, 0x3c104000, 0x936d0000, 0x240c0010, 0x31a600f0, 0x10cc0269, 0x240e0070, 0x10ce02dd, 0x8f8b0014, 0x25670001, 0xaf870014, 0x3c104000, 0xaf500138, 0xa000190, 0x0, 0x97480104, 0x1100ffe5, 0x3c104000, 0x30b84000, 0x170000a2, 0x0, 0x8f590178, 0x720fffe, 0x8f870038, 0x24090008, 0x24050800, 0x8ce30008, 0xaf450178, 0xa7490140, 0xa7400142, 0x97420104, 0x8f860000, 0x3049ffff, 0x30df0001, 0x13e002d5, 0x1204021, 0x2524fffe, 0x240a0002, 0xa74a0146, 0x3088ffff, 0xa7440148, 0x3c0b0800, 0x8d6b043c, 0x156002c4, 0x8f8f000c, 0x30c30020, 0x14600002, 0x24040009, 0x24040001, 0x30cd0c00, 0x240c0400, 0x51ac0001, 0x34840004, 0xa744014a, 0x3c050800, 0x8ca50420, 0x3c020048, 0x3c190001, 0xa2f825, 0x30d80002, 0x3f92825, 0x13000004, 0x1821, 0x3c040100, 0xa42825, 0x24030001, 0x30ca0004, 0x51400005, 0xaf830008, 0x3c060010, 0xa62825, 0x24030001, 0xaf830008, 0xaf451000, 0x0, 0x0, 0x0, 0x0, 0x8f830008, 0x10600023, 0x0, 0x8f4b1000, 0x561fffe, 0x0, 0x1060001e, 0x0, 0x8f4d1000, 0x3c030020, 0x1a36024, 0x11800019, 0x8f8f0000, 0x31ee0002, 0x11c00016, 0x0, 0x97501014, 0x16000013, 0x0, 0x97451008, 0x30bfffff, 0x27f80006, 0x18c882, 0x193080, 0xc72821, 0x33110001, 0x33030003, 0x12200320, 0x8ca20000, 0xd, 0xc7f821, 0xafe20000, 0x3c190800, 0x8f390430, 0x27260001, 0x3c010800, 0xac260430, 0x8f6a0000, 0x3405ffff, 0xaf8a0004, 0x8ce20000, 0x1045029a, 0x2021, 0x8ce50000, 0x30bf0100, 0x13e0027e, 0x1002021, 0x3c070800, 0x8ce70474, 0x3c100800, 0x8e10044c, 0xe85821, 0x3c180800, 0x8f180470, 0x168882b, 0x3c080800, 0x8d080448, 0x7821, 0x2046021, 0x30f1821, 0x184702b, 0x10f6821, 0x715021, 0x1ae1021, 0x3c010800, 0xac2c044c, 0x3c010800, 0xac220448, 0x3c010800, 0xac2b0474, 0x3c010800, 0xac2a0470, 0x8f8d0018, 0x1203021, 0x31290007, 0x25ae0008, 0x31c21fff, 0x3426021, 0xaf8d001c, 0xaf820018, 0x259b4000, 0xaf420084, 0x11200003, 0x8f900020, 0x24c80007, 0x3106fff8, 0x8f840028, 0xd02821, 0xa4782b, 0x15e00002, 0xaf900024, 0xa42823, 0x3452021, 0x34038000, 0x831021, 0x3c061000, 0xaf850020, 0xaf820038, 0xaf450080, 0xaf460178, 0x8f8b0014, 0x25670001, 0xa0001dd, 0xaf870014, 0x8f620008, 0x8f670000, 0x24110030, 0x7c602, 0x330300f0, 0x107100a2, 0x24190040, 0x1479ff4b, 0x8f8b0014, 0x8f4a0178, 0x540fffe, 0x30a70200, 0x14e00003, 0x51282, 0xd, 0x51282, 0x30500003, 0x104900, 0x1307021, 0xe6880, 0x1b06021, 0xc5880, 0x1738021, 0x8e080000, 0x15000002, 0x0, 0xd, 0x8f6f0004, 0x5e202b1, 0x92030006, 0x92070005, 0x920f0004, 0x3c020001, 0x72880, 0xb06021, 0x8d890018, 0x27710008, 0x25ee0005, 0x1226821, 0xe3082, 0xad8d0018, 0x2202021, 0xe000580, 0x26050014, 0x920b0006, 0x8f7f0004, 0x3c087fff, 0xb2080, 0x913021, 0x8cc30004, 0x350affff, 0x3eac824, 0x79c021, 0xacd80004, 0x92070005, 0x92090004, 0x960d0008, 0x72880, 0xb1f821, 0x8fef0000, 0x97420104, 0x3c07ffff, 0x1e75024, 0x304effff, 0x1c96021, 0x18d5823, 0x3168ffff, 0x1482025, 0xafe40000, 0x92030007, 0x24190001, 0x10790269, 0x24060003, 0x10660279, 0x0, 0x8e190010, 0x241f000a, 0xa75f0140, 0xa7590142, 0x92030004, 0x8f860000, 0x24070001, 0xa7430144, 0xa7400146, 0x97580104, 0x30d10002, 0x3c050041, 0xa7580148, 0x1821, 0xa747014a, 0x12200003, 0x30ca0004, 0x3c050141, 0x24030001, 0x51400005, 0xaf830008, 0x3c080010, 0xa82825, 0x24030001, 0xaf830008, 0xaf451000, 0x0, 0x0, 0x0, 0x0, 0x8f8b0008, 0x11600004, 0x0, 0x8f441000, 0x481fffe, 0x0, 0x8f6a0000, 0x92070004, 0x3c050800, 0x8ca50444, 0xaf8a0004, 0x975f0104, 0x3c0f0800, 0x8def0440, 0x30e300ff, 0x33f9ffff, 0x79c021, 0xb86821, 0x1021, 0x24e6000a, 0x30c8ffff, 0x1b8482b, 0x1e27021, 0x1c96021, 0x31100007, 0x3c010800, 0xac2d0444, 0x3c010800, 0xac2c0440, 0x12000003, 0x8f8d0018, 0x250b0007, 0x3168fff8, 0x10d7021, 0x31cc1fff, 0xaf8d001c, 0xaf8c0018, 0xaf4c0084, 0x97440104, 0x34c8021, 0x3084ffff, 0x30880007, 0x11000003, 0x261b4000, 0x24890007, 0x3124fff8, 0x8f820020, 0x8f850028, 0x822021, 0x85782b, 0x15e00002, 0xaf820024, 0x852023, 0x3448821, 0x34058000, 0x2251021, 0x3c061000, 0xaf840020, 0xaf820038, 0xaf440080, 0xaf460178, 0xa000285, 0x8f8b0014, 0x8f5f0178, 0x7e0fffe, 0x30aa0200, 0x15400003, 0x54282, 0xd, 0x54282, 0x31020003, 0x27100, 0x1c26821, 0xd6080, 0x1824821, 0x92880, 0xb38021, 0x8e0b0000, 0x11600002, 0x0, 0xd, 0x8f6f000c, 0x5e001f3, 0x8f870038, 0x24190001, 0xae190000, 0x8ce30008, 0xa2000007, 0x8f780004, 0x181c02, 0x306600ff, 0x24d10005, 0x113083, 0x2cc40041, 0x14800002, 0xa2030004, 0xd, 0x8f6b0004, 0x3c0effff, 0xe02821, 0x3164ffff, 0x248f000b, 0xf4082, 0x81080, 0x474821, 0x8d2d0000, 0x26040014, 0xa60b0008, 0x1ae6024, 0xe000580, 0xad2c0000, 0x8f5f0108, 0x3c0a1000, 0x3ea3824, 0x10e001a3, 0x0, 0x97460104, 0x92030007, 0x24d1ffec, 0x34650002, 0x3224ffff, 0xa2050007, 0x96060008, 0x2cc70013, 0x54e00005, 0x92030007, 0x920a0007, 0x355f0001, 0xa21f0007, 0x92030007, 0x240b0001, 0x106b01ba, 0x24090003, 0x106901cd, 0x8f880038, 0x30cfffff, 0x25e40002, 0x4c883, 0x333f00ff, 0x1f2880, 0xa2190005, 0xa85821, 0x8d780000, 0x97510104, 0x3c03ffff, 0x3036024, 0x3222ffff, 0x4f7023, 0x25cdfffe, 0x18d4825, 0xad690000, 0x92060005, 0x3c02fff6, 0x344effff, 0x30ca00ff, 0xa3880, 0xf02021, 0x90990014, 0x3c1fff7f, 0x37e7ffff, 0x3323000f, 0x667821, 0x31f800ff, 0x182880, 0xb08821, 0x8e2d0020, 0xa86021, 0xa20f0006, 0x1ae4824, 0xae0d000c, 0xad89000c, 0x920b0006, 0x8e04000c, 0x127f824, 0xb5080, 0x150c821, 0x97260026, 0x148c021, 0x874024, 0xaf260024, 0xae08000c, 0xaf3f0020, 0xaf060010, 0x8f860000, 0x240c0010, 0x24090002, 0xa74c0140, 0xa7400142, 0xa7400144, 0xa7490146, 0x974b0104, 0x24070001, 0x30c80002, 0x256afffe, 0xa74a0148, 0x3c050009, 0xa747014a, 0x11000003, 0x1821, 0x3c050109, 0x24030001, 0x30cd0004, 0x51a00005, 0xaf830008, 0x3c060010, 0xa62825, 0x24030001, 0xaf830008, 0xaf451000, 0x0, 0x0, 0x0, 0x0, 0x92180004, 0x27110002, 0x322f0007, 0xf1023, 0x304e0007, 0xae0e0010, 0x8f900008, 0x12000004, 0x0, 0x8f431000, 0x461fffe, 0x0, 0x8f780000, 0x8f8f0018, 0x3c100800, 0x8e100444, 0xaf980004, 0x97510104, 0x25e60010, 0x30ca1fff, 0x3222ffff, 0xaf8f001c, 0xaf8a0018, 0xaf4a0084, 0x2449fffe, 0x3c0b0800, 0x8d6b0440, 0x974e0104, 0x1206821, 0x967c3, 0x20d2821, 0x31c9ffff, 0xad402b, 0x16c3821, 0xe82021, 0x34af821, 0x31390007, 0x3c010800, 0xac250444, 0x3c010800, 0xac240440, 0x13200003, 0x27fb4000, 0x25230007, 0x3069fff8, 0x8f9f0020, 0x8f840028, 0x13f3821, 0xe4c82b, 0x17200002, 0xaf9f0024, 0xe43823, 0x3472021, 0x34058000, 0x851021, 0x3c061000, 0xaf870020, 0xaf820038, 0xaf470080, 0xaf460178, 0xa000285, 0x8f8b0014, 0x97580104, 0x1300fdc2, 0x3c104000, 0x8f430178, 0x460fffe, 0x30b94000, 0x13200003, 0x3c040008, 0xd, 0x3c040008, 0xaf440140, 0x24080800, 0xaf480178, 0x8f8b0000, 0x974a0104, 0x317f0001, 0x13e000e9, 0x3146ffff, 0x24d0fffe, 0x240c0002, 0xa74c0146, 0xa7500148, 0x8f8f0018, 0x2405000d, 0xa745014a, 0x8f710000, 0x25e20008, 0x30491fff, 0x3497021, 0x30cd0007, 0xaf910004, 0xaf8f001c, 0xaf890018, 0xc03821, 0xaf490084, 0x11a00003, 0x25db4000, 0x24c60007, 0x30c7fff8, 0x8f980020, 0x8f840028, 0xf83021, 0xc4382b, 0x14e00002, 0xaf980024, 0xc43023, 0x8f8a0014, 0x3465821, 0x34088000, 0x168f821, 0x25590001, 0x3c031000, 0x3c104000, 0xaf860020, 0xaf9f0038, 0xaf460080, 0xaf430178, 0xaf990014, 0xaf500138, 0xa000190, 0x0, 0x8f690000, 0x97440104, 0x3127ffff, 0x3088ffff, 0x8f4f0178, 0x5e0fffe, 0x30ff0007, 0x1f1823, 0x30780007, 0x24e6fffe, 0x2419000a, 0xa7590140, 0xa7580142, 0xa7460144, 0xa7400146, 0xa7480148, 0x8f420108, 0x30510020, 0x16200002, 0x24030009, 0x24030001, 0x30aa0002, 0xa743014a, 0x3c040041, 0x11400003, 0x1821, 0x3c040141, 0x24030001, 0x30ab0004, 0x51600005, 0xaf830008, 0x3c050010, 0x852025, 0x24030001, 0xaf830008, 0xaf441000, 0x0, 0x0, 0x0, 0x0, 0x8f900008, 0x12000004, 0x0, 0x8f4c1000, 0x581fffe, 0x0, 0x8f780000, 0x27620008, 0x8f8d003c, 0xaf980004, 0x94460008, 0x9451000a, 0x944f000c, 0x30ceffff, 0x112400, 0x31e9ffff, 0x11cd00a2, 0x892025, 0x3c030800, 0x8c630444, 0x3c180800, 0x8f180440, 0xe85021, 0x255ffffe, 0x7f7821, 0x1021, 0x1ff302b, 0x3028821, 0x2264821, 0x3c010800, 0xac2f0444, 0x3c010800, 0xac290440, 0x24eb0008, 0x3162ffff, 0x30470007, 0x10e00003, 0x8f850018, 0x24500007, 0x3202fff8, 0x3106ffff, 0x30c80007, 0x457021, 0x31cd1fff, 0x34d6021, 0xaf85001c, 0xaf8d0018, 0x259b4000, 0xaf4d0084, 0x11000003, 0x8f8f0020, 0x24c40007, 0x3086fff8, 0x8f840028, 0xcf2821, 0xa4482b, 0x15200002, 0xaf8f0024, 0xa42823, 0xaf850020, 0xaf450080, 0x3c110800, 0x8e310434, 0x345c021, 0x34028000, 0x3023021, 0x12200005, 0xaf860038, 0x93830017, 0x2419000e, 0x1079000d, 0x241f043f, 0x3c0a1000, 0xaf4a0178, 0x8f8b0014, 0x25670001, 0xa0001dd, 0xaf870014, 0xe0005a6, 0x3c104000, 0x8f8b0014, 0x25670001, 0xa0001de, 0xaf870014, 0x3c0a1000, 0xa75f0148, 0xaf4a0178, 0xa0004b4, 0x8f8b0014, 0x240e0f00, 0x11ee003d, 0x30d10020, 0x16200002, 0x24030009, 0x24030001, 0xa000208, 0xa743014a, 0xa0001fb, 0xa7400146, 0x94e50008, 0x94e2000a, 0x94eb000c, 0x8f86003c, 0x2fc00, 0x316affff, 0x30b9ffff, 0x13260037, 0x3ea2025, 0x3c050800, 0x8ca50444, 0x3c1f0800, 0x8fff0440, 0x5021, 0xa83821, 0xe8302b, 0x3eac821, 0x326c021, 0x3c010800, 0xac270444, 0x3c010800, 0xac380440, 0xa000269, 0x8f8d0018, 0x3c190800, 0x8f39047c, 0x3c030800, 0x8c630454, 0x3c060800, 0x8cc60478, 0x3c0f0800, 0x8def0450, 0x3283821, 0x686821, 0xe8c02b, 0xc48821, 0x1a8402b, 0x1e47021, 0x2385821, 0x1c86021, 0x3c010800, 0xac2d0454, 0x3c010800, 0xac2c0450, 0x3c010800, 0xac27047c, 0x3c010800, 0xac2b0478, 0xa000269, 0x8f8d0018, 0xa7400146, 0xa00041b, 0x8f8f0018, 0x30d00020, 0x1600ffc5, 0x2403000d, 0x24030005, 0xa000208, 0xa743014a, 0x97590104, 0x2738fff0, 0xa00036b, 0x3304ffff, 0x8f8c0040, 0x148cffc8, 0x8021, 0x3c110800, 0x8e31046c, 0x3c040800, 0x8c840468, 0x2287021, 0x1c8782b, 0x904021, 0x10f6821, 0x3c010800, 0xac2e046c, 0x3c010800, 0xac2d0468, 0xa000269, 0x8f8d0018, 0x8f990040, 0x1499ff5d, 0x6021, 0x3c050800, 0x8ca5046c, 0x3c100800, 0x8e100468, 0xe82021, 0x248efffe, 0xaef821, 0x3ee582b, 0x20c5021, 0x14b1821, 0x3c010800, 0xac3f046c, 0x3c010800, 0xac230468, 0xa00048b, 0x24eb0008, 0x8f880038, 0x3c02ffff, 0x8d0e000c, 0x1c26824, 0x1a46025, 0xad0c000c, 0xa000379, 0x30cfffff, 0xa0003a9, 0xae000000, 0x974b0104, 0x92040004, 0x8e2a000c, 0x1644021, 0x251ffff2, 0x1471824, 0x33f9ffff, 0x79c025, 0xae38000c, 0xa0002d4, 0x8e190010, 0x3c03ffff, 0x8d110010, 0x2232824, 0xa47825, 0xad0f0010, 0xa000379, 0x30cfffff, 0x97450104, 0x92060004, 0x8e2f0010, 0xa61021, 0x2449ffee, 0x1e76824, 0x312effff, 0x1ae6025, 0xae2c0010, 0xa0002d4, 0x8e190010, 0x8e06000c, 0xae000000, 0x3c080, 0x3108821, 0xa0002a6, 0xae260020, 0x1460000d, 0x3050ffff, 0x3c04ffff, 0x446024, 0x1846826, 0xd582b, 0xc502b, 0x14b1024, 0x10400002, 0x0, 0xd, 0x8ca30000, 0xa00023e, 0x641025, 0x3a11ffff, 0x11782b, 0x10702b, 0x1cf2024, 0x10800002, 0x0, 0xd, 0x8cb80000, 0xa00023e, 0x3702ffff, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x308effff, 0x30d8ffff, 0x57c00, 0x1f86025, 0x39cdffff, 0x1ac5021, 0x14c582b, 0x14b4821, 0x94402, 0x3127ffff, 0xe83021, 0x62402, 0x30c5ffff, 0xa41821, 0x3862ffff, 0x3e00008, 0x3042ffff, 0x3c0c0800, 0x8d8c0484, 0x240bff80, 0x27bdffd0, 0x1845021, 0x14b4824, 0xaf490020, 0x3c080800, 0x8d080484, 0xafb20020, 0xafb00018, 0xafbf0028, 0xafb30024, 0xafb1001c, 0x93660004, 0x1043821, 0x30e4007f, 0x9a1021, 0x3c030008, 0x439021, 0x30c50020, 0x3608021, 0x3c080111, 0x277b0008, 0x14a00002, 0x26460070, 0x2646006c, 0x92130004, 0x97510104, 0x920f0004, 0x3267000f, 0x322effff, 0x31ed0040, 0x1c72823, 0x11a00005, 0x4821, 0x925900bc, 0x33380004, 0x17000090, 0x0, 0x924300bc, 0x307f0004, 0x13e0000f, 0x0, 0x10a0000d, 0x0, 0x960e0002, 0x240aff80, 0xa76021, 0x25cdfffe, 0xa74d1016, 0x920b0004, 0x14b2024, 0x308200ff, 0x10400085, 0x10c4025, 0x3c0f0400, 0x10f4025, 0x8f530178, 0x660fffe, 0x2404000a, 0xa7440140, 0x960d0002, 0x24040009, 0x31ac0007, 0xc5823, 0x316a0007, 0xa74a0142, 0x96020002, 0x2443fffe, 0xa7430144, 0xa7400146, 0x975f0104, 0xa75f0148, 0x8f590108, 0x33380020, 0x53000001, 0x24040001, 0x920f0004, 0x31ee0010, 0x15c00002, 0x34830010, 0x801821, 0xa743014a, 0x0, 0x0, 0x0, 0x0, 0xaf481000, 0x0, 0x0, 0x0, 0x0, 0x8f511000, 0x621fffe, 0x3113ffff, 0x12600003, 0x0, 0x8f481018, 0xacc80000, 0x96030006, 0x307fffff, 0x27f90002, 0x199882, 0x138880, 0x23b3021, 0x8cd80000, 0x15200057, 0x183402, 0x92030004, 0x2405ff80, 0xa3f824, 0x33f100ff, 0x1220002c, 0x0, 0x924700bc, 0x30f20002, 0x12400028, 0x0, 0x974b100c, 0x2562fffe, 0xa7421016, 0x0, 0x3c0a0400, 0x35490030, 0xaf491000, 0x0, 0x0, 0x0, 0x0, 0x8f4c1000, 0x581fffe, 0x0, 0x9749100c, 0x8f51101c, 0xc02021, 0x3127ffff, 0x24f20030, 0x121882, 0x32880, 0xbbf821, 0x3226ffff, 0xaff10000, 0xe000595, 0x112c02, 0x13c880, 0x33b9821, 0x8e780000, 0x27400, 0xafb80010, 0x8fa80010, 0x310fffff, 0xafaf0010, 0x8fa40010, 0x1c46825, 0xafad0010, 0x8fa60010, 0xae660000, 0x97730008, 0x976d000a, 0x9766000c, 0x8f8a003c, 0xd5c00, 0x30ccffff, 0x3262ffff, 0x104a0036, 0x16c2025, 0x96060002, 0x3c101000, 0x24d30008, 0xe000139, 0x3264ffff, 0x974c0104, 0xe000147, 0x3184ffff, 0xaf500178, 0x8fbf0028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, 0x10a0ff70, 0x0, 0x24a5fffc, 0xa0005ce, 0x24090004, 0x8cd10000, 0xaf511018, 0x8f530178, 0x660ff7a, 0x2404000a, 0xa0005e3, 0x0, 0xa7c821, 0x8f880038, 0x8f4e101c, 0x19c082, 0x187880, 0x1e82021, 0xac8e0000, 0xe2c02, 0xc02021, 0xe000595, 0x31c6ffff, 0x23b2821, 0x8cad0000, 0x25400, 0x403021, 0xafad0010, 0x8fac0010, 0x318bffff, 0xafab0010, 0x8fa20010, 0x1424825, 0xafa90010, 0x8fa70010, 0xa000613, 0xaca70000, 0x8f8f0040, 0x148fffc9, 0x0, 0x97420104, 0x960b0002, 0x3c050800, 0x8ca5046c, 0x3049ffff, 0x316affff, 0x3c110800, 0x8e310468, 0x12a3821, 0x24f2fffe, 0xb24021, 0x12ffc3, 0x112c82b, 0x23fc021, 0x3192021, 0x3c010800, 0xac28046c, 0x3c010800, 0xac240468, 0xa00064d, 0x0, 0xa4102b, 0x10400009, 0x24030001, 0x52840, 0xa4102b, 0x4a00003, 0x31840, 0x5440fffc, 0x52840, 0x10600007, 0x0, 0x85302b, 0x14c00002, 0x31842, 0x852023, 0x1460fffb, 0x52842, 0x3e00008, 0x801021, 0x8f85002c, 0x27bdffe8, 0x53027, 0x2cc30001, 0x2ca40002, 0x831025, 0x10400003, 0xafbf0010, 0x2405007f, 0xaf85002c, 0x52827, 0x30a5ffff, 0xe000574, 0x240426f5, 0x8f830030, 0x240402bd, 0x403021, 0x83382b, 0x10e00009, 0x24050001, 0x42040, 0x83102b, 0x4800003, 0x52840, 0x5440fffc, 0x42040, 0x10a00008, 0xc35021, 0x64402b, 0x15000002, 0x52842, 0x641823, 0x14a0fffb, 0x42042, 0xc35021, 0x8fbf0010, 0xa4c02, 0x312200ff, 0x27bd0018, 0xaf8a002c, 0x3e00008, 0xaf890030, 0x0 }; u32 bce_TPAT_b06FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_TPAT_b06FwRodata[(0x0/4) + 1] = { 0x0 }; u32 bce_TPAT_b06FwBss[(0x450/4) + 1] = { 0x0 }; u32 bce_TPAT_b06FwSbss[(0x44/4) + 1] = { 0x0 }; u32 bce_TPAT_b06FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_TXP_b06FwReleaseMajor = 0x1; int bce_TXP_b06FwReleaseMinor = 0x0; int bce_TXP_b06FwReleaseFix = 0x0; u32 bce_TXP_b06FwStartAddr = 0x08000098; u32 bce_TXP_b06FwTextAddr = 0x08000000; int bce_TXP_b06FwTextLen = 0x3a74; u32 bce_TXP_b06FwDataAddr = 0x00000000; int bce_TXP_b06FwDataLen = 0x0; u32 bce_TXP_b06FwRodataAddr = 0x00000000; int bce_TXP_b06FwRodataLen = 0x0; u32 bce_TXP_b06FwBssAddr = 0x08003b08; int bce_TXP_b06FwBssLen = 0x14c; u32 bce_TXP_b06FwSbssAddr = 0x08003aa0; int bce_TXP_b06FwSbssLen = 0x68; u32 bce_TXP_b06FwSDataAddr = 0x00000000; int bce_TXP_b06FwSDataLen = 0x0; u32 bce_TXP_b06FwText[(0x3a74/4) + 1] = { 0xa000026, 0x0, 0x0, 0xd, 0x74787034, 0x2e362e31, 0x37000000, 0x4061100, 0xa, 0x136, 0xea60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24423aa0, 0x3c030800, 0x24633c54, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, 0x26100098, 0x3c1c0800, 0x279c3aa0, 0xe000305, 0x0, 0xd, 0x8f830038, 0x3c088000, 0x35070070, 0x8ce50000, 0x833025, 0x3c029000, 0xc22025, 0xaf850030, 0xaf440020, 0x8f490020, 0x520fffe, 0x3c038000, 0x34620070, 0x8c450000, 0x8f860030, 0x3c190800, 0x8f39007c, 0x3c0e0800, 0x8dce0078, 0xa62023, 0x3245821, 0x7821, 0x164682b, 0x1cf6021, 0x18d5021, 0x3c010800, 0xac2b007c, 0x3c010800, 0xac2a0078, 0x3e00008, 0x0, 0xa00003d, 0x24040001, 0x8f840038, 0x3c058000, 0x34a20001, 0x821825, 0x3e00008, 0xaf430020, 0x3e00008, 0x1021, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x308affff, 0x93a80013, 0xa74a0144, 0x97490e16, 0x30c600ff, 0x3c021000, 0xa7490146, 0xaf450148, 0xa3460152, 0xa748015a, 0xaf470160, 0x8fa40018, 0x8fa30014, 0xa7440158, 0xaf430154, 0x3e00008, 0xaf420178, 0x3e00008, 0x0, 0x3c038000, 0x34620070, 0x8c490000, 0x8f88003c, 0x24840007, 0x27bdfff8, 0x3084fff8, 0xaf890030, 0x974d008a, 0x31acffff, 0xafac0000, 0x8fab0000, 0x1685023, 0x2547ffff, 0x30e61fff, 0xc4282b, 0x14a0fff7, 0x3c0c8000, 0x358b0070, 0x8d6a0000, 0x3c070800, 0x8ce70084, 0x3c060800, 0x8cc60080, 0x81082, 0x1491823, 0x27880, 0xe37021, 0x2021, 0x1c3c82b, 0xc4c021, 0x1fa4021, 0x3194821, 0x25024000, 0x27bd0008, 0x3c010800, 0xac2e0084, 0x3c010800, 0xac290080, 0x3e00008, 0x0, 0x8f82003c, 0x24860007, 0x30c5fff8, 0xa21821, 0x30641fff, 0x3e00008, 0xaf84003c, 0x3c0e20ff, 0x27bdffe0, 0x3c1a8000, 0x3c0f8008, 0x35cdfffd, 0xafbf0018, 0xafb10014, 0xafb00010, 0xaf8f0044, 0xaf4d0e00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c0c00ff, 0x358bfffd, 0xaf4b0e00, 0x3c066004, 0x8cc95000, 0x240aff7f, 0x3c116000, 0x12a4024, 0x3507380c, 0xacc75000, 0x8e240438, 0x24050009, 0xaf450008, 0x3083ffff, 0x38622f71, 0x2450c0b3, 0xaf80004c, 0xe000064, 0xaf80003c, 0x52000001, 0xae20442c, 0xe000460, 0x0, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa000e77, 0x27bd0020, 0x27bdffd0, 0xafb20028, 0xafb10024, 0xafbf002c, 0xafb00020, 0x93620008, 0x809021, 0xa08821, 0x1440002d, 0x24040010, 0xe00009a, 0x0, 0x8f8e004c, 0x3c103200, 0x31c600ff, 0x67c00, 0x1f06025, 0x25cd0001, 0xaf8d004c, 0xac4c0000, 0x936b0009, 0x9369000a, 0x316a00ff, 0xa3c00, 0x312800ff, 0xe82025, 0xac440004, 0x8f83004c, 0x6400043, 0xac430008, 0xac40000c, 0x97980040, 0x33050008, 0x14a00002, 0x26280006, 0x26280002, 0x97420e14, 0x8f450e1c, 0x8f670004, 0x937f0002, 0x3044ffff, 0x33f900ff, 0xafb90010, 0x8f710014, 0xafa80018, 0xe000087, 0xafb10014, 0x8fbf002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 0x24040010, 0xa0000c3, 0x27bd0030, 0x93690009, 0x9368000b, 0x312300ff, 0x310200ff, 0x628021, 0x261f000a, 0x33f0ffff, 0xe00009a, 0x2002021, 0x8f86004c, 0x3c0d4100, 0x24d90001, 0xaf99004c, 0x93780009, 0x30c600ff, 0x67400, 0x330500ff, 0x24af0002, 0x1cf6025, 0x18d5825, 0xac4b0000, 0x8f6a000c, 0x97440e14, 0x1523825, 0xac470004, 0x8f450e1c, 0x8f670004, 0x93690002, 0x3084ffff, 0x312800ff, 0xafa80010, 0x8f630014, 0xafb10018, 0xe000087, 0xafa30014, 0x2002021, 0x8fbf002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 0xa0000c3, 0x27bd0030, 0x3c128000, 0xa000114, 0xac52000c, 0x27bdffd8, 0xafb3001c, 0xafbf0020, 0xafb20018, 0xafb10014, 0xafb00010, 0x93620008, 0x14400081, 0x809821, 0xaf60000c, 0x97850040, 0x30a44000, 0x1080008b, 0x24030016, 0x24104007, 0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, 0x31ee0007, 0xe6a40, 0x18d5825, 0xaf6b0014, 0x978a0040, 0x8f680014, 0x31490010, 0x1093825, 0xaf670014, 0x97860040, 0x30c30008, 0x5060008d, 0x2821, 0x8f660014, 0x3c031000, 0x3c028100, 0xc32825, 0xaf650014, 0x97440e0a, 0x2418000e, 0x3405fffc, 0x309fffff, 0x3e2c825, 0xaf790004, 0xa3780002, 0x9372000a, 0x26510004, 0xa371000a, 0x97830040, 0x9364000a, 0x30661f00, 0x61183, 0x44f821, 0x27f90028, 0xa3790009, 0x97580e0c, 0xa7780010, 0x93720009, 0x26510002, 0x32300007, 0x107823, 0x31ee0007, 0xa36e000b, 0x936d0009, 0x976c0010, 0x8f900034, 0x97890040, 0x31ab00ff, 0x16c5021, 0x1454021, 0x31270040, 0x10e00005, 0x3105ffff, 0xb0382b, 0x3c068000, 0x10e00014, 0x8821, 0x205402b, 0x15000033, 0x2021, 0x8f4a0e14, 0xaf4a0e10, 0x8f490e1c, 0xaf490e18, 0xaf450e00, 0x8f4c0000, 0x318b0008, 0x1160fffd, 0x0, 0x974d0e08, 0xa08021, 0x3021, 0xa78d0040, 0x8f450e04, 0x24110001, 0xaf850034, 0x976e0010, 0x31d2ffff, 0x8e640000, 0x901023, 0x14400009, 0xae620000, 0x8f6a0014, 0x8f870048, 0x35490040, 0xaf690014, 0x8f480e10, 0xace80020, 0x8f430e18, 0xace30024, 0xc02021, 0xe0000f5, 0x2002821, 0x8e660000, 0x14c00005, 0x0, 0x8f6b0014, 0x240cffbf, 0x16c9824, 0xaf730014, 0x8f6d000c, 0x1b22821, 0xaf65000c, 0x93720008, 0x16400003, 0x0, 0x16200031, 0x0, 0xa3710008, 0x2002021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8f900034, 0x97910040, 0x3c068000, 0x2009021, 0x322f0040, 0x15e0ffd2, 0x8821, 0x977f0010, 0x8f980034, 0x33f9ffff, 0x1738ffed, 0x2021, 0x3021, 0xa0001b9, 0x24110001, 0x2403000e, 0x24104007, 0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, 0x31ee0007, 0xe6a40, 0x18d5825, 0xaf6b0014, 0x978a0040, 0x8f680014, 0x31490010, 0x1093825, 0xaf670014, 0x97860040, 0x30c30008, 0x1460ff76, 0x0, 0x2821, 0xaf600004, 0xa000187, 0xa3600002, 0x8f6f0014, 0x3c19efff, 0x3738fffe, 0x1f87024, 0xa0001d7, 0xaf6e0014, 0x8f870038, 0x8f8a0044, 0x27bdffe0, 0x8f860048, 0xafb00018, 0xafbf001c, 0x8f450104, 0x8d4900ac, 0xaf470080, 0x8cc80020, 0xa93823, 0x8021, 0xaf480e10, 0x8f440e10, 0x4821, 0xaf440e14, 0x8cc20024, 0xaf420e18, 0x8f430e18, 0xaf430e1c, 0x10e00036, 0x2d390001, 0x936b0008, 0x1160004f, 0x0, 0x976e0010, 0x31cdffff, 0xed602b, 0x1580004a, 0x0, 0x97780010, 0x330fffff, 0xaf4f0e00, 0x8f5f0000, 0x33f90008, 0x1320fffd, 0x0, 0x97420e08, 0x8f460e04, 0x3045ffff, 0x30a30001, 0x1060008a, 0x0, 0xd, 0x30a8a040, 0x24040040, 0x1104003b, 0x30a9a000, 0x11200085, 0x0, 0x936c0008, 0x51800009, 0x27a40010, 0x976f0010, 0x31eeffff, 0xce682b, 0x11a00004, 0x27a40010, 0x30b80040, 0x1300007a, 0x0, 0xafa70010, 0xa7850040, 0xaf860034, 0xe000158, 0x0, 0x404821, 0x1440ffd0, 0x8fa70010, 0x8f420e14, 0x8f840048, 0xac820020, 0x8f470e1c, 0xac870024, 0x2d390001, 0x3303025, 0x10c00017, 0x8fbf001c, 0x8f840038, 0x24100f00, 0x10900085, 0x0, 0x8f4f0178, 0x5e0fffe, 0x24180f00, 0x1098006f, 0x0, 0x8f470e14, 0x24020240, 0x3c101000, 0xaf470144, 0x8f490e1c, 0xaf490148, 0xa3400152, 0xa740015a, 0xaf400160, 0xa7400158, 0xaf420154, 0xaf500178, 0x8fbf001c, 0x8fb00018, 0x3e00008, 0x27bd0020, 0xaf470e00, 0xa00022e, 0x0, 0x8f490178, 0x520fffe, 0x240a0800, 0x8f84003c, 0xaf4a0178, 0x9758008a, 0x330fffff, 0x1e47023, 0x25cdffff, 0x31ac1fff, 0x2d8b0008, 0x1560fff9, 0x0, 0x8f83004c, 0x8f9f0038, 0xc04821, 0x3442021, 0x24660001, 0x24190f00, 0xaf86004c, 0x306a00ff, 0xe93823, 0x24864000, 0x13f90005, 0x24080001, 0x938b0042, 0x31680007, 0x81240, 0x34480001, 0xa7c00, 0x3c180100, 0x1f87025, 0xac8e4000, 0x8f8d004c, 0x30ac0036, 0x30a40008, 0xaccd0004, 0x1080002e, 0x10c3025, 0x974d0e0a, 0x8f8c003c, 0x3c028100, 0x31a4ffff, 0x258b0008, 0x824025, 0x3c031000, 0x31651fff, 0x25390006, 0x241f000e, 0xaf480160, 0xc33025, 0xa75f015a, 0xaf85003c, 0xa7590158, 0x14e0000a, 0x8f9f0038, 0x24050f00, 0x53e50002, 0x24100001, 0x34c60040, 0x8f430e10, 0x8f880048, 0xad030020, 0x8f4b0e18, 0xad0b0024, 0x8f420e14, 0xaf420144, 0x8f440e1c, 0xaf440148, 0xa34a0152, 0x3c0a1000, 0xaf460154, 0xa000221, 0xaf4a0178, 0x14c0ff78, 0x30a8a040, 0x8f420e14, 0x8f840048, 0x4821, 0xac820020, 0x8f470e1c, 0xac870024, 0xa000258, 0x2d390001, 0x8f98003c, 0x25390002, 0xa7590158, 0x270f0008, 0x31ee1fff, 0xa0002ad, 0xaf8e003c, 0xaf40014c, 0x1120002c, 0x0, 0x8f460e10, 0xaf460144, 0x8f430e18, 0x24020040, 0x3c101000, 0xaf430148, 0xa3400152, 0xa740015a, 0xaf400160, 0xa7400158, 0xaf420154, 0xaf500178, 0xa000271, 0x8fbf001c, 0x11200006, 0x0, 0x975f0e08, 0x33e50040, 0x14a00002, 0x0, 0xd, 0x8f480178, 0x500fffe, 0x0, 0x974e0e10, 0x3c0d0500, 0x24032000, 0x31ccffff, 0x18d1025, 0xaf42014c, 0x8f440e14, 0x3c0b1000, 0xaf440144, 0x8f4a0e1c, 0xaf4a0148, 0xa3400152, 0x8f840038, 0xa740015a, 0xaf400160, 0xa7400158, 0xaf430154, 0xa00025f, 0xaf4b0178, 0x8f590e14, 0xaf590144, 0x8f430e1c, 0xa0002d9, 0x24020040, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0xe0000ca, 0x0, 0x3c028000, 0x8f8a0044, 0x34500070, 0x3c120800, 0x26523b70, 0x2008821, 0x8e080000, 0x8f450000, 0x38a40001, 0x30830001, 0x10600017, 0xaf880030, 0x2204821, 0x8d2c0000, 0x3c020800, 0x8c42006c, 0x3c180800, 0x8f180068, 0x1881823, 0x436821, 0xc821, 0x1a3782b, 0x3197021, 0x1cf4021, 0x3c010800, 0xac2d006c, 0x3c010800, 0xac280068, 0x8f4b0000, 0x39670001, 0x30e60001, 0x14c0ffed, 0x1804021, 0xaf8c0030, 0x8e180000, 0x3c0e0800, 0x8dce006c, 0x3c0c0800, 0x8d8c0068, 0x3087823, 0x1cf2821, 0x4021, 0xaf302b, 0x1885821, 0x1662021, 0x3c010800, 0xac25006c, 0x3c010800, 0xac240068, 0x8f490100, 0x25470088, 0xaf870048, 0xaf890038, 0xaf490020, 0x8e070000, 0xaf870030, 0x8f590178, 0x720fffe, 0x0, 0x8e0f0000, 0x3c0d0800, 0x8dad0074, 0x3c0c0800, 0x8d8c0070, 0x1e77023, 0x1ae2821, 0x3021, 0xae582b, 0x1862021, 0x8b3821, 0x24090800, 0x3c010800, 0xac250074, 0x3c010800, 0xac270070, 0xaf490178, 0x93430108, 0xa3830042, 0x93820042, 0x305f0001, 0x17e00015, 0x8f830038, 0x241f0d00, 0x107f0019, 0x24020f00, 0x1062001d, 0x0, 0x91470000, 0x24030050, 0x30e900ff, 0x11230004, 0x3c054000, 0xaf450138, 0xa000312, 0x0, 0xe0008da, 0x0, 0x8f8a0044, 0x3c054000, 0xaf450138, 0xa000312, 0x0, 0x93990042, 0x33380006, 0x185100, 0xe00020d, 0x152d821, 0xa00036e, 0x8f8a0044, 0x3c1b0800, 0x277b3bf0, 0xe00020d, 0x0, 0xa00036e, 0x8f8a0044, 0x3c1b0800, 0x277b3c10, 0xe00020d, 0x0, 0xa00036e, 0x8f8a0044, 0x90aa0001, 0x8fab0010, 0x8cac0010, 0x3c0300ff, 0x8d680004, 0xad6c0020, 0x8cad0014, 0xe06021, 0x3462ffff, 0xad6d0024, 0x8ca70018, 0x3c09ff00, 0x109c024, 0xad670028, 0x8cae001c, 0x182c824, 0x3197825, 0xad6f0004, 0xad6e002c, 0x8cad0008, 0x314a00ff, 0xad6d001c, 0x94a90002, 0x3128ffff, 0xad680010, 0x90a70000, 0xa5600002, 0xa1600004, 0xa1670000, 0x90a30002, 0x306200ff, 0x21982, 0x10600005, 0x24050001, 0x1065000e, 0x0, 0x3e00008, 0xa16a0001, 0x8cd80028, 0x354a0080, 0xad780018, 0x8ccf0014, 0xad6f0014, 0x8cce0030, 0xad6e0008, 0x8cc4002c, 0xa16a0001, 0x3e00008, 0xad64000c, 0x8ccd001c, 0xad6d0018, 0x8cc90014, 0xad690014, 0x8cc80024, 0xad680008, 0x8cc70020, 0xad67000c, 0x8cc20014, 0x8c830064, 0x43c82b, 0x13200007, 0x0, 0x8cc20014, 0x144cffe4, 0x0, 0x354a0080, 0x3e00008, 0xa16a0001, 0x8c820064, 0xa0003c4, 0x0, 0x90aa0000, 0x27bdfff8, 0x8fa9001c, 0xa3aa0000, 0x8fae0000, 0x3c0fff80, 0x8fa80018, 0x35e2ffff, 0x8ccd002c, 0x1c26024, 0xafac0000, 0xa1200004, 0xe06021, 0xa7a00002, 0x8fb80000, 0x8d270004, 0x1881821, 0xa05821, 0xc05021, 0x6d2826, 0x3c06ff7f, 0x3c0f00ff, 0x2cad0001, 0x35eeffff, 0x34d9ffff, 0x3c02ff00, 0x3193024, 0xd1dc0, 0x10ec824, 0xe2c024, 0xc37025, 0x3197825, 0xad2e0000, 0xad2f0004, 0x8d450024, 0xafae0000, 0xad250008, 0x8d4d0020, 0x2405ffff, 0xad2d000c, 0x95680002, 0x3107ffff, 0xad270010, 0x91660018, 0x30c200ff, 0x219c2, 0x50600001, 0x8d450034, 0xad250014, 0x8d670008, 0x27bd0008, 0xad27001c, 0x8c8b00cc, 0xad2c0028, 0xad20002c, 0xad2b0024, 0xad200018, 0x3e00008, 0xad200020, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x90980000, 0xc08821, 0x3c0d00ff, 0x330f007f, 0xa0cf0000, 0x908e0001, 0x35acffff, 0x3c0aff00, 0xa0ce0001, 0x94a6001e, 0xa2200004, 0x8cab0014, 0x8e290004, 0xa08021, 0x16c2824, 0x12a4024, 0x809021, 0x1052025, 0xa6260002, 0xae240004, 0x26050020, 0x26240008, 0xe000072, 0x24060002, 0x92470000, 0x26050028, 0x26240014, 0x71e00, 0x31603, 0x24060004, 0x4400003, 0x2403ffff, 0x96590002, 0x3323ffff, 0xe000072, 0xae230010, 0x26240024, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050003, 0x3021, 0xa00007c, 0x27bd0020, 0x27bdffd8, 0xafb1001c, 0xafb00018, 0xafbf0020, 0x90a80000, 0x24020001, 0x8fb0003c, 0x3103003f, 0x808821, 0x10620014, 0x8faa0038, 0x240b0005, 0x506b0016, 0xafaa0010, 0xa02021, 0xc02821, 0xe000407, 0x2003021, 0x922400bc, 0x30830002, 0x10600003, 0x26060030, 0xacc00000, 0x24c60004, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0xc01021, 0x3e00008, 0x27bd0028, 0x1403821, 0xe000385, 0xafb00010, 0xa00044b, 0x0, 0xe0003cc, 0xafb00014, 0xa00044b, 0x0, 0x3c02000a, 0x3421821, 0x3c040800, 0x24843b08, 0x2405001a, 0x3021, 0xa00007c, 0xaf83002c, 0x3c038000, 0x34620070, 0x8c480000, 0xa05821, 0xc04821, 0x308a00ff, 0xaf880030, 0x8f440178, 0x480fffe, 0x3c0c8000, 0x35860070, 0x8cc50000, 0x3c030800, 0x8c630074, 0x3c180800, 0x8f180070, 0xa82023, 0x646821, 0xc821, 0x1a4782b, 0x3197021, 0x1cf6021, 0x3c010800, 0xac2d0074, 0x3c010800, 0xac2c0070, 0x8f480e14, 0xaf480144, 0xaf47014c, 0xa34a0152, 0xa74b0158, 0x93460108, 0x30c50008, 0x54a00001, 0x35291000, 0x934b0900, 0x24070050, 0x316a00ff, 0x11470007, 0x0, 0x8f450e1c, 0xaf450148, 0xaf490154, 0x3c091000, 0x3e00008, 0xaf490178, 0x934d0108, 0x31a80008, 0x11000010, 0x0, 0x934f0108, 0x31ee0010, 0x51c00001, 0x35290008, 0x3c040800, 0x90843b6c, 0xa3440150, 0x8f4309a4, 0xaf430148, 0x8f4209a0, 0xaf420144, 0xaf490154, 0x3c091000, 0x3e00008, 0xaf490178, 0x3c190800, 0x8f393b28, 0x33380008, 0x5700fff1, 0x35290008, 0xa00049e, 0x0, 0x24070040, 0xaf470814, 0xaf400810, 0x8f420944, 0x8f430950, 0x8f440954, 0x8f45095c, 0x8f46094c, 0xaf820064, 0xaf830054, 0xaf840050, 0xaf85005c, 0x3e00008, 0xaf860060, 0x93460109, 0x30c5007f, 0x518c0, 0x52140, 0x831021, 0x3e00008, 0x24420088, 0x3c0a0800, 0x914a3b2d, 0x3c090800, 0x95293b26, 0x3c051100, 0xa3c00, 0x25280002, 0xe83025, 0xc51825, 0x24820008, 0xac830000, 0x3e00008, 0xac800004, 0x8f4a002c, 0x974d0908, 0x3c0e000e, 0x34e3821, 0x31acffff, 0xc41c0, 0xaf48002c, 0x97430908, 0x94eb001a, 0x804021, 0x24020001, 0x3169ffff, 0xac890000, 0x8ce6001c, 0xa05821, 0xac860004, 0x8ce40020, 0xad040008, 0x90e30019, 0x30630003, 0x1062003e, 0x0, 0x28650002, 0x14a00071, 0x240f0002, 0x106f004c, 0x0, 0x24180003, 0x10780055, 0x0, 0x3c090800, 0x95293b1c, 0x93430934, 0x934f0921, 0x3c050800, 0x94a53b22, 0x306400ff, 0x94ee002a, 0x46882, 0x31ec00ff, 0x978f0058, 0xdc600, 0xccc00, 0x3127ffff, 0x3191025, 0xa73021, 0x462025, 0x1cf6821, 0x3c034000, 0x836025, 0xd4c00, 0xad090004, 0xad0c0000, 0x93590920, 0x3c180006, 0x25090014, 0x193e00, 0xf82825, 0xad050008, 0x8f4e092c, 0x25e60001, 0x30c27fff, 0xad0e000c, 0x8f440930, 0xa7820058, 0x25020028, 0xad040010, 0x8f4d0938, 0xad0d0014, 0xad2b0004, 0x8f4c0940, 0xad2c0008, 0x93430937, 0x3c190800, 0x93393b2c, 0xad200010, 0x34700, 0x19c400, 0x1185825, 0x3567ffff, 0xad27000c, 0x3e00008, 0xaf4a002c, 0x3c090800, 0x95293b1c, 0x3c0d0800, 0x95ad3b26, 0x3c0c0800, 0x958c3b18, 0x94e40024, 0x312effff, 0x1ae3021, 0xcc1823, 0x4cc00, 0x2462fff2, 0x322c025, 0x240f0800, 0xad18000c, 0xad0f0014, 0xad000010, 0xa0004f2, 0x25080018, 0x94e50024, 0x94ee0028, 0x3c090800, 0x95293b1c, 0x56c00, 0xe6400, 0x35a68100, 0x35840800, 0xad06000c, 0xad040010, 0xa0004f2, 0x25080014, 0x3c090800, 0x95293b1c, 0x3c0f0800, 0x95ef3b26, 0x3c060800, 0x94c63b18, 0x94e40024, 0x3125ffff, 0x94ed0028, 0x1e57021, 0x1c66023, 0x4cc00, 0xd1c00, 0x2582ffee, 0x627825, 0x37388100, 0x24050800, 0xad18000c, 0xad0f0010, 0xad050018, 0xad000014, 0xa0004f2, 0x2508001c, 0x1460ff94, 0x0, 0x94e30024, 0x3c090800, 0x95293b1c, 0x31400, 0x34590800, 0xad19000c, 0xa0004f2, 0x25080010, 0x3e00008, 0x240201f4, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0xe00005c, 0x808021, 0x24050040, 0xaf450814, 0x8f830054, 0x8f840050, 0x8f85005c, 0x701821, 0x641023, 0x18400004, 0xaf830054, 0xaf630054, 0x8f660054, 0xaf860050, 0x1200000c, 0x0, 0x8f440074, 0x93680081, 0x3409fa00, 0x2d070007, 0x10e00005, 0x891021, 0x936c0081, 0x240b01f4, 0x18b5004, 0x1441021, 0xaf62000c, 0x8f4e095c, 0x1c56823, 0x19a00004, 0x8fbf0014, 0x8f4f095c, 0xaf8f005c, 0x8fbf0014, 0x8fb00010, 0xa00005e, 0x27bd0018, 0x8f840064, 0x8f830054, 0x8f820050, 0xaf640044, 0xaf630050, 0x3e00008, 0xaf620054, 0x3c038000, 0x34620070, 0x8c430000, 0x27bdfff8, 0x308700ff, 0x30a900ff, 0x30c800ff, 0xaf830030, 0x8f440178, 0x480fffe, 0x3c028000, 0x34590070, 0x8f380000, 0xa3a70003, 0x3c070800, 0x8ce70074, 0x8fac0000, 0x3c060800, 0x8cc60070, 0x3037823, 0x3c0e7fff, 0xefc821, 0x35cdffff, 0x5021, 0x18d2824, 0xca1821, 0x847c0, 0x32f202b, 0xa81025, 0x64c021, 0xafa20000, 0x3c010800, 0xac390074, 0x3c010800, 0xac380070, 0x934f010a, 0xa3a00002, 0x3c0e80ff, 0xa3af0001, 0x8fac0000, 0x312b007f, 0x35cdffff, 0x18d4824, 0xb5600, 0x12a4025, 0x24073000, 0x2406ff80, 0x3c051000, 0x27bd0008, 0xaf48014c, 0xaf470154, 0xa7400158, 0xa3460152, 0x3e00008, 0xaf450178, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x8f650074, 0x3c068000, 0x309000ff, 0xa62025, 0xe00005c, 0xaf640074, 0x93630005, 0x34620008, 0xe00005e, 0xa3620005, 0x2002021, 0x8fbf0014, 0x8fb00010, 0x24050005, 0x24060001, 0xa000596, 0x27bd0018, 0x27bdffe0, 0x3c038000, 0xafb00010, 0xafbf0018, 0xafb10014, 0x34620070, 0x8c470000, 0x309000ff, 0x30a800ff, 0xaf870030, 0x8f440178, 0x480fffe, 0x3c188000, 0x37110070, 0x8e2f0000, 0x3c0d0800, 0x8dad0074, 0x3c0a0800, 0x8d4a0070, 0x1e77023, 0x1ae2821, 0x5821, 0xae302b, 0x14b4821, 0x1263821, 0x3c010800, 0xac250074, 0x8821, 0x3c010800, 0xac270070, 0x1100000f, 0x0, 0x8f620074, 0x2619ffff, 0x3208007f, 0x2fe02, 0x33e5007f, 0x15000006, 0x332200ff, 0x2407ff80, 0x2072026, 0x24a3ffff, 0x838025, 0x320200ff, 0x408021, 0x24111008, 0xe00005c, 0x0, 0x8f490818, 0x31250004, 0x14a0fffd, 0x3218007f, 0x1878c0, 0x187140, 0x1cf6821, 0x25ac0088, 0xaf4c0818, 0x274a0980, 0x8d4b0020, 0xaf4b0144, 0x8d460024, 0xaf460148, 0xa3500150, 0xe00005e, 0xa7400158, 0x2201021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0x308400ff, 0xafbf0010, 0xe0005e1, 0x30a500ff, 0x8f830054, 0x8fbf0010, 0x34450040, 0x2404ff90, 0x3c021000, 0x27bd0018, 0xaf43014c, 0xa3440152, 0xaf450154, 0x3e00008, 0xaf420178, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x9345093f, 0x24020006, 0x3c080800, 0x95083b22, 0x30a300ff, 0x2487ffd8, 0x24050004, 0x10620036, 0x24060002, 0x974e093c, 0x3c0d0204, 0x63400, 0x31ccffff, 0x18d5825, 0xac8b0000, 0x934a093e, 0x31490020, 0x11200008, 0x0, 0x935f0936, 0x3c190103, 0x37380300, 0x33f000ff, 0x2187825, 0x24050008, 0xac8f0004, 0x93580934, 0x934d0921, 0x3c104000, 0x330e00ff, 0xe6082, 0x31ab00ff, 0xc5600, 0xb1400, 0x1421825, 0x68f825, 0x3f0c825, 0xac99ffd8, 0x93580937, 0x8f4c0948, 0x8f4d0940, 0x57882, 0x330e00ff, 0x1cf5821, 0x18d2823, 0xb5700, 0x1461025, 0x30a3ffff, 0x434025, 0xf4880, 0x1273021, 0xace80020, 0xe00005c, 0x24d00028, 0x24040004, 0xe00005e, 0xa364003f, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0xa000644, 0x24060012, 0x27bdffd0, 0x24090010, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb10014, 0xafb00010, 0x3c010800, 0xa0293b2c, 0xafbf0028, 0xafb20018, 0x97480908, 0x309400ff, 0x3c02000e, 0x3107ffff, 0x731c0, 0xaf46002c, 0x97440908, 0x9344010b, 0x30b300ff, 0x3428021, 0x30830030, 0xa821, 0x106000e4, 0x8821, 0x240c0004, 0x3c010800, 0xa02c3b2c, 0x934b093e, 0xb5600, 0xa2e03, 0x4a00131, 0x0, 0xaf400048, 0x9352010b, 0x324f0020, 0x11e00006, 0x0, 0x935f093e, 0x1fce00, 0x19c603, 0x7000148, 0x0, 0x9346010b, 0x30c20040, 0x10400003, 0x8f920054, 0x8f870054, 0x24f2ffff, 0x960a002c, 0x93450934, 0x93490937, 0xa78a0058, 0x30a600ff, 0x312700ff, 0x71080, 0x462021, 0x91f821, 0x3c010800, 0xa43f3b22, 0x92030018, 0x3c010800, 0xa4203b1c, 0x3c010800, 0xa4203b18, 0x307000ff, 0x3f04021, 0x250b000a, 0x3170ffff, 0x3c010800, 0xa4283b24, 0x3c010800, 0xa4283b26, 0xe00009a, 0x2002021, 0xe0004c5, 0x402021, 0x8f4b002c, 0x97580908, 0x3c19000e, 0x3594021, 0x330fffff, 0xf71c0, 0xaf4e002c, 0x97430908, 0x950d001a, 0x24110001, 0x403821, 0x31acffff, 0xac4c0000, 0x8d0a001c, 0xac4a0004, 0x8d050020, 0xac450008, 0x91090019, 0x31230003, 0x107100bd, 0x28710002, 0x16200103, 0x240c0002, 0x106c00f5, 0x240d0003, 0x106d00ca, 0x0, 0x3c090800, 0x95293b1c, 0x93430934, 0x93580921, 0x3c0a0800, 0x954a3b22, 0x306400ff, 0x950c002a, 0x4f882, 0x331900ff, 0x97980058, 0x1f7600, 0x197c00, 0x3126ffff, 0x1cf4025, 0x1466821, 0x10d8825, 0x1982821, 0x3c084000, 0x2281025, 0x54c00, 0xace90004, 0xace20000, 0x93430920, 0x3c040006, 0x24e90014, 0x3fe00, 0x3e4c825, 0xacf90008, 0x8f4e092c, 0x270f0001, 0x31e67fff, 0xacee000c, 0x8f4d0930, 0xa7860058, 0x24e60028, 0xaced0010, 0x8f4c0938, 0xacec0014, 0xad320004, 0x8f510940, 0xad310008, 0x93420937, 0x3c050800, 0x90a53b2c, 0xad200010, 0x22700, 0x51c00, 0x83f825, 0x37f2ffff, 0xad32000c, 0xaf4b002c, 0x12a00033, 0x0, 0x9352093f, 0x24150006, 0x24050004, 0x324b00ff, 0x117500cd, 0x24090002, 0x974f093c, 0x3c0e0204, 0x31edffff, 0x1ae6025, 0xacec0028, 0x9351093e, 0x32220020, 0x10400008, 0x0, 0x93440936, 0x3c180103, 0x371f0300, 0x309900ff, 0x33f2825, 0xacc50004, 0x24050008, 0x93520934, 0x93430921, 0x56082, 0x324b00ff, 0xba882, 0x306400ff, 0x15fe00, 0x4c400, 0x3f8c825, 0x32a7825, 0x1e87025, 0xacceffd8, 0x934d0937, 0x8f520948, 0x8f420940, 0x31b100ff, 0x22c5821, 0x2423023, 0xb1f00, 0x9ac00, 0x754825, 0x30c8ffff, 0x1285025, 0xe00005c, 0xacea0020, 0x24070004, 0xe00005e, 0xa367003f, 0xe0000c3, 0x2002021, 0x3c050800, 0x90a53b2c, 0x30b00003, 0x1200000f, 0x2802021, 0x8f880054, 0x25090001, 0xaf890054, 0xaf690050, 0x8f6a0054, 0x1493823, 0x18e00002, 0x1202021, 0x8f640054, 0xaf640054, 0x8f420074, 0x244601f4, 0xaf66000c, 0x2802021, 0x2602821, 0xa7600068, 0xe0005e1, 0x3c131000, 0x8f8e0054, 0x34540006, 0xaf4e014c, 0x8f8d004c, 0x8fbf0028, 0x8fb50024, 0x31b100ff, 0x25ac0001, 0xaf8c004c, 0x8fb20018, 0xa3510152, 0x8fb00010, 0xaf540154, 0x8fb10014, 0xaf530178, 0x8fb40020, 0x8fb3001c, 0x3e00008, 0x27bd0030, 0x9359093e, 0x19c600, 0x189603, 0x6420048, 0x24110002, 0x93420923, 0x30440002, 0x1080ff1e, 0x8f870060, 0x8f860054, 0x14e6ff1b, 0x0, 0xe00005c, 0x0, 0x9365003f, 0x24080016, 0x30a900ff, 0x1128000c, 0x240a0008, 0x3c0d0800, 0x91ad3b2c, 0x35ac0001, 0x3c010800, 0xa02c3b2c, 0x936b003f, 0x316300ff, 0x106a0065, 0x240e000a, 0x106e005e, 0x2402000c, 0xe00005e, 0x0, 0xa00069d, 0x0, 0x3c090800, 0x95293b1c, 0x3c190800, 0x97393b26, 0x3c180800, 0x97183b18, 0x950e0024, 0x313fffff, 0x33f7821, 0x1f86823, 0xe8c00, 0x25acfff2, 0x22c5025, 0x24050800, 0x24470018, 0xac4a000c, 0xac450014, 0xa0006e5, 0xac400010, 0x3c090800, 0x95293b1c, 0x3c180800, 0x97183b26, 0x3c0f0800, 0x95ef3b18, 0x950d0024, 0x3139ffff, 0x950c0028, 0x3197021, 0x1cf8823, 0xd2c00, 0xc5400, 0x2622ffee, 0x1423025, 0x34a48100, 0x24030800, 0xace4000c, 0xace60010, 0xace30018, 0xace00014, 0xa0006e5, 0x24e7001c, 0x3c010800, 0xa0313b2c, 0x9343093e, 0x24150001, 0x307f0020, 0x17e0fed4, 0x24110008, 0xa00069d, 0x24110004, 0x8f6e0084, 0x8f4d0940, 0x11a0fecd, 0xaf8e0054, 0x240f0014, 0x3c010800, 0xa02f3b2c, 0xa00069c, 0x0, 0x95020024, 0x95060028, 0x3c090800, 0x95293b1c, 0x22400, 0x61c00, 0x349f8100, 0x34790800, 0xacff000c, 0xacf90010, 0xa0006e5, 0x24e70014, 0x1460ff01, 0x0, 0x95180024, 0x3c090800, 0x95293b1c, 0x24470010, 0x187c00, 0x35ee0800, 0xa0006e5, 0xac4e000c, 0xa00071f, 0x24090012, 0x8f64004c, 0xaf640054, 0x8f630054, 0xa0006a6, 0xaf630050, 0xa362003f, 0xe00005e, 0x0, 0xa00069d, 0x0, 0x24020014, 0xa0007f3, 0xa362003f, 0x27bdffe8, 0x308400ff, 0xafbf0010, 0xe0005e1, 0x30a500ff, 0x9378007e, 0x9379007f, 0x936e0080, 0x9368007a, 0x332f00ff, 0x186600, 0xf6c00, 0x31cb00ff, 0x18d4825, 0xb5200, 0x8fbf0010, 0x12a3825, 0x310600ff, 0x34447000, 0xe62825, 0x2402ff81, 0x3c031000, 0x27bd0018, 0xaf45014c, 0xaf440154, 0xa3420152, 0x3e00008, 0xaf430178, 0x27bdffd8, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0xafb3001c, 0x93420109, 0x308600ff, 0x30b000ff, 0x618c2, 0x32040002, 0x30710001, 0x14800005, 0x305200ff, 0x93670005, 0x30e50008, 0x10a0000d, 0x30c80010, 0x2402021, 0xe0005cd, 0x2202821, 0x24040001, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x15000032, 0x0, 0x93430109, 0x2821, 0x3062007f, 0x220c0, 0x2f940, 0x3e49821, 0x26790088, 0x33b9821, 0x8e780024, 0x8e6f0008, 0x130f0046, 0x0, 0x8f640084, 0x24180002, 0x4fd82, 0x33f90003, 0x1338007c, 0x0, 0x93660083, 0x934a0109, 0x51460004, 0x3205007c, 0x10a00060, 0x0, 0x3205007c, 0x14a00053, 0x2402021, 0x16200006, 0x32040001, 0x8e7f0024, 0x8f590104, 0x17f9ffd6, 0x2021, 0x32040001, 0x1080000a, 0x2402021, 0x8f420940, 0x8f930064, 0x10530006, 0x0, 0xe00067b, 0x2202821, 0x8f430940, 0xaf630044, 0x2402021, 0xe000628, 0x2202821, 0xa00082c, 0x24040001, 0x3c090800, 0x8d290064, 0x25260001, 0x3c010800, 0xac260064, 0x16000012, 0x0, 0x8f6d0084, 0x3c0e00c0, 0x1ae6024, 0x15800005, 0x2402021, 0xe0007fa, 0x2202821, 0xa00082c, 0x24040001, 0x24050004, 0xe000596, 0x24060001, 0x2402021, 0xe0007fa, 0x2202821, 0xa00082c, 0x24040001, 0xe00003d, 0x24040001, 0x936b007d, 0x20b5025, 0xe00005e, 0xa36a007d, 0xa00086f, 0x8f6d0084, 0x8f660074, 0x8f480104, 0x8e670024, 0x64e02, 0x1507ffb6, 0x3126007f, 0x936b0083, 0x26440001, 0x308a007f, 0x11460043, 0x316300ff, 0x5464ffb0, 0x8f640084, 0x26450001, 0x30b1007f, 0x30a200ff, 0x12260004, 0x24050001, 0x409021, 0xa000842, 0x24110001, 0x240fff80, 0x24f7024, 0x1cf9026, 0x324200ff, 0x409021, 0xa000842, 0x24110001, 0xe00067b, 0x2202821, 0x32180030, 0x1300ffaa, 0x32100082, 0x2402021, 0xe0005cd, 0x2202821, 0xa00082c, 0x24040001, 0x8f6e0074, 0x3c0f8000, 0x24050003, 0x1cf9025, 0xaf720074, 0x93710083, 0x24060001, 0xe000596, 0x322400ff, 0xe00003d, 0x24040001, 0x936d007d, 0x20d6025, 0xe00005e, 0xa36c007d, 0x3c0b0800, 0x8d6b0054, 0x25700001, 0x3c010800, 0xac300054, 0xa00082c, 0x24040001, 0x8f680074, 0x3c098000, 0x24050004, 0x1093825, 0xaf670074, 0x93630083, 0x24060001, 0xe000596, 0x306400ff, 0xe00003d, 0x24040001, 0x9362007d, 0x2029825, 0xe00005e, 0xa373007d, 0xa00082c, 0x24040001, 0x324d0080, 0x39ac0080, 0x546cff6c, 0x8f640084, 0xa000895, 0x26450001, 0x27bdffd0, 0x3c0a0008, 0xafbf002c, 0xafb40028, 0xafb30024, 0xafb20020, 0xafb1001c, 0xafb00018, 0x34ad821, 0x24090040, 0xaf490814, 0xaf400810, 0x8f420944, 0x8f430950, 0x8f460954, 0x8f47095c, 0x8f48094c, 0x93440108, 0x9345010b, 0xaf820064, 0x308400ff, 0x30a500ff, 0xaf830054, 0xaf860050, 0xaf87005c, 0xe000816, 0xaf880060, 0x1440015a, 0x8fbf002c, 0xa7600068, 0x934d0900, 0x240b0050, 0x3c140800, 0x26943c30, 0x31ac00ff, 0x3c120800, 0x26523c40, 0x118b0003, 0x0, 0xa021, 0x9021, 0x934f0109, 0x8f880054, 0x24020010, 0x31f1007f, 0x1170c0, 0x116940, 0x1ae2821, 0x24b80088, 0xaf580818, 0x8f4a0104, 0x8f4b09a4, 0x3c0c000e, 0x34cc821, 0x14b4823, 0x3c010800, 0xac293b08, 0x8f440958, 0x3c010800, 0xa0223b2c, 0x97460908, 0x881823, 0x3c010800, 0xac233b0c, 0x30c7ffff, 0x7f9c0, 0x3c010800, 0xac283b30, 0xaf5f002c, 0x97420908, 0x9730002c, 0x8e910000, 0x932f0018, 0x3789821, 0xa7900058, 0xaf930048, 0x220f809, 0x31f000ff, 0x304e0002, 0x15c0018e, 0x30530001, 0x12600142, 0x0, 0x8f4f09a4, 0x24130001, 0x3c010800, 0xac2f3b34, 0x93510934, 0x934e0937, 0x322500ff, 0x31cd00ff, 0xd6080, 0x1855021, 0x1505821, 0x3c010800, 0xa42b3b24, 0x3c010800, 0xa42a3b22, 0x93490934, 0x312200ff, 0x2022021, 0x24900010, 0x3c010800, 0xa4303b20, 0x24080006, 0x8f990054, 0x3c010800, 0xac283b28, 0x8f9f005c, 0x8f580958, 0x8021, 0x3f92823, 0x4a0013c, 0x3192023, 0x480013a, 0xa4382b, 0x10e0013c, 0x0, 0x3c010800, 0xac253b0c, 0x8e420000, 0x40f809, 0x0, 0x30460002, 0x14c000dd, 0x408821, 0x30430001, 0x54600010, 0x8e420004, 0x3c040800, 0x8c843b10, 0x3c09c000, 0x898025, 0xaf500e00, 0x8f4b0000, 0x316a0008, 0x1140fffd, 0x0, 0x97450e08, 0x24100001, 0xa7850040, 0x8f4c0e04, 0xaf8c0034, 0x8e420004, 0x40f809, 0x0, 0x2228825, 0x322d0002, 0x15a00159, 0x0, 0x3c090800, 0x95293b18, 0x3c060800, 0x94c63b24, 0x3c040800, 0x94843b1a, 0x3c190800, 0x8f393b10, 0x1265821, 0x3c180800, 0x8f183b34, 0x3c1f0800, 0x97ff3b2e, 0x1641821, 0x8f4e0940, 0x3292821, 0x246f0002, 0x3196821, 0xbf6021, 0x3c010800, 0xa42b3b26, 0xaf8e0064, 0x3c010800, 0xac2d3b34, 0x3c010800, 0xa42c3b1c, 0xe00009a, 0x31e4ffff, 0x8f87004c, 0x402021, 0x3c010800, 0xa0273b2d, 0x8e420008, 0x24e80001, 0xaf88004c, 0x40f809, 0x0, 0x8f4b002c, 0x97490908, 0x3c0a000e, 0x34a3821, 0x3124ffff, 0x419c0, 0x8f8a0054, 0xaf43002c, 0x97430908, 0x94e6001a, 0x404021, 0x30dfffff, 0xac5f0000, 0x8cf9001c, 0xac590004, 0x8cf80020, 0xac580008, 0x90ef0019, 0x31e30003, 0x107300e6, 0x0, 0x28620002, 0x14400102, 0x240c0002, 0x106c00f4, 0x240d0003, 0x106d00a7, 0x0, 0x3c090800, 0x95293b1c, 0x93450934, 0x934c0921, 0x3c0f0800, 0x95ef3b22, 0x30bf00ff, 0x94ee002a, 0x1f6882, 0x319900ff, 0x978c0058, 0xd1600, 0x19c400, 0x3124ffff, 0x1e43021, 0x584825, 0x1263825, 0x1cc2821, 0x3c034000, 0xe3f825, 0x56c00, 0xad0d0004, 0xad1f0000, 0x93590920, 0x3c180006, 0x250d0014, 0x197e00, 0x1f87025, 0xad0e0008, 0x8f42092c, 0x25860001, 0x8e4c000c, 0xad02000c, 0x8f440930, 0x30c97fff, 0xa7890058, 0xad040010, 0x8f470938, 0x25040028, 0xad070014, 0xadaa0004, 0x8f450940, 0xada50008, 0x93430937, 0x3c1f0800, 0x93ff3b2c, 0xada00010, 0x3c700, 0x1fcc00, 0x3197825, 0x35eeffff, 0xadae000c, 0xaf4b002c, 0x180f809, 0x0, 0x3c060800, 0x94c63b26, 0x3c020800, 0x94423b1a, 0xc24821, 0x252b0002, 0xe0000c3, 0x3164ffff, 0x3c080800, 0x8d083b08, 0x3c070800, 0x8ce73b10, 0x1075023, 0x3c010800, 0xac2a3b08, 0x15400006, 0x0, 0x3c080800, 0x8d083b28, 0x350a0040, 0x3c010800, 0xac2a3b28, 0x12000084, 0x8f830048, 0x8f470e10, 0x8f900048, 0xae070020, 0x8f4b0e18, 0xae0b0024, 0x3c100800, 0x96103b1c, 0xe00005c, 0x0, 0x240f0040, 0xaf4f0814, 0x8f860054, 0x8f890050, 0xd01821, 0x697023, 0x19c00004, 0xaf830054, 0xaf630054, 0x8f640054, 0xaf840050, 0x1200000c, 0x0, 0x8f440074, 0x93780081, 0x3419fa00, 0x2f020007, 0x10400005, 0x991821, 0x937f0081, 0x240c01f4, 0x3ec6804, 0x1a41821, 0xaf63000c, 0x8f4a095c, 0x8f88005c, 0x1482823, 0x18a00003, 0x0, 0x8f50095c, 0xaf90005c, 0xe00005e, 0x0, 0x8f830054, 0x8e470010, 0x3c010800, 0xac233b30, 0xe0f809, 0x0, 0x3c0b0800, 0x8d6b3b08, 0x1560ff10, 0x24080006, 0x8f590024, 0x975f0908, 0x8f890064, 0x8f8e0054, 0x3c0c001f, 0x97840058, 0x8f8f002c, 0x8f930050, 0x33f8ffff, 0x358dff80, 0x32d3024, 0x1811c0, 0x32320010, 0xaf420024, 0xa5e4002c, 0xaf460024, 0xaf690044, 0xaf6e0050, 0xaf730054, 0x5640007c, 0x8e850004, 0x322a0040, 0x55400031, 0x8e910008, 0x8e88000c, 0x100f809, 0x0, 0x8fbf002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, 0x3c090800, 0x95293b1c, 0x3c030800, 0x94633b26, 0x3c040800, 0x94843b18, 0x94f90024, 0x3125ffff, 0x94f80028, 0x65f821, 0x3e47823, 0x196400, 0x186c00, 0x25eeffee, 0x1ae3025, 0x35828100, 0x24030800, 0xad02000c, 0xad060010, 0xad030018, 0xad000014, 0xa0009b3, 0x2508001c, 0x93430109, 0x8f860038, 0x33e00, 0xe64025, 0xaf480080, 0x8f5f09a0, 0x8f5809a4, 0xafbf0010, 0xaf5f0e14, 0x8fb90010, 0xaf590e10, 0xaf580e1c, 0xa00092d, 0xaf580e18, 0x220f809, 0x0, 0x8e88000c, 0x100f809, 0x0, 0xa000a50, 0x8fbf002c, 0xa4600020, 0xa4730022, 0xa000a05, 0xac730024, 0x3c010800, 0xac203b0c, 0xa000953, 0x8e420000, 0x3c010800, 0xac243b0c, 0xa000953, 0x8e420000, 0x3c090800, 0x95293b1c, 0x3c1f0800, 0x97ff3b26, 0x3c050800, 0x94a53b18, 0x94f80024, 0x3124ffff, 0x3e4c821, 0x3257823, 0x186c00, 0x25eefff2, 0x1ae6025, 0xac4c000c, 0x24020800, 0xad020014, 0xad000010, 0xa0009b3, 0x25080018, 0x94e60024, 0x94e30028, 0x3c090800, 0x95293b1c, 0x62400, 0x3fc00, 0x34858100, 0x37f90800, 0xad05000c, 0xad190010, 0xa0009b3, 0x25080014, 0x1460ff02, 0x0, 0x94f80024, 0x3c090800, 0x95293b1c, 0x187c00, 0x35ee0800, 0xad0e000c, 0xa0009b3, 0x25080010, 0x93520109, 0x2821, 0xe000628, 0x324400ff, 0x8fbf002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0030, 0xa0f809, 0x0, 0xa000a4a, 0x322a0040, 0x1200ff6b, 0x0, 0x8f4e0e14, 0x8f920048, 0xae4e0020, 0x8f530e1c, 0xa000a34, 0xae530024, 0x8f820018, 0x804021, 0x3c040100, 0x90470085, 0x30e30020, 0x10600009, 0x0, 0x3c070800, 0x8ce73b30, 0x8f830014, 0xe32023, 0x4800008, 0x93890000, 0x14e30003, 0x1002021, 0x3e00008, 0x801021, 0x3c040100, 0x3e00008, 0x801021, 0x1120000b, 0x673823, 0x8f8c001c, 0x24090034, 0x918b00bc, 0x316a0002, 0x51400001, 0x24090030, 0xe9682b, 0x15a0fff1, 0x1002021, 0xe93823, 0x2419fffc, 0xb9c024, 0xf97824, 0xf8702b, 0x15c0ffea, 0x1e82021, 0x30c20003, 0x21823, 0x14c00012, 0x30690003, 0x3021, 0xa97021, 0x1c66821, 0xed602b, 0x1180ffe0, 0x3c040100, 0x2d2f0001, 0x6482b, 0x1053821, 0x1e93024, 0x14c0ffda, 0x24e4fffc, 0x2419fffc, 0xb9c024, 0x3082021, 0x3e00008, 0x801021, 0x8f8b001c, 0x24060004, 0x916a00bc, 0x31440004, 0x1480ffec, 0xa97021, 0xa000afc, 0x3021, 0x27bdffe8, 0xafbf0010, 0x8f460100, 0x934a0109, 0x3c1f0800, 0x8fff0090, 0x2407ff80, 0x314f00ff, 0x31e8007f, 0x86140, 0x3e6c821, 0x32cc021, 0x27090120, 0x1277024, 0x3c010800, 0xa02f3b6c, 0xaf4e080c, 0x3c0d0800, 0x8dad0090, 0x3c040080, 0x34820003, 0x1a65821, 0x16c1821, 0x24650120, 0x30aa0078, 0x1424025, 0xaf48081c, 0x3c1f0800, 0x8fff0090, 0x8f880044, 0x3e6c021, 0x33190007, 0x3074824, 0x33a7821, 0xaf490028, 0x25e909c0, 0x952e0002, 0x3c0d0800, 0x8dad008c, 0x3c0a0800, 0x8d4a0090, 0x31cc3fff, 0x1a61821, 0xc5980, 0x6b2821, 0xa72024, 0xaf44002c, 0x95220002, 0x3c1f0800, 0x8fff008c, 0x91070085, 0x30593fff, 0x3e67821, 0x19c180, 0x1467021, 0x1f86821, 0x31cc007f, 0x31ab007f, 0x19a2821, 0x17a5021, 0x3c03000c, 0x3c04000e, 0xa32821, 0x1441021, 0x30e60020, 0x27470980, 0xaf820028, 0xaf880018, 0xaf890020, 0xaf85001c, 0x10c00006, 0xaf870024, 0x8d020050, 0x8ca4010c, 0x443023, 0x18c00077, 0x0, 0x910c0085, 0x240dffdf, 0x18d3824, 0xa1070085, 0x8f8b0018, 0x8f890020, 0x8f870024, 0x8d65004c, 0xaf850014, 0x912f000d, 0x31ee0020, 0x11c00017, 0x0, 0x24090001, 0xa3890000, 0xaf800008, 0x8ce40024, 0x8f850008, 0x240a0008, 0xaf800004, 0xaf80000c, 0x3c010800, 0xa42a3b1a, 0x3c010800, 0xa4203b2e, 0xe000ad0, 0x3021, 0x8f850020, 0x8fbf0010, 0xaf820010, 0x90a8000d, 0x27bd0018, 0x83942, 0x3e00008, 0x30e20001, 0x913f0002, 0x24180001, 0x33f900ff, 0x192182, 0x10980039, 0x24080002, 0x1088005b, 0x8f860028, 0x8ce50024, 0x14a0001b, 0x8f9f001c, 0x91220000, 0x240a0005, 0x3046003f, 0x10ca0047, 0x24040001, 0x8f860004, 0xa3840000, 0xaf86000c, 0xaf860008, 0x8ce40024, 0x8f850008, 0x240a0008, 0x3c010800, 0xa42a3b1a, 0x3c010800, 0xa4203b2e, 0xe000ad0, 0x0, 0x8f850020, 0x8fbf0010, 0xaf820010, 0x90a8000d, 0x27bd0018, 0x83942, 0x3e00008, 0x30e20001, 0x8cf80008, 0x8cf90024, 0x8fee00c4, 0xa3800000, 0x8ce40024, 0xaf8e0008, 0x8f850008, 0x8f860004, 0x3197823, 0x240a0008, 0xaf8f000c, 0x3c010800, 0xa42a3b1a, 0x3c010800, 0xa4203b2e, 0xe000ad0, 0x0, 0x8f850020, 0x8fbf0010, 0xaf820010, 0x90a8000d, 0x27bd0018, 0x83942, 0x3e00008, 0x30e20001, 0x91230000, 0x3062003f, 0x10440027, 0x8f85001c, 0x8ce40024, 0x14800021, 0x0, 0x8d2e0018, 0x3c187fff, 0x8f85001c, 0x370fffff, 0x1cf1824, 0xaf830004, 0x8f9f0004, 0x8ca80084, 0x3e8c82b, 0x17200002, 0x3e02021, 0x8ca40084, 0xa000b8b, 0xaf840004, 0x8ca3010c, 0xa000b69, 0xaf830014, 0x8d2c0018, 0x8f860004, 0x3c0d7fff, 0x8f89001c, 0x35a3ffff, 0x1835824, 0x24040001, 0xaf8b000c, 0xad2000cc, 0xa3840000, 0xa000b97, 0xaf860008, 0x8cca0014, 0xa000b8b, 0xaf8a0004, 0x8ca300c8, 0xa000bce, 0xaf830004, 0x8f840028, 0x8cac0064, 0x8c8d0014, 0x18d582b, 0x11600004, 0x0, 0x8ca20064, 0xa000bce, 0xaf820004, 0x8c820014, 0xa000bce, 0xaf820004, 0x8f850008, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0x14a00007, 0xafb00010, 0x8f860020, 0x24020005, 0x90c40000, 0x3083003f, 0x106200b6, 0x8f84001c, 0x8f910004, 0xa08021, 0x8f8c0024, 0x3c050800, 0x8ca53b0c, 0x8d8b0004, 0x31663fff, 0xc5502b, 0x55400001, 0xc02821, 0x938d0000, 0x11a00073, 0xb0f82b, 0x8f98001c, 0x24040034, 0x930f00bc, 0x31ee0002, 0x51c00001, 0x24040030, 0xa4c82b, 0x172000d1, 0x0, 0xa42823, 0xb0f82b, 0x3c010800, 0xa4243b18, 0x17e00068, 0x2002021, 0x3c030800, 0x8c633b08, 0x83102b, 0x54400001, 0x801821, 0x8f880020, 0x3c010800, 0xac233b10, 0x4821, 0x9104000d, 0x30830020, 0x50600001, 0x8f490e18, 0x8f830010, 0x123382b, 0x10e00059, 0x0, 0x3c040800, 0x8c843b10, 0x895821, 0x6b502b, 0x11400056, 0x90602b, 0x693023, 0xc02021, 0x3c010800, 0xac263b10, 0x12000003, 0x241ffffc, 0x1090008a, 0x32270003, 0x9fc824, 0x3c010800, 0xac393b10, 0x3c010800, 0xa4203b2e, 0x8f840008, 0x12040007, 0x8f83001c, 0xaf910004, 0x2002021, 0x8c7100cc, 0xaf900008, 0x26300001, 0xac7000cc, 0x3c020800, 0x8c423b10, 0x8f8a000c, 0x24070018, 0x822023, 0x1422823, 0xaf840008, 0x10800002, 0xaf85000c, 0x24070010, 0x8f860018, 0x3c010800, 0xa0273b2c, 0x24070040, 0x90cc0085, 0x318b00c0, 0x11670040, 0x8f8d0010, 0x14a00015, 0x2021, 0x934a0109, 0x8f420974, 0x314500ff, 0x22602, 0x24a30001, 0x3090007f, 0x3071007f, 0x1230007a, 0x2407ff80, 0xa0c30083, 0x3c090800, 0x8d293b28, 0x8f880020, 0x240d0002, 0x352c0008, 0x3c010800, 0xa02d3b6d, 0x3c010800, 0xac2c3b28, 0x24040010, 0x910e000d, 0x31c60020, 0x10c00005, 0x801821, 0x24080001, 0x3c010800, 0xac283b10, 0x34830001, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x601021, 0x3e00008, 0x27bd0020, 0x3c010800, 0xa4203b18, 0x13e0ff9a, 0x2002021, 0xa000c1f, 0xa02021, 0x3c040800, 0x8c843b10, 0x90602b, 0x1180ffae, 0x0, 0x3c0f0800, 0x95ef3b18, 0x1e47021, 0x1c6682b, 0x11a00007, 0x2c820004, 0x3c1f6000, 0x8ff95404, 0x3338003f, 0x1700ffe5, 0x24030042, 0x2c820004, 0x1040ffa0, 0x24030042, 0xa000c7d, 0x8fbf0018, 0x152dffc0, 0x0, 0x8cdf0074, 0x3c038000, 0x2405ff80, 0x3e3c825, 0xacd90074, 0x90d80085, 0x240e0004, 0x24040010, 0x330f003f, 0x1e54025, 0xa0c80085, 0x8f880020, 0x3c010800, 0xa02e3b6d, 0x24030001, 0x9106000d, 0x30c90020, 0x15200003, 0x0, 0x3c030800, 0x8c633b10, 0x3c010800, 0xac233b08, 0xa000c74, 0x0, 0x8f87000c, 0x8c880084, 0xe8282b, 0x14a00002, 0xe08821, 0x8c910084, 0x24090001, 0xa3890000, 0x8f440e18, 0x2202821, 0xe000ad0, 0x2203021, 0x2208021, 0xa000c05, 0xaf820010, 0x71823, 0x30660003, 0x3c010800, 0xa4263b2e, 0x12200005, 0x8f8c001c, 0x918b00bc, 0x316a0004, 0x15400015, 0x24cd0004, 0x3c0f0800, 0x95ef3b2e, 0x1e47021, 0xae302b, 0x50c0ff6e, 0x8f840008, 0x2c850005, 0x14a0ffa3, 0x24030042, 0x30980003, 0x17000002, 0x981823, 0x2483fffc, 0x3c010800, 0xac233b10, 0xa000c41, 0x0, 0xa75824, 0xa000c69, 0x1671826, 0x3c010800, 0xa42d3b2e, 0xa000cd1, 0x0, 0x3c010800, 0xac203b10, 0xa000c7c, 0x24030042, 0x8f83000c, 0x14600007, 0x1021, 0x8f880020, 0x24050005, 0x91060000, 0x30c400ff, 0x10850003, 0x0, 0x3e00008, 0x0, 0x910a0018, 0x314900ff, 0x939c2, 0x14e0fffa, 0x8f850018, 0x3c040800, 0x94843b18, 0x3c030800, 0x8c633b30, 0x3c190800, 0x8f393b10, 0x3c0f0800, 0x95ef3b2e, 0x64c021, 0x8cad0054, 0x3197021, 0x1cf6021, 0x18d5823, 0x1960001d, 0x0, 0x910e001c, 0x8f8c0028, 0x974b0e10, 0x31cd00ff, 0x8d850004, 0x16d3023, 0x8d880000, 0x30ceffff, 0xe5100, 0xaac821, 0x3821, 0x1072021, 0x32a182b, 0x83c021, 0xad990004, 0xad980000, 0x918f000a, 0x1cf6821, 0xa18d000a, 0x8f880028, 0x974b0e12, 0xa50b0008, 0x950a0038, 0x25490001, 0xa5090038, 0x9107000d, 0x34e60008, 0xa106000d, 0x3e00008, 0x0, 0x27bdffe0, 0x93870000, 0x8f8f0020, 0x8fad0014, 0x3c0e7fff, 0x8f890008, 0x35c8ffff, 0xafbf001c, 0xafb00018, 0x1a81824, 0x91ea000d, 0x717c0, 0x3c1fbfff, 0x625825, 0x2d2e0001, 0x8f900014, 0x37f9ffff, 0x3c180800, 0x8f183b30, 0x3c0f0800, 0x95ef3b26, 0x1796824, 0xe4780, 0x3c07efff, 0x3c05f0ff, 0x1a81825, 0x31490020, 0x34e2ffff, 0x34acffff, 0x3105823, 0x27a50010, 0x24060002, 0x25ea0002, 0x621824, 0x808021, 0x15200002, 0x4021, 0x8f480e1c, 0xa7aa0012, 0x5600037, 0x24070000, 0x30ff00ff, 0x1fcf00, 0x8f8b0018, 0x793825, 0xafa70014, 0x916f0085, 0x3c080800, 0x91083b2d, 0x3c18dfff, 0x31ee00c0, 0x370affff, 0xe182b, 0x3c1f0800, 0x97ff3b20, 0xea6824, 0xa3a80011, 0x31740, 0x1a24825, 0x8fb90010, 0xafa90014, 0x3c0a0800, 0x914a3b2f, 0xa7bf0016, 0x8fa80014, 0x32cc024, 0x3c0b0100, 0x3c0f0fff, 0x30b1825, 0x31470003, 0x35eeffff, 0x10c6824, 0x71600, 0x6ef824, 0x3c097000, 0x1a2c825, 0x3e95825, 0xafb90014, 0xafab0010, 0xe000072, 0xa3a00015, 0x8f8c0020, 0x26020008, 0x9186000d, 0x30c40020, 0x10800006, 0x8fbf001c, 0x3c050800, 0x94a53b1c, 0x24b0ffff, 0x3c010800, 0xa4303b1c, 0x8fb00018, 0x3e00008, 0x27bd0020, 0x8f980010, 0x118502b, 0x5540ffc7, 0x24070001, 0xa000d54, 0x30ff00ff, 0x93820000, 0x27bdffe0, 0xafbf0018, 0x1040000f, 0x805021, 0x8f880020, 0x240b0005, 0x8f890004, 0x91070000, 0x8f84001c, 0x1002821, 0x30e3003f, 0x8f860028, 0x106b0008, 0x3821, 0xafa90010, 0xe000439, 0xafaa0014, 0xa3800000, 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8d190018, 0x3c0f0800, 0x8def3b10, 0x8f98000c, 0x3c027fff, 0x8d080014, 0x345fffff, 0x33f6824, 0x1f87021, 0x1ae6023, 0x1883821, 0xafa90010, 0xe000439, 0xafaa0014, 0xa000da2, 0xa3800000, 0x8f870020, 0x3c050800, 0x94a53b2e, 0x3c020800, 0x8c423b28, 0x90e6000d, 0x52400, 0x30c30020, 0x1060002c, 0x444025, 0x8f850018, 0x6021, 0x240b0001, 0x90a30085, 0x4821, 0x240a0001, 0x3c0f8000, 0x35ee0070, 0x8dc70000, 0xaf870030, 0x8f580178, 0x700fffe, 0x3c038000, 0x34790070, 0x8f380000, 0x3c050800, 0x8ca50074, 0x3c0d0800, 0x8dad0070, 0x3077823, 0xaf3821, 0x1021, 0xef302b, 0x1a22021, 0x861821, 0x3c010800, 0xac270074, 0x3c010800, 0xac230070, 0xaf4b0148, 0x3c190800, 0x8f393b30, 0xa7490144, 0xa74a0146, 0xaf59014c, 0x3c0b0800, 0x916b3b2d, 0xa34b0152, 0xaf480154, 0x3c081000, 0xa74c0158, 0x3e00008, 0xaf480178, 0x8f4b0e1c, 0x3c0a0800, 0x8d4a3b10, 0x97490e16, 0x974d0e14, 0x1456021, 0x312affff, 0xa000dc5, 0x31a9ffff, 0x8f830020, 0x9064000d, 0x30820020, 0x10400029, 0x0, 0x4821, 0x5021, 0x4021, 0x3c078000, 0x34eb0070, 0x8d670000, 0xaf870030, 0x8f4c0178, 0x580fffe, 0x3c0d8000, 0x35ac0070, 0x8d8b0000, 0x3c050800, 0x8ca50074, 0x3c040800, 0x8c840070, 0x1673023, 0xa67821, 0x1021, 0x1e6c82b, 0x82c021, 0x3197021, 0x3c010800, 0xac2f0074, 0x3c010800, 0xac2e0070, 0xaf490148, 0x3c0d0800, 0x8dad3b30, 0xa7480144, 0x24090040, 0xa74a0146, 0x3c081000, 0x240aff91, 0xaf4d014c, 0xa34a0152, 0xaf490154, 0xa7400158, 0x3e00008, 0xaf480178, 0x8f490e18, 0x97460e12, 0x97450e10, 0x30caffff, 0xa000dfb, 0x30a8ffff, 0x8f830020, 0x27bdfff8, 0x9064000d, 0x30820020, 0x1040003a, 0x0, 0x240b0001, 0x4821, 0x240a0001, 0x3c088000, 0x35070070, 0x8ce30000, 0xaf830030, 0x8f4c0178, 0x580fffe, 0x3c0e8000, 0x3c040800, 0x90843b6c, 0x35c70070, 0x8cec0000, 0x3c050800, 0x8ca50074, 0xa3a40003, 0x3c190800, 0x8f390070, 0x8fad0000, 0x1833023, 0xa63821, 0x1021, 0x3227821, 0xe6c02b, 0x1f86021, 0x1ae4025, 0xafa80000, 0x3c010800, 0xac270074, 0x3c010800, 0xac2c0070, 0x9346010a, 0x3c040800, 0x90843b6d, 0xa3a00002, 0xa3a60001, 0x8fa30000, 0x3c0580ff, 0x3099007f, 0x34a2ffff, 0x627824, 0x19c600, 0x1f87025, 0x240d3000, 0xaf4e014c, 0x27bd0008, 0xaf4d0154, 0xa7400158, 0xaf4b0148, 0xa7490144, 0xa74a0146, 0x3c091000, 0x240aff80, 0xa34a0152, 0x3e00008, 0xaf490178, 0x8f4b0e18, 0x97460e12, 0x97450e10, 0x30caffff, 0xa000e2f, 0x30a9ffff, 0x8f850018, 0x24020080, 0x90a40085, 0x308300c0, 0x10620005, 0x8f86001c, 0x8f880004, 0x8f870008, 0xacc800c8, 0xacc700c4, 0x3e00008, 0x0, 0x3c0a0800, 0x254a37cc, 0x3c090800, 0x25293898, 0x3c080800, 0x25082c4c, 0x3c070800, 0x24e739ac, 0x3c060800, 0x24c6363c, 0x3c050800, 0x24a533b4, 0x3c040800, 0x24842fdc, 0x3c030800, 0x246336d4, 0x3c020800, 0x244234a8, 0x3c010800, 0xac2a3c38, 0x3c010800, 0xac293c34, 0x3c010800, 0xac283c30, 0x3c010800, 0xac273c3c, 0x3c010800, 0xac263c4c, 0x3c010800, 0xac253c44, 0x3c010800, 0xac243c40, 0x3c010800, 0xac233c50, 0x3c010800, 0xac223c48, 0x3e00008, 0x0, 0x0 }; u32 bce_TXP_b06FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_TXP_b06FwRodata[(0x0/4) + 1] = { 0x0 }; u32 bce_TXP_b06FwBss[(0x14c/4) + 1] = { 0x0 }; u32 bce_TXP_b06FwSbss[(0x68/4) + 1] = { 0x0 }; u32 bce_TXP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_CP_b06FwReleaseMajor = 0x1; int bce_CP_b06FwReleaseMinor = 0x0; int bce_CP_b06FwReleaseFix = 0x0; u32 bce_CP_b06FwStartAddr = 0x08000080; u32 bce_CP_b06FwTextAddr = 0x08000000; int bce_CP_b06FwTextLen = 0x56cc; u32 bce_CP_b06FwDataAddr = 0x08005820; int bce_CP_b06FwDataLen = 0x84; u32 bce_CP_b06FwRodataAddr = 0x080056cc; int bce_CP_b06FwRodataLen = 0x134; u32 bce_CP_b06FwBssAddr = 0x08005998; int bce_CP_b06FwBssLen = 0x5d8; u32 bce_CP_b06FwSbssAddr = 0x080058a4; int bce_CP_b06FwSbssLen = 0xf1; u32 bce_CP_b06FwSDataAddr = 0x00000000; int bce_CP_b06FwSDataLen = 0x0; u32 bce_CP_b06FwText[(0x56cc/4) + 1] = { 0xa000020, 0x0, 0x0, 0xd, 0x6370342e, 0x362e3137, 0x0, 0x4061104, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2b, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x244258a4, 0x3c030800, 0x24635f70, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, 0x26100080, 0x3c1c0800, 0x279c58a4, 0xe00019c, 0x0, 0xd, 0x27bdffe8, 0x3c096018, 0xafbf0010, 0x8d2c5000, 0x240dff7f, 0x24080031, 0x18d5824, 0x356a380c, 0x24070c00, 0x3c1a8000, 0xad2a5000, 0x3c04800a, 0xaf480008, 0x3c1b8008, 0xaf470024, 0xe000924, 0xaf840010, 0xe0008e7, 0x0, 0xe000834, 0x0, 0xe00125e, 0x0, 0x3c046016, 0x8c850000, 0x3c06ffff, 0x3c025353, 0xa61824, 0x1062003f, 0x34867c00, 0x94c201f2, 0xa780002c, 0x10400003, 0xa78000cc, 0x38581e1e, 0xa798002c, 0x94c201f8, 0x10400004, 0x978300cc, 0x38591e1e, 0xa79900cc, 0x978300cc, 0x2c7f0067, 0x53e00001, 0x24030066, 0x9784002c, 0x2c820401, 0x14400002, 0x602821, 0x24040400, 0x3c076000, 0x8ce90438, 0x2403103c, 0x3128ffff, 0x11030017, 0x30b9ffff, 0x5720000c, 0xa38000ce, 0x24020050, 0xa38200ce, 0x939f00ce, 0x13e0000a, 0x8fbf0010, 0x27bd0018, 0xa78000cc, 0xa780002c, 0xa7800034, 0x3e00008, 0xa78000e6, 0x939f00ce, 0x17e0fff8, 0x8fbf0010, 0x27bd0018, 0xa78500cc, 0xa784002c, 0xa7800034, 0x3e00008, 0xa78000e6, 0xa38000ce, 0x8ccb003c, 0x316a0001, 0x1140000e, 0x0, 0x30a7ffff, 0x10e0ffe6, 0x24020050, 0x8ccc00c8, 0x31860001, 0x14c0ffe4, 0x939f00ce, 0xa000072, 0x24020051, 0x8c8f0004, 0x3c0e6000, 0xa000055, 0x1ee3021, 0x8cef0808, 0x240d5708, 0xf7402, 0x11cd0004, 0x30b8ffff, 0x24050066, 0xa000073, 0x24040400, 0x1700ffd4, 0x939f00ce, 0xa000072, 0x24020050, 0x8f860010, 0x3089ffff, 0x93940, 0x8cc30010, 0x3c080050, 0xe82025, 0xaf430038, 0x8cc50014, 0x27420400, 0xaf82001c, 0xaf45003c, 0xaf440030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f4b0000, 0x316a0020, 0x1140fffd, 0x0, 0x3e00008, 0x0, 0x8f840010, 0x948a001a, 0x8c870024, 0x3149ffff, 0x940c0, 0xe83021, 0xaf46003c, 0x8c850024, 0x8f43003c, 0xa31023, 0x18400029, 0x0, 0x8c8b0020, 0x25620001, 0x3c0d0050, 0x35ac0008, 0xaf420038, 0xaf4c0030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f4f0000, 0x31ee0020, 0x11c0fffd, 0x0, 0x8f4a0400, 0x3c080020, 0xac8a0010, 0x8f490404, 0xac890014, 0xaf480030, 0x0, 0x94860018, 0x9487001c, 0xc71821, 0xa4830018, 0x9485001a, 0x24a20001, 0xa482001a, 0x9498001a, 0x9499001e, 0x13380003, 0x0, 0x3e00008, 0x0, 0x3e00008, 0xa480001a, 0x8c820020, 0xa0000cc, 0x3c0d0050, 0xa0000bd, 0x0, 0x3c030800, 0x8c630020, 0x8f820018, 0x27bdffe8, 0x10620008, 0xafbf0010, 0xe0000f4, 0xaf830018, 0x3c030800, 0x8c630020, 0x24040001, 0x10640004, 0x8f890010, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8fbf0010, 0x3c076012, 0xa520000a, 0x9528000a, 0x34e50010, 0x27bd0018, 0x3106ffff, 0x3e00008, 0xaca60090, 0x3c020800, 0x8c420020, 0x27bdffc8, 0xafbf0034, 0xafbe0030, 0xafb7002c, 0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0x10400050, 0xafb00010, 0x8f840010, 0x94860006, 0x9483000a, 0xc32823, 0x30b6ffff, 0x12c0004a, 0x8fbf0034, 0x94890018, 0x948a000a, 0x12a4023, 0x3102ffff, 0x2c2382b, 0x14e00002, 0x2c02021, 0x402021, 0x2c8c0005, 0x15800002, 0x80a021, 0x24140004, 0xe0000a3, 0x2802021, 0x8f870010, 0x2809821, 0xaf800014, 0x94ed000a, 0x2808821, 0x1280004e, 0x31b2ffff, 0x3c177000, 0x3c154000, 0x3c1e6000, 0x8f8f001c, 0x8dee0000, 0x1d71824, 0x50750050, 0x2202021, 0x2a3802b, 0x16000035, 0x3c182000, 0x50780047, 0x2202021, 0x24100001, 0x8f830014, 0x14600039, 0x2915823, 0x230f823, 0x250c821, 0x33f1ffff, 0x1620ffee, 0x3332ffff, 0x8f870010, 0x3c110020, 0xaf510030, 0x0, 0x94e6000a, 0x3c1e6012, 0x37d50010, 0x2662821, 0xa4e5000a, 0x94e2000a, 0x94f2000a, 0x94f40018, 0x3057ffff, 0x1292003b, 0xaeb70090, 0x8ced0014, 0x8ce40010, 0x137140, 0x1ae4021, 0xe5fc3, 0x10e502b, 0x8b4821, 0x12a1821, 0xace80014, 0xace30010, 0x2d33823, 0x30f6ffff, 0x16c0ffb9, 0x8f840010, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0038, 0x107e001b, 0x0, 0x1477ffcc, 0x24100001, 0xe0015a9, 0x0, 0x8f830014, 0x1060ffcb, 0x230f823, 0x2915823, 0x8f870010, 0x1702021, 0xa000187, 0x3093ffff, 0x8f830014, 0x1460ffcb, 0x3c110020, 0xaf510030, 0xa000153, 0x0, 0xe00079b, 0x2402821, 0xa000147, 0x408021, 0xe000341, 0x2402821, 0xa000147, 0x408021, 0xe001471, 0x2202021, 0xa000147, 0x408021, 0xe0000bd, 0x0, 0xa000169, 0x2d33823, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0xe000037, 0x0, 0x3c028000, 0x34500070, 0xa0001aa, 0x8e060000, 0x8f4f0000, 0x39ee0001, 0x31c20001, 0x10400024, 0x8f8600a8, 0x8e070000, 0x3c0c0800, 0x8d8c003c, 0x3c090800, 0x8d290038, 0xe66823, 0x18d2821, 0x5021, 0xad302b, 0x12a4021, 0x1062021, 0x3c010800, 0xac25003c, 0xaf8700a8, 0x3c010800, 0xac240038, 0xe0000f6, 0x0, 0x3c030800, 0x8c630070, 0x1060ffe6, 0x602021, 0x3c050800, 0x8ca50068, 0x3c060800, 0x8cc6006c, 0xe001538, 0x0, 0x3c010800, 0xac200070, 0x8f4f0000, 0x39ee0001, 0x31c20001, 0x1440ffde, 0x8f8600a8, 0x8e0a0000, 0x8f8b00a8, 0x3c050800, 0x8ca5003c, 0x3c040800, 0x8c840038, 0x14b4823, 0xa93821, 0x821821, 0xe9402b, 0x681021, 0x3c010800, 0xac27003c, 0x3c010800, 0xac220038, 0x8f5f0100, 0x2419ff00, 0x24180c00, 0x3f92024, 0x10980012, 0xaf840000, 0xaf440020, 0x936d0000, 0x240c0020, 0x31a600ff, 0x10cc0012, 0x240e0050, 0x10ce0004, 0x3c194000, 0xaf590138, 0xa0001a3, 0x0, 0xe0011d4, 0x0, 0x3c194000, 0xaf590138, 0xa0001a3, 0x0, 0xe00010f, 0x0, 0x3c194000, 0xaf590138, 0xa0001a3, 0x0, 0x8f580100, 0x802821, 0x330f00ff, 0x1e02021, 0xe0002ee, 0xaf8f0004, 0x3c194000, 0xaf590138, 0xa0001a3, 0x0, 0xa4102b, 0x24030001, 0x10400009, 0x3021, 0x52840, 0xa4102b, 0x4a00003, 0x31840, 0x5440fffc, 0x52840, 0x5060000a, 0x4182b, 0x85382b, 0x54e00004, 0x31842, 0xc33025, 0x852023, 0x31842, 0x1460fff9, 0x52842, 0x4182b, 0x3e00008, 0xc31021, 0x3084ffff, 0x30a5ffff, 0x8f4201b8, 0x440fffe, 0x3c074080, 0x873025, 0x3c031000, 0xaf400180, 0xaf450184, 0xaf460188, 0x3e00008, 0xaf4301b8, 0x3084ffff, 0x8f4201b8, 0x440fffe, 0x3c074038, 0x8ca60000, 0x872825, 0x3c031000, 0xaf460180, 0xaf450188, 0x3e00008, 0xaf4301b8, 0x8f830038, 0x8f860030, 0x1066000b, 0x804021, 0x3c070800, 0x24e75a18, 0x328c0, 0xa71021, 0x8c440000, 0x24630001, 0x10880005, 0x3063000f, 0x5466fffa, 0x328c0, 0x3e00008, 0x1021, 0x3c070800, 0x24e75a1c, 0xa73021, 0x3e00008, 0x8cc20000, 0x3c039000, 0x34620001, 0x822025, 0xaf440020, 0x8f450020, 0x4a0fffe, 0x0, 0x3e00008, 0x0, 0x3c038000, 0x34620001, 0x822025, 0x3e00008, 0xaf440020, 0x27bdffe0, 0xafb10014, 0x3091ffff, 0xafb00010, 0xafbf0018, 0x12200015, 0xa08021, 0x8ca50000, 0x10a00013, 0x24040002, 0xe000c6b, 0x24060140, 0xae000000, 0x8f4201b8, 0x440000d, 0x2821, 0x3c064000, 0x2262025, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3c031000, 0x27bd0020, 0xaf450180, 0xaf440188, 0x3e00008, 0xaf4301b8, 0x8ca50000, 0x8f4201b8, 0x440fffe, 0x3c064000, 0x2262025, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3c031000, 0x27bd0020, 0xaf450180, 0xaf440188, 0x3e00008, 0xaf4301b8, 0x3086ffff, 0x8f4201b8, 0x440fffe, 0x3c094006, 0x8ca80000, 0xc93825, 0xaf480180, 0x8ca40004, 0x3c031000, 0xaf440184, 0xaf470188, 0x3e00008, 0xaf4301b8, 0x27bdffe0, 0xafb00010, 0xafbf0018, 0xafb10014, 0x9363003e, 0x808021, 0x802821, 0x30620040, 0x2021, 0x1040000f, 0x8e110000, 0xe000860, 0x2202021, 0x93670000, 0x24040050, 0x30e500ff, 0x50a40012, 0x8e0f0000, 0x2202021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa762013c, 0xa000920, 0x27bd0020, 0xe00027d, 0x0, 0xe000860, 0x2202021, 0x93670000, 0x24040050, 0x30e500ff, 0x14a4fff2, 0x2202021, 0x8e0f0000, 0x3c100800, 0x8e100050, 0x3c0d000c, 0x240bff80, 0x1f05021, 0x314e007f, 0x1da6021, 0x18d4021, 0x14b4824, 0xaf490028, 0x2202021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa50200d6, 0x27bd0020, 0xa000920, 0xaf8800d0, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0x93660001, 0x808021, 0xe000246, 0x30d10004, 0x93640005, 0x1029c2, 0xa7650000, 0x34830040, 0xa3630005, 0xe00024f, 0x2002021, 0xe000922, 0x2002021, 0x24020001, 0xaf62000c, 0x2002821, 0xa7620010, 0x24040002, 0xa7620012, 0x24060140, 0xa7620014, 0xe000c6b, 0xa7620016, 0x1620000f, 0x8fbf0018, 0x978c0034, 0x3c0b0800, 0x8d6b0078, 0x2588ffff, 0x3109ffff, 0x256a0001, 0x12a382b, 0x10e00006, 0xa7880034, 0x3c0f6006, 0x240e0016, 0x35ed0010, 0xadae0050, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, 0xa08821, 0x1080000a, 0x3c036000, 0x24020080, 0x10820012, 0x0, 0xd, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x8c682bf8, 0x500fffe, 0x0, 0xac712bc0, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3c091000, 0x27bd0020, 0x3e00008, 0xac692bf8, 0xe000246, 0xa02021, 0x93650005, 0x2202021, 0xe00024f, 0x30b000ff, 0x2403003e, 0x1603ffe7, 0x0, 0x8f440178, 0x480fffe, 0x24070007, 0x3c061000, 0xaf510140, 0x2202021, 0xa3470144, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xaf460178, 0xa0002bf, 0x27bd0020, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x8f500020, 0x0, 0xe000922, 0xaf440020, 0xaf500020, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3084ffff, 0x8f4201b8, 0x440fffe, 0x3c074035, 0x873025, 0x3c031000, 0xaf450180, 0xaf400184, 0xaf460188, 0x3e00008, 0xaf4301b8, 0x3084ffff, 0x8f4201b8, 0x440fffe, 0x3c074036, 0x873025, 0x3c031000, 0xaf450180, 0xaf400184, 0xaf460188, 0x3e00008, 0xaf4301b8, 0x27bdffd0, 0xafb3001c, 0x3093ffff, 0xafb50024, 0xafb20018, 0xafbf0028, 0xafb40020, 0xafb10014, 0xafb00010, 0x30b5ffff, 0x12600027, 0x9021, 0x8f90001c, 0x8e030000, 0x3c068000, 0x24020040, 0x33e02, 0x32c02, 0x30e4007f, 0x668824, 0x1482001d, 0x30a500ff, 0x8f830028, 0x2c68000a, 0x51000010, 0x8f910014, 0x35880, 0x3c0c0800, 0x258c56cc, 0x16c5021, 0x8d490000, 0x1200008, 0x0, 0x2b21821, 0x3065ffff, 0xe00021a, 0x24040084, 0x16200002, 0x8f90001c, 0xaf800028, 0x8f910014, 0x260c0020, 0x264b0001, 0x1808021, 0x3172ffff, 0x16200004, 0xaf8c001c, 0x253402b, 0x1500ffdc, 0x0, 0x2401021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0030, 0x240d0034, 0x14ad00f6, 0x0, 0x920b000e, 0x240a1680, 0x3c07000c, 0xa36b0021, 0x9203000d, 0x347f821, 0x3c066000, 0xa3630020, 0x96110012, 0x3c087fff, 0x350cffff, 0xa771003c, 0x96020010, 0x240b0005, 0x3054ffff, 0xaf740084, 0x8e19001c, 0xaf4a0028, 0x8ff80000, 0x8ccf4448, 0x3197026, 0x1ee3021, 0xaf66004c, 0x8f69004c, 0x24cd0001, 0x3c197f00, 0xaf690050, 0x8f640050, 0xaf640054, 0xaf660070, 0xaf6d0058, 0x8f650058, 0x24040050, 0xaf65005c, 0xa3600023, 0xaf6c0064, 0xa36b0037, 0x8e030014, 0xaf630048, 0x8f710048, 0xaf710024, 0x8e020018, 0xaf62006c, 0x9214000c, 0xa3740036, 0x936a003e, 0x355f0020, 0xa37f003e, 0x8f780074, 0x3197824, 0x35ee4000, 0xaf6e0074, 0x93700000, 0x320900ff, 0x11240233, 0x2418ff80, 0x3c040800, 0x24845a98, 0xe00028a, 0x0, 0x24060004, 0x24070001, 0x3c040800, 0x8c845a98, 0xa366007d, 0xa3670005, 0x8f4a0178, 0x540fffe, 0x24020002, 0xaf440140, 0xa3420144, 0x8f90001c, 0x3c141000, 0xaf540178, 0xa000369, 0xaf800028, 0x2cad0037, 0x51a0ff9c, 0x8f910014, 0x5a080, 0x3c180800, 0x271856f4, 0x2987821, 0x8dee0000, 0x1c00008, 0x0, 0x24060006, 0x14a60011, 0x0, 0x3c1f0800, 0x8fff5a98, 0x24040005, 0xaf5f0020, 0x8e190018, 0xaf790018, 0x8f78004c, 0xaf78001c, 0x8f6f0050, 0x122000c2, 0xaf6f0070, 0xa000369, 0xaf840028, 0x240a0007, 0x10aa0084, 0x24030006, 0x3c050800, 0x24a55a98, 0xe000254, 0x24040081, 0x8f90001c, 0x11102b, 0xa000369, 0xaf820028, 0x240a0004, 0x14aafff6, 0x24030050, 0x3c0e0800, 0x8dce5a98, 0xaf4e0020, 0x8e090008, 0xaf690040, 0x8e060008, 0xaf660044, 0x8e07000c, 0xaf670048, 0x8e040010, 0xaf64004c, 0x8e0d0010, 0xaf6d0084, 0x8e080014, 0xaf680050, 0x8e050018, 0xaf650054, 0x8e0c001c, 0xaf6c0058, 0x936b0000, 0x317400ff, 0x128301f5, 0x0, 0x8f640048, 0x8f660040, 0x863823, 0x4e00004, 0x2404008c, 0x1620ffde, 0x24020003, 0x24040082, 0x3c050800, 0x24a55a98, 0xe00027d, 0x0, 0x8f90001c, 0x1021, 0xa000369, 0xaf820028, 0x24090005, 0x14a9ffcc, 0x24052000, 0x3c0a0800, 0x8d4a5a98, 0xaf4a0020, 0x8e1f0004, 0xaf7f005c, 0x92190008, 0x24100008, 0xa3790021, 0x8f98001c, 0x930f0009, 0xa36f0020, 0x8f86001c, 0x90ce000a, 0x31c400ff, 0x10900010, 0x28830009, 0x1460006c, 0x24020002, 0x24080020, 0x1088000b, 0x34058000, 0x28850021, 0x14a00008, 0x24054000, 0x240d0040, 0x108d0005, 0x3c050001, 0x24070080, 0x10870002, 0x3c050002, 0x24054000, 0x8f6e0074, 0x3c0fff00, 0x1cf8024, 0x2054825, 0xaf690074, 0x90c4000b, 0xa3640081, 0x8f84001c, 0x9486000c, 0x10c0019b, 0x0, 0x948e000c, 0x241fffbf, 0x24060004, 0xa76e003c, 0x9090000e, 0xa370003e, 0x8f89001c, 0x9124000f, 0xa364003f, 0x8f94001c, 0x8e8d0010, 0x8f470074, 0x1a72823, 0xaf650060, 0x8e880014, 0xaf680064, 0x968c0018, 0xa76c0068, 0x968b001a, 0xa76b006a, 0x8e82001c, 0xaf62006c, 0x96830002, 0xa763013e, 0x928a000e, 0xa36a003e, 0x9379003e, 0x33fc024, 0x1220016a, 0xa378003e, 0x8f90001c, 0xa000369, 0xaf860028, 0x24140022, 0x14b4ff7e, 0x24030007, 0x3c020800, 0x8c425a98, 0x1220000c, 0xaf420020, 0xa000369, 0xaf830028, 0x240c0033, 0x10ac0014, 0x24080028, 0x3c050800, 0x24a55a98, 0xe000226, 0x24040081, 0xa0003ee, 0x8f90001c, 0x3c040800, 0x24845a98, 0xe00028a, 0x0, 0x936b0000, 0x24110050, 0x316300ff, 0x10710154, 0x0, 0x8f90001c, 0x1821, 0xa000369, 0xaf830028, 0x3c050800, 0x8ca55a98, 0x24040081, 0xaf450020, 0xa3680034, 0x3c050800, 0x24a55a98, 0xe000226, 0x0, 0x8f90001c, 0x24020009, 0xa000369, 0xaf820028, 0x2b28821, 0x3225ffff, 0xe00021a, 0x24040084, 0xa000369, 0x8f90001c, 0x1082ffa1, 0x24050400, 0x28940003, 0x12800176, 0x240c0004, 0x240b0001, 0x548bff9b, 0x24054000, 0xa00043d, 0x24050100, 0x3c040800, 0x24845a98, 0x8f62004c, 0xe00028a, 0x8f630050, 0x8f90001c, 0x2021, 0xa000369, 0xaf840028, 0x8e100004, 0x2404008a, 0xaf500020, 0x936e0005, 0x31c90002, 0x15200165, 0x2002821, 0x93780023, 0x2002821, 0x330f0020, 0x15e00160, 0x2404008d, 0x9362003f, 0x24190012, 0x305f00ff, 0x13f9015b, 0x24040081, 0xe000246, 0x2002021, 0x93740023, 0x240a0004, 0x2002021, 0x36830042, 0xa3630023, 0xe00024f, 0xa36a007d, 0x8f4b0178, 0x560fffe, 0x24050002, 0xaf500140, 0xa3450144, 0x8f90001c, 0x3c0c1000, 0xaf4c0178, 0xa0003ef, 0x11102b, 0x8e100004, 0x2404008a, 0xaf500020, 0x936d0005, 0x31a80002, 0x15000019, 0x2002821, 0x9367003f, 0x24140012, 0x30e400ff, 0x10940101, 0x0, 0x936e003f, 0x24060004, 0x31c900ff, 0x112600fc, 0x0, 0xe000246, 0x2002021, 0x93620023, 0x2419fffe, 0x2002021, 0x345f0020, 0xa37f0023, 0xa374003f, 0x93780005, 0x3197824, 0xe00024f, 0xa36f0005, 0x2002821, 0x2021, 0xe000336, 0x0, 0xa0003ee, 0x8f90001c, 0x8e050004, 0x3c0f0008, 0x34f4021, 0xaf450020, 0x910e0000, 0x24060050, 0x31c900ff, 0x1126017a, 0x24040088, 0x8f5901b8, 0x720fffe, 0x3c0c400e, 0x8c5825, 0x3c031000, 0xaf450180, 0xaf400184, 0xaf4b0188, 0xaf4301b8, 0x91020000, 0x240aff80, 0x24040004, 0x4af825, 0xa11f0000, 0xe000c6b, 0x24060030, 0xa0003ee, 0x8f90001c, 0x8e04001c, 0xe000231, 0x0, 0x1040014c, 0x404821, 0x8f90001c, 0x24050089, 0x8f4d01b8, 0x5a0fffe, 0x0, 0xaf490180, 0x8e0f001c, 0x3c144001, 0x11702b, 0xb44825, 0x3c111000, 0xaf4f0184, 0xaf8e0028, 0xaf490188, 0xaf5101b8, 0xa00036a, 0x8f910014, 0x96190002, 0x3c140800, 0x26945a98, 0x33380004, 0x130000f2, 0x3c026000, 0x8e1f001c, 0x3c010800, 0xac3f5a98, 0xaf5f0020, 0x920c0010, 0x240b0014, 0x318400ff, 0x148b011c, 0x0, 0x96090002, 0x312d0001, 0x15a001b2, 0x0, 0x8e020004, 0xae820008, 0x3c0e0800, 0x8dce5aa0, 0x11c001a8, 0x0, 0x8f690074, 0x3c0e8000, 0x24040001, 0x12e6825, 0xaf6d0074, 0xa3600005, 0xaf64000c, 0x3c0c0800, 0x8d8c5aa0, 0x8f88001c, 0xa7640010, 0xc59c2, 0xa7640012, 0xa7640014, 0xa7640016, 0xa76b0008, 0x8d030008, 0x24040002, 0xaf63002c, 0x8d0a000c, 0xaf6a0030, 0x91070010, 0xa3670034, 0x8f82001c, 0x90450011, 0xa3650035, 0x8f86001c, 0x90d00012, 0xa3700036, 0x8f9f001c, 0x93f90013, 0xa3790037, 0x8f90001c, 0x96180014, 0xa7780038, 0x96140016, 0xa774003a, 0x8e0f0018, 0xaf6f0024, 0x5620fe02, 0xaf840028, 0x3c050800, 0x24a55a98, 0xe000254, 0x2021, 0x8f90001c, 0xa0004ac, 0x2021, 0x8e0f0004, 0x3c140800, 0x26945a98, 0x3c010800, 0xac2f5a98, 0xaf4f0020, 0x920e0003, 0x31c90004, 0x11200002, 0x24020012, 0x24020006, 0xa362003f, 0x9203001b, 0x240affc0, 0x3062003f, 0x4af825, 0xa37f003e, 0x92190003, 0x33380001, 0x170000c1, 0x0, 0x8e020008, 0xae820008, 0x3c020800, 0x8c425aa0, 0x104000c0, 0x0, 0x221c2, 0xa7640008, 0x8e0d000c, 0x240b0001, 0x24140014, 0xaf6d002c, 0x8e080010, 0xaf680030, 0x96050016, 0xa7650038, 0x960c0014, 0xa76c003a, 0xaf6b000c, 0xa76b0010, 0xa76b0012, 0xa76b0014, 0xa76b0016, 0x122000eb, 0xa3740034, 0x92060003, 0x30c70002, 0x2cf00001, 0x26020008, 0x8f90001c, 0xa000369, 0xaf820028, 0x8e140004, 0x24030081, 0xaf540020, 0x93680023, 0x31050010, 0x10a000ac, 0x0, 0x8f4401b8, 0x480fffe, 0x3c06401f, 0x11382b, 0x661025, 0x3c111000, 0xaf540180, 0xaf870028, 0xaf400184, 0xaf420188, 0xaf5101b8, 0xa00036a, 0x8f910014, 0x8e060004, 0x3c190008, 0x3592021, 0xaf460020, 0x8e070008, 0x90980000, 0x240f0050, 0x331400ff, 0x128f00a7, 0x24050088, 0x8f4401b8, 0x480fffe, 0x3c0d4009, 0x11602b, 0xad1025, 0x3c111000, 0xaf460180, 0xaf8c0028, 0xaf470184, 0xaf420188, 0xaf5101b8, 0xa00036a, 0x8f910014, 0x3c050800, 0x24a55a98, 0xe00027d, 0x24040082, 0x8f90001c, 0x3021, 0xa000369, 0xaf860028, 0x3c040800, 0x8c845a98, 0xe0014f6, 0x0, 0x8f90001c, 0xa000486, 0x1821, 0xe000336, 0x24040081, 0xa0003ee, 0x8f90001c, 0x3c050800, 0x24a55a98, 0xe00027d, 0x2404008b, 0x8f90001c, 0x11302b, 0xa000369, 0xaf860028, 0x3c190800, 0x8f395a98, 0x3c1f0800, 0x8fff0050, 0x24ccfffe, 0x33f7821, 0x1f87024, 0xaf4e0028, 0x3c040800, 0x8c845a98, 0x3c090800, 0x8d290050, 0x896821, 0x31a5007f, 0xba4021, 0x1078021, 0xae0600d8, 0xaf9000d0, 0xae0000dc, 0xa0003b8, 0xae0c0108, 0xaf600084, 0x3c080800, 0x8d085a98, 0x3c0d0800, 0x8dad0050, 0x2405ff80, 0x3c02000c, 0x10d5821, 0x1656024, 0xaf4c0028, 0x8e0a0014, 0x3174007f, 0x29a1821, 0x627821, 0xadea00d8, 0x8e1f0014, 0xaf8f00d0, 0xadff00dc, 0x8e190010, 0x2738fffe, 0xa00040b, 0xadf80108, 0x548cfe27, 0x24054000, 0xa00043d, 0x24051000, 0xe00032b, 0x0, 0xa0003ee, 0x8f90001c, 0x8c46442c, 0x3c056c62, 0x34b07970, 0x3c010800, 0xac205a98, 0x14d00008, 0x24040002, 0x97880034, 0x978a002c, 0x2802821, 0x10a382b, 0x10e00011, 0x24040092, 0x24040002, 0xe000c89, 0x24050140, 0x3c010800, 0xac225a98, 0xaf420020, 0x3c030800, 0x8c635a98, 0x10600005, 0x24040083, 0xe000854, 0x0, 0x10400009, 0x24040083, 0x3c050800, 0x24a55a98, 0xe000254, 0x0, 0x8f90001c, 0x11202b, 0xa000369, 0xaf840028, 0xe000858, 0x0, 0xa000530, 0x8f90001c, 0x8e040008, 0xe000231, 0x0, 0xa000586, 0xae820008, 0x3c050800, 0x24a55a98, 0xe000226, 0x24040087, 0x8f90001c, 0xa0005a2, 0x11102b, 0xe00085c, 0x0, 0x3c050800, 0x24a55a98, 0xa00063a, 0x2404008b, 0xe000246, 0x2802021, 0x93700023, 0x2802021, 0x360d0010, 0xe00024f, 0xa36d0023, 0x8f90001c, 0xa0005ab, 0x1821, 0x24040004, 0xe000c89, 0x24050030, 0x1440002a, 0x404821, 0x8f90001c, 0xa000517, 0x24050083, 0x9205000c, 0x30bf0001, 0x13e00003, 0x0, 0x9602000e, 0xa482002c, 0x920a000c, 0x31480002, 0x1100ff51, 0x2821, 0x960b0012, 0x8e030014, 0xa48b001a, 0xa0005c2, 0xac83001c, 0x8f830038, 0x8f870030, 0x1067fe84, 0x2021, 0x3c090800, 0x25295a1c, 0x320c0, 0x893021, 0x8cd40000, 0x1285005e, 0x24780001, 0x3303000f, 0x5467fffa, 0x320c0, 0xa0004fe, 0x2021, 0x3c050800, 0x24a55a98, 0xe00027d, 0x24040082, 0x8f90001c, 0xa0005a2, 0x1021, 0x3c0b0008, 0x34b2021, 0x24030050, 0x240a0001, 0xaf420020, 0xa0830000, 0xa08a0001, 0x8f88001c, 0x91070004, 0xa0870018, 0x8f82001c, 0x90450005, 0xa0850019, 0x8f86001c, 0x90df0006, 0xa09f001a, 0x8f99001c, 0x93380007, 0xa098001b, 0x8f94001c, 0x928f0008, 0xa08f001c, 0x8f90001c, 0x920e0009, 0xa08e001d, 0x8f8d001c, 0x91ac000a, 0xa08c001e, 0x8f8b001c, 0x3c0c0800, 0x258c5a1c, 0x9163000b, 0x3c0b0800, 0x256b5a18, 0xa083001f, 0x8f8a001c, 0x9148000c, 0xa0880020, 0x8f87001c, 0x90e5000d, 0xa0850021, 0x8f82001c, 0x24054646, 0x9046000e, 0xa0860022, 0x8f9f001c, 0x93f9000f, 0xa0990023, 0x8f98001c, 0x93140010, 0xa0940024, 0x8f8f001c, 0x91f00011, 0xa0900025, 0x8f90001c, 0x8f8e0030, 0x8f990038, 0x960d0014, 0xe18c0, 0x25c80001, 0xa48d0028, 0x960a0016, 0x6c3021, 0x6bf821, 0xa48a002a, 0x96070018, 0x3108000f, 0xa487002c, 0xa485002e, 0x8e02001c, 0xacc90000, 0xaf880030, 0x11190003, 0xafe20000, 0xa000517, 0x2821, 0x250c0001, 0x3184000f, 0x2821, 0xa000517, 0xaf840038, 0x3c070800, 0x24e75a18, 0x878021, 0x2021, 0xacc00000, 0xa0004fe, 0xae000000, 0x3c050800, 0x24a55a98, 0xa00063a, 0x24040087, 0x8e040004, 0xe000231, 0x0, 0xa00053b, 0xae820008, 0x3084ffff, 0x30c600ff, 0x8f4201b8, 0x440fffe, 0x64400, 0x1043025, 0x3c072000, 0xc72025, 0x3c031000, 0xaf400180, 0xaf450184, 0xaf440188, 0x3e00008, 0xaf4301b8, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x3c076000, 0x24060002, 0x10800006, 0xa08021, 0x10102b, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c09600e, 0xad200034, 0x8ce5201c, 0x8f82001c, 0x2408fffc, 0xa81824, 0xace3201c, 0xe0006ef, 0x8c45000c, 0x10102b, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c02600e, 0x34470100, 0x24090018, 0x274a0400, 0x0, 0x0, 0x0, 0x3c060050, 0x34c30200, 0xaf440038, 0xaf45003c, 0xaf430030, 0x1401821, 0x8f4b0000, 0x31680020, 0x1100fffd, 0x2406007f, 0x2408ffff, 0x8c6c0000, 0x24c6ffff, 0x24630004, 0xacec0000, 0x14c8fffb, 0x24e70004, 0x0, 0x0, 0x0, 0x3c0f0020, 0xaf4f0030, 0x0, 0x24ad0200, 0x1a5702b, 0x2529ffff, 0x8e2021, 0x1520ffe1, 0x1a02821, 0x3e00008, 0x0, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, 0x3c05600e, 0x8ca20034, 0x808821, 0x14400006, 0x3c046000, 0x8c87201c, 0x2408fffc, 0xe83024, 0x34c30001, 0xac83201c, 0x8f8b001c, 0x24090001, 0xaca90034, 0x95690002, 0x8d650014, 0x8d70000c, 0x2d240081, 0x8d670004, 0x8d660008, 0x10800007, 0x8d6a0010, 0x2d2c0004, 0x1580000e, 0x30ce0007, 0x312d0003, 0x11a0000b, 0x0, 0x2404008b, 0x2002821, 0xe0006ef, 0x24060003, 0x11102b, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x15c0fff6, 0x2404008b, 0x3c030020, 0xaf430030, 0x0, 0x24020001, 0xaf820014, 0x0, 0x0, 0x0, 0x3c1f0150, 0x13fc825, 0x25380003, 0x3c0f600e, 0xaf470038, 0x181882, 0xaf46003c, 0x35e8003c, 0xaf590030, 0x27470400, 0x8f440000, 0x30860020, 0x10c0fffd, 0x0, 0x10600008, 0x2466ffff, 0x2403ffff, 0x8ceb0000, 0x24c6ffff, 0x24e70004, 0xad0b0000, 0x14c3fffb, 0x25080004, 0x3c08600e, 0xad090038, 0x0, 0x0, 0x0, 0x3c070020, 0xaf470030, 0x0, 0xe000717, 0x1402021, 0x2002821, 0x2021, 0xe0006ef, 0x24060003, 0x11102b, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffd8, 0xafb20018, 0x3092ffff, 0xafb10014, 0xafbf0020, 0xafb3001c, 0xafb00010, 0x1240002c, 0x8821, 0xa0007af, 0x24130001, 0x50b3003c, 0x8ce5000c, 0xd, 0x262d0001, 0x31b1ffff, 0x24ec0020, 0x232382b, 0x10e00021, 0xaf8c001c, 0x8f820014, 0x1440001e, 0x8f87001c, 0x3c067000, 0x3c032000, 0x8ce40000, 0x862824, 0x14a30018, 0x8f85003c, 0x44402, 0x3c098000, 0x898024, 0x14a0ffea, 0x310600ff, 0x24040002, 0x10c4001f, 0x28ca0003, 0x11400016, 0x240b0003, 0x14d3ffe7, 0x262d0001, 0x2002821, 0xe0006fd, 0x24040001, 0x8f87001c, 0xaf82003c, 0x262d0001, 0x31b1ffff, 0x24ec0020, 0x232382b, 0x14e0ffe1, 0xaf8c001c, 0x2201021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x14cbffd2, 0x262d0001, 0xe00073d, 0x2002021, 0x8f87001c, 0xa0007c9, 0xaf82003c, 0x2002821, 0xe0006fd, 0x2021, 0xa0007c8, 0x8f87001c, 0xe0006ef, 0x24040084, 0x1600ffc3, 0x8f87001c, 0xa0007a9, 0xaf80003c, 0x3082ffff, 0x14400003, 0x1821, 0x42402, 0x24030010, 0x308500ff, 0x14a00005, 0x3087000f, 0x24660008, 0x42202, 0x30c300ff, 0x3087000f, 0x14e00005, 0x30890003, 0x24680004, 0x42102, 0x310300ff, 0x30890003, 0x15200005, 0x388b0001, 0x246a0002, 0x42082, 0x314300ff, 0x388b0001, 0x31640001, 0x10800002, 0x246c0001, 0x318300ff, 0x3e00008, 0x601021, 0x308bffff, 0xb3942, 0x30e600ff, 0x3c090800, 0x25295998, 0x64080, 0x1096021, 0x8d870000, 0x3164001f, 0x240a0001, 0x8a1804, 0x30a500ff, 0xe32025, 0x14a00002, 0x31027, 0xe22024, 0x240f0001, 0xcf7004, 0x1096821, 0xe2827, 0x14800005, 0xada40000, 0x8f86000c, 0xa61024, 0x3e00008, 0xaf82000c, 0x8f88000c, 0x1c81025, 0x3e00008, 0xaf82000c, 0x3c06001f, 0x3c036000, 0x3084ffff, 0x34c5ff80, 0x24020020, 0xac602008, 0xac60200c, 0xac602010, 0xac652014, 0xac642018, 0xac622000, 0x0, 0x0, 0x3e00008, 0x0, 0x27bdffe8, 0x2402ffff, 0xafbf0010, 0xaf82000c, 0x2021, 0x3c060800, 0x24c65998, 0x2405ffff, 0x24890001, 0x44080, 0x3124ffff, 0x1061821, 0x2c870020, 0x14e0fffa, 0xac650000, 0xe000825, 0x2021, 0x24020001, 0x3c046000, 0x24050020, 0xac822018, 0xac852000, 0x0, 0x0, 0x0, 0x244a0001, 0x3142ffff, 0x2c460400, 0x14c0fff7, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8f830008, 0x2c620400, 0x3e00008, 0x38420001, 0x8f830008, 0x24620001, 0x3e00008, 0xaf820008, 0x8f830008, 0x2462ffff, 0x3e00008, 0xaf820008, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, 0x8f6b0030, 0x3c066000, 0x808821, 0xaccb2008, 0x8f6a002c, 0x3c028000, 0x24030008, 0xacca200c, 0x9769003a, 0x97680038, 0x92c00, 0x3107ffff, 0xa72025, 0xacc42010, 0xacc22014, 0xacc32000, 0x0, 0x0, 0x0, 0x3c036000, 0x8c6d2000, 0x31ac0008, 0x1580fff9, 0x0, 0x8c6e2014, 0x5c00020, 0x0, 0xe0007e9, 0x8f84000c, 0x24080, 0x3c090800, 0x25295998, 0x1093821, 0x8ce40000, 0xe0007e9, 0x28140, 0x2022021, 0x3090ffff, 0x2002021, 0xe000807, 0x2821, 0x3c0c8000, 0x22c5825, 0x3210ffff, 0x3c116000, 0x240a0020, 0xae2b2014, 0xae302018, 0xae2a2000, 0x0, 0x0, 0x0, 0x2001021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x8c662014, 0x3c02001f, 0x3443ff80, 0x3c1fffe8, 0xc3c024, 0x37f90800, 0x3198021, 0x1079c2, 0x3c0c8000, 0x22c5825, 0x31f0ffff, 0x3c116000, 0x240a0020, 0xae2b2014, 0xae302018, 0xae2a2000, 0x0, 0x0, 0x0, 0x2001021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe8, 0xafb00010, 0x3402ffff, 0x3090ffff, 0xafbf0014, 0x12020006, 0x2002021, 0xe000825, 0x0, 0x2002021, 0xe000807, 0x24050001, 0x8f840008, 0x8fbf0014, 0x8fb00010, 0x2483ffff, 0x27bd0018, 0x3e00008, 0xaf830008, 0x439c2, 0x30e6003f, 0x43b42, 0x71840, 0x24021000, 0x2cc40020, 0x24c8ffe0, 0xaf42002c, 0x24630001, 0x14800003, 0x30a900ff, 0x71840, 0x310600ff, 0x36080, 0x24080001, 0x19a5821, 0x3c0a000e, 0xc82804, 0x16a3821, 0x11200005, 0x53027, 0x8ce90000, 0x1253025, 0x3e00008, 0xace60000, 0x8cee0000, 0x1c66824, 0x3e00008, 0xaced0000, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x3c046000, 0x8c850808, 0x3403f000, 0x30a2f000, 0x50430006, 0x24020001, 0x8c870808, 0x3404e000, 0x30e6f000, 0x10c4001e, 0x24020002, 0xaf820040, 0x3c106000, 0x3c0a0200, 0xae0a0814, 0x24091000, 0x3c08000e, 0x8e034400, 0x3482021, 0xaf49002c, 0x24050120, 0xe000ccf, 0x3021, 0x8f830040, 0x10600004, 0x3c021691, 0x240b0001, 0x106b000e, 0x3c023d6c, 0x344f0090, 0xae0f4408, 0x8fbf0014, 0x8fb00010, 0x3c0c6000, 0x240e1000, 0x3c0d0200, 0x27bd0018, 0xad8e4420, 0x3e00008, 0xad8d0810, 0xa0008f6, 0xaf800040, 0x3c0218da, 0x344f0090, 0xae0f4408, 0x8fbf0014, 0x8fb00010, 0x3c0c6000, 0x240e1000, 0x3c0d0200, 0x27bd0018, 0xad8e4420, 0x3e00008, 0xad8d0810, 0xa0008ca, 0x24050001, 0xa0008ca, 0x2821, 0x3c080800, 0x25085da4, 0x2404ffff, 0x1001821, 0x2402001e, 0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, 0x3c070800, 0x24e75e20, 0x8ce5fffc, 0x2404001c, 0x24060001, 0x308a001f, 0x1464804, 0x24840001, 0x91027, 0x2c830020, 0x1460fffa, 0xa22824, 0xace5fffc, 0x3c056666, 0x34a4616e, 0x3c060800, 0x24c65ee0, 0xaf840058, 0xaf88009c, 0x2404ffff, 0xc01821, 0x2402001f, 0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, 0x3c076666, 0x3c050800, 0x24a55ea0, 0xaf860048, 0x34e6616e, 0xaf860098, 0x2404ffff, 0xa01821, 0x2402000f, 0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, 0x3c0b6666, 0x3c060800, 0x24c65e20, 0x3568616e, 0xaf8500a4, 0xaf880070, 0x2404ffff, 0xc01821, 0x2402001f, 0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, 0x3c0d6666, 0x3c0a0800, 0x254a5f60, 0x35ac616e, 0xaf860090, 0xaf8c005c, 0x2404ffff, 0x1401821, 0x24020003, 0x2442ffff, 0xac640000, 0x441fffd, 0x24630004, 0x3c090800, 0x25295f70, 0x8d27fffc, 0x24040006, 0x24050001, 0x3099001f, 0x325c004, 0x24840001, 0x187827, 0x2c8e0020, 0x15c0fffa, 0xef3824, 0xad27fffc, 0x3c096666, 0x24030400, 0x240403dc, 0x24050200, 0x24060066, 0x3522616e, 0x3c080800, 0x25085aa4, 0xaf820074, 0xaf830044, 0xaf83006c, 0xaf830050, 0xaf830084, 0xaf8a008c, 0xaf840064, 0xaf85004c, 0xaf860054, 0xaf840078, 0xaf850060, 0xaf860080, 0x1001821, 0x24020002, 0x2442ffff, 0xac600000, 0x441fffd, 0x24630004, 0x24040003, 0x2403000c, 0x3c0a0800, 0x254a5ab0, 0xaf8a0068, 0xa00099d, 0x2405ffff, 0x41880, 0x24840001, 0x685821, 0x2c8700c0, 0x14e0fffb, 0xad650000, 0x3c0e6666, 0x35cd616e, 0x240c17a0, 0x24081800, 0xaf8d0088, 0xaf8c0094, 0x3e00008, 0xaf88007c, 0x2484007f, 0x421c2, 0x4021, 0x3021, 0x3821, 0x2821, 0xa0009b4, 0xaf8400a0, 0x10600006, 0x24e70001, 0xc43021, 0x24a50001, 0x2cc20bf5, 0x1440fffa, 0x2ca30066, 0x3c090800, 0x25295f60, 0x1201821, 0x24020003, 0x2442ffff, 0xac600000, 0x441fffd, 0x24630004, 0x10e0001a, 0x24e3ffff, 0x32942, 0x10a0000a, 0x2021, 0x2406ffff, 0x3c030800, 0x24635f60, 0x24840001, 0x85502b, 0xac660000, 0x25080001, 0x1540fffb, 0x24630004, 0x30e2001f, 0x10400008, 0x86880, 0x240c0001, 0x4c3804, 0x85880, 0x1692821, 0x24e6ffff, 0x3e00008, 0xaca60000, 0x1a94021, 0x2409ffff, 0xad090000, 0x3e00008, 0x0, 0xaf440028, 0x3c04000c, 0x3442021, 0x52882, 0xa000ccf, 0x3021, 0x42180, 0x3c036000, 0xac641008, 0x0, 0x52980, 0xac65100c, 0x0, 0x3e00008, 0x8c62100c, 0x27bdffe8, 0x802821, 0x24040038, 0xafbf0014, 0xe0009e4, 0xafb00010, 0x24040e00, 0xaf440028, 0x3c10000c, 0x3502021, 0x24050010, 0xe000ccf, 0x3021, 0x3501021, 0xac400000, 0xac400004, 0x24040038, 0x8fbf0014, 0x8fb00010, 0x24053fff, 0x27bd0018, 0xa0009e4, 0x8c430000, 0x42180, 0x3c036000, 0xac641008, 0x0, 0x8c62100c, 0x3e00008, 0x21182, 0x27bdffc8, 0xafb40020, 0x8f940068, 0xafbe0030, 0xafb7002c, 0xafb60028, 0xb821, 0x80b021, 0x241e00c0, 0xafbf0034, 0xafb50024, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xa000a21, 0xafa5003c, 0x50400001, 0x8f940068, 0x27deffff, 0x13c00028, 0x26940004, 0x8e920000, 0x3c030800, 0x24635da0, 0x1240fff7, 0x283102b, 0x3c040800, 0x24845aa4, 0x2841023, 0x2a8c0, 0x9821, 0xa000a30, 0x24110001, 0x118840, 0x12200026, 0x0, 0x2b38021, 0x2512824, 0x2002021, 0x10a0fff9, 0x26730001, 0xe0009ed, 0x0, 0x166840, 0x32ec0001, 0x1ac2021, 0xe0009e4, 0x2002821, 0x8f890094, 0x26f70001, 0x8fa6003c, 0x3aeb0001, 0x316a0001, 0x2528ffff, 0x113827, 0x2cab021, 0xaf880094, 0x16e6ffe7, 0x2479024, 0xae920000, 0x2e01021, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0038, 0x3c0e0800, 0x25ce5da0, 0x28e102b, 0xa000a1c, 0xae920000, 0x27bdffd8, 0xafb10014, 0xafb00010, 0xafbf0020, 0xafb3001c, 0xafb20018, 0xa08821, 0x10a0001f, 0x48040, 0x3c130800, 0x26735aa4, 0xa000a69, 0x24120001, 0x12200019, 0x26100001, 0xe000a04, 0x2002021, 0x23142, 0x2444ffa0, 0x61880, 0x3045001f, 0x2c8217a1, 0x731821, 0x2631ffff, 0x1040fff4, 0xb23004, 0x8c690000, 0x2002021, 0x24053fff, 0x1264024, 0x1500ffee, 0x1263825, 0xe0009e4, 0xac670000, 0x8f8a0094, 0x26100001, 0x25470001, 0x1620ffe9, 0xaf870094, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x8f85009c, 0x805821, 0x4021, 0x4821, 0x240a001f, 0x3c0c0800, 0x258c5e1c, 0x3c0d0800, 0x25ad5da4, 0x8ca60000, 0x50c00014, 0x4021, 0xad1023, 0x238c0, 0x24030001, 0xa000aa2, 0x2021, 0x15000003, 0xe41021, 0x24482024, 0x4821, 0x25290001, 0x512b0013, 0x2506dfdc, 0x10600006, 0x24840001, 0xc37024, 0x15c0fff5, 0x31840, 0xa000aa0, 0x4021, 0x10ac0026, 0x24a30004, 0x602821, 0x254affff, 0x1540ffe5, 0xaf85009c, 0x512b0004, 0x2506dfdc, 0x4021, 0x3e00008, 0x1001021, 0x66142, 0x30c5001f, 0xc5080, 0x3c070800, 0x24e75da4, 0x24040001, 0x1473021, 0x1120000f, 0xa42004, 0x3c050800, 0x24a55e20, 0x14800005, 0x2529ffff, 0x24c60004, 0x10c50011, 0x0, 0x24040001, 0x8ccf0000, 0x4c027, 0x42040, 0x1f86824, 0x1520fff5, 0xaccd0000, 0x8f990078, 0x1001021, 0x32b4823, 0x3e00008, 0xaf890078, 0x3c050800, 0x24a55da4, 0xa000aaa, 0x4021, 0x3c060800, 0x24c65da4, 0xa000ac3, 0x24040001, 0x308800ff, 0x24020002, 0x1102000a, 0x24030003, 0x1103005c, 0x8f8900a4, 0x24040004, 0x1104005f, 0x24050005, 0x11050067, 0x1821, 0x3e00008, 0x601021, 0x8f890048, 0x3c0c0800, 0x258c5ee0, 0x3c040800, 0x24845f60, 0x24030020, 0x1060000f, 0x5821, 0x240d0002, 0x240e0003, 0x3c0f0800, 0x25ef5ee0, 0x8d270000, 0x14e0000b, 0x30f9ffff, 0x25290004, 0x124c02b, 0x53000001, 0x1804821, 0x2463ffff, 0x5460fff8, 0x8d270000, 0x1601821, 0x3e00008, 0x601021, 0x13200032, 0x3c0500ff, 0x30e200ff, 0x403021, 0x10400042, 0x5021, 0x24050001, 0x2021, 0x5c840, 0xa6c024, 0x17000003, 0x332500ff, 0x14a0fffb, 0x24840001, 0x12cc023, 0x1828c0, 0xaa6021, 0x8c5021, 0x3144001f, 0x240c0001, 0x8c1804, 0x31027, 0xe23024, 0x110d0041, 0xad260000, 0x110e004c, 0xa1840, 0x110d0036, 0x8f87006c, 0x510e0056, 0x8f8c0060, 0x240d0004, 0x110d005a, 0x8f8e0084, 0x240e0005, 0x150effda, 0x1601821, 0x240b1430, 0x11400006, 0x1821, 0x8f8400a0, 0x24630001, 0x6a402b, 0x1500fffd, 0x1645821, 0x8f8a0080, 0xaf89008c, 0x1601821, 0x2549ffff, 0xa000afa, 0xaf890080, 0xe52024, 0x73602, 0x1080ffd0, 0x240a0018, 0x75402, 0x314600ff, 0xa000b02, 0x240a0010, 0x3c0c0800, 0x258c5ea0, 0x3c040800, 0x24845ee0, 0xa000ae9, 0x24030010, 0x3c0c0800, 0x258c5e20, 0x3c040800, 0x24845ea0, 0xa000ae8, 0x8f890090, 0x71a02, 0x306600ff, 0xa000b02, 0x240a0008, 0x8f89008c, 0x3c0c0800, 0x258c5f60, 0x3c040800, 0x24845f70, 0xa000ae9, 0x24030004, 0xa4080, 0x250b0030, 0x24e6ffff, 0x1601821, 0xaf890048, 0xa000afa, 0xaf86006c, 0xac982, 0x197880, 0x3c070800, 0x24e75ea0, 0x1e72021, 0xa1842, 0x8c8f0000, 0x3079001f, 0x32c3804, 0x7c027, 0x1f86024, 0xa000b17, 0xac8c0000, 0x33142, 0x62880, 0xaf2821, 0x3062001f, 0x8cb80000, 0x24630001, 0x4cc804, 0x32142, 0x193827, 0x41080, 0x3073024, 0x4f2021, 0xa000b5b, 0xaca60000, 0xa68c0, 0x25ab0032, 0x258affff, 0x1601821, 0xaf8900a4, 0xa000afa, 0xaf8a0060, 0x254b1030, 0xaf890090, 0x1601821, 0x25c9ffff, 0xa000afa, 0xaf890084, 0x30860007, 0x2cc20006, 0x10400014, 0x0, 0x64080, 0x3c030800, 0x246357d0, 0x1033821, 0x8ce40000, 0x800008, 0x0, 0x24090003, 0x10a9000e, 0x0, 0x240a0005, 0x10aa000b, 0x0, 0x240b0001, 0x10ab0008, 0x0, 0x8f8c00a0, 0x10ac0005, 0x0, 0x3e00008, 0x1021, 0xa000a88, 0xa02021, 0xa000ad6, 0xc02021, 0x27bdffe8, 0x308400ff, 0x24030002, 0x1083000b, 0xafbf0010, 0x24060003, 0x1086003a, 0x24080004, 0x10880068, 0x240e0005, 0x108e007f, 0x2caf1430, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x2ca20030, 0x1440fffc, 0x8fbf0010, 0x24a5ffd0, 0x531c2, 0x66880, 0x3c070800, 0x24e75ee0, 0x1a73021, 0x8cc90000, 0x52882, 0x30ac001f, 0x240b0001, 0x18b5004, 0x8f840048, 0x12a4025, 0xacc80000, 0x8c830000, 0x50600001, 0xaf860048, 0x8f98006c, 0x30ae0001, 0x24a6ffff, 0x270f0001, 0x15c00002, 0xaf8f006c, 0x24a60001, 0x64142, 0x82080, 0x871821, 0x8c790000, 0x30c2001f, 0x24060001, 0x46f804, 0x33f3824, 0x10e0ffda, 0x8fbf0010, 0x5c182, 0x187080, 0x3c0f0800, 0x25ef5ea0, 0x1cf4821, 0x8d2b0000, 0x56842, 0x31a5001f, 0xa66004, 0x16c5025, 0x27bd0018, 0x3e00008, 0xad2a0000, 0x2ca70030, 0x14e0ffca, 0x8fbf0010, 0x30b90007, 0x1723ffc7, 0x24a8ffce, 0x86a02, 0xd6080, 0x3c0b0800, 0x256b5ea0, 0x18b3021, 0x8cc40000, 0x828c2, 0x30aa001f, 0x24080001, 0x1484804, 0x8f8200a4, 0x891825, 0xacc30000, 0x8c5f0000, 0x53e00001, 0xaf8600a4, 0x57040, 0xe7942, 0xf2880, 0x3c040800, 0x24845ee0, 0xa41821, 0x8c6b0000, 0x25df0001, 0x31cd001f, 0x1f5142, 0x1a86004, 0x16c4825, 0xa1080, 0xac690000, 0x442821, 0x8ca60000, 0x8f980060, 0x33f9001f, 0x8fbf0010, 0x3283804, 0xc77825, 0x270e0001, 0x27bd0018, 0xacaf0000, 0x3e00008, 0xaf8e0060, 0x24a5efd0, 0x2cb80400, 0x1300ff99, 0x8fbf0010, 0x53142, 0x65880, 0x3c0a0800, 0x254a5e20, 0x16a3021, 0x8cc40000, 0x30a3001f, 0x24090001, 0x691004, 0x8f990090, 0x82f825, 0xacdf0000, 0x8f270000, 0x50e00001, 0xaf860090, 0x8f8d0084, 0x8fbf0010, 0x27bd0018, 0x25ac0001, 0x3e00008, 0xaf8c0084, 0x15e0ff82, 0x8fbf0010, 0x8f8600a0, 0x61040, 0x46f821, 0x1f2100, 0x3e4c821, 0x193840, 0x24f81430, 0xb8402b, 0x1100ff78, 0x8fbf0010, 0x24a4ebd0, 0xe000203, 0xc02821, 0x27942, 0xf7080, 0x3c0d0800, 0x25ad5f60, 0x1cd2021, 0x8c8b0000, 0x304c001f, 0x24060001, 0x1861804, 0x8f89008c, 0x1635025, 0xac8a0000, 0x8d250000, 0x50a00001, 0xaf84008c, 0x8f980080, 0x8fbf0010, 0x27bd0018, 0x27080001, 0x3e00008, 0xaf880080, 0x30a50007, 0x24030003, 0x10a30010, 0x28a20004, 0x14400008, 0x24070002, 0x24030004, 0x10a30015, 0x24080005, 0x10a8000f, 0x8f8500a0, 0x3e00008, 0x0, 0x14a7fffd, 0x802821, 0x14c3fffb, 0x24040002, 0xa000b9a, 0x0, 0x24090005, 0x802821, 0x10c9fffb, 0x24040003, 0x3e00008, 0x0, 0x14c5fff1, 0x802821, 0xa000b9a, 0x24040005, 0x240a0001, 0x802821, 0x10cafff1, 0x24040004, 0x3e00008, 0x0, 0x27bdffe0, 0xafb00010, 0x581c2, 0x2603ffd0, 0x24c5003f, 0x2c6223d0, 0x24c6007f, 0xafb20018, 0xafb10014, 0xafbf001c, 0x309100ff, 0x691c2, 0x52982, 0x2002021, 0x10400008, 0x2403ffff, 0xe000a5a, 0x0, 0x2002021, 0x2202821, 0xe000c48, 0x2403021, 0x1821, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x601021, 0x3e00008, 0x27bd0020, 0x27bdffd8, 0x24a2007f, 0xafb3001c, 0xafb20018, 0x299c2, 0x309200ff, 0x24a3003f, 0x2402021, 0x2602821, 0xafb10014, 0xafb00010, 0xafbf0020, 0xe000b7d, 0x38982, 0x408021, 0x402021, 0x2202821, 0x14400009, 0x1821, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x601021, 0x3e00008, 0x27bd0028, 0xe000a0b, 0x0, 0x402821, 0x2002021, 0x1051fff3, 0x1019c0, 0xe000a5a, 0x0, 0x2002021, 0x2402821, 0xe000c48, 0x2603021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x1821, 0x601021, 0x3e00008, 0x27bd0028, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x30a5ffff, 0x8f4201b8, 0x440fffe, 0x3c076015, 0xa73025, 0x3c031000, 0xaf440180, 0xaf400184, 0xaf460188, 0x3e00008, 0xaf4301b8, 0x8f8500d0, 0x2c864000, 0x801821, 0x8ca70084, 0x87102b, 0x14400010, 0x0, 0x8ca80084, 0x2d064000, 0x50c0000f, 0x24034000, 0x8caa0084, 0x8a482b, 0x51200001, 0x8ca30084, 0x35a42, 0xb2080, 0x3c050800, 0x24a55820, 0x851821, 0x3e00008, 0x8c620000, 0x14c0fff4, 0x0, 0x24034000, 0x35a42, 0xb2080, 0x3c050800, 0x24a55820, 0x851821, 0x3e00008, 0x8c620000, 0x8f8300d0, 0x906600d0, 0x24c50001, 0xa06500d0, 0x8f8500d0, 0x906400d0, 0x90a200d2, 0x10440017, 0x0, 0x936c0078, 0x8f8b00bc, 0x318a00ff, 0xa16a000c, 0x25490001, 0x938700c4, 0x312200ff, 0x3048007f, 0x1107000b, 0x26827, 0xa3620078, 0x8f4e0178, 0x5c0fffe, 0x8f9900b0, 0x24180002, 0x3c0f1000, 0xaf590140, 0xa3580144, 0x3e00008, 0xaf4f0178, 0xa000d18, 0x31a20080, 0xa0a000d0, 0xa000d0e, 0x0, 0x8f8700d0, 0x27bdffc8, 0xafbf0030, 0xafb7002c, 0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x94e300e0, 0x94e200e2, 0x104300d7, 0x2405ffff, 0x3c047fff, 0x3497ffff, 0x2415ff80, 0xa000dff, 0x3c16000e, 0x108a00d1, 0x8fbf0030, 0x8f9100b0, 0x3c180800, 0x8f18005c, 0x1230c0, 0x129140, 0x3117021, 0x1d57824, 0xaf4f002c, 0x94ec00e2, 0x31cd007f, 0x1ba5821, 0x318a7fff, 0x1764821, 0xa8040, 0x2091021, 0x94530000, 0x3c080800, 0x8d080058, 0x246c021, 0x32733fff, 0x131980, 0x1032021, 0x2242821, 0x30bf007f, 0x3fac821, 0xb5a024, 0xaf54002c, 0x336a021, 0x8e870010, 0x8e8f0030, 0x3785821, 0x256d0088, 0xef7023, 0x240c0002, 0xae8e0010, 0xaf8d00ac, 0xa16c0088, 0x976a003c, 0x8e840030, 0x8f9100ac, 0xe000ce5, 0x3150ffff, 0x24b80, 0x2094025, 0x3c024200, 0x1022025, 0xae240004, 0x8e830004, 0x8f8d00ac, 0x8e860000, 0x240e0008, 0xada3001c, 0xada60018, 0xada0000c, 0xada00010, 0x929f000a, 0x33f900ff, 0xa5b90014, 0x96850008, 0x3c1f000c, 0xa5a50016, 0x9298000a, 0x331100ff, 0xa5b10020, 0x96900008, 0x24180005, 0xa5b00022, 0xada00024, 0x928f000b, 0x2410c000, 0x31e700ff, 0xa5a70002, 0xa1ae0001, 0x8e8c0030, 0x8f8b00ac, 0x8f8400b0, 0xad6c0008, 0x3c0a0800, 0x8d4a0054, 0x1444821, 0x1354024, 0xaf480028, 0x3c020800, 0x8c420054, 0x443021, 0x30c3007f, 0x7ac821, 0x33f2821, 0x2458821, 0xaf9100bc, 0xaf8500c0, 0xa2380000, 0x8f8a00bc, 0x2403ffbf, 0x2418ffdf, 0x954f0002, 0x1f03824, 0xf37025, 0xa54e0002, 0x914d0002, 0x31ac003f, 0x358b0040, 0xa14b0002, 0x8f8600bc, 0x8f8900d0, 0xacc00004, 0x8d28007c, 0x3c098000, 0xacc80008, 0x90c4000d, 0x3082007f, 0xa0c2000d, 0x8f8500bc, 0x90bf000d, 0x3e3c824, 0xa0b9000d, 0x8f9100bc, 0x9233000d, 0x2789024, 0xa232000d, 0x8e900034, 0x8f8b00bc, 0xad700010, 0x8e87002c, 0x8e8f0030, 0xef7023, 0xad6e0014, 0x916d0018, 0x31ac007f, 0xa16c0018, 0x8f9f00bc, 0x8e8a0030, 0x8fe80018, 0x1572024, 0x1093024, 0xc41025, 0xafe20018, 0x9283000a, 0xa3e3001c, 0x96990008, 0x8f8500bc, 0x8f9800d0, 0xa4b9001e, 0x8e900030, 0x8e840030, 0xe000203, 0x8f050084, 0x8f8500d0, 0x29140, 0x29900, 0x90af00bc, 0x2538821, 0x403021, 0x31e70002, 0x10e00003, 0x2118021, 0x29080, 0x2128021, 0x90b900bc, 0x33270004, 0x10e00002, 0x6f880, 0x21f8021, 0x8e980030, 0x8f8b00bc, 0x24068000, 0x330f0003, 0xf7023, 0x31cd0003, 0x20d6021, 0xad6c0004, 0x94a400e2, 0x94aa00e2, 0x94b000e2, 0x31497fff, 0x25220001, 0x30537fff, 0x2061824, 0x734025, 0xa4a800e2, 0x94a400e2, 0x3c140800, 0x8e940060, 0x30917fff, 0x12340022, 0x0, 0xe000d05, 0x0, 0x8f8700d0, 0x2821, 0x94f300e0, 0x94f000e2, 0x1213000f, 0x8fbf0030, 0x90e900d0, 0x90e800d1, 0x313200ff, 0x310400ff, 0x244302b, 0x14c0ff36, 0x264a0001, 0x90ee00d2, 0x264b0001, 0x31cd00ff, 0x8d6021, 0x158bff33, 0x8f9100b0, 0x8fbf0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa01021, 0x3e00008, 0x27bd0038, 0x94a300e2, 0x664024, 0xa4a800e2, 0x90a400e2, 0x90b900e2, 0x309100ff, 0x11a1c2, 0x14f827, 0x1f39c0, 0x3332007f, 0x2473025, 0xa000df7, 0xa0a600e2, 0x3084ffff, 0x30a5ffff, 0xaf440018, 0xaf45001c, 0x3e00008, 0x8f420014, 0x27bdffb8, 0xafb00020, 0x8f9000d0, 0x3084ffff, 0xafa40010, 0xafbf0044, 0xafbe0040, 0xafb7003c, 0xafb60038, 0xafb50034, 0xafb40030, 0xafb3002c, 0xafb20028, 0xafb10024, 0xa7a00018, 0x920600d1, 0x920500d0, 0x30c400ff, 0x30a300ff, 0x64102b, 0x10400122, 0xafa00014, 0x920900d0, 0x8fb50010, 0x312800ff, 0x883823, 0x24f4ffff, 0x14882b, 0x15982b, 0x2339024, 0x52400126, 0x8fb40014, 0x961e0012, 0x961f0010, 0x8fb70010, 0x3dfc823, 0x171400, 0x19c400, 0x22403, 0x181403, 0x2e2b02a, 0x52c00001, 0x402021, 0x284282b, 0x10a00002, 0x801821, 0x2801821, 0x33c00, 0x71c03, 0x3064ffff, 0x2c860009, 0x14c00002, 0x60b821, 0x24170008, 0x8e0a0008, 0x176980, 0x8e09000c, 0x31abffff, 0x3c0c0010, 0x16c4025, 0x27520400, 0xaf4a0038, 0xaf9200b8, 0xaf49003c, 0xaf480030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f4f0000, 0x31ee0020, 0x11c0fffd, 0x17982a, 0x2711024, 0xa000e92, 0xb021, 0x55e00101, 0x92580001, 0x31130080, 0x126001cf, 0x1202021, 0x96550012, 0x32a5ffff, 0xe000cda, 0xa7b50018, 0x8f9000d0, 0x291a023, 0x26c80001, 0x8f9100b8, 0x8b400, 0x16b403, 0x262c0040, 0x2d7782a, 0x14882b, 0x240b0001, 0x1809021, 0x1f11024, 0xaf8c00b8, 0xafab0014, 0x104001bc, 0x8f8900b0, 0x3c0c0800, 0x8d8c0054, 0x240bff80, 0x921e00d0, 0x1895021, 0x14b2824, 0x921900d0, 0xaf450028, 0x8e470010, 0x3c080800, 0x8d080058, 0x3c180800, 0x8f180054, 0x30e33fff, 0x32180, 0x1043021, 0x1265821, 0x2402ff80, 0x162f824, 0x920c00d0, 0xaf5f002c, 0x92480000, 0x33d100ff, 0x333500ff, 0x3099821, 0x117140, 0x1578c0, 0x326d007f, 0x1cf3821, 0x1ba2821, 0x318300ff, 0x3164007f, 0x3c0a000c, 0xaa8821, 0x367f021, 0x33140, 0x9a1021, 0x3108003f, 0x3c1f000e, 0xd1c021, 0x5f9821, 0x27d90088, 0x2d150008, 0xaf9100c0, 0xaf9900ac, 0xaf9800bc, 0xaf9300b4, 0x12a0018a, 0x8821, 0x240e0001, 0x10e4004, 0x310d005d, 0x11a0ffb2, 0x310f0002, 0x8e4a0028, 0x3c030080, 0x3c04ffef, 0xae6a0000, 0x8e450024, 0xa260000a, 0x3488ffff, 0xae650004, 0x9247002c, 0x3c1fff9f, 0x37feffff, 0xa267000c, 0x8e62000c, 0x3c180040, 0xa267000b, 0x433025, 0xc8c824, 0x33e8824, 0x238a825, 0xae75000c, 0x8e490004, 0xae600018, 0x3c0f00ff, 0xae690014, 0x8e4d002c, 0x35eeffff, 0x8f8b00b0, 0x1ae6024, 0xae6c0010, 0x8e470008, 0xa6600008, 0x96450012, 0xae670020, 0x8e42000c, 0x30b03fff, 0x105180, 0xae620024, 0x8e5e0014, 0x14b1821, 0x30a40001, 0xae7e0028, 0x8e590018, 0x331c2, 0x44380, 0xae79002c, 0x8e51001c, 0xc8f821, 0xa67f001c, 0xae710030, 0x96580002, 0x8e550020, 0xa678001e, 0xae750034, 0x92490033, 0x31300004, 0x56000005, 0x92500000, 0x8f8c00d0, 0x8d8b007c, 0xae6b0030, 0x92500000, 0x8f8f00bc, 0xa1f00000, 0x924e0033, 0x31cd0002, 0x51a00007, 0x925e0001, 0x8f8900bc, 0x2418ff80, 0x91310000, 0x311a825, 0xa1350000, 0x925e0001, 0x8f9900bc, 0x2409ffbf, 0x240bffdf, 0xa33e0001, 0x8f9500bc, 0x92b8000d, 0x3311007f, 0xa2b1000d, 0x8f8e00bc, 0x91d0000d, 0x2097824, 0xa1cf000d, 0x8f8800bc, 0x8e6d0014, 0x910a000d, 0x2dac0001, 0xc2940, 0x14b3824, 0xe51825, 0xa103000d, 0x96420012, 0x8f8800bc, 0x8f8700d0, 0xa5020002, 0x8e450004, 0x90ff00bc, 0x30a40003, 0x43023, 0x30de0003, 0xbe1021, 0x33f90002, 0x17200002, 0x24440034, 0x24440030, 0x90e200bc, 0xa23024, 0x30df0004, 0x17e00002, 0x24830004, 0x801821, 0x8f8f00ac, 0x24090002, 0xad030004, 0xa1e90000, 0x924e003f, 0x8f8d00ac, 0xa1ae0001, 0x8f9500ac, 0x924c003f, 0x8e440004, 0xa6ac0002, 0x976b003c, 0xe000ce5, 0x3170ffff, 0x25380, 0x20a3825, 0x3c054200, 0xe51825, 0xaea30004, 0x8f8600ac, 0x8e480038, 0xacc80018, 0x8e440034, 0xacc4001c, 0xacc0000c, 0xacc00010, 0xa4c00014, 0xa4c00016, 0xa4c00020, 0xa4c00022, 0xacc00024, 0x8e640014, 0x50800001, 0x24040001, 0xacc40008, 0xe000d05, 0x24110001, 0xa000e85, 0x8f9000d0, 0x920f00d2, 0x920e00d0, 0x8fb50010, 0x31eb00ff, 0x31cd00ff, 0x8d6023, 0x16c5021, 0x2554ffff, 0x14882b, 0x15982b, 0x2339024, 0x1640fedd, 0x0, 0x8fb40014, 0x8fbf0044, 0x8fbe0040, 0x3a820001, 0x8fb7003c, 0x8fb60038, 0x8fb50034, 0x8fb40030, 0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 0x3e00008, 0x27bd0048, 0x33110020, 0x122000ee, 0x24150001, 0x921e00bc, 0x241f0001, 0xa821, 0x33d90001, 0x1320000d, 0xafbf001c, 0x8e440014, 0x8e080084, 0x88102b, 0x14400002, 0x803021, 0x8e060084, 0x8e030064, 0xc3a82b, 0x16a00002, 0xc02021, 0x8e040064, 0x80a821, 0x8e470014, 0x8e050064, 0xe5302b, 0x14c00002, 0xe02021, 0x8e040064, 0x95f023, 0x13c00004, 0x8fac001c, 0x240a0002, 0xafaa001c, 0x8fac001c, 0x28c582b, 0x156000a8, 0x1821, 0x8e4f0038, 0x8e6d000c, 0x3c0e0080, 0xae6f0000, 0x8e4a0034, 0x3c10ff9f, 0x1ae5825, 0xae6a0004, 0x9246003f, 0x360cffff, 0x16c3824, 0x3c050020, 0x3c03ffef, 0xa266000b, 0xe51025, 0x3468ffff, 0x8f8700b8, 0x48f824, 0x3c040008, 0x3e4c825, 0xae79000c, 0x8cf80014, 0xae600018, 0x2be7821, 0xae780014, 0x8cf10018, 0xae71001c, 0x8ce90008, 0xae690024, 0x8cee000c, 0xae6f002c, 0xae600028, 0xae6e0020, 0xa6600038, 0xa660003a, 0x8ced0014, 0x1b58023, 0x21e9023, 0x12400011, 0xae720010, 0x90ea003d, 0x8e650004, 0x8e640000, 0xa3100, 0xa6c821, 0x1021, 0x326402b, 0x82f821, 0x3e8c021, 0xae790004, 0xae780000, 0x90f1003d, 0xa271000a, 0x8f8900b8, 0x95320006, 0xa6720008, 0x8f9800ac, 0x24190002, 0x2a02021, 0xa3190000, 0x9769003c, 0x8f9200ac, 0xe000ce5, 0x3131ffff, 0x27b80, 0x8f8500b8, 0x22f6825, 0x3c0e4200, 0x1ae8025, 0xae500004, 0x8f8400ac, 0x8cac0038, 0xac8c0018, 0x8cab0034, 0xac8b001c, 0xac80000c, 0xac800010, 0xa4800014, 0xa4800016, 0xa4800020, 0xa4800022, 0xac800024, 0x90a7003f, 0xa4870002, 0x12a00134, 0x24030001, 0x53c00002, 0x90a2003d, 0x90a2003e, 0x24480001, 0xa0880001, 0x8f9f00ac, 0xaff50008, 0x8f8300d0, 0x24070034, 0x906600bc, 0x30c50002, 0x50a00001, 0x24070030, 0x8f9200b8, 0x8f8a00bc, 0x906d00bc, 0x924b0000, 0x2412c000, 0x32a50003, 0xa14b0000, 0x8f8600b8, 0x8f8800bc, 0x24020004, 0x90c40001, 0x451823, 0x30790003, 0xa1040001, 0x8f8a00bc, 0x8f9f00b8, 0xf53821, 0x95580002, 0x97e90012, 0xf93821, 0x3128824, 0x312f3fff, 0x22f7025, 0xa54e0002, 0x91500002, 0x31a80004, 0x320c003f, 0x358b0040, 0xa14b0002, 0x12a00002, 0x8f8500bc, 0xe83821, 0x8f8e00d0, 0xaca70004, 0x240bffbf, 0x8dcd007c, 0x2ea40001, 0x2403ffdf, 0xacad0008, 0x90b0000d, 0x44140, 0x320c007f, 0xa0ac000d, 0x8f8600bc, 0x90ca000d, 0x14b1024, 0xa0c2000d, 0x8f8700bc, 0x90e5000d, 0xa3f824, 0x3e8c825, 0xa0f9000d, 0x8f9100b8, 0x8f8d00bc, 0x8e380020, 0xadb80010, 0x8e290024, 0xada90014, 0x8e2f0028, 0xadaf0018, 0x8e2e002c, 0xe000d05, 0xadae001c, 0x8fb0001c, 0x240c0002, 0x120c00ed, 0x8f9000d0, 0x8fa3001c, 0x608821, 0x14600002, 0x60a821, 0xa021, 0x56a0fe39, 0x291a023, 0x14882b, 0x8fae0010, 0x96070010, 0x3c0a0020, 0x1d6f023, 0x2c7c021, 0x33d2ffff, 0xa6180010, 0xafb20010, 0xaf4a0030, 0x0, 0x96170010, 0x96130012, 0x1277008e, 0x164180, 0x8e16000c, 0x8e0f0008, 0x817c3, 0x2c82821, 0xa8582b, 0x1e2a821, 0x2ab1821, 0xae05000c, 0xae030008, 0x8fb30010, 0x13b82b, 0x2378024, 0x1200ff05, 0x8f9000d0, 0xa000e4b, 0x0, 0x8e480038, 0xa6600008, 0x240f0003, 0xae680000, 0x8e4c0034, 0xa260000a, 0x8f9000b8, 0xae6c0004, 0x3c050080, 0x920b003f, 0xa26f000c, 0x8e62000c, 0x3c11ff9f, 0xa26b000b, 0x456825, 0x3623ffff, 0x3c04ffef, 0x8f8c00b8, 0x1a33024, 0x349fffff, 0xdfc824, 0xae79000c, 0x8d890014, 0x959e0012, 0x8f9800b0, 0xae690010, 0x8d8e0014, 0xae600018, 0xae600020, 0xae6e0014, 0xae600024, 0x8d870018, 0x33ce3fff, 0xe5180, 0xae670028, 0x8d880008, 0x1589021, 0x33d00001, 0xae680030, 0x8d91000c, 0x8f8d00ac, 0x1259c2, 0x107b80, 0x16f2821, 0x24020002, 0xa665001c, 0xa6600036, 0xae71002c, 0xa1a20000, 0x9763003c, 0x8f9800ac, 0x3c044200, 0x307fffff, 0x3e43025, 0xaf060004, 0x8f9900b8, 0x24070001, 0x240bc000, 0x8f330038, 0x24060034, 0xaf130018, 0x8f290034, 0xaf09001c, 0xaf00000c, 0xaf000010, 0xa7000014, 0xa7000016, 0xa7000020, 0xa7000022, 0xaf000024, 0xa7150002, 0xa3070001, 0x8f8a00ac, 0x8f9e00b8, 0x8f8c00bc, 0xad550008, 0x93c80000, 0xa1880000, 0x8f9200b8, 0x8f8f00bc, 0x92500001, 0xa1f00001, 0x8f8400bc, 0x94910002, 0x22b2824, 0xae1025, 0xa4820002, 0x908d0002, 0x31a3003f, 0xa0830002, 0x8f8300d0, 0x8f8400bc, 0x907f00bc, 0x33f30002, 0x52600001, 0x24060030, 0xac860004, 0x8c65007c, 0x240dffbf, 0x2a08821, 0xac850008, 0x9082000d, 0x3043007f, 0xa083000d, 0x8f8600bc, 0x90c4000d, 0x8df824, 0xa0df000d, 0x8f8e00bc, 0x91d9000d, 0x37290020, 0xa1c9000d, 0x8f9e00b8, 0x8f9300bc, 0x8fc70020, 0xae670010, 0x8fd80024, 0xae780014, 0x8fca0028, 0xae6a0018, 0x8fd2002c, 0xe000d05, 0xae72001c, 0xa00104c, 0x8f9000d0, 0x96020014, 0x8e040004, 0x3043ffff, 0x368c0, 0x8df821, 0xaf5f003c, 0x8e190004, 0x8f46003c, 0x3264823, 0x1920003c, 0x0, 0x8e050000, 0x24a20001, 0x3c0b0010, 0x35750008, 0xaf420038, 0xaf550030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f4c0000, 0x318f0020, 0x11e0fffd, 0x0, 0x8f530400, 0x3c080020, 0xae130008, 0x8f570404, 0xae17000c, 0xaf480030, 0x0, 0x3c060800, 0x8cc60044, 0x24160001, 0x10d600bb, 0x0, 0x96190012, 0x3c050800, 0x8ca50040, 0xb94821, 0xa6090012, 0x960e0014, 0x25c70001, 0xa6070014, 0x96180014, 0x3304ffff, 0x5486ff49, 0x8fb30010, 0xa6000014, 0xe000e25, 0x30a5ffff, 0x3c040800, 0x8c840024, 0x961f0012, 0x446823, 0x3ed3023, 0xa6060012, 0xa001067, 0x8fb30010, 0xa0830001, 0x8f8200ac, 0x24040001, 0xac440008, 0xa000fff, 0x8f8300d0, 0x8e020000, 0xa0010f8, 0x3c0b0010, 0x8f9f00c0, 0x8fb8001c, 0x920f00d0, 0x920b00d0, 0x920d00d0, 0x31f100ff, 0x316e00ff, 0xe28c0, 0x111140, 0x451821, 0x31a600ff, 0x3635021, 0x6c940, 0x33f3821, 0x25490088, 0xaf8900ac, 0xaf8700bc, 0xa1580088, 0x9768003c, 0x3c02021, 0x8f9100ac, 0xe000ce5, 0x3110ffff, 0x26380, 0x20c7825, 0x3c044200, 0x8f8c00b8, 0x1e45825, 0xae2b0004, 0x8d910038, 0x8f8b00ac, 0x6821, 0xd1100, 0xad710018, 0x8d8e0034, 0x3c087fff, 0x3504ffff, 0xad6e001c, 0x9183003e, 0x8d65001c, 0x8d790018, 0x33100, 0x38702, 0xa6c021, 0x50f825, 0x306482b, 0x33f3821, 0xe95021, 0xad78001c, 0xad6a0018, 0xad60000c, 0xad600010, 0x918f003e, 0x24050005, 0x3c45024, 0xa56f0014, 0x95910004, 0x3c02021, 0xa5710016, 0x918e003e, 0xa56e0020, 0x958d0004, 0xa56d0022, 0xad600024, 0x9190003f, 0xa5700002, 0x9182003d, 0x24430001, 0xa1630001, 0x8f8600ac, 0x8f9f00bc, 0xacde0008, 0xa3e50000, 0x8f9000bc, 0x8f9900b8, 0x2405ffbf, 0x96070002, 0x97380012, 0x2477824, 0x33093fff, 0x1e98825, 0xa6110002, 0x92120002, 0x2418ffdf, 0x324e003f, 0x35cd0040, 0xa20d0002, 0x8f8600bc, 0x8f8c00d0, 0x2412ffff, 0xacc00004, 0x8d8b007c, 0x3c0c8000, 0xaccb0008, 0x90c2000d, 0x3043007f, 0xa0c3000d, 0x8f8700bc, 0x90ff000d, 0x3e5c824, 0xa0f9000d, 0x8f9100bc, 0x9229000d, 0x1387824, 0xa22f000d, 0x8f9000bc, 0xae120010, 0xae150014, 0x920e0018, 0x2415ff80, 0x2ae6825, 0xa20d0018, 0x8f8500bc, 0x8f8300b8, 0x8cab0018, 0x16c1024, 0x4a3025, 0xaca60018, 0x9068003e, 0xa0a8001c, 0x8f9f00b8, 0x8f8700bc, 0x8f9800d0, 0x97f90004, 0xa4f9001e, 0xe000203, 0x8f050084, 0x8f8600d0, 0x27940, 0x24900, 0x90d200bc, 0x1e98821, 0x402821, 0x32550002, 0x12a00003, 0x3d12021, 0x2a880, 0x952021, 0x90cc00bc, 0x31920004, 0x12400003, 0x33c90003, 0x54080, 0x882021, 0x24190004, 0x8f9e00bc, 0x3293823, 0x30f80003, 0x985021, 0xafca0004, 0xe000d05, 0xa6650038, 0xa001047, 0x8f9000d0, 0x960a0012, 0x3c1e0800, 0x8fde0024, 0x3ca9021, 0xa6120012, 0xa001067, 0x8fb30010, 0x27bdffe0, 0x3c180800, 0x8f180050, 0xafb00010, 0xafbf0018, 0xafb10014, 0xaf8400b0, 0x93710074, 0x3047821, 0x2410ff80, 0x31ee007f, 0x3225007f, 0x1f05824, 0x1da6821, 0x3c0c000a, 0xa38500c4, 0x1ac2821, 0xaf4b0024, 0x94a90010, 0x97680006, 0x90a60062, 0x803821, 0x24020030, 0x1092023, 0x30c300f0, 0xaf8500d0, 0x10620019, 0x3090ffff, 0x90ae0062, 0x240dfff0, 0x240a0050, 0x1ae6024, 0x318b00ff, 0x116a002f, 0x0, 0x16000007, 0x241f0c00, 0xaf5f0024, 0x8fb10014, 0x8fbf0018, 0x8fb00010, 0x3e00008, 0x27bd0020, 0xe000e2b, 0x2002021, 0x241f0c00, 0xaf5f0024, 0x8fb10014, 0x8fbf0018, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x94a200e0, 0x94a400e2, 0x90bf0113, 0x821826, 0x3079ffff, 0x33e700c0, 0x14e00009, 0x2f310001, 0x16000038, 0x0, 0x5620ffe6, 0x241f0c00, 0xe000d27, 0x0, 0xa0011f9, 0x241f0c00, 0x1620ffde, 0x0, 0xe000d27, 0x0, 0x1440ffdc, 0x241f0c00, 0x16000022, 0x8f8300d0, 0x90690113, 0x3122003f, 0xa0620113, 0xa0011f9, 0x241f0c00, 0x94af00d4, 0x8f8600d4, 0xe02821, 0x24040005, 0xe000c6b, 0x31f0ffff, 0x14400005, 0x24030003, 0x979100e6, 0x1821, 0x2625ffff, 0xa78500e6, 0x8f5801b8, 0x700fffe, 0x3c196013, 0xaf400180, 0x241f0c00, 0xaf500184, 0x793825, 0x3c101000, 0xaf470188, 0x8fb10014, 0xaf5001b8, 0xaf5f0024, 0x8fb00010, 0x8fbf0018, 0x3e00008, 0x27bd0020, 0xe000e2b, 0x2002021, 0x5040ffb5, 0x241f0c00, 0x8f8300d0, 0x90690113, 0xa001222, 0x3122003f, 0xe000e2b, 0x2002021, 0x1440ffad, 0x241f0c00, 0x12200007, 0x8f8300d0, 0x90680113, 0x3106003f, 0x34c20040, 0xa0620113, 0xa0011f9, 0x241f0c00, 0xe000d27, 0x0, 0x5040ffa1, 0x241f0c00, 0x8f8300d0, 0x90680113, 0x3106003f, 0xa001252, 0x34c20040, 0xaf9b00c8, 0x3e00008, 0xaf8000ec, 0x3089ffff, 0x94042, 0x2d020041, 0x92980, 0x14400002, 0x95040, 0x24080040, 0x87940, 0x8c0c0, 0x1f85821, 0x256701a8, 0xef7021, 0x25cc007f, 0x240dff80, 0x18d1824, 0x653021, 0xca2821, 0x25640088, 0x240a0088, 0x3c010800, 0xac2a004c, 0x3c010800, 0xac240050, 0xaf8500d4, 0x3c010800, 0xac290060, 0x3c010800, 0xac280064, 0x3c010800, 0xac270054, 0x3c010800, 0xac230058, 0x3c010800, 0xac26005c, 0x3e00008, 0x0, 0x308300ff, 0x30c6ffff, 0x30e400ff, 0x8f4201b8, 0x440fffe, 0x34c00, 0x1243825, 0x3c086000, 0xe82025, 0x3c031000, 0xaf450180, 0xaf460184, 0xaf440188, 0x3e00008, 0xaf4301b8, 0x8f86001c, 0x3c096012, 0x35270010, 0x8ccb0004, 0x3c0c600e, 0x35850010, 0x316a0006, 0x2d480001, 0xace800c4, 0x8cc40004, 0xaca43180, 0x8cc20008, 0x94c30002, 0xaca23184, 0x3e00008, 0xa78300e4, 0x3c030800, 0x8c630050, 0x8f8400e8, 0x8f86001c, 0x2402ff80, 0x64c021, 0x302c824, 0xaf590028, 0x8ccd0004, 0x3305007f, 0xba7821, 0x3c0e000c, 0x1ee2821, 0xacad0058, 0x8cc80008, 0xaf8500d0, 0x3c076012, 0xaca8005c, 0x8ccc0010, 0x34e80010, 0xacac000c, 0x8ccb000c, 0xacab0008, 0x94aa0014, 0x3c020800, 0x8c420044, 0x25490001, 0xa4a90014, 0x94a40014, 0x3083ffff, 0x10620017, 0x8f8400d0, 0x3c0a0800, 0x8d4a0040, 0xa4aa0012, 0x8cce0018, 0xac8e0024, 0x8ccd0014, 0xac8d0020, 0x8cc70018, 0xac87002c, 0x8ccc0014, 0x24060001, 0xac8c0028, 0x8d0b00bc, 0x5166001a, 0x8d0200b4, 0x8d0200b8, 0xa482003a, 0x948f003a, 0xa48f003c, 0x948800d4, 0x3e00008, 0x3102ffff, 0x3c090800, 0x8d290024, 0xa4a00014, 0x8f8400d0, 0xa4a90012, 0x8cce0018, 0xac8e0024, 0x8ccd0014, 0xac8d0020, 0x8cc70018, 0xac87002c, 0x8ccc0014, 0x24060001, 0xac8c0028, 0x8d0b00bc, 0x5566ffea, 0x8d0200b8, 0x8d0200b4, 0xa482003a, 0x948f003a, 0xa48f003c, 0x948800d4, 0x3e00008, 0x3102ffff, 0x8f86001c, 0x3c0c0800, 0x8d8c0050, 0x240bff80, 0x8ccd0008, 0x3c03000c, 0xd51c0, 0x18a4021, 0x10b4824, 0xaf8a00e8, 0xaf490028, 0x90c70007, 0x3105007f, 0xba1021, 0x432821, 0x30e40004, 0x1080002f, 0xaf8500d0, 0x90cf0007, 0x31ee0008, 0x11c0003c, 0x0, 0x8cd9000c, 0x8cc40014, 0x324c02b, 0x13000026, 0x0, 0x8cc2000c, 0xaca20064, 0x8ccd0018, 0x2402fff8, 0xacad0068, 0x8ccc0010, 0xacac0080, 0x8ccb000c, 0xacab0084, 0x8cca001c, 0xacaa007c, 0x90a900bc, 0x1224024, 0xa0a800bc, 0x90c30007, 0x30670008, 0x10e00004, 0x8f8500d0, 0x90af00bc, 0x35ee0001, 0xa0ae00bc, 0x90d90007, 0x33380001, 0x1300000f, 0x8f8400d0, 0x24070020, 0x908200bc, 0x34490002, 0xa08900bc, 0x8f8400d0, 0x90880062, 0x310300f0, 0x14670006, 0x240a0034, 0xac8a00c0, 0xa001334, 0x0, 0xa00130e, 0x8cc20014, 0x90cb0007, 0x31660002, 0x10c00005, 0x0, 0x908d00bc, 0x35ac0004, 0xa08c00bc, 0x8f8400d0, 0x90980113, 0x330f003f, 0xa08f0113, 0x8f8e00d0, 0x95c500d4, 0x3e00008, 0x30a2ffff, 0xaca00064, 0xa00130f, 0x0, 0x27bdffd8, 0xafb00010, 0x8f90001c, 0xafbf0024, 0xafb40020, 0xafb20018, 0xafb10014, 0xafb3001c, 0x9613000e, 0x3c07600a, 0x3c146006, 0x3264ffff, 0x36930010, 0xe001261, 0x34f40410, 0x8f8400d4, 0x3c11600e, 0xe0009aa, 0x36310010, 0x920e0015, 0x3c070800, 0x8ce70060, 0x3c126012, 0x31cd000f, 0xa38d00f0, 0x8e0e0004, 0x8e0d0008, 0x96080012, 0x961f0010, 0x9619001a, 0x9618001e, 0x960f001c, 0x310cffff, 0x33ebffff, 0x332affff, 0x3309ffff, 0x31e6ffff, 0x3c010800, 0xac2b0040, 0x3c010800, 0xac2c0024, 0x3c010800, 0xac2a0044, 0xae293178, 0xae26317c, 0x92020015, 0x96030016, 0x36520010, 0x304400ff, 0x3065ffff, 0x3c060800, 0x8cc60064, 0xae243188, 0xae4500b4, 0x92080014, 0x96190018, 0x241f0001, 0x11fc004, 0x332fffff, 0x3c050800, 0x8ca50058, 0xae5800b8, 0xae4f00bc, 0x920c0014, 0xaf8e00d8, 0xaf8d00dc, 0x318b00ff, 0xae4b00c0, 0x920a0015, 0xae670048, 0xae66004c, 0x314900ff, 0xae4900c8, 0xae65007c, 0x3c030800, 0x8c630050, 0x3c040800, 0x8c84004c, 0x3c080800, 0x8d080054, 0x3c020800, 0x8c42005c, 0x8fbf0024, 0xae630080, 0x8fb00010, 0xae830074, 0x8fb3001c, 0xae22319c, 0xae4200dc, 0xae2731a0, 0xae2631a4, 0xae24318c, 0xae233190, 0xae283194, 0xae253198, 0xae870050, 0xae860054, 0xae850070, 0x8fb10014, 0xae4700e0, 0xae4600e4, 0xae4400cc, 0xae4300d0, 0xae4800d4, 0xae4500d8, 0x8fb40020, 0x8fb20018, 0x3e00008, 0x27bd0028, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0x24110001, 0xe000854, 0xafb00010, 0x10510005, 0x978400e6, 0x978300cc, 0x83102b, 0x14400008, 0x8f8500d4, 0x24070002, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xe01021, 0x3e00008, 0x27bd0020, 0xe000c89, 0x24040005, 0xaf8200e8, 0x1040fff6, 0x24070002, 0xe000858, 0x8f90001c, 0x979f00e6, 0x8f9900e8, 0x8f8d00c8, 0x27ef0001, 0x240e0050, 0xaf590020, 0xa78f00e6, 0xa1ae0000, 0x3c0c0800, 0x8d8c0064, 0x8f8600c8, 0x240a8000, 0xc5e00, 0xaccb0074, 0xa4c00006, 0x94c9000a, 0x241fff80, 0x3c0d000c, 0x12ac024, 0xa4d8000a, 0x90c8000a, 0x24182000, 0x11f1825, 0xa0c3000a, 0x8f8700c8, 0xa0e00078, 0x8f8500c8, 0x3821, 0xa0a00083, 0x3c020800, 0x8c420050, 0x8f8400e8, 0x447821, 0x1ffc824, 0xaf590028, 0x960b0002, 0x31ee007f, 0x1da6021, 0x18d3021, 0xa4cb00d4, 0x960a0002, 0xaf8600d0, 0x3c0e0004, 0x25492401, 0xa4c900e6, 0x8e080004, 0xacc80004, 0x8e030008, 0xacc30000, 0xa4c00010, 0xa4c00014, 0xa0c000d0, 0x8f8500d0, 0x2403ffbf, 0xa0a000d1, 0x3c040800, 0x8c840064, 0x8f8200d0, 0xa04400d2, 0x8e1f000c, 0x8f8a00d0, 0x978f00e4, 0xad5f001c, 0x8e190010, 0x24100030, 0xad590018, 0xa5400030, 0xa5510054, 0xa5510056, 0xa54f0016, 0xad4e0068, 0xad580080, 0xad580084, 0x914d0062, 0x31ac000f, 0x358b0010, 0xa14b0062, 0x8f8600d0, 0x90c90063, 0x3128007f, 0xa0c80063, 0x8f8400d0, 0x2406ffff, 0x90850063, 0xa31024, 0xa0820063, 0x8f9100d0, 0xe01021, 0x923f00bc, 0x37f90001, 0xa23900bc, 0x8f8a00d0, 0x938f00f0, 0xad580064, 0xad5000c0, 0x914e00d3, 0xf6900, 0x31cc000f, 0x18d5825, 0xa14b00d3, 0x8f8500d0, 0x8f8900dc, 0xaca900e8, 0x8f8800d8, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, 0xaca800ec, 0xa4a600d6, 0xa4a000e0, 0xa4a000e2, 0x3e00008, 0x0, 0x27bdffe0, 0xafb00010, 0x8f90001c, 0xafb10014, 0xafbf0018, 0x8e190004, 0x3c180800, 0x8f180050, 0x240fff80, 0x1989c0, 0x2387021, 0x31cd007f, 0x1cf6024, 0x1ba5021, 0x3c0b000c, 0xaf4c0028, 0x14b4021, 0x950900d4, 0x950400d6, 0x8e070004, 0x3131ffff, 0xaf8800d0, 0xe000922, 0x721c0, 0x8e060004, 0x8f8300c8, 0x629c0, 0xaf450020, 0x9064003e, 0x30820040, 0x14400006, 0x8f8400d0, 0x341fffff, 0x948300d6, 0x3062ffff, 0x145f0004, 0x0, 0x948400d6, 0xe0008b7, 0x3084ffff, 0x8e050004, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, 0x3821, 0x529c0, 0xa001285, 0x27bd0020, 0x27bdffe0, 0xafb10014, 0x3091ffff, 0xafb00010, 0xafbf0018, 0x1220001d, 0x8021, 0x8f86001c, 0x8cc50000, 0x24030006, 0x53f02, 0x51402, 0x30e40007, 0x14830015, 0x304500ff, 0x2ca80006, 0x1100004d, 0x55880, 0x3c0c0800, 0x258c57e8, 0x16c5021, 0x8d490000, 0x1200008, 0x0, 0x8f8e00ec, 0x240d0001, 0x11cd0059, 0x0, 0x260b0001, 0x3170ffff, 0x24ca0020, 0x211202b, 0x1403021, 0x1480ffe6, 0xaf8a001c, 0x2001021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x938700ce, 0x14e00038, 0x24040014, 0xe001346, 0x0, 0x8f86001c, 0x24020001, 0xa00148d, 0xaf8200ec, 0x8f8900ec, 0x24080002, 0x1128003b, 0x24040013, 0x2821, 0x3021, 0x24070001, 0xe001285, 0x0, 0xa00148d, 0x8f86001c, 0x8f8700ec, 0x24050002, 0x14e5fff6, 0x24040012, 0xe0012f2, 0x0, 0x8f8500e8, 0x403021, 0x24040012, 0xe001285, 0x3821, 0xa00148d, 0x8f86001c, 0x8f8300ec, 0x241f0003, 0x147fffd0, 0x260b0001, 0xe0012a4, 0x0, 0x8f8500e8, 0x403021, 0x24020002, 0x24040010, 0x3821, 0xaf8200ec, 0xe001285, 0x0, 0xa00148d, 0x8f86001c, 0x8f8f00ec, 0x24060002, 0x11e6000b, 0x0, 0x24040010, 0x2821, 0x3021, 0xa0014aa, 0x24070001, 0x2821, 0xe001285, 0x3021, 0xa00148d, 0x8f86001c, 0xe0013b3, 0x0, 0x14400012, 0x8f99001c, 0x8f86001c, 0x24020003, 0xa00148d, 0xaf8200ec, 0xe00143f, 0x0, 0xa00148d, 0x8f86001c, 0xe001294, 0x0, 0x24020002, 0x24040014, 0x2821, 0x3021, 0x3821, 0xa0014c7, 0xaf8200ec, 0x403821, 0x24040010, 0x97380002, 0x2821, 0xe001285, 0x3306ffff, 0xa00148d, 0x8f86001c, 0x8f8400c8, 0x3c077fff, 0x34e6ffff, 0x8c850074, 0x24020001, 0xa61824, 0xac830074, 0x3e00008, 0xa0820005, 0x10a00036, 0x2ca20080, 0x274a0400, 0x3c0b0005, 0x24090080, 0x10400007, 0x24080080, 0x30a6000f, 0xc54021, 0x2d030081, 0x14600002, 0xa04821, 0x24080080, 0xaf4b0030, 0x0, 0x0, 0x0, 0x11000009, 0x3821, 0x1403021, 0x8c8d0000, 0x24e70004, 0xe8602b, 0xaccd0000, 0x24840004, 0x1580fffa, 0x24c60004, 0x0, 0x0, 0x0, 0x3c0e0006, 0x10e3825, 0xaf470030, 0x0, 0x0, 0x0, 0x8f4f0000, 0x31e80010, 0x1100fffd, 0x0, 0x8f42003c, 0x8f43003c, 0x49c821, 0x323c02b, 0x13000004, 0x0, 0x8f4c0038, 0x25860001, 0xaf460038, 0x8f47003c, 0xa92823, 0xe96821, 0xaf4d003c, 0x14a0ffce, 0x2ca20080, 0x3e00008, 0x0, 0x27bdffd0, 0x3c020002, 0xafb10014, 0x3c11000c, 0xaf450038, 0xafb3001c, 0xaf46003c, 0x809821, 0xaf420030, 0x24050088, 0xaf440028, 0x3512021, 0xafbf0028, 0xafb50024, 0xafb40020, 0xafb20018, 0xe0014ff, 0xafb00010, 0x3c1f0800, 0x8fff004c, 0x3c180800, 0x8f180064, 0x2410ff80, 0x3f3a821, 0x32b9007f, 0x2b07824, 0x18a0c0, 0x33a7021, 0x189140, 0x1d12021, 0xaf4f0028, 0xe0014ff, 0x2542821, 0x3c0d0800, 0x8dad0050, 0x24050120, 0x1b35821, 0x316c007f, 0x1705024, 0x19a4821, 0x1312021, 0xe0014ff, 0xaf4a0028, 0x3c080800, 0x8d080054, 0x3c050800, 0x8ca50064, 0x1133821, 0x30e6007f, 0xf01824, 0xda2021, 0x912021, 0xaf430028, 0xe0014ff, 0x52940, 0x3c020800, 0x8c420058, 0x3c100800, 0x8e100060, 0x1200001c, 0x538821, 0x2415ff80, 0xa001582, 0x3c14000c, 0x3226007f, 0x2351824, 0xda2021, 0x2402821, 0xaf430028, 0x942021, 0xe0014ff, 0x2610ffc0, 0x1200000f, 0x2328821, 0x2e050041, 0x10a0fff4, 0x24121000, 0x3226007f, 0x109180, 0x2351824, 0xda2021, 0x2402821, 0xaf430028, 0x942021, 0xe0014ff, 0x8021, 0x1600fff3, 0x2328821, 0x3c0b0800, 0x8d6b005c, 0x240aff80, 0x24050002, 0x1734021, 0x10a4824, 0xaf490028, 0x3c040800, 0x94840062, 0x3110007f, 0x21a8821, 0x3c07000c, 0xe000cb9, 0x2279821, 0x402821, 0x2602021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa0014ff, 0x27bd0030, 0x8f83001c, 0x8c620004, 0x10400003, 0x0, 0x3e00008, 0x0, 0x8c640010, 0x8c650008, 0xa001538, 0x8c66000c, 0x0 }; u32 bce_CP_b06FwData[(0x84/4) + 1] = { 0x0, 0x1b, 0xf, 0xa, 0x8, 0x6, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0 }; u32 bce_CP_b06FwRodata[(0x134/4) + 1] = { 0x8000f30, 0x8000d88, 0x8000fc4, 0x800106c, 0x8000f58, 0x8000f98, 0x80011a4, 0x8000da4, 0x80011c8, 0x8000df4, 0x8001498, 0x8001440, 0x8000da4, 0x8000da4, 0x8000da4, 0x8001254, 0x8001254, 0x8000da4, 0x8000da4, 0x80016e0, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x80013d4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000fb8, 0x8000da4, 0x8000da4, 0x8001690, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x8000da4, 0x80015bc, 0x8000da4, 0x8000da4, 0x8001348, 0x80012b8, 0x8002e50, 0x8002e58, 0x8002e20, 0x8002e2c, 0x8002e38, 0x8002e44, 0x800532c, 0x80052ec, 0x80052b8, 0x800528c, 0x8005268, 0x8005224, 0x0 }; u32 bce_CP_b06FwBss[(0x5d8/4) + 1] = { 0x0 }; u32 bce_CP_b06FwSbss[(0xf1/4) + 1] = { 0x0 }; u32 bce_CP_b06FwSdata[(0x0/4) + 1] = { 0x0 }; u32 bce_rv2p_proc1[] = { 0x00000010, 0xb1800002, 0x0000001f, 0x01030100, 0x00000008, 0xac000001, 0x00000000, 0x05000000, 0x0000000c, 0x2f800001, 0x00000000, 0x2b000000, 0x00000000, 0x2b800000, 0x00000010, 0x203f0063, 0x00000010, 0x213f0003, 0x00000010, 0x20bf0032, 0x00000018, 0x8000fffd, 0x00000010, 0xb1b8b00d, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c380000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x80000075, 0x00000018, 0x8000010b, 0x00000008, 0x02000002, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a11, 0x00000010, 0x2c62000b, 0x00000018, 0x8000001e, 0x00000008, 0x02000002, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a18, 0x00000008, 0x2c8000b1, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x00000018, 0x8000006f, 0x00000018, 0x80000015, 0x00000008, 0xb1000001, 0x00000008, 0x2c8000b0, 0x00000008, 0x2d000008, 0x00000008, 0x2d800001, 0x00000018, 0x80000069, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800002, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffdc, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800000, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffd6, 0x0000000c, 0x1f800002, 0x00000000, 0x05000000, 0x00000018, 0x8000ffd3, 0x0000000c, 0x29800002, 0x0000000c, 0x1f800002, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000005, 0x00000008, 0x05005555, 0x00000018, 0x8000ffcd, 0x00000008, 0x0224003c, 0x00000018, 0x00040000, 0x00000018, 0x8000001c, 0x00000018, 0x8000001e, 0x00000018, 0x80000052, 0x00000018, 0x8000009e, 0x00000018, 0x8000009d, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x800000df, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000015, 0x00000018, 0x8000001b, 0x00000018, 0x80000000, 0x00000018, 0x800000b4, 0x00000018, 0x8000002e, 0x00000018, 0x800000df, 0x00000018, 0x8000010a, 0x00000018, 0x800000d5, 0x00000018, 0x8000012e, 0x00000018, 0x8000003b, 0x00000018, 0x80000000, 0x00000018, 0x80000071, 0x0000000c, 0x1f800001, 0x00000000, 0x05000000, 0x00000018, 0x8000ffac, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ffa6, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000000, 0x29420000, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ff9f, 0x00000018, 0x8000ff9e, 0x00000010, 0xb1bcb00a, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c3c0000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x80000016, 0x00000018, 0x800000ac, 0x00000010, 0x2c6201ba, 0x00000018, 0x80000005, 0x00000008, 0x2c8000b1, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800000, 0x0000000c, 0x1f800000, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000006, 0x00000008, 0x05005555, 0x00000018, 0x8000ff89, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a00000b, 0x00000000, 0x05000000, 0x00000018, 0x8000ff83, 0x00000018, 0x00020000, 0x00000000, 0x06820000, 0x00000010, 0xb18a0006, 0x00000000, 0x860c1400, 0x00000010, 0xb18c0004, 0x00000000, 0x05000000, 0x00000008, 0x2a000001, 0x00000010, 0x91d40000, 0x00000018, 0x000d0000, 0x00000000, 0x05020000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0xb1a0b013, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ffee, 0x00000008, 0x2d80011c, 0x00000010, 0x001f0000, 0x00000010, 0x91de0000, 0x0000000f, 0x47600008, 0x0000000f, 0x060e0001, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000018, 0x80000013, 0x0000000f, 0x47600008, 0x0000000b, 0x2fdf0002, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x2d80011c, 0x0000000f, 0x060e0001, 0x00000010, 0x001f0000, 0x00000000, 0x0f580000, 0x00000010, 0x91de0000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000000, 0x02620000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x31040000, 0x00000000, 0x309a0000, 0x00000000, 0x0c961800, 0x00000009, 0x0c99ffff, 0x00000004, 0xcc993400, 0x00000010, 0xb1963202, 0x00000008, 0x0f800000, 0x0000000c, 0x29800001, 0x00000010, 0x00220002, 0x0000000c, 0x29520001, 0x0000000c, 0x29520000, 0x00000008, 0x0200000e, 0x00000008, 0x0280001a, 0x00000010, 0xb1c40a02, 0x00000008, 0x02000003, 0x00000008, 0x22000001, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000000, 0x2a000800, 0x00000008, 0x05005555, 0x00000018, 0x8000ff3f, 0x0000000b, 0x2fdf0002, 0x00000010, 0x91d40000, 0x00000008, 0x2a000001, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80011c, 0x00000010, 0x91d40000, 0x00000010, 0x91de0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000000, 0x30800000, 0x00000000, 0x31000000, 0x00000008, 0x2d800006, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000010, 0x00000000, 0x05000000, 0x00000018, 0x8000ff2a, 0x00000010, 0x91a0b009, 0x00000008, 0x2c8000b1, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x00000018, 0x8000ffab, 0x00000018, 0x80000010, 0x00000008, 0xac000001, 0x00000018, 0x8000000b, 0x00000000, 0x0380b000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c004000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff9a, 0x00000018, 0x80000030, 0x00000018, 0x80000006, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c000e00, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000ff14, 0x00000000, 0x06820000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x0ce70007, 0x00000009, 0x0562ffff, 0x00000010, 0xba6c1405, 0x00000000, 0x2adf0000, 0x00000000, 0x21000000, 0x00000008, 0x2a000005, 0x00000010, 0x91d40000, 0x00000008, 0x2c8000b0, 0x00000008, 0x2d000008, 0x0000000c, 0x31620018, 0x00000008, 0x2d800001, 0x00000018, 0x8000ff8c, 0x00000018, 0x000d0000, 0x00000010, 0xb1a0b00e, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c200000, 0x00000010, 0x91d40000, 0x00000018, 0x80000014, 0x00000010, 0x2c620002, 0x00000018, 0x8000000b, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c070000, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000fef6, 0x00000008, 0x2c8000b1, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000a, 0x00000000, 0x05000000, 0x00000018, 0x8000feeb, 0x00000000, 0x05020000, 0x00000008, 0x2c8000b0, 0x00000008, 0x2d000008, 0x00000008, 0x2d800150, 0x00000000, 0x00000000, 0x00000010, 0x205f0000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000008, 0x2d800108, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff5b, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000009, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000fed7, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff53, 0x00000010, 0x91a03c02, 0x00000010, 0xb1e66207, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c310000, 0x00000009, 0x2cb1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80010d, 0x00000010, 0xb1a80006, 0x00000010, 0x205f0000, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff4c, 0x00000010, 0xb1a60010, 0x00000010, 0x001f0000, 0x0000000f, 0x0f300007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07300003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x0000000f, 0x4ce30018, 0x00000000, 0x0c992c00, 0x00000004, 0xcc993400, 0x00000008, 0x0f800000, 0x0000000c, 0x29800001, 0x00000000, 0x33310000, 0x00000008, 0x22000016, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000c, 0x00000010, 0x009f0000, 0x00000000, 0x0f200000, 0x0000000c, 0x1f800001, 0x00000008, 0x05005555, 0x00000018, 0x8000feab, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff27, 0x0000000f, 0x47220008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000008, 0x02800001, 0x00000007, 0x02851c00, 0x00000008, 0x82850001, 0x00000000, 0x02854c00, 0x00000007, 0x42851c00, 0x00000003, 0xc3aa5200, 0x00000000, 0x03b10e00, 0x00000007, 0x4b071c00, 0x0000000f, 0x0f300007, 0x0000000f, 0x0a960003, 0x00000000, 0x0a955c00, 0x00000000, 0x4a005a00, 0x00000000, 0x0c960a00, 0x00000009, 0x0c99ffff, 0x00000008, 0x0d00ffff, 0x00000010, 0xb1963202, 0x00000008, 0x0f800005, 0x00000010, 0xb1a80008, 0x00000010, 0x205f0000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff13, 0x0000000c, 0x29800001, 0x00000010, 0x001f0000, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000d, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000fe85, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff01, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000fe7d, 0x00000008, 0x03050004, 0x00000006, 0x83040c00, 0x00000008, 0x02850200, 0x00000000, 0x86050c00, 0x00000001, 0x860c0e00, 0x00000008, 0x02040004, 0x00000000, 0x02041800, 0x00000000, 0x83871800, 0x00000018, 0x00020000, }; u32 bce_rv2p_proc2[] = { 0x00000010, 0xb1800004, 0x0000001f, 0x01030100, 0x00000008, 0x050000ff, 0x00000018, 0x00020000, 0x00000000, 0x2a000000, 0x00000010, 0xb1d40000, 0x0000000c, 0x29800001, 0x00000008, 0x02540008, 0x00000018, 0x00040000, 0x00000018, 0x80000010, 0x00000018, 0x80000011, 0x00000018, 0x8000003a, 0x00000018, 0x80000104, 0x00000018, 0x80000103, 0x00000018, 0x80000102, 0x00000018, 0x80000102, 0x00000018, 0x80000000, 0x00000018, 0x80000114, 0x00000018, 0x800000fe, 0x00000018, 0x8000000c, 0x00000018, 0x80000118, 0x00000018, 0x8000016a, 0x00000018, 0x80000067, 0x00000018, 0x800000da, 0x00000018, 0x800000e7, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffeb, 0x00000000, 0x2a000000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ffe7, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffe5, 0x00000018, 0x00020000, 0x00000000, 0x05020000, 0x00000010, 0x91963421, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d610000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963416, 0x00000010, 0x205f0000, 0x00000000, 0x09d80000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c8000b2, 0x00000008, 0x2d00000a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d620000, 0x00000000, 0x2c130000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963409, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d00006a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d7a0000, 0x00000018, 0x000a0000, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x0d610000, 0x00000000, 0x03620000, 0x00000000, 0x2c400000, 0x00000000, 0x02638c00, 0x00000000, 0x26460000, 0x00000008, 0x02040012, 0x00000010, 0xb9060827, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0cc60012, 0x00000018, 0x8000ffcb, 0x00000008, 0x0f800003, 0x00000000, 0x00000000, 0x00000010, 0x009f0000, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000008, 0xa31b0012, 0x00000010, 0xb1980003, 0x00000010, 0x001f0000, 0x00000008, 0x0f800004, 0x00000008, 0x22000003, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000010, 0x009f0000, 0x00000000, 0x25960000, 0x0000000c, 0x29800000, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x0260000f, 0x0000000f, 0x02040002, 0x00000010, 0xb60c0803, 0x0000000c, 0x1fbf0000, 0x0000000c, 0x33660010, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000005, 0x73662c00, 0x00000000, 0x31e32e00, 0x00000008, 0x2d800010, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000ff90, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000008, 0x2200000b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ff89, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x00000008, 0x2c800040, 0x00000008, 0x2d000020, 0x00000008, 0x2d80011c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x0000000f, 0x42ea0010, 0x00000010, 0x004f0004, 0x00000010, 0xb7469200, 0x00000008, 0x02490012, 0x00000010, 0xb5840a00, 0x00000000, 0x0d610000, 0x00000010, 0xba66345a, 0x00000000, 0x03620000, 0x00000010, 0xb8630c58, 0x00000008, 0x83050012, 0x00000010, 0x004f0002, 0x00000000, 0x03490000, 0x00000001, 0x83068c00, 0x00000000, 0x83c60c00, 0x00000010, 0xb1870010, 0x00000000, 0x0b6e0000, 0x00000018, 0x8000ff6b, 0x00000001, 0x06691400, 0x00000010, 0x918c0002, 0x00000008, 0xb4e90001, 0x00000010, 0xb1e92c4c, 0x00000000, 0x86692c00, 0x00000000, 0x02000000, 0x00000009, 0x02eaffff, 0x00000010, 0x000c0002, 0x00000000, 0x02040a00, 0x0000000f, 0x460c0001, 0x0000000f, 0x02850001, 0x00000010, 0x918c01fc, 0x00000010, 0xb7040e43, 0x00000000, 0x2c400000, 0x00000000, 0x0f400000, 0x00000000, 0x0d610000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0c860012, 0x00000008, 0x0f800003, 0x0000000c, 0x29520000, 0x00000010, 0x009f0000, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000000, 0x26460000, 0x00000000, 0x23060000, 0x00000010, 0xb1980005, 0x00000010, 0x001f0000, 0x00000008, 0x0f800004, 0x00000000, 0x00000000, 0x00000010, 0x001f0000, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000000, 0x31e32e00, 0x00000005, 0x73662c00, 0x00000000, 0x25960000, 0x00000010, 0xb1870016, 0x0000000c, 0x29800000, 0x0000000f, 0x0f6b0007, 0x00000000, 0x0d690000, 0x00000000, 0x0a6c0000, 0x00000000, 0x0aed0000, 0x00000000, 0x0b6e0000, 0x00000000, 0x0b800000, 0x00000000, 0x0c870000, 0x00000008, 0x0f800003, 0x00000010, 0x20530000, 0x0000000c, 0x69520001, 0x00000010, 0x001f0000, 0x00000000, 0x22c58c00, 0x00000000, 0x231b0000, 0x00000000, 0x27110000, 0x00000000, 0x26900000, 0x00000010, 0xb8170e03, 0x0000000c, 0x29800000, 0x00000018, 0x8000fff6, 0x00000010, 0xb1980002, 0x00000008, 0x0f800004, 0x00000008, 0x2200001a, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800010, 0x00000010, 0x001f0000, 0x00000000, 0x0d6e0000, 0x00000003, 0xe7cf3400, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000010, 0xb1870007, 0x00000000, 0x36140000, 0x00000000, 0x36950000, 0x00000000, 0x37160000, 0x00000008, 0x2c800050, 0x00000008, 0x2d000030, 0x00000008, 0x2d80000c, 0x00000010, 0x20530000, 0x00000018, 0x8000ff1f, 0x00000000, 0x26460000, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000000, 0x0b6e0000, 0x00000003, 0xe7cf2c00, 0x00000008, 0x2200001b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ff15, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000010, 0x003f000b, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x026000f0, 0x00000010, 0xb70c0807, 0x0000000c, 0x73660010, 0x00000008, 0x2c800018, 0x00000008, 0x2d000018, 0x00000008, 0x2d800002, 0x0000000c, 0x5fbf0000, 0x00000010, 0x91de0000, 0x00000018, 0x8000ff07, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80001a, 0x00000008, 0x2d00001a, 0x00000000, 0x33000000, 0x00000008, 0x2d800002, 0x00000000, 0x31800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800004, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000fef6, 0x00000018, 0x8000fef5, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x00000000, 0x0f008000, 0x00000008, 0x0f800007, 0x00000018, 0x80000014, 0x00000000, 0x05020000, 0x00000008, 0x22000009, 0x00000000, 0x286d0000, 0x00000000, 0x29000000, 0x0000000f, 0x65680010, 0x00000003, 0xf66c9400, 0x00000010, 0xb972a004, 0x0000000c, 0x73e70019, 0x0000000c, 0x21420004, 0x00000000, 0x3bf60000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000008, 0x22000008, 0x0000000c, 0x61420004, 0x00000018, 0x000a0000, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x0000000f, 0x0f470007, 0x00000008, 0x0f800008, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000feda, 0x00000010, 0x91de0000, 0x00000000, 0x2fd50000, 0x00000010, 0x001f0000, 0x00000000, 0x33510000, 0x00000000, 0x2a000000, 0x00000010, 0xb1c60023, 0x0000000f, 0x0f500007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x0000000f, 0x4c620010, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07500003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x00000000, 0x0cc60000, 0x00000000, 0x0b800000, 0x00000000, 0x06980000, 0x00000008, 0x0f800003, 0x00000010, 0x06c20004, 0x0000000c, 0x29000002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x009f0000, 0x00000000, 0x231b0000, 0x00000000, 0x27111a00, 0x00000000, 0x66900000, 0x0000000c, 0x29520000, 0x00000010, 0xb1973209, 0x0000000c, 0x29800000, 0x00000000, 0x06980000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c58c00, 0x00000010, 0x001f0000, 0x00000008, 0x0f800003, 0x00000018, 0x8000fff3, 0x00000010, 0xb1c80013, 0x00000010, 0xb1c60003, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000008, 0x22000016, 0x00000010, 0xb1c60003, 0x00000000, 0x23480000, 0x00000010, 0xb1800005, 0x00000000, 0x23480000, 0x0000000c, 0x29800000, 0x0000000f, 0x0f500007, 0x00000018, 0x80000012, 0x00000008, 0x22000016, 0x0000000c, 0x29800000, 0x00000000, 0x30140000, 0x00000000, 0x30950000, 0x00000010, 0x07500003, 0x00000009, 0x0b1600ff, 0x00000009, 0x0d1a00ff, 0x0000000f, 0x31160008, 0x00000000, 0x31623400, 0x00000003, 0xf1623000, 0x00000010, 0x205f0000, 0x00000000, 0x2c510000, 0x00000009, 0x2cd1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80000c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000010, 0x05c20003, 0x00000000, 0x33000000, 0x00000008, 0x0f800007, 0x00000010, 0x20530000, 0x00000010, 0x009f0000, 0x00000018, 0x8000fe87, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x0000000f, 0x0f500007, 0x00000010, 0xb1c6002d, 0x0000000f, 0x47420008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000010, 0x001f0000, 0x00000008, 0x09000001, 0x00000007, 0x09121c00, 0x00000003, 0xcbca9200, 0x00000000, 0x0b97a200, 0x00000007, 0x42171c00, 0x00000000, 0x0b040000, 0x0000000f, 0x0a840003, 0x00000000, 0x0a959c00, 0x00000000, 0x4a009a00, 0x00000008, 0x82120001, 0x00000001, 0x0c170800, 0x00000000, 0x0c978c00, 0x00000000, 0x02180000, 0x00000008, 0x0d00ffff, 0x00000008, 0x0f800006, 0x0000000c, 0x29000000, 0x00000010, 0x06c20004, 0x0000000c, 0x29520002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x009f0000, 0x00000010, 0xb197320c, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x0000000c, 0x29800000, 0x00000000, 0x02180000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c53600, 0x00000010, 0x001f0000, 0x00000008, 0x0f800006, 0x00000018, 0x8000fff4, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x00000010, 0xb1c8000b, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000000, 0x23480000, 0x00000008, 0x22000017, 0x0000000c, 0x29800000, 0x00000010, 0x001f0000, 0x00000010, 0x20530000, 0x00000018, 0x8000fe4a, }; int bce_TXP_b09FwReleaseMajor = 0x1; int bce_TXP_b09FwReleaseMinor = 0x0; int bce_TXP_b09FwReleaseFix = 0x0; u32 bce_TXP_b09FwStartAddr = 0x08000098; u32 bce_TXP_b09FwTextAddr = 0x08000000; int bce_TXP_b09FwTextLen = 0x3afc; u32 bce_TXP_b09FwDataAddr = 0x00000000; int bce_TXP_b09FwDataLen = 0x0; u32 bce_TXP_b09FwRodataAddr = 0x08003afc; int bce_TXP_b09FwRodataLen = 0x30; u32 bce_TXP_b09FwBssAddr = 0x08003bcc; int bce_TXP_b09FwBssLen = 0x24c; u32 bce_TXP_b09FwSbssAddr = 0x08003b60; int bce_TXP_b09FwSbssLen = 0x6c; u32 bce_TXP_b09FwSDataAddr = 0x00000000; int bce_TXP_b09FwSDataLen = 0x0; u32 bce_TXP_b09FwText[(0x3afc/4) + 1] = { 0xa000026, 0x0, 0x0, 0xd, 0x74787034, 0x2e362e31, 0x36000000, 0x4061000, 0xa, 0x136, 0xea60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24423b60, 0x3c030800, 0x24633e18, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd7ffc, 0x3a0f021, 0x3c100800, 0x26100098, 0x3c1c0800, 0x279c3b60, 0xe0004ae, 0x0, 0xd, 0x3c058000, 0x8f830030, 0x34a80070, 0x8d070000, 0x833025, 0x3c029000, 0xc22025, 0xaca40020, 0xaf870024, 0x3c048000, 0x8c890020, 0x520fffe, 0x0, 0x34840070, 0x8c850000, 0x3c180800, 0x8f18007c, 0x3c0d0800, 0x8dad0078, 0xa7c823, 0x3195021, 0x7021, 0x159602b, 0x1ae5821, 0x16c3821, 0x3c010800, 0xac2a007c, 0x3c010800, 0xac270078, 0x3e00008, 0x0, 0xa00003d, 0x24040001, 0x8f850030, 0x3c048000, 0x34830001, 0xa31025, 0x3e00008, 0xac820020, 0x3e00008, 0x1021, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x90aa0031, 0x8fab0010, 0x8cac0040, 0x3c0300ff, 0x8d680004, 0xad6c0020, 0x8cad0044, 0xe06021, 0x3462ffff, 0xad6d0024, 0x8ca70048, 0x3c09ff00, 0x109c024, 0xad670028, 0x8cae004c, 0x182c824, 0x3197825, 0xad6f0004, 0xad6e002c, 0x8cad0038, 0x314a00ff, 0xad6d001c, 0x94a90032, 0x3128ffff, 0xad680010, 0x90a70030, 0xa5600002, 0xa1600004, 0xa1670000, 0x90a30032, 0x306200ff, 0x21982, 0x10600005, 0x24050001, 0x1065000e, 0x0, 0x3e00008, 0xa16a0001, 0x8cd80028, 0x354a0080, 0xad780018, 0x8ccf0014, 0xad6f0014, 0x8cce0030, 0xad6e0008, 0x8cc4002c, 0xa16a0001, 0x3e00008, 0xad64000c, 0x8ccd001c, 0xad6d0018, 0x8cc90014, 0xad690014, 0x8cc80024, 0xad680008, 0x8cc70020, 0xad67000c, 0x8cc20014, 0x8c830070, 0x43c82b, 0x13200007, 0x0, 0x8cc20014, 0x144cffe4, 0x0, 0x354a0080, 0x3e00008, 0xa16a0001, 0x8c820070, 0xa0000c6, 0x0, 0x90890030, 0x27bdfff8, 0x8fa8001c, 0xa3a90000, 0x8fa30000, 0x3c0dff80, 0x35a2ffff, 0x8cac002c, 0x625824, 0xafab0000, 0xa1000004, 0xc05821, 0xa7a00002, 0x8d060004, 0xa04821, 0x167c821, 0x8fa50000, 0x805021, 0x3c18ff7f, 0x32c2026, 0x3c0e00ff, 0x2c8c0001, 0x370fffff, 0x35cdffff, 0x3c02ff00, 0xafc824, 0xedc024, 0xc27824, 0xc1dc0, 0x3236825, 0x1f87025, 0xad0d0000, 0xad0e0004, 0x8d240024, 0xafad0000, 0xad040008, 0x8d2c0020, 0x2404ffff, 0xad0c000c, 0x95470032, 0x30e6ffff, 0xad060010, 0x91450048, 0x30a200ff, 0x219c2, 0x50600001, 0x8d240034, 0xad040014, 0x8d470038, 0x8faa0018, 0x27bd0008, 0xad0b0028, 0xad0a0024, 0xad07001c, 0xad00002c, 0xad000018, 0x3e00008, 0xad000020, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x90980030, 0xc08821, 0x3c0d00ff, 0x330f007f, 0xa0cf0000, 0x908e0031, 0x35acffff, 0x3c0aff00, 0xa0ce0001, 0x94a6001e, 0xa2200004, 0x8cab0014, 0x8e290004, 0xa08021, 0x16c2824, 0x12a4024, 0x809021, 0x1052025, 0xa6260002, 0xae240004, 0x26050020, 0x26240008, 0xe000072, 0x24060002, 0x92470030, 0x26050028, 0x26240014, 0x71e00, 0x31603, 0x24060004, 0x4400003, 0x2403ffff, 0x96590032, 0x3323ffff, 0xe000072, 0xae230010, 0x26240024, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050003, 0x3021, 0xa00007c, 0x27bd0020, 0x27bdffd8, 0xafb1001c, 0xafb00018, 0xafbf0020, 0x90a90030, 0x24020001, 0xe05021, 0x3123003f, 0xa04021, 0x8fb00040, 0x808821, 0xc04821, 0x10620014, 0x8fa70038, 0x240b0005, 0xa02021, 0xc02821, 0x106b0013, 0x2003021, 0xe000108, 0x0, 0x9225007c, 0x30a40002, 0x10800003, 0x26030030, 0xae000030, 0x26030034, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x601021, 0x3e00008, 0x27bd0028, 0xe000087, 0xafb00010, 0xa00014f, 0x0, 0x8fa3003c, 0x1002021, 0x1202821, 0x1403021, 0xafa30010, 0xe0000ce, 0xafb00014, 0xa00014f, 0x0, 0x8f820050, 0x24430001, 0x304200ff, 0xaf830050, 0x3e00008, 0x0, 0x3c058000, 0x8ca30e10, 0x8f840044, 0xac830020, 0x8ca20e18, 0x3e00008, 0xac820024, 0x3c058000, 0x8ca30e14, 0x8f840044, 0xac830020, 0x8ca20e1c, 0x3e00008, 0xac820024, 0x93820038, 0x1040001b, 0x2483000f, 0x2404fff0, 0x643824, 0x10e00019, 0x978b002c, 0x9784004c, 0x9389002e, 0x3c0a601c, 0xa000190, 0x1644023, 0x1037021, 0x642823, 0x11260002, 0x31c2ffff, 0x30a2ffff, 0x47302b, 0x50c0000e, 0xe44821, 0x8d4d000c, 0x31a3ffff, 0x36400, 0xc2c03, 0x4a1fff3, 0x3021, 0x30637fff, 0xa000188, 0x24060001, 0x3e00008, 0x0, 0x9784004c, 0xe44821, 0x3123ffff, 0x3168ffff, 0x68382b, 0x54e0fff8, 0xa783004c, 0x938a002e, 0x11400005, 0x240f0001, 0x6bc023, 0xa380002e, 0x3e00008, 0xa798004c, 0x6bc023, 0xa38f002e, 0x3e00008, 0xa798004c, 0x3e00008, 0x0, 0x27bdffe8, 0xafb00010, 0x3084ffff, 0x3c108000, 0x93a8002b, 0xafbf0014, 0xa6040144, 0x960a0e16, 0x30c600ff, 0x8fa90030, 0xa60a0146, 0xae050148, 0xa2060152, 0xa608015a, 0xae070160, 0x8fa3002c, 0xa6090158, 0x1202021, 0xe00017c, 0xae030154, 0x3c021000, 0xae020178, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c038000, 0x34620070, 0x8c490000, 0x8f87003c, 0x24840007, 0x27bdfff8, 0x3084fff8, 0xaf890024, 0x3c088000, 0x950e008a, 0x31cdffff, 0xafad0000, 0x8fac0000, 0x1875823, 0x256affff, 0x31461fff, 0xc4282b, 0x14a0fff7, 0x350d0070, 0x8dac0000, 0x3c050800, 0x8ca50084, 0x3c0a0800, 0x8d4a0080, 0x1895823, 0x1021, 0xabc021, 0x7c882, 0x1422021, 0x30b302b, 0x193880, 0x35094000, 0x867821, 0xe91021, 0x27bd0008, 0x3c010800, 0xac380084, 0x3c010800, 0xac2f0080, 0x3e00008, 0x0, 0x8f82003c, 0x24860007, 0x30c5fff8, 0xa21821, 0x30641fff, 0x3e00008, 0xaf84003c, 0x3c0320ff, 0x27bdffe8, 0x3c076000, 0x3c088000, 0x24050010, 0x3464fffd, 0xace53008, 0xafbf0010, 0xad040e00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c0200ff, 0x345ffffd, 0xad1f0e00, 0x3c0b6004, 0x8d785000, 0x2419ff7f, 0x3c0e0002, 0x3197824, 0x35ec380c, 0x35cd0109, 0xaced4c18, 0x24060009, 0xad6c5000, 0x8cea0438, 0xad060008, 0xad000014, 0x8ce94c1c, 0x3145ffff, 0x3c065709, 0x91e02, 0x38a42f71, 0x3062000f, 0x34c80010, 0xaf820048, 0x10400007, 0x2485c0b3, 0x8ceb4c1c, 0x3c0d001f, 0x35acfc00, 0x16c5024, 0xa49c2, 0xaf890034, 0x8cf90808, 0x241ff000, 0x33fc024, 0x3087026, 0x3067826, 0x2de80001, 0x2dc60001, 0x1063825, 0x50e00009, 0xa3800038, 0x3c09601c, 0x8d240008, 0x24030001, 0xa3830038, 0x30827c00, 0xa780004c, 0xa380002e, 0xa782002c, 0xaf800050, 0x14a00003, 0xaf80003c, 0x3c056000, 0xaca0442c, 0xe000559, 0x0, 0x8fbf0010, 0xa000e99, 0x27bd0018, 0x27bdffc8, 0xafb3002c, 0xafb20028, 0xafbf0030, 0xafb10024, 0xafb00020, 0x93620008, 0x809821, 0xa09021, 0x14400035, 0x24040010, 0xe0001c9, 0x0, 0xe000168, 0x408021, 0x2c400, 0x3c193200, 0x3198825, 0xae110000, 0x936f0009, 0x976e0012, 0x936a000a, 0x31ec00ff, 0x31cdffff, 0x18d5821, 0xb4400, 0x314900ff, 0x1093825, 0xae070004, 0x8f850050, 0x97840040, 0x403021, 0x30832000, 0x1460004d, 0xae050008, 0xae00000c, 0x3c058000, 0x97840040, 0x662004f, 0x8e03000c, 0x30900008, 0x16000002, 0x26480006, 0x26480002, 0x94a40e14, 0x8ca50e1c, 0x8f670004, 0x936a0002, 0x3084ffff, 0x314900ff, 0xafa90010, 0x8f720014, 0xafa80018, 0xe0001af, 0xafb20014, 0x8fbf0030, 0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 0x24040010, 0xa0001f2, 0x27bd0038, 0x93650009, 0x97710012, 0x936c000b, 0x30ad00ff, 0x1b13021, 0x318b00ff, 0xcb8021, 0x2602000a, 0x3050ffff, 0xe0001c9, 0x2002021, 0xe000168, 0x408821, 0x93680009, 0x97640012, 0x2fc00, 0x310900ff, 0x308affff, 0x12a3821, 0x24e30002, 0x3e3c025, 0x3c194100, 0x3197825, 0xae2f0000, 0x8f6e000c, 0x3c0d8000, 0x95ac0e14, 0x1d32825, 0xae250004, 0x8da50e1c, 0x8f670004, 0x936b0002, 0x3184ffff, 0x316600ff, 0xafa60010, 0x8f680014, 0x403021, 0xafb20018, 0xe0001af, 0xafa80014, 0x2002021, 0x8fbf0030, 0x8fb3002c, 0x8fb20028, 0x8fb10024, 0x8fb00020, 0xa0001f2, 0x27bd0038, 0x97620012, 0x3c058000, 0x97840040, 0x305fffff, 0x661ffb4, 0xae1f000c, 0x8e03000c, 0x3c078000, 0x679825, 0xa00026b, 0xae13000c, 0x27bdffd8, 0xafb40020, 0xafbf0024, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x93620008, 0x14400094, 0x80a021, 0xaf60000c, 0x97850040, 0x30a44000, 0x1080009e, 0x24030016, 0x24104007, 0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, 0x31ee0001, 0xe6a40, 0x18d5825, 0xaf6b0014, 0x978a0040, 0x8f680014, 0x31490010, 0x1093825, 0xaf670014, 0x97860040, 0x30c30008, 0x1060009f, 0x0, 0x8f660014, 0x3c031000, 0x3c048000, 0xc32825, 0xaf650014, 0x94820e0a, 0x3c1f8100, 0x2413000e, 0x3059ffff, 0x33fc025, 0xaf780004, 0xa3730002, 0x9372000a, 0x3406fffc, 0x26510004, 0xa371000a, 0x97880040, 0x31072000, 0x10e00091, 0x0, 0x3c0b8000, 0x97890040, 0x95680e0c, 0x97840040, 0x91842, 0x3107c000, 0x30650003, 0x71303, 0x309f1000, 0xa2c025, 0x1fca03, 0x3199825, 0x1390c0, 0xa7720012, 0x97910040, 0x936f000a, 0x118182, 0x320e003c, 0x1cf6821, 0x25ac003c, 0xa36c0009, 0x956a0e0c, 0x31493fff, 0xa7690010, 0x976d0012, 0x936c0009, 0x18d5821, 0x256a0002, 0x31490007, 0x94023, 0x31030007, 0xa363000b, 0x93670009, 0x97640012, 0x97650010, 0x30e200ff, 0x8f900028, 0x97980040, 0x44f821, 0x3e5c821, 0x3269821, 0x33120040, 0x12400005, 0x3266ffff, 0xd0702b, 0x3c118000, 0x11c00016, 0x9021, 0x206782b, 0x15e0002d, 0x2021, 0x3c108000, 0x8e120e14, 0x3c058000, 0xae120e10, 0x8e110e1c, 0xae110e18, 0xae060e00, 0x8cb80000, 0x33130008, 0x1260fffd, 0x0, 0x94b90e08, 0xc08021, 0x8821, 0xa7990040, 0x8ca60e04, 0x24120001, 0xaf860028, 0x977f0010, 0x33f3ffff, 0x8e890000, 0x1302023, 0x10800058, 0xae840000, 0x2202021, 0xe000243, 0x2002821, 0x8e8c0000, 0x15800005, 0x0, 0x8f6d0014, 0x240effbf, 0x1aea024, 0xaf740014, 0x8f78000c, 0x3138821, 0xaf71000c, 0x936f0008, 0x15e00003, 0x0, 0x16400040, 0x0, 0xa3720008, 0x2002021, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8f900028, 0x97820040, 0x3c118000, 0x2009821, 0x30450040, 0x14a0ffd9, 0x9021, 0x97680010, 0x8f870028, 0x3103ffff, 0x1467ffec, 0x2021, 0x8821, 0xa000339, 0x24120001, 0x2403000e, 0x24104007, 0xa363000a, 0xaf700014, 0x938f0042, 0x8f6c0014, 0x31ee0001, 0xe6a40, 0x18d5825, 0xaf6b0014, 0x978a0040, 0x8f680014, 0x31490010, 0x1093825, 0xaf670014, 0x97860040, 0x30c30008, 0x1460ff63, 0x0, 0xaf600004, 0xa3600002, 0x97880040, 0x31072000, 0x14e0ff71, 0x3021, 0xa7600012, 0x97910040, 0x936f000a, 0x3c0b8000, 0x32301f00, 0x107183, 0x1cf6821, 0x25ac0028, 0xa36c0009, 0x956a0e0c, 0xa00030a, 0xa76a0010, 0x8f660014, 0x3c1fefff, 0x37f9fffe, 0xd99824, 0xa00034f, 0xaf730014, 0x8f6b0014, 0x356a0040, 0xe00016e, 0xaf6a0014, 0xa00033e, 0x2202021, 0x8f850044, 0x8f8a0030, 0x27bdffc0, 0x3c048000, 0xafb70034, 0xafb40028, 0xafb1001c, 0xafbf0038, 0xafb60030, 0xafb5002c, 0xafb30024, 0xafb20020, 0xafb00018, 0x8c870104, 0x8ca90024, 0xac8a0080, 0x8ca80020, 0xe98823, 0xb821, 0xac880e10, 0x8ca60024, 0xa021, 0xac860e18, 0x8c820e10, 0xac820e14, 0x8c830e18, 0xac830e1c, 0x12200033, 0x3c168000, 0x936b0008, 0x11600054, 0x0, 0x976e0010, 0x31cdffff, 0x22d602b, 0x1580004f, 0x0, 0x97700010, 0x320fffff, 0xaecf0e00, 0x3c058000, 0x8cb30000, 0x32720008, 0x1240fffd, 0x0, 0x94b50e08, 0x8ca50e04, 0x32b0ffff, 0x32140001, 0x12800044, 0x0, 0xd, 0x3219a040, 0x24180040, 0x13380045, 0x3214a000, 0x1280003f, 0x0, 0x93730008, 0x12600009, 0x27a40010, 0x97620010, 0x305fffff, 0xbfc82b, 0x53200005, 0xafb10010, 0x32080040, 0x11000034, 0x0, 0xafb10010, 0xa7900040, 0xaf850028, 0xe0002bd, 0x0, 0x40a021, 0x104000be, 0x8fb10010, 0x1620ffcf, 0x0, 0x2e960001, 0x2d78825, 0x12200017, 0x8fbf0038, 0x8f850030, 0x24170f00, 0x10b70071, 0x3c048000, 0x8c8f0178, 0x5e0fffe, 0x24180f00, 0x50b8008f, 0x3c048000, 0x8c990e14, 0x24140240, 0x3c051000, 0xac990144, 0x8c930e1c, 0xac930148, 0xa0800152, 0xa480015a, 0xac800160, 0xa4800158, 0xac940154, 0xac850178, 0x8fbf0038, 0x8fb70034, 0x8fb60030, 0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, 0xaed10e00, 0xa0003c3, 0x3c058000, 0x14a0ffbe, 0x3219a040, 0xe000175, 0xa021, 0xa0003ea, 0x2e960001, 0x3c038000, 0x8c7f0178, 0x7e0fffe, 0x24020800, 0x8f84003c, 0xac620178, 0x3c038000, 0x946b008a, 0x316affff, 0x1443823, 0x24e9ffff, 0x31281fff, 0x2d060008, 0x14c0fff9, 0x346c4000, 0xa0a021, 0xe000168, 0x8c9021, 0x8f830030, 0x24040f00, 0x40a821, 0x2348823, 0x3c068000, 0x10640005, 0x24050001, 0x938e0042, 0x31c50001, 0x56a40, 0x35a50001, 0x15fc00, 0x3c020100, 0x3e2c825, 0xae590000, 0x8f930050, 0x32180036, 0x320f0008, 0xae530004, 0x11e00041, 0xb89825, 0x94c30e0a, 0x8f84003c, 0x3c0b8100, 0x306affff, 0x24920008, 0x32481fff, 0x14b4825, 0x3c071000, 0x26920006, 0x2410000e, 0xacc90160, 0x2679825, 0xa4d0015a, 0xaf88003c, 0xa4d20158, 0x16200008, 0x3c108000, 0x8f8e0030, 0x24050f00, 0x51c50002, 0x24170001, 0x36730040, 0xe00016e, 0x3c108000, 0x8e180e14, 0x2402021, 0xae180144, 0x8e0f0e1c, 0xae0f0148, 0xa2150152, 0xae130154, 0xe00017c, 0x3c151000, 0xae150178, 0xa0003e7, 0x0, 0x12800005, 0x3c078000, 0x94f20e08, 0x32490040, 0x11200042, 0x0, 0x8c8a0178, 0x540fffe, 0x0, 0x94950e10, 0x3c100500, 0x24032000, 0x32aeffff, 0x1d06825, 0xac8d014c, 0x8c8c0e14, 0x3c0b1000, 0xac8c0144, 0x8c860e1c, 0xac860148, 0xa0800152, 0xa480015a, 0xac800160, 0xa4800158, 0xac830154, 0xac8b0178, 0xa0003f1, 0x3c048000, 0x8f8d003c, 0x26920002, 0xa4d20158, 0x25ac0008, 0x31861fff, 0xa00044c, 0xaf86003c, 0xac80014c, 0x12800019, 0x0, 0x8c9f0e10, 0xac9f0144, 0x8c830e18, 0x3c088000, 0x24110040, 0xac830148, 0x8fbf0038, 0xa1000152, 0x8fb70034, 0xa500015a, 0x8fb60030, 0xad000160, 0x8fb5002c, 0xa5000158, 0x8fb40028, 0xad110154, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3c041000, 0x27bd0040, 0x3e00008, 0xad040178, 0x8c820e14, 0xac820144, 0x8c830e1c, 0xa00048b, 0x3c088000, 0xe000175, 0x2e960001, 0xa0003eb, 0x2d78825, 0x0, 0xd, 0x0, 0x2400033a, 0xa000467, 0x3c048000, 0x27bdffd8, 0xafb10014, 0x3c118000, 0xafb00010, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafbf0024, 0x3c130800, 0x26733c34, 0xe0001f9, 0x36300070, 0x3c140800, 0x26943cb4, 0x2009021, 0x8e080000, 0x8e240000, 0x38830001, 0x30620001, 0x10400016, 0x3c0a8000, 0x2404821, 0x8d270000, 0x3c1f0800, 0x8fff006c, 0x3c0f0800, 0x8def0068, 0xe81023, 0x3e26021, 0xc021, 0x182702b, 0x1f86821, 0x1ae4021, 0x3c010800, 0xac2c006c, 0x3c010800, 0xac280068, 0x8d4b0000, 0x39660001, 0x30c50001, 0x14a0ffed, 0xe04021, 0x8e1f0000, 0x3c180800, 0x8f18006c, 0x3c0d0800, 0x8dad0068, 0x3e8c823, 0x3193821, 0x7021, 0xf9602b, 0x1ae4021, 0x10c5821, 0x3c010800, 0xac27006c, 0x3c010800, 0xac2b0068, 0x8e280100, 0x2406ff80, 0x3c04800a, 0x25050240, 0xa64824, 0xae280020, 0xae290024, 0x8e090000, 0x30a3007f, 0x645021, 0x3c078000, 0xaf8a0044, 0xaf880030, 0xaf890024, 0x8ce20178, 0x440fffe, 0x0, 0x8e1f0000, 0x3c180800, 0x8f180074, 0x3c0d0800, 0x8dad0070, 0x3e9c823, 0x3195821, 0x7021, 0x179302b, 0x1ae6021, 0x1864821, 0x24050800, 0x3c010800, 0xac2b0074, 0x3c010800, 0xac290070, 0xace50178, 0x90e40108, 0xa3840042, 0x93830042, 0x306a0001, 0x1140000f, 0x240e0d00, 0x2502f800, 0x2c470301, 0x10e0001c, 0x819c2, 0x2464fff0, 0x45042, 0xa4140, 0xe00039a, 0x113d821, 0x3c0a4000, 0x3c088000, 0xad0a0138, 0xa0004bd, 0x0, 0x110e0026, 0x240f0f00, 0x110f002a, 0x3c028008, 0x34470080, 0x90ff0000, 0x24180050, 0x33f900ff, 0x1738fff3, 0x3c0a4000, 0xe0009a3, 0x0, 0x3c0a4000, 0x3c088000, 0xad0a0138, 0xa0004bd, 0x0, 0x8f840034, 0x64282b, 0x14a0000b, 0x8f860048, 0x866021, 0x258bffff, 0x163482b, 0x15200006, 0x646823, 0xd1940, 0xe00039a, 0x74d821, 0xa000519, 0x3c0a4000, 0x0, 0xd, 0x0, 0x240003ad, 0xe00039a, 0x0, 0xa000519, 0x3c0a4000, 0x3c1b0800, 0x277b3db4, 0xe00039a, 0x0, 0xa000519, 0x3c0a4000, 0x3c1b0800, 0x277b3dd4, 0xe00039a, 0x0, 0xa000519, 0x3c0a4000, 0x8f820050, 0x24430001, 0x304200ff, 0xaf830050, 0x3e00008, 0x0, 0x411c0, 0x3e00008, 0x24420240, 0x3c040800, 0x24843bcc, 0x2405001a, 0xa00007c, 0x3021, 0x27bdffe0, 0xafbf001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x3c108000, 0x920b0109, 0x2412ff80, 0xe000556, 0x3164007f, 0x8f910030, 0x515021, 0x1524024, 0xae080024, 0x92030109, 0xe000556, 0x3064007f, 0x24060080, 0x240700c0, 0x24040040, 0xae000810, 0xae040814, 0xae060818, 0xae07081c, 0x920c0109, 0x51f821, 0x33f8007f, 0x3c19800a, 0x3191021, 0x3184007f, 0xe000556, 0xaf820044, 0x8e110100, 0x3c0c0080, 0x35850001, 0x2227821, 0x1f24824, 0xae090804, 0x8e0e0100, 0x35980002, 0x36090900, 0x1c26821, 0x31ab0078, 0x1655025, 0xae0a0820, 0x8e050100, 0x8e080100, 0x36050980, 0x1021821, 0x24640040, 0x923024, 0xae060808, 0x8e070100, 0xe2f821, 0x27f90040, 0x33320078, 0x2588825, 0xae110824, 0x8e040100, 0x952f000c, 0x8fbf001c, 0x8fb20018, 0x31eeffff, 0xe69c0, 0xae0d0800, 0xae0c0828, 0x952b000c, 0x8fb10014, 0x316affff, 0xa41c0, 0xae08002c, 0x8ca30050, 0x8fb00010, 0x8ca2003c, 0x8d240004, 0x8ca6001c, 0x8ca70038, 0x27bd0020, 0xaf830068, 0xaf820058, 0xaf840054, 0xaf860060, 0x3e00008, 0xaf870064, 0x3c0a0800, 0x914a3bf1, 0x3c090800, 0x95293bea, 0x3c051100, 0xa3c00, 0x25280002, 0xe83025, 0xc51825, 0x24820008, 0xac830000, 0x3e00008, 0xac800004, 0x3c088000, 0x35070900, 0x90e60011, 0x24020028, 0x805021, 0x30c300ff, 0xa06021, 0x10620002, 0x340b86dd, 0x240b0800, 0x3c078000, 0x34e20a9a, 0x94590000, 0x34ef0a9c, 0x34ed0aa0, 0x3338ffff, 0xad580000, 0x8dee0000, 0x34e80a80, 0x24040001, 0xad4e0004, 0x8da90000, 0xad490008, 0x91050019, 0x30a30003, 0x10640043, 0x28660002, 0x14c000b0, 0x24040002, 0x1064008b, 0x24050003, 0x10650096, 0x34e60aa4, 0x3c090800, 0x95293be0, 0x24020800, 0x5162004d, 0x3c0e8000, 0x3c0e8000, 0x35c50900, 0x90a60012, 0x90b90019, 0x35cb0980, 0x8d680028, 0x30c700ff, 0x77880, 0x3138ffff, 0x332300ff, 0x1f81021, 0x32500, 0x887025, 0x25c00, 0x3c0d6000, 0x1cd3025, 0x356906ff, 0xad490004, 0xad460000, 0x8ca7002c, 0x25490028, 0xad470008, 0x8cb90030, 0xad59000c, 0x8cb80034, 0xad580010, 0x8caf0038, 0xad4f0014, 0x8ca3001c, 0xad430018, 0x8ca80020, 0x3c038000, 0x3462093c, 0xad48001c, 0x8ca40024, 0x346f0900, 0xad440020, 0x8cad0028, 0xad4d0024, 0x8c590000, 0xad2c0004, 0x25220014, 0xad390000, 0x8c78010c, 0xad380008, 0x91e80012, 0x3c040800, 0x90843bf0, 0xad200010, 0x82f00, 0x46c00, 0xad6025, 0x358affff, 0x3e00008, 0xad2a000c, 0x3c090800, 0x95293be0, 0x3c0f0800, 0x95ef3bea, 0x34f90aa4, 0x3c0e0800, 0x95ce3bdc, 0x97280000, 0x3138ffff, 0x1f86821, 0x1ae3823, 0x82c00, 0x24e3fff2, 0xa32025, 0x24020800, 0xad44000c, 0xad400010, 0xad4b0014, 0x1562ffb6, 0x254a0018, 0x3c0e8000, 0x35cd0900, 0x91a20011, 0x91a70019, 0x3c050800, 0x94a53be6, 0x304600ff, 0x35cb0a80, 0x956e002a, 0x6c882, 0x30f800ff, 0x9787005c, 0x191e00, 0x187c00, 0x3128ffff, 0xa82021, 0x6f4825, 0x1241025, 0x1c73021, 0x3c0b4000, 0x4bc825, 0x6c400, 0xad590000, 0xad580004, 0x91af0018, 0x3c030006, 0x24e90001, 0xf4600, 0x1037025, 0xad4e0008, 0x8da5002c, 0x3c038000, 0x3462093c, 0xad45000c, 0x8dab001c, 0x31247fff, 0x25490014, 0xad4b0010, 0x8c590000, 0xad2c0004, 0x346f0900, 0xad390000, 0x8c78010c, 0xa784005c, 0x25220014, 0xad380008, 0x91e80012, 0x3c040800, 0x90843bf0, 0xad200010, 0x82f00, 0x46c00, 0xad6025, 0x358affff, 0x3e00008, 0xad2a000c, 0x34e20aa4, 0x94460000, 0x95190028, 0x3c090800, 0x95293be0, 0x6c400, 0x197c00, 0x370e8100, 0x1eb6825, 0xad4e000c, 0xad4d0010, 0xa0005e2, 0x254a0014, 0x3c090800, 0x95293be0, 0x3c180800, 0x97183bea, 0x3c0f0800, 0x95ef3bdc, 0x94ce0000, 0x3139ffff, 0x950d0028, 0x3194021, 0x10f3823, 0xe2400, 0xd2c00, 0x24e3ffee, 0xa33025, 0x34828100, 0xad42000c, 0xad460010, 0xad400014, 0xad4b0018, 0xa0005e2, 0x254a001c, 0x1460ff54, 0x34e90aa4, 0x95280000, 0x3c090800, 0x95293be0, 0x83c00, 0xeb1825, 0xad43000c, 0xa0005e2, 0x254a0010, 0x3e00008, 0x240207d0, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0xe00005c, 0x808821, 0x8f880058, 0x8f870054, 0x3c058008, 0x34b20080, 0x1112821, 0x3c108000, 0x24020080, 0x240300c0, 0xa72023, 0xae020818, 0x3c068008, 0xae03081c, 0x18800004, 0xaf850058, 0xacc50004, 0x8cc90004, 0xaf890054, 0x12200009, 0x36040980, 0xe000695, 0x0, 0x924c0027, 0x8e0b0074, 0x1825004, 0x14b3021, 0xae46000c, 0x36040980, 0x8c8e001c, 0x8f8f0060, 0x1cf6823, 0x19a00004, 0x8fbf001c, 0x8c90001c, 0xaf900060, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa00005e, 0x27bd0020, 0x8f860068, 0x8f830058, 0x8f820054, 0x3c058008, 0x34a40080, 0xac860050, 0xac83003c, 0x3e00008, 0xaca20004, 0x3c038000, 0x34670070, 0x8ce30000, 0x308700ff, 0x3c040800, 0x8c840054, 0x27bdfff8, 0x30aa00ff, 0x24820001, 0x3c010800, 0xac220054, 0x30c800ff, 0xaf830024, 0x3c098000, 0x8d250178, 0x4a0fffe, 0x352b0070, 0x8d650000, 0xa3a70003, 0x3c180800, 0x8f180074, 0x8fb90000, 0x3c0d0800, 0x8dad0070, 0xa33823, 0x3c047fff, 0xe07821, 0x3482ffff, 0x3073821, 0x7021, 0x3225824, 0x1ae3021, 0xef602b, 0x847c0, 0xcc1821, 0x1682825, 0xafa50000, 0x3c010800, 0xac270074, 0x3c010800, 0xac230070, 0x9124010a, 0xa3a00002, 0x3c0280ff, 0xa3a40001, 0x8fb80000, 0x314f007f, 0x3459ffff, 0x3196824, 0xf7600, 0x3c0b0020, 0x1ae6025, 0x356a2000, 0x2408ff80, 0x3c061000, 0x27bd0008, 0xad2c014c, 0xad2a0154, 0xa5200158, 0xa1280152, 0x3e00008, 0xad260178, 0x3c038000, 0x34620070, 0x8c480000, 0x308a00ff, 0x30a900ff, 0xaf880024, 0x3c048000, 0x8c850178, 0x4a0fffe, 0x34870070, 0x8ceb0000, 0x3c050800, 0x8ca50074, 0x3c190800, 0x8f390070, 0x1682023, 0xa47021, 0x1021, 0x1c4c02b, 0x3227821, 0x3c078000, 0x1f86821, 0x3c010800, 0xac2e0074, 0x34e60a00, 0x3c010800, 0xac2d0070, 0x8ccc0020, 0x9582b, 0x34e80980, 0xacec0144, 0x8cc90024, 0xb1540, 0xace90148, 0xa0ea0150, 0x9104004c, 0xa0e4016d, 0x3e00008, 0xa4e00158, 0x27bdffe8, 0x308400ff, 0xafbf0010, 0xe00070d, 0x30a500ff, 0x8f830058, 0x8fbf0010, 0x3c058000, 0x34460040, 0x2404ff90, 0x3c021000, 0x27bd0018, 0xaca3014c, 0xa0a40152, 0xaca60154, 0x3e00008, 0xaca20178, 0x27bdffe0, 0x3c088008, 0xafbf001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x35100080, 0x8e060018, 0x3c078000, 0x309200ff, 0xc72025, 0xae040018, 0xe00005c, 0x30b100ff, 0x92030005, 0x34620008, 0xe00005e, 0xa2020005, 0x2402021, 0xe000734, 0x2202821, 0x2402021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050005, 0x24060001, 0xa0006cf, 0x27bd0020, 0x3c088000, 0x27bdffe8, 0xafb00010, 0x35050980, 0xafbf0014, 0x90a70009, 0x24020006, 0x35060900, 0x30e300ff, 0x24100004, 0x10620072, 0x24080002, 0x94ae005c, 0x3c0d0204, 0x31ccffff, 0x18d5825, 0xac8b0000, 0x90aa0008, 0x31490020, 0x11200008, 0x0, 0x90bf004e, 0x3c190103, 0x37380300, 0x33ef00ff, 0x1f82825, 0x24100008, 0xac850004, 0x90cc0011, 0x90c90011, 0x318a00ff, 0xa5882, 0x312700ff, 0x256a0005, 0xa1080, 0x38e30028, 0x14600029, 0x824823, 0x90cf0012, 0x3c198000, 0x37220900, 0x31e500ff, 0x57080, 0x1d06821, 0xd3400, 0x34c406ff, 0xad240004, 0x904c0011, 0x90580012, 0x373f0980, 0x8fe40034, 0x8f2f010c, 0x105882, 0x330500ff, 0xab7021, 0x83400, 0x8f1823, 0xe6f00, 0x1a61025, 0x319f00fc, 0x3067ffff, 0x3e9c021, 0x47c825, 0x14b7821, 0xf2880, 0xaf19000c, 0xe00005c, 0x1258021, 0x3c0a8008, 0x24090004, 0x35480080, 0xe00005e, 0xa1090009, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x90ce0011, 0x90cd0019, 0x3c070800, 0x94e73be6, 0x31c600ff, 0x62082, 0x31ac00ff, 0x45e00, 0xc1c00, 0x1631025, 0x47c825, 0x3c1f4000, 0x33fc025, 0x3c198000, 0xad380000, 0x37220900, 0x904c0011, 0x90580012, 0x373f0980, 0x8fe40034, 0x8f2f010c, 0x105882, 0x330500ff, 0xab7021, 0x83400, 0x8f1823, 0xe6f00, 0x1a61025, 0x319f00fc, 0x3067ffff, 0x3e9c021, 0x47c825, 0x14b7821, 0xf2880, 0xaf19000c, 0xe00005c, 0x1258021, 0x3c0a8008, 0x24090004, 0x35480080, 0xe00005e, 0xa1090009, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0xa00076f, 0x24080012, 0x27bdffd8, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafbf0024, 0xafb00010, 0x3c068000, 0x90c3010b, 0x309200ff, 0x30b300ff, 0x30620030, 0xa021, 0x10400070, 0x8821, 0x34c40980, 0x90880008, 0x83e00, 0x72e03, 0x4a00097, 0x24040004, 0x8f880058, 0x3c010800, 0xa0243bf0, 0x3c0c8000, 0xad800048, 0x3c038000, 0x906e010b, 0x31c50020, 0x10a00007, 0x3c028000, 0x34790980, 0x93380008, 0x188600, 0x107e03, 0x5e2009c, 0x3c028008, 0x34500900, 0x34470a80, 0x904d010b, 0x94eb002c, 0x92030011, 0x921f0012, 0x90e50018, 0x307800ff, 0x33f900ff, 0x197880, 0x1f87021, 0x1d15021, 0x30b100ff, 0x1514821, 0x2524000a, 0x31ac0040, 0x3091ffff, 0xc302b, 0x2202021, 0xa78b005c, 0x3c010800, 0xa42a3be6, 0x3c010800, 0xa4293be8, 0x3c010800, 0xa4293bea, 0x3c010800, 0xa4203be0, 0x3c010800, 0xa4203bdc, 0xe0001c9, 0x1068023, 0xe0005b2, 0x402021, 0x402021, 0xe0005bf, 0x2002821, 0x1680005c, 0x0, 0xe0001f2, 0x2202021, 0x3c080800, 0x91083bf0, 0x31140003, 0x12800016, 0x3c1f8008, 0x8f840058, 0x3c0c8008, 0x35860080, 0x248b0001, 0xaccb003c, 0x3c058008, 0x8caa0004, 0x1602021, 0x14b4823, 0x19200002, 0xaf8b0058, 0x8ca40004, 0xe000695, 0xaca40004, 0x3c0f8000, 0x8dee0074, 0x3c058008, 0x34ad0080, 0x4e8821, 0xadb1000c, 0x3c1f8008, 0x37f90080, 0x2402021, 0x2602821, 0xa320006b, 0xe00070d, 0x3c128000, 0x8f980058, 0x34500006, 0xae58014c, 0xe000550, 0x3c131000, 0xa2420152, 0x8fbf0024, 0xae500154, 0x8fb40020, 0xae530178, 0x8fb10014, 0x8fb3001c, 0x8fb20018, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x34c30980, 0x906f0008, 0xf7600, 0xe6e03, 0x5a00033, 0x34c20900, 0x9059001b, 0x241f0010, 0x3c010800, 0xa03f3bf0, 0x33380002, 0x1300ff90, 0x8f880058, 0x8f830064, 0x1468ff8e, 0x3c038000, 0xe00005c, 0x0, 0x3c098008, 0x35250080, 0x90a40009, 0x24070016, 0x308800ff, 0x1107000d, 0x0, 0x90a60009, 0x3c0c0800, 0x918c3bf0, 0x240a0008, 0x30c400ff, 0x358b0001, 0x3c010800, 0xa02b3bf0, 0x108a002f, 0x240d000a, 0x108d0028, 0x2402000c, 0xe00005e, 0x0, 0xa0007fc, 0x8f880058, 0xe000763, 0x402021, 0xa00082e, 0x0, 0x3c0b8008, 0x356a0080, 0x8d480054, 0x8cc9010c, 0x1120ff66, 0xaf880058, 0x24060014, 0x3c010800, 0xa0263bf0, 0xa0007fb, 0x3c0c8000, 0x90710008, 0x24140002, 0x3c010800, 0xa0343bf0, 0x32300020, 0x1200000b, 0x24140001, 0x8f880058, 0xa0007fc, 0x24110008, 0x345f0080, 0x8fe70038, 0xac470004, 0x8c430004, 0xafe3003c, 0xa000807, 0x3c028000, 0x8f880058, 0xa0007fc, 0x24110004, 0xa0a20009, 0xe00005e, 0x0, 0xa0007fc, 0x8f880058, 0x24020014, 0xa0008ad, 0xa0a20009, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x3c108000, 0x92020109, 0x24050001, 0xe00070d, 0x304400ff, 0x3c1f8008, 0x93f8000e, 0x37e30080, 0x93f9000f, 0x906e0026, 0x93e9000a, 0x332f00ff, 0x186600, 0xf6c00, 0x31cb00ff, 0x18d5025, 0xb3200, 0x1463825, 0x312800ff, 0x34456000, 0xe82025, 0x2402ff81, 0x3c031000, 0xae04014c, 0x8fbf0014, 0xae050154, 0xa2020152, 0xae030178, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0x308400ff, 0xafbf0010, 0xe00070d, 0x30a500ff, 0x34460040, 0x3c048000, 0x2405ff92, 0xac860154, 0xa0850152, 0x8f830058, 0x8fbf0010, 0x3c021000, 0x27bd0018, 0xac83014c, 0x3e00008, 0xac820178, 0x27bdffd8, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0xafb3001c, 0x3c078000, 0x90e20109, 0x308600ff, 0x30b000ff, 0x618c2, 0x32040002, 0x30710001, 0x14800007, 0x305200ff, 0x3c098008, 0x35330080, 0x92680005, 0x31050008, 0x10a0000c, 0x30ca0010, 0x2402021, 0xe000745, 0x2202821, 0x24020001, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x15400030, 0x34e50a00, 0x8cb90024, 0x8cb80008, 0x13380047, 0x4021, 0x3c0e8008, 0x35d30080, 0x926d0068, 0x240b0002, 0x31ac00ff, 0x118b0080, 0x3c068000, 0x927f004c, 0x90c40109, 0x509f0004, 0x3213007c, 0x11000067, 0x0, 0x3213007c, 0x1660005a, 0x2402021, 0x16200008, 0x320c0001, 0x3c078000, 0x34eb0a00, 0x8d650024, 0x8ce80104, 0x14a8ffdc, 0x1021, 0x320c0001, 0x1180000d, 0x2402021, 0x3c108000, 0x8e0e010c, 0x8f8d0068, 0x11cd0008, 0x0, 0xe0007e2, 0x2202821, 0x8e0f010c, 0x3c188008, 0x37100080, 0xae0f0050, 0x2402021, 0xe000734, 0x2202821, 0xa000900, 0x24020001, 0x3c070800, 0x8ce70064, 0x24e60001, 0x3c010800, 0xac260064, 0x1600000d, 0x0, 0x2202821, 0xe000734, 0x2402021, 0x926f0068, 0x240d0002, 0x31ee00ff, 0x11cd0022, 0x2402021, 0xe0008b4, 0x0, 0xa000900, 0x24020001, 0xe00003d, 0x24040001, 0x926c0025, 0x20c5825, 0xe00005e, 0xa26b0025, 0xa000940, 0x2202821, 0x8e630018, 0x8ce40104, 0x8cbf0024, 0x31602, 0x149fffb5, 0x3045007f, 0x9269004c, 0x26440001, 0x3093007f, 0x12650040, 0x312300ff, 0x1464ffaf, 0x3c0e8008, 0x26480001, 0x3111007f, 0x310200ff, 0x1225000b, 0x24080001, 0x409021, 0xa00090d, 0x24110001, 0x24050004, 0xe0006cf, 0x24060001, 0xe0008b4, 0x0, 0xa000900, 0x24020001, 0x2407ff80, 0x2472824, 0xa79026, 0x324200ff, 0x409021, 0xa00090d, 0x24110001, 0xe0007e2, 0x2202821, 0x32060030, 0x10c0ffa3, 0x32100082, 0x2402021, 0xe000745, 0x2202821, 0xa000900, 0x24020001, 0x8e630018, 0x2402021, 0x2202821, 0x661025, 0xe0008d6, 0xae620018, 0x9264004c, 0x24050003, 0x24060001, 0xe0006cf, 0x308400ff, 0xe00003d, 0x24040001, 0x926a0025, 0x20a4825, 0xe00005e, 0xa2690025, 0xa000900, 0x24020001, 0x8e780018, 0x3c198000, 0x2402021, 0x3197825, 0x2202821, 0xe000734, 0xae6f0018, 0x9264004c, 0xa000988, 0x24050004, 0x32460080, 0x38ca0080, 0x146aff6e, 0x3c0e8008, 0xa000961, 0x26480001, 0x27bdffc0, 0xafb00018, 0x3c108000, 0xafbf0038, 0xafb70034, 0xafb60030, 0xafb5002c, 0xafb40028, 0xafb30024, 0xafb20020, 0xe00055e, 0xafb1001c, 0x92040108, 0x9205010b, 0x308400ff, 0xe0008e7, 0x30a500ff, 0x144000d6, 0x8fbf0038, 0x3c098008, 0x35280080, 0xa100006b, 0x36070980, 0x90e60000, 0x24020050, 0x3c170800, 0x26f73df4, 0x30c300ff, 0x3c140800, 0x26943e04, 0x10620003, 0x3c108000, 0xb821, 0xa021, 0x241f0010, 0x36110a00, 0x36130980, 0x8e160104, 0x8f8d0058, 0x8e380024, 0x36190a80, 0x8e720020, 0x3c010800, 0xa03f3bf0, 0x972c002c, 0x8ef50000, 0x932b0018, 0x24d7023, 0x2d87823, 0x3c010800, 0xac2f3bcc, 0x3c010800, 0xac2e3bd0, 0x3c010800, 0xac2d3bf4, 0xa78c005c, 0x2a0f809, 0x317200ff, 0x304a0002, 0x154000da, 0x30450001, 0x10a000b4, 0x0, 0x36050900, 0x8e2b0024, 0x90bf0011, 0x90b90012, 0x90b60011, 0x33ef00ff, 0x333800ff, 0x32cd00ff, 0x187080, 0x1cf8021, 0x24d6021, 0x212a821, 0x258a0010, 0x3c010800, 0xa4353be8, 0x3c010800, 0xac2b3bf8, 0x3c010800, 0xa42a3be4, 0x3c010800, 0xa4303be6, 0x260b021, 0x3c158000, 0x8f920058, 0x8f840060, 0x8ed30020, 0x24110006, 0x923023, 0x2722823, 0x3c010800, 0xac313bec, 0x4c000af, 0x9821, 0x4a000ad, 0xc5102b, 0x104000af, 0x0, 0x3c010800, 0xac263bd0, 0x8e900000, 0x200f809, 0x0, 0x30430002, 0x1460006f, 0x408821, 0x30460001, 0x54c00011, 0x8e920004, 0x3c080800, 0x8d083bd4, 0x3c09c000, 0x3c048000, 0x1093825, 0xaea70e00, 0x8c8b0000, 0x316a0008, 0x1140fffd, 0x0, 0x948d0e08, 0x24130001, 0xa78d0040, 0x8c8c0e04, 0xaf8c0028, 0x8e920004, 0x240f809, 0x0, 0x2228825, 0x322e0002, 0x15c000a5, 0x0, 0x3c180800, 0x97183bdc, 0x3c120800, 0x96523be8, 0x3c190800, 0x97393bde, 0x3c070800, 0x8ce73bd4, 0x3124021, 0x3c0b0800, 0x8d6b3bf8, 0x3c0e0800, 0x95ce3bf2, 0x3c128000, 0x1197821, 0x8e46010c, 0xf86821, 0x25ec0002, 0x1ae4821, 0x1675021, 0xaf860068, 0x3c010800, 0xac2a3bf8, 0x3c010800, 0xa4293be0, 0x3c010800, 0xa4283bea, 0xe0001c9, 0x3184ffff, 0xe000550, 0x408021, 0x3c010800, 0xa0223bf1, 0x8e820008, 0x40f809, 0x2002021, 0x8f850058, 0xe0005bf, 0x402021, 0x8e90000c, 0x200f809, 0x402021, 0x3c030800, 0x94633bea, 0x3c020800, 0x94423bde, 0x622021, 0x24850002, 0xe0001f2, 0x30a4ffff, 0x3c190800, 0x8f393bcc, 0x3c1f0800, 0x8fff3bd4, 0x33fc023, 0x3c010800, 0xac383bcc, 0x17000006, 0x0, 0x3c050800, 0x8ca53bec, 0x34bf0040, 0x3c010800, 0xac3f3bec, 0x12600042, 0x8f820044, 0x8e430e10, 0x8f930044, 0xae630020, 0x8e440e18, 0xae640024, 0x3c040800, 0x94843be0, 0xe000697, 0x0, 0x8f860058, 0x8e8a0010, 0x3c010800, 0xac263bf4, 0x140f809, 0x0, 0x3c090800, 0x8d293bcc, 0x1520ff7e, 0x8f920058, 0x9796005c, 0x3c14800e, 0x32350010, 0xe0006c6, 0xa696002c, 0x56a00045, 0x8eeb0004, 0x32270040, 0x54e0001e, 0x8ef10008, 0x8eec000c, 0x180f809, 0x0, 0x8fbf0038, 0x8fb70034, 0x8fb60030, 0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, 0x92090109, 0x8f880030, 0x93e00, 0xe83025, 0xae060080, 0x8e230020, 0x8e240024, 0xafa30010, 0xae030e14, 0x8fa20010, 0xae020e10, 0xae040e1c, 0xae040e18, 0xa0009e3, 0x36050900, 0x220f809, 0x0, 0x8eec000c, 0x180f809, 0x0, 0xa000a8b, 0x8fbf0038, 0x24080001, 0x24100001, 0xa4400020, 0xa4480022, 0xa000a6f, 0xac500024, 0x3c010800, 0xac203bd0, 0xa000a0a, 0x8e900000, 0x3c010800, 0xac253bd0, 0xa000a0a, 0x8e900000, 0x92110109, 0x2821, 0xe000734, 0x322400ff, 0x8fbf0038, 0x8fb70034, 0x8fb60030, 0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, 0x160f809, 0x0, 0xa000a85, 0x32270040, 0x5260ffb1, 0x9796005c, 0x8eb60e14, 0x8f940044, 0xae960020, 0x8eaf0e1c, 0xae8f0024, 0xa000a7e, 0x9796005c, 0x8f820000, 0x42180, 0x3e00008, 0x821021, 0x3c078008, 0x34e20080, 0x90430069, 0x804021, 0x10600009, 0x3c040100, 0x3c070800, 0x8ce73bf4, 0x8f83001c, 0xe32023, 0x4800008, 0x93890008, 0x14e30003, 0x1002021, 0x3e00008, 0x801021, 0x3c040100, 0x3e00008, 0x801021, 0x1120000b, 0x673823, 0x3c0d8000, 0x35ac0980, 0x918b007c, 0x316a0002, 0x11400020, 0x24090034, 0xe9702b, 0x15c0fff1, 0x1002021, 0xe93823, 0x2403fffc, 0xa3c824, 0xe3c024, 0xf9782b, 0x15e0ffea, 0x3082021, 0x30c40003, 0x41023, 0x14c00014, 0x30490003, 0x3021, 0xa97821, 0x1e67021, 0xee682b, 0x11a0ffe0, 0x3c040100, 0x2d380001, 0x6c82b, 0x1054821, 0x3193824, 0x14e0ffda, 0x2524fffc, 0x2402fffc, 0xa21824, 0x682021, 0x3e00008, 0x801021, 0xa000af4, 0x24090030, 0x3c0c8000, 0x35860980, 0x90cb007c, 0x316a0004, 0x1540ffe9, 0x24060004, 0xa000b03, 0x3021, 0x3c030800, 0x8c63005c, 0x8f820004, 0x27bdffe8, 0xafbf0014, 0x10620005, 0xafb00010, 0x329c0, 0x24a40280, 0xaf840000, 0xaf830004, 0x3c108000, 0x36030a00, 0x94650032, 0xe000ad5, 0x30a43fff, 0x8e040100, 0x3c180080, 0x370f0003, 0x82c821, 0x2402ff80, 0x3226024, 0x3329007f, 0xcf940, 0x3e94025, 0x332e0078, 0x3c0d1000, 0x10d5025, 0x1cf5825, 0xae0c0028, 0x36080980, 0xae0c080c, 0xae0b082c, 0xae0a0830, 0x91030069, 0x3c06800c, 0x1263821, 0x10600006, 0xaf870020, 0x8d09003c, 0x8d06006c, 0x1263823, 0x18e0007f, 0x0, 0x3c0c8008, 0x358b0080, 0x3c0a8000, 0xa1600069, 0x35500980, 0x8e020038, 0x3c068000, 0x34c50a00, 0x90ad003c, 0x31a80020, 0x11000019, 0xaf82001c, 0x240e0001, 0x3c198000, 0x37300a00, 0xa38e0008, 0xaf800010, 0x8e040024, 0x8f850010, 0x24180008, 0xaf80000c, 0xaf800014, 0x3c010800, 0xa4383bde, 0x3c010800, 0xa4203bf2, 0xe000ad9, 0x3021, 0x920f003c, 0x8fbf0014, 0x8fb00010, 0xf7142, 0xaf820018, 0x27bd0018, 0x3e00008, 0x31c20001, 0x90b90032, 0x240f0001, 0x333800ff, 0x182182, 0x108f003f, 0x241f0002, 0x109f0062, 0x34c20ac0, 0x3c038000, 0x34640a00, 0x8c990024, 0x1720001d, 0x34660900, 0x90830030, 0x241f0005, 0x3062003f, 0x105f004c, 0x24050001, 0x8f86000c, 0xa3850008, 0xaf860014, 0xaf860010, 0x3c198000, 0x37300a00, 0x8e040024, 0x8f850010, 0x24180008, 0x3c010800, 0xa4383bde, 0x3c010800, 0xa4203bf2, 0xe000ad9, 0x0, 0x920f003c, 0x8fbf0014, 0x8fb00010, 0xf7142, 0xaf820018, 0x27bd0018, 0x3e00008, 0x31c20001, 0x8c880008, 0x8c8d0024, 0x8ccb0064, 0x3c198000, 0x37300a00, 0xaf8b0010, 0xa3800008, 0x8e040024, 0x8f86000c, 0x8f850010, 0x10d6023, 0x24180008, 0xaf8c0014, 0x3c010800, 0xa4383bde, 0x3c010800, 0xa4203bf2, 0xe000ad9, 0x0, 0x920f003c, 0x8fbf0014, 0x8fb00010, 0xf7142, 0xaf820018, 0x27bd0018, 0x3e00008, 0x31c20001, 0x90a70030, 0x30e3003f, 0x50640028, 0x34c50ac0, 0x8caa0024, 0x15400022, 0x34c80900, 0x8cab0048, 0x3c0c7fff, 0x3585ffff, 0x1651024, 0x3c188000, 0xaf82000c, 0x37050900, 0x8f8e000c, 0x8caf0060, 0x1cf682b, 0x15a00002, 0x1c02021, 0x8ca40060, 0xa000b75, 0xaf84000c, 0x8d02006c, 0xa000b50, 0x3c068000, 0x8c890048, 0x8f86000c, 0x3c0a7fff, 0x3550ffff, 0x1303824, 0x3c048008, 0x24050001, 0xaf870014, 0xac80006c, 0xa3850008, 0xa000b83, 0xaf860010, 0x8c440014, 0xa000b75, 0xaf84000c, 0x8d020068, 0xa000bbd, 0x3c188000, 0x34c40980, 0x8c860070, 0x8cb00014, 0xd0482b, 0x11200004, 0x0, 0x8c820070, 0xa000bbd, 0x3c188000, 0x8ca20014, 0xa000bbd, 0x3c188000, 0x8f850010, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0x14a00008, 0xafb00010, 0x3c048000, 0x34870a00, 0x90e60030, 0x24020005, 0x30c3003f, 0x106200b7, 0x34840900, 0x8f91000c, 0xa08021, 0x3c048000, 0x348e0a00, 0x8dcd0004, 0x3c060800, 0x8cc63bd0, 0x31a73fff, 0xe6602b, 0x55800001, 0xe03021, 0x938f0008, 0x11e00076, 0xd0102b, 0x34990980, 0x9338007c, 0x33040002, 0x10800077, 0x24030034, 0xc3f82b, 0x17e000d6, 0xc33023, 0xd0102b, 0x3c010800, 0xa4233bdc, 0x1440006d, 0x2001821, 0x3c040800, 0x8c843bcc, 0x64282b, 0x54a00001, 0x602021, 0x3c058000, 0x34a90a00, 0x9128003c, 0x3c010800, 0xac243bd4, 0x31030020, 0x14600002, 0x4821, 0x8ca90e18, 0x8f880018, 0x128502b, 0x1140005f, 0x0, 0x3c050800, 0x8ca53bd4, 0xa96021, 0x10c582b, 0x1160005c, 0xb0682b, 0x1093823, 0xe02821, 0x3c010800, 0xac273bd4, 0x12000003, 0x2402fffc, 0x10b0008c, 0x322a0003, 0xa2f824, 0x3c010800, 0xa4203bf2, 0x3c010800, 0xac3f3bd4, 0x3e02821, 0x8f840010, 0x12040006, 0x3c038008, 0x8c6a006c, 0x2002021, 0xaf91000c, 0x25500001, 0xac70006c, 0x8f8b0014, 0x858823, 0xaf910010, 0x1652023, 0xaf840014, 0x12200002, 0x24070018, 0x24070010, 0x3c0e8008, 0x35c60080, 0x90cd0068, 0x240c0001, 0x3c010800, 0xa0273bf0, 0x31a700ff, 0x10ec0047, 0x0, 0x14800018, 0x2821, 0x3c0b8000, 0x91650109, 0x35710980, 0x8e230018, 0x30a500ff, 0x35602, 0x24a30001, 0x3146007f, 0x3070007f, 0x1206007e, 0x240cff80, 0x3c0f8008, 0x35e90080, 0xa123004c, 0x3c080800, 0x8d083bec, 0x240e0002, 0x3c010800, 0xa02e3c31, 0x350d0008, 0x3c010800, 0xac2d3bec, 0x24050010, 0x3c1f8000, 0x37e40a00, 0x9099003c, 0x33380020, 0x13000005, 0xa02021, 0x24020001, 0x3c010800, 0xac223bd4, 0x34a40001, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x3c010800, 0xa4203bdc, 0x1040ff95, 0x2001821, 0xa000c10, 0xc01821, 0xa000c08, 0x24030030, 0x3c050800, 0x8ca53bd4, 0xb0682b, 0x11a0ffa8, 0x0, 0x3c040800, 0x94843bdc, 0x857821, 0x1e7702b, 0x11c00007, 0x2ca20004, 0x3c1f6000, 0x8ff95404, 0x3338003f, 0x1700ffe3, 0x24040042, 0x2ca20004, 0x1040ff9a, 0x24040042, 0xa000c73, 0x8fbf0018, 0x1528ffb9, 0x0, 0x8cc20018, 0x3c188000, 0x24190002, 0x58f825, 0xacdf0018, 0x37040a00, 0xa0d90068, 0x9089003c, 0x240f0004, 0xa01021, 0x31280020, 0x3c010800, 0xa02f3c31, 0x11000002, 0x24050010, 0x24020001, 0x3c010800, 0xac223bcc, 0xa000c69, 0x3c1f8000, 0x8f880014, 0x8c890060, 0x109282b, 0x14a00002, 0x1008821, 0x8c910060, 0x3c0b8000, 0x8d640e18, 0x240a0001, 0x2202821, 0x2203021, 0xa38a0008, 0xe000ad9, 0x2208021, 0xa000bf7, 0xaf820018, 0xa1823, 0x12200007, 0x30640003, 0x3c0d8000, 0x35a70980, 0x90ec007c, 0x318b0004, 0x15600019, 0x248e0004, 0x3c010800, 0xa4243bf2, 0x3c180800, 0x97183bf2, 0x3052021, 0xc4782b, 0x11e0ff6c, 0x8f840010, 0x2ca60005, 0x14c0ffa4, 0x24040042, 0x30b90003, 0x17200002, 0xb91823, 0x24a3fffc, 0x3c010800, 0xac233bd4, 0x3c010800, 0xa4203bf2, 0xa000c36, 0x602821, 0xac3824, 0xa000c5c, 0xec1826, 0x3c010800, 0xa42e3bf2, 0xa000cc6, 0x0, 0x3c010800, 0xac203bd4, 0xa000c72, 0x24040042, 0x8f830014, 0x3c0b8000, 0x356a0a00, 0x14600006, 0x1021, 0x91460030, 0x24050005, 0x30c400ff, 0x10850003, 0x0, 0x3e00008, 0x0, 0x91490048, 0x312800ff, 0x839c2, 0x14e0fffa, 0x3c048008, 0x3c060800, 0x94c63bdc, 0x3c030800, 0x8c633bf4, 0x3c050800, 0x8ca53bd4, 0x3c180800, 0x97183bf2, 0x66c821, 0x8c8e0004, 0x3257821, 0x1f86821, 0x1ae6023, 0x1980001d, 0x0, 0x9158004c, 0x8f8d0020, 0x956e0e10, 0x330f00ff, 0x8da90004, 0x1cf3023, 0x8daa0000, 0x30cfffff, 0xf6100, 0x12c2821, 0x3821, 0x1472021, 0xac182b, 0x83c821, 0xada50004, 0xadb90000, 0x91b8000a, 0x1f87021, 0xa1ae000a, 0x956c0e12, 0x8f8a0020, 0xa54c0008, 0x95490038, 0x25280001, 0xa5480038, 0x9147000d, 0x34eb0008, 0xa14b000d, 0x3e00008, 0x0, 0x27bdffd8, 0xafb00018, 0x938f0008, 0x8fb00014, 0x3c087fff, 0x8f870010, 0x3c0c8000, 0x3518ffff, 0xafbf0020, 0xafb1001c, 0x35990a00, 0x2181824, 0x932a003c, 0xf5fc0, 0x3c02bfff, 0x2cf00001, 0x3449ffff, 0x6bf825, 0x3c080800, 0x8d083bf4, 0x8f99001c, 0x3c180800, 0x97183bea, 0x3e95824, 0x107f80, 0x3c07efff, 0x3c05f0ff, 0x16f1825, 0x3c118000, 0x31490020, 0x34e2ffff, 0x34adffff, 0x362e0980, 0x27a50010, 0x24060002, 0x1194023, 0x270a0002, 0x621824, 0x808021, 0x15200002, 0x5821, 0x8d8b0e1c, 0xa7aa0012, 0x500003a, 0x24070000, 0x30ef00ff, 0xf3f00, 0x674025, 0x3c028008, 0xafa80014, 0x344b0080, 0x916a0068, 0x3c0f0800, 0x91ef3bf1, 0x3c09dfff, 0x353fffff, 0xa602b, 0x3c020800, 0x94423be4, 0xa3af0011, 0x11fc024, 0xccf40, 0x3191825, 0x8fa70010, 0xafa30014, 0x3c1f0800, 0x93ff3bf3, 0xa7a20016, 0x8fa80014, 0xed4824, 0x3c0b0100, 0x3c0a0fff, 0x12bc825, 0x33f80003, 0x354cffff, 0x10d7824, 0x3c027000, 0x32c3824, 0x181e00, 0xe24825, 0x1e35825, 0xafab0014, 0xafa90010, 0x91df007c, 0xa3bf0015, 0xe000072, 0x0, 0x362d0a00, 0x91a6003c, 0x30c40020, 0x10800006, 0x26020008, 0x3c110800, 0x96313be0, 0x262effff, 0x3c010800, 0xa42e3be0, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0028, 0x8f8a0018, 0x16a602b, 0x5580ffc4, 0x24070001, 0xa000d50, 0x30ef00ff, 0x93830008, 0x3c028000, 0x27bdffd8, 0x34480a00, 0x805021, 0xafbf0020, 0x34460ac0, 0x1002821, 0x1060000e, 0x34440980, 0x91070030, 0x240b0005, 0x8f89000c, 0x30ec003f, 0x118b000b, 0x3821, 0xafa90010, 0x3c0b8008, 0x8d69006c, 0xafaa0018, 0xe00013a, 0xafa90014, 0xa3800008, 0x8fbf0020, 0x3e00008, 0x27bd0028, 0x8d1f0048, 0x3c180800, 0x8f183bd4, 0x8f990014, 0x3c027fff, 0x8d080044, 0x3443ffff, 0xafa90010, 0x3c0b8008, 0x8d69006c, 0x3e37024, 0x3197821, 0x1cf6823, 0x1a83821, 0xafaa0018, 0xe00013a, 0xafa90014, 0xa000da5, 0xa3800008, 0x3c058000, 0x34a60a00, 0x90c7003c, 0x3c060800, 0x94c63bf2, 0x3c020800, 0x8c423bec, 0x30e30020, 0x62400, 0x10600031, 0x444825, 0x3c088008, 0x35050080, 0x90a30068, 0x6821, 0x240c0001, 0x5021, 0x240b0001, 0x3c188000, 0x370f0070, 0x8de80000, 0x3c078000, 0xaf880024, 0x8cf90178, 0x720fffe, 0x34e50070, 0x8ca20000, 0x3c030800, 0x8c630074, 0x3c0f0800, 0x8def0070, 0x482023, 0x642821, 0xc021, 0xa4302b, 0x1f87021, 0x1c64021, 0x3c010800, 0xac250074, 0x3c010800, 0xac280070, 0xacec0148, 0x3c020800, 0x8c423bf4, 0xa4ea0144, 0xa4eb0146, 0xace2014c, 0x3c040800, 0x90843bf1, 0x3c038008, 0xa0e40152, 0xace90154, 0xa4ed0158, 0x346d0080, 0x91ac004c, 0x3c091000, 0xa0ec016d, 0x3e00008, 0xace90178, 0x8cac0e1c, 0x3c0b0800, 0x8d6b3bd4, 0x94aa0e16, 0x94ae0e14, 0x1666821, 0x314bffff, 0xa000dcd, 0x31caffff, 0x3c048000, 0x34830a00, 0x9065003c, 0x30a20020, 0x1040002b, 0x0, 0x5821, 0x5021, 0x4821, 0x3c088000, 0x35040070, 0x8c880000, 0x3c078000, 0xaf880024, 0x8cec0178, 0x580fffe, 0x34ee0070, 0x8dcd0000, 0x3c050800, 0x8ca50074, 0x3c040800, 0x8c840070, 0x1a86023, 0xacc021, 0x1021, 0x30c302b, 0x82c821, 0x3267821, 0x3c010800, 0xac380074, 0x3c010800, 0xac2f0070, 0xaceb0148, 0x3c0e0800, 0x8dce3bf4, 0x240dff91, 0x240b0040, 0xa4e90144, 0xa4ea0146, 0xacee014c, 0xa0ed0152, 0xaceb0154, 0xa4e00158, 0x90ea0109, 0x3c091000, 0xa0ea016d, 0x3e00008, 0xace90178, 0x8c8b0e18, 0x94870e12, 0x94860e10, 0x30eaffff, 0xa000e08, 0x30c9ffff, 0x3c048000, 0x34830a00, 0x9065003c, 0x30a20020, 0x10400039, 0x27bdfff8, 0x240c0001, 0x5021, 0x240b0001, 0x3c088000, 0x35040070, 0x8c890000, 0x3c088000, 0xaf890024, 0x8d0d0178, 0x5a0fffe, 0x350e0070, 0x8dc70000, 0x3c050800, 0x8ca50074, 0x3c040800, 0x8c840070, 0xe96823, 0xadc021, 0x1021, 0x30d302b, 0x82c821, 0x3267821, 0x3c010800, 0xac380074, 0x3c010800, 0xac2f0070, 0x91090109, 0x3c0e0800, 0x91ce3c31, 0x3c0380ff, 0xa3a90003, 0x8fad0000, 0x31c7007f, 0x3462ffff, 0x1a82025, 0xafa40000, 0x9106010a, 0xa3a00002, 0x7ce00, 0xa3a60001, 0x8fa50000, 0x240e3000, 0x3c091000, 0xa2c024, 0x3197825, 0xad0f014c, 0x27bd0008, 0xad0e0154, 0xa5000158, 0xad0c0148, 0xa50a0144, 0x240aff80, 0xa50b0146, 0xa10a0152, 0x3e00008, 0xad090178, 0x8c8c0e18, 0x94870e12, 0x94860e10, 0x30ebffff, 0xa000e3e, 0x30caffff, 0x27bdffe8, 0xafb00010, 0x3c108000, 0xafbf0014, 0x36180a00, 0x970f0032, 0xe000ad5, 0x31e43fff, 0x8e0e0100, 0x240dff80, 0x3c042000, 0x1c25821, 0x16d6024, 0xc4940, 0x316a007f, 0x12a4025, 0x1043825, 0x3c048008, 0xae070830, 0x34860080, 0x90c50068, 0x24030002, 0x30a200ff, 0x10430004, 0x8f9f000c, 0x8f990010, 0xac9f0068, 0xac990064, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c0a0800, 0x254a37fc, 0x3c090800, 0x252938d4, 0x3c080800, 0x25082c74, 0x3c070800, 0x24e739e4, 0x3c060800, 0x24c63638, 0x3c050800, 0x24a53390, 0x3c040800, 0x24842fa0, 0x3c030800, 0x246336ec, 0x3c020800, 0x24423488, 0x3c010800, 0xac2a3dfc, 0x3c010800, 0xac293df8, 0x3c010800, 0xac283df4, 0x3c010800, 0xac273e00, 0x3c010800, 0xac263e10, 0x3c010800, 0xac253e08, 0x3c010800, 0xac243e04, 0x3c010800, 0xac233e14, 0x3c010800, 0xac223e0c, 0x3e00008, 0x0, 0x0 }; u32 bce_TXP_b09FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_TXP_b09FwRodata[(0x30/4) + 1] = { 0x80000940, 0x80000900, 0x80080100, 0x80080080, 0x80080000, 0x800e0000, 0x80080080, 0x80080000, 0x80000a80, 0x80000a00, 0x80000980, 0x80000900, 0x0 }; u32 bce_TXP_b09FwBss[(0x24c/4) + 1] = { 0x0 }; u32 bce_TXP_b09FwSbss[(0x6c/4) + 1] = { 0x0 }; u32 bce_TXP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_TPAT_b09FwReleaseMajor = 0x1; int bce_TPAT_b09FwReleaseMinor = 0x0; int bce_TPAT_b09FwReleaseFix = 0x0; u32 bce_TPAT_b09FwStartAddr = 0x08000488; u32 bce_TPAT_b09FwTextAddr = 0x08000400; int bce_TPAT_b09FwTextLen = 0x13a4; u32 bce_TPAT_b09FwDataAddr = 0x00000000; int bce_TPAT_b09FwDataLen = 0x0; u32 bce_TPAT_b09FwRodataAddr = 0x080017a4; int bce_TPAT_b09FwRodataLen = 0x4; u32 bce_TPAT_b09FwBssAddr = 0x08001800; int bce_TPAT_b09FwBssLen = 0x12b4; u32 bce_TPAT_b09FwSbssAddr = 0x080017c0; int bce_TPAT_b09FwSbssLen = 0x40; u32 bce_TPAT_b09FwSDataAddr = 0x00000000; int bce_TPAT_b09FwSDataLen = 0x0; u32 bce_TPAT_b09FwText[(0x13a4/4) + 1] = { 0xa000122, 0x0, 0x0, 0xd, 0x74706134, 0x2e362e31, 0x36000000, 0x4061001, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x244217c0, 0x3c030800, 0x24632ab4, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd2ffc, 0x3a0f021, 0x3c100800, 0x26100488, 0x3c1c0800, 0x279c17c0, 0xe00025e, 0x0, 0xd, 0x2402ff80, 0x27bdffe0, 0x821024, 0xafb00010, 0xaf420020, 0xafbf0018, 0xafb10014, 0x93650004, 0x3084007f, 0x3441821, 0x3c020008, 0x621821, 0x30a50020, 0x3608021, 0x3c080111, 0x277b0008, 0x14a00002, 0x2466005c, 0x24660058, 0x92020004, 0x97430104, 0x92040004, 0x3047000f, 0x3063ffff, 0x30840040, 0x672823, 0x10800009, 0x4821, 0x92020005, 0x30420004, 0x10400005, 0x0, 0x10a00003, 0x0, 0x24a5fffc, 0x24090004, 0x92020005, 0x30420004, 0x10400012, 0x0, 0x10a00010, 0x0, 0x96020002, 0xa72021, 0x1044025, 0x2442fffe, 0xa7421016, 0x92030004, 0x2402ff80, 0x431024, 0x304200ff, 0x10400003, 0x3c020400, 0xa000172, 0x1024025, 0x8cc20000, 0xaf421018, 0x8f420178, 0x440fffe, 0x2402000a, 0xa7420140, 0x96020002, 0x24040009, 0x30420007, 0x21023, 0x30420007, 0xa7420142, 0x96020002, 0x2442fffe, 0xa7420144, 0xa7400146, 0x97420104, 0xa7420148, 0x8f420108, 0x30420020, 0x50400001, 0x24040001, 0x92020004, 0x30420010, 0x14400002, 0x34830010, 0x801821, 0xa743014a, 0x0, 0x0, 0x0, 0x0, 0xaf481000, 0x0, 0x0, 0x0, 0x0, 0x8f421000, 0x441fffe, 0x3102ffff, 0x10400007, 0x0, 0x92020004, 0x30420040, 0x14400003, 0x0, 0x8f421018, 0xacc20000, 0x96020006, 0x3042ffff, 0x24420002, 0x21043, 0x21040, 0x3628821, 0x96220000, 0x1120000d, 0x3044ffff, 0xa71021, 0x8f83003c, 0x8f45101c, 0x21082, 0x21080, 0x431021, 0xac450000, 0x30a6ffff, 0xe0005b7, 0x52c02, 0x402021, 0xa6220000, 0x92030004, 0x2402ff80, 0x431024, 0x304200ff, 0x1040001f, 0x0, 0x92020005, 0x30420002, 0x1040001b, 0x0, 0x9742100c, 0x2442fffe, 0xa7421016, 0x0, 0x3c020400, 0x34420030, 0xaf421000, 0x0, 0x0, 0x0, 0x0, 0x8f421000, 0x441fffe, 0x0, 0x9742100c, 0x8f45101c, 0x3042ffff, 0x24420030, 0x21082, 0x21080, 0x5b1021, 0xac450000, 0x30a6ffff, 0xe0005b7, 0x52c02, 0xa6220000, 0x96040002, 0x24840008, 0xe0001e7, 0x3084ffff, 0x97440104, 0xe0001f5, 0x3084ffff, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3c021000, 0x27bd0020, 0x3e00008, 0xaf420178, 0x3084ffff, 0x30820007, 0x8f850024, 0x10400002, 0x24830007, 0x3064fff8, 0xa41021, 0x30421fff, 0x3421821, 0x247b4000, 0xaf850028, 0xaf820024, 0x3e00008, 0xaf420084, 0x3084ffff, 0x3082000f, 0x8f85002c, 0x8f860034, 0x10400002, 0x2483000f, 0x3064fff0, 0xa41021, 0x46182b, 0xaf850030, 0x462023, 0x14600002, 0xaf82002c, 0xaf84002c, 0x8f82002c, 0x34048000, 0x3421821, 0x641821, 0xaf83003c, 0x3e00008, 0xaf420080, 0x8f820014, 0x10400008, 0x8f820004, 0x8f82ffe4, 0x14400005, 0x8f820004, 0x3c02ffbf, 0x3442ffff, 0x822024, 0x8f820004, 0x30430006, 0x24020002, 0x1062000f, 0x3c020101, 0x2c620003, 0x50400005, 0x24020004, 0x1060000f, 0x3c020001, 0xa00022e, 0x0, 0x10620005, 0x24020006, 0x1462000c, 0x3c020111, 0xa000227, 0x821025, 0x3c020011, 0x821025, 0xaf421000, 0x24020001, 0xa00022e, 0xaf82000c, 0x821025, 0xaf421000, 0xaf80000c, 0x0, 0x0, 0x0, 0x3e00008, 0x0, 0x8f82000c, 0x10400004, 0x0, 0x8f421000, 0x441fffe, 0x0, 0x3e00008, 0x0, 0x8f820010, 0x229c2, 0x24a3fff0, 0x31842, 0x2444f800, 0x31140, 0x431021, 0x21080, 0x431021, 0x21080, 0x3c030800, 0x24631800, 0x2c840301, 0x14800013, 0x433021, 0x8f840018, 0xa4102b, 0x1440000f, 0x3021, 0xa41023, 0x21940, 0x621821, 0x31880, 0x621821, 0x8f82001c, 0x821021, 0x2442ffff, 0x45102b, 0x14400004, 0x31880, 0x3c020800, 0x24421a14, 0x623021, 0x3e00008, 0xc01021, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0x3c046008, 0x8c825000, 0x2403ff7f, 0x3c066000, 0x431024, 0x3442380c, 0xac825000, 0x8cc24c1c, 0x3c1a8000, 0x21602, 0x3042000f, 0x10400007, 0xaf82001c, 0x8cc34c1c, 0x3c02001f, 0x3442fc00, 0x621824, 0x319c2, 0xaf830018, 0x8f420008, 0x275b4000, 0x34420001, 0xaf420008, 0xaf800024, 0x3c02601c, 0xaf400080, 0xaf400084, 0x8c450008, 0x8cc30808, 0x34028000, 0x3422021, 0x2402fff0, 0x621824, 0x3c020080, 0x3c010800, 0xac220420, 0x3c025709, 0xaf84003c, 0x14620004, 0xaf850034, 0x24020001, 0xa00028e, 0xaf820014, 0xaf800014, 0x3c028000, 0x34440070, 0x8c830000, 0x8f420000, 0x38420001, 0x30420001, 0x10400018, 0xaf830038, 0x804021, 0x603021, 0x8d070000, 0x3c050800, 0x8ca5045c, 0x3c040800, 0x8c840458, 0xe63023, 0x1021, 0xa62821, 0xa6302b, 0x822021, 0x862021, 0x3c010800, 0xac25045c, 0x3c010800, 0xac240458, 0x8f420000, 0x38420001, 0x30420001, 0x1440ffed, 0xe03021, 0xaf870038, 0x3c028000, 0x34420070, 0x8c470000, 0x8f860038, 0x3c050800, 0x8ca5045c, 0x3c040800, 0x8c840458, 0xe63823, 0x1021, 0xa72821, 0x822021, 0x8f820014, 0xa7302b, 0x862021, 0x3c010800, 0xac25045c, 0x3c010800, 0xac240458, 0x10400016, 0x0, 0x97420104, 0x10400005, 0x8f830000, 0x14600007, 0x2462ffff, 0xa0002d0, 0x2c62000a, 0x2c620010, 0x50400004, 0x8f830000, 0x24620001, 0xaf820000, 0x8f830000, 0x2c62000a, 0x14400003, 0x2c620007, 0xa0002d7, 0xaf80ffe4, 0x10400002, 0x24020001, 0xaf82ffe4, 0x8f430108, 0x8f440100, 0x30622000, 0xaf830004, 0x10400008, 0xaf840010, 0x3c020800, 0x8c42042c, 0x24420001, 0x3c010800, 0xac22042c, 0xa0005b3, 0x3c024000, 0x30650200, 0x14a00003, 0x24020f00, 0x14820260, 0x24020d00, 0x97420104, 0x104002c8, 0x3c024000, 0x30624000, 0x144000ad, 0x8f82003c, 0x8c440008, 0x8f420178, 0x440fffe, 0x24020800, 0xaf420178, 0x24020008, 0xa7420140, 0xa7400142, 0x97420104, 0x8f840004, 0x3051ffff, 0x30820001, 0x10400007, 0x2208021, 0x2623fffe, 0x24020002, 0x3070ffff, 0xa7420146, 0xa000304, 0xa7430148, 0xa7400146, 0x3c020800, 0x8c42043c, 0x1440000d, 0x8f830010, 0x30820020, 0x14400002, 0x24030009, 0x24030001, 0x602021, 0x8f830010, 0x24020900, 0x50620001, 0x34840004, 0xa744014a, 0xa00031f, 0x0, 0x24020f00, 0x14620005, 0x30820020, 0x14400006, 0x2403000d, 0xa00031e, 0x24030005, 0x14400002, 0x24030009, 0x24030001, 0xa743014a, 0x3c020800, 0x8c420420, 0x3c040048, 0xe00020a, 0x442025, 0xe000233, 0x0, 0x8f82000c, 0x1040003e, 0x0, 0x8f421000, 0x3c030020, 0x431024, 0x10400039, 0x8f820004, 0x30420002, 0x10400036, 0x0, 0x97421014, 0x14400033, 0x0, 0x97421008, 0x8f88003c, 0x3042ffff, 0x24420006, 0x21882, 0x33880, 0xe83021, 0x30430001, 0x8cc40000, 0x10600004, 0x30420003, 0xd, 0xa000360, 0xe81021, 0x54400010, 0x3084ffff, 0x3c05ffff, 0x852024, 0x851826, 0x3182b, 0x4102b, 0x431024, 0x10400005, 0x0, 0x0, 0xd, 0x0, 0x240001cb, 0x8cc20000, 0xa00035f, 0x452025, 0x3883ffff, 0x3182b, 0x4102b, 0x431024, 0x10400005, 0x0, 0x0, 0xd, 0x0, 0x240001d4, 0x8cc20000, 0x3444ffff, 0xe81021, 0xac440000, 0x3c020800, 0x8c420430, 0x24420001, 0x3c010800, 0xac220430, 0x8f620000, 0x8f84003c, 0xaf820008, 0x8c830000, 0x3402ffff, 0x1462000f, 0x1021, 0x3c050800, 0x8ca50454, 0x3c040800, 0x8c840450, 0xb02821, 0xb0302b, 0x822021, 0x862021, 0x3c010800, 0xac250454, 0x3c010800, 0xac240450, 0xa0005a9, 0x24040008, 0x8c820000, 0x30420100, 0x1040000f, 0x1021, 0x3c050800, 0x8ca5044c, 0x3c040800, 0x8c840448, 0xb02821, 0xb0302b, 0x822021, 0x862021, 0x3c010800, 0xac25044c, 0x3c010800, 0xac240448, 0xa0005a9, 0x24040008, 0x3c050800, 0x8ca50444, 0x3c040800, 0x8c840440, 0xb02821, 0xb0302b, 0x822021, 0x862021, 0x3c010800, 0xac250444, 0x3c010800, 0xac240440, 0xa0005a9, 0x24040008, 0x8f620008, 0x8f620000, 0x21602, 0x304300f0, 0x24020030, 0x10620005, 0x24020040, 0x106200e0, 0x8f820020, 0xa0005b1, 0x24420001, 0x14a00005, 0x0, 0x0, 0xd, 0x0, 0x240001fe, 0x8f420178, 0x440fffe, 0x0, 0xe00023b, 0x0, 0x14400005, 0x408021, 0x0, 0xd, 0x0, 0x24000205, 0x8e020000, 0x10400005, 0x0, 0x0, 0xd, 0x0, 0x24000208, 0x8f62000c, 0x4430003, 0x24020001, 0xa000457, 0xae000000, 0xae020000, 0x8f82003c, 0x8c480008, 0xa2000007, 0x8f65000c, 0x8f640004, 0x30a3ffff, 0x42402, 0x852023, 0x308200ff, 0x431021, 0x24420005, 0x23083, 0x2cc20081, 0xa605000a, 0x14400005, 0xa2040004, 0x0, 0xd, 0x0, 0x24000220, 0x8f85003c, 0xe0005d5, 0x26040014, 0x8f620004, 0x8f430108, 0xa6020008, 0x3c021000, 0x621824, 0x10600008, 0x0, 0x97420104, 0x92030007, 0x2442ffec, 0x34630002, 0x3045ffff, 0xa0003ec, 0xa2030007, 0x97420104, 0x2442fff0, 0x3045ffff, 0x96060008, 0x2cc20013, 0x54400005, 0x92030007, 0x92020007, 0x34420001, 0xa2020007, 0x92030007, 0x24020001, 0x10620005, 0x24020003, 0x1062000b, 0x8f82003c, 0xa000409, 0x30c6ffff, 0x8f82003c, 0x3c04ffff, 0x8c43000c, 0x641824, 0x651825, 0xac43000c, 0xa000409, 0x30c6ffff, 0x3c04ffff, 0x8c430010, 0x641824, 0x651825, 0xac430010, 0x30c6ffff, 0x24c20002, 0x21083, 0xa2020005, 0x8f83003c, 0x304200ff, 0x21080, 0x432821, 0x8ca80000, 0x8ca20000, 0x24030004, 0x21702, 0x14430012, 0x0, 0x97420104, 0x3c03ffff, 0x1031824, 0x3042ffff, 0x461023, 0x2442fffe, 0x624025, 0xaca80000, 0x92030005, 0x306200ff, 0x21080, 0x501021, 0x90420014, 0x3042000f, 0x431021, 0xa00043e, 0xa2020006, 0x8ca40004, 0x97420104, 0x9603000a, 0x3088ffff, 0x3042ffff, 0x461023, 0x2442ffd6, 0x21400, 0x1024025, 0xaca80004, 0x92020007, 0x92040005, 0x24630028, 0x31883, 0x641821, 0x34420004, 0xa2030006, 0xa2020007, 0x8f820004, 0x2403fffb, 0x34420002, 0x431024, 0xaf820004, 0x92030006, 0x8f87003c, 0x31880, 0x701021, 0x8c440020, 0x3c02fff6, 0x3442ffff, 0x824024, 0x671821, 0xae04000c, 0xac68000c, 0x92050006, 0x3c03ff7f, 0x8e02000c, 0x52880, 0xb02021, 0x3463ffff, 0x1033024, 0x94880026, 0xa72821, 0x431024, 0xae02000c, 0xac860020, 0xac880024, 0xaca80010, 0x24020010, 0xa7420140, 0x24020002, 0xa7400142, 0xa7400144, 0xa7420146, 0x97420104, 0x3c040008, 0x2442fffe, 0xa7420148, 0x24020001, 0xe00020a, 0xa742014a, 0x9603000a, 0x92020004, 0x431021, 0x24420002, 0x30420007, 0x21023, 0x30420007, 0xe000233, 0xae020010, 0x8f620000, 0x3c030800, 0x8c630444, 0x24040010, 0xaf820008, 0x97420104, 0x3042ffff, 0x2442fffe, 0x403821, 0x237c3, 0x3c020800, 0x8c420440, 0x671821, 0x67282b, 0x461021, 0x451021, 0x3c010800, 0xac230444, 0x3c010800, 0xac220440, 0xa00053e, 0x0, 0x14a00005, 0x0, 0x0, 0xd, 0x0, 0x2400029e, 0x8f420178, 0x440fffe, 0x0, 0xe00023b, 0x0, 0x14400005, 0x408021, 0x0, 0xd, 0x0, 0x240002a5, 0x8e020000, 0x54400006, 0x92020007, 0x0, 0xd, 0x0, 0x240002a8, 0x92020007, 0x30420004, 0x10400005, 0x8f820004, 0x2403fffb, 0x34420002, 0x431024, 0xaf820004, 0x8f620004, 0x4430008, 0x92020007, 0x92020006, 0x8e03000c, 0xae000000, 0x21080, 0x501021, 0xac430020, 0x92020007, 0x30420004, 0x54400009, 0x9602000a, 0x92020005, 0x3c030001, 0x21080, 0x501021, 0x8c460018, 0xc33021, 0xac460018, 0x9602000a, 0x92060004, 0x27710008, 0x2202021, 0xc23021, 0x24c60005, 0x26050014, 0xe0005d5, 0x63082, 0x92040006, 0x8f650004, 0x3c027fff, 0x42080, 0x912021, 0x8c830004, 0x3442ffff, 0xa22824, 0x651821, 0xac830004, 0x92020007, 0x92040005, 0x92030004, 0x30420004, 0x10400014, 0x96070008, 0x308400ff, 0x42080, 0x912021, 0x8c860004, 0x97420104, 0x9605000a, 0x306300ff, 0x3042ffff, 0x431021, 0x451021, 0x30e3ffff, 0x431023, 0x2442ffd8, 0x30c6ffff, 0x21400, 0xc23025, 0xac860004, 0xa0004f2, 0x92030007, 0x308500ff, 0x52880, 0xb12821, 0x8ca40000, 0x97420104, 0x306300ff, 0x3042ffff, 0x431021, 0x471023, 0x3c03ffff, 0x832024, 0x3042ffff, 0x822025, 0xaca40000, 0x92030007, 0x24020001, 0x10620006, 0x0, 0x24020003, 0x10620011, 0x0, 0xa000515, 0x8e030010, 0x97420104, 0x92030004, 0x9605000a, 0x8e24000c, 0x431021, 0x451021, 0x2442fff2, 0x3c03ffff, 0x832024, 0x3042ffff, 0x822025, 0xae24000c, 0xa000515, 0x8e030010, 0x97420104, 0x92030004, 0x9605000a, 0x8e240010, 0x431021, 0x451021, 0x2442ffee, 0x3c03ffff, 0x832024, 0x3042ffff, 0x822025, 0xae240010, 0x8e030010, 0x2402000a, 0xa7420140, 0xa7430142, 0x9603000a, 0x92020004, 0x3c040040, 0x431021, 0xa7420144, 0xa7400146, 0x97420104, 0xa7420148, 0x24020001, 0xe00020a, 0xa742014a, 0xe000233, 0x0, 0x8f620000, 0x92030004, 0x2021, 0xaf820008, 0x97420104, 0x9606000a, 0x3042ffff, 0x621821, 0x602821, 0x3c030800, 0x8c630444, 0x3c020800, 0x8c420440, 0x651821, 0x441021, 0x65382b, 0x471021, 0x3c010800, 0xac230444, 0x3c010800, 0xac220440, 0x92040004, 0x862021, 0x2484000a, 0x3084ffff, 0xe0001e7, 0x0, 0x97440104, 0x3084ffff, 0xe0001f5, 0x0, 0x3c021000, 0xaf420178, 0xa0005b0, 0x8f820020, 0x14820027, 0x30620006, 0x97420104, 0x10400067, 0x3c024000, 0x30624000, 0x10400005, 0x0, 0x0, 0xd, 0x0, 0x24000396, 0x8f420178, 0x440fffe, 0x24020800, 0xaf420178, 0x24020008, 0xa7420140, 0xa7400142, 0x8f820004, 0x97430104, 0x30420001, 0x10400007, 0x3070ffff, 0x2603fffe, 0x24020002, 0xa7420146, 0xa7430148, 0xa000568, 0x2402000d, 0xa7400146, 0x2402000d, 0xa742014a, 0x8f620000, 0x24040008, 0xaf820008, 0xe0001e7, 0x0, 0xa000542, 0x2002021, 0x10400042, 0x3c024000, 0x93620000, 0x304300f0, 0x24020010, 0x10620005, 0x24020070, 0x10620035, 0x0, 0xa0005b0, 0x8f820020, 0x8f620000, 0x97430104, 0x3050ffff, 0x3071ffff, 0x8f420178, 0x440fffe, 0x32020007, 0x21023, 0x30420007, 0x2403000a, 0x2604fffe, 0xa7430140, 0xa7420142, 0xa7440144, 0xa7400146, 0xa7510148, 0x8f420108, 0x30420020, 0x14400002, 0x24030009, 0x24030001, 0xa743014a, 0xe00020a, 0x3c040040, 0xe000233, 0x0, 0x3c070800, 0x8ce70444, 0x2111021, 0x2442fffe, 0x3c060800, 0x8cc60440, 0x401821, 0xe33821, 0x1021, 0x8f650000, 0xe3402b, 0xc23021, 0x26040008, 0xc83021, 0x3084ffff, 0xaf850008, 0x3c010800, 0xac270444, 0x3c010800, 0xac260440, 0xe0001e7, 0x0, 0xa000542, 0x2202021, 0xe000139, 0x0, 0x8f820020, 0x24420001, 0xaf820020, 0x3c024000, 0xaf420138, 0x0, 0xa00028f, 0x3c028000, 0x3084ffff, 0x30c6ffff, 0x52c00, 0xa62825, 0x3882ffff, 0x451021, 0x45282b, 0x451021, 0x21c02, 0x3042ffff, 0x431021, 0x21c02, 0x3042ffff, 0x431021, 0x3842ffff, 0x3e00008, 0x3042ffff, 0x3084ffff, 0x30a5ffff, 0x1821, 0x10800007, 0x0, 0x30820001, 0x10400002, 0x42042, 0x651821, 0xa0005cb, 0x52840, 0x3e00008, 0x601021, 0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, 0xac820000, 0xa0005d5, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x0 }; u32 bce_TPAT_b09FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_TPAT_b09FwRodata[(0x4/4) + 1] = { 0x1, 0x0 }; u32 bce_TPAT_b09FwBss[(0x12b4/4) + 1] = { 0x0 }; u32 bce_TPAT_b09FwSbss[(0x40/4) + 1] = { 0x0 }; u32 bce_TPAT_b09FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_COM_b09FwReleaseMajor = 0x1; int bce_COM_b09FwReleaseMinor = 0x0; int bce_COM_b09FwReleaseFix = 0x0; u32 bce_COM_b09FwStartAddr = 0x080000f8; u32 bce_COM_b09FwTextAddr = 0x08000000; int bce_COM_b09FwTextLen = 0x4ac8; u32 bce_COM_b09FwDataAddr = 0x00000000; int bce_COM_b09FwDataLen = 0x0; u32 bce_COM_b09FwRodataAddr = 0x08004ac8; int bce_COM_b09FwRodataLen = 0x30; u32 bce_COM_b09FwBssAddr = 0x08004b58; int bce_COM_b09FwBssLen = 0xc0; u32 bce_COM_b09FwSbssAddr = 0x08004b20; int bce_COM_b09FwSbssLen = 0x38; u32 bce_COM_b09FwSDataAddr = 0x00000000; int bce_COM_b09FwSDataLen = 0x0; u32 bce_COM_b09FwText[(0x4ac8/4) + 1] = { 0xa00003e, 0x0, 0x0, 0xd, 0x636f6d34, 0x2e362e31, 0x36000000, 0x4061002, 0x0, 0x3, 0x14, 0x32, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x136, 0xea60, 0x1, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24424b20, 0x3c030800, 0x24634c18, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd9ffc, 0x3a0f021, 0x3c100800, 0x261000f8, 0x3c1c0800, 0x279c4b20, 0xe000273, 0x0, 0xd, 0x27bdffe8, 0x3c028000, 0xafb00010, 0xafbf0014, 0x34500100, 0x92020009, 0x1040001a, 0x24030001, 0x3c020800, 0x8c420020, 0x10400016, 0x1821, 0xe000d71, 0x0, 0x96030008, 0x3c060800, 0x94c64bfe, 0x8e040018, 0x8f82002c, 0x9605000c, 0x31c00, 0x661825, 0xac440000, 0xac450004, 0x24040001, 0xac400008, 0xac40000c, 0xac400010, 0xac400014, 0xac400018, 0xe000d98, 0xac43001c, 0x1821, 0x8fbf0014, 0x8fb00010, 0x601021, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0x3c028000, 0x94420108, 0x30437000, 0x24022000, 0x1062000a, 0x28642001, 0x54800012, 0x8fbf0010, 0x24024000, 0x10620008, 0x24026000, 0x1062000a, 0x8fbf0010, 0xa000097, 0x1021, 0x8fbf0010, 0xa000055, 0x27bd0018, 0xe000433, 0x0, 0xa000096, 0x8fbf0010, 0xe000c81, 0x0, 0x8fbf0010, 0x1021, 0x3e00008, 0x27bd0018, 0x3c020800, 0x8c420020, 0x27bdffe8, 0x10400028, 0xafbf0010, 0xe000d71, 0x0, 0x3c058000, 0x94a20108, 0x94a3010c, 0x8f86002c, 0x3042003e, 0x3063ffff, 0x21400, 0x431025, 0xacc20000, 0x8ca20100, 0x3c070800, 0x94e74bfe, 0x8fbf0010, 0xacc20004, 0x94a30116, 0x94a4010e, 0x3c022000, 0x31c00, 0x3084ffff, 0x641825, 0xacc30008, 0xe23825, 0x94a20110, 0x94a30112, 0x24040001, 0x21400, 0x3063ffff, 0x431025, 0xacc2000c, 0x94a20114, 0x27bd0018, 0x3042ffff, 0xacc20010, 0xacc00014, 0xacc00018, 0xa000d98, 0xacc7001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x3c068000, 0x8cc202b8, 0x24030001, 0x4410008, 0x802821, 0x3c020800, 0x8c420060, 0x24420001, 0x3c010800, 0xac220060, 0x3e00008, 0x601021, 0x8c830020, 0x94820016, 0xacc30280, 0x2442fffc, 0xa4c20284, 0x3c020800, 0x8c42005c, 0x8c840004, 0x94a3000e, 0x24420001, 0x3c010800, 0xac22005c, 0x3c021000, 0xa4c30286, 0xacc40288, 0x1821, 0xacc202b8, 0x3e00008, 0x601021, 0x3c020800, 0x8c420020, 0x27bdffe8, 0x1040002b, 0xafbf0010, 0xe000d71, 0x0, 0x3c058000, 0x94a20108, 0x94a3010c, 0x8f86002c, 0x3042003e, 0x3063ffff, 0x21400, 0x431025, 0xacc20000, 0x8ca20100, 0x3c070800, 0x94e74bfe, 0x8fbf0010, 0xacc20004, 0x94a30116, 0x94a4010e, 0x3c022000, 0x31c00, 0x3084ffff, 0x641825, 0xacc30008, 0xe23825, 0x94a20110, 0x94a30112, 0x24040001, 0x21400, 0x3063ffff, 0x431025, 0xacc2000c, 0x94a20114, 0x27bd0018, 0x3042ffff, 0xacc20010, 0x8ca20118, 0xacc20014, 0x90a2010b, 0x304200ff, 0xacc20018, 0xa000d98, 0xacc7001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe0, 0xafb00010, 0x3c108000, 0xafb20018, 0xafbf001c, 0xafb10014, 0x36120100, 0x9243000b, 0x2402001a, 0x96510008, 0x1462005b, 0x2821, 0x32220001, 0x10400018, 0x0, 0x8e420000, 0x22340, 0x3c02003f, 0x3442ffff, 0x44102b, 0x10400004, 0x3c030040, 0x96420014, 0xa00013b, 0x832021, 0x8e030100, 0x24020100, 0x54620006, 0x96420014, 0x3c028008, 0x94420004, 0x3042000f, 0x22500, 0x96420014, 0x821025, 0xae020080, 0xa00016f, 0x0, 0x3c020800, 0x8c420020, 0x10400028, 0x0, 0xe000d71, 0x0, 0x96020108, 0x9603010c, 0x8f85002c, 0x3042003e, 0x3063ffff, 0x21400, 0x431025, 0xaca20000, 0x8e020100, 0x3c060800, 0x94c64bfe, 0xaca20004, 0x96030116, 0x9604010e, 0x3c022000, 0x31c00, 0x3084ffff, 0x641825, 0xaca30008, 0xc23025, 0x96020110, 0x96030112, 0x24040001, 0x21400, 0x3063ffff, 0x431025, 0xaca2000c, 0x96020114, 0x3042ffff, 0xaca20010, 0x8e020118, 0xaca20014, 0x9202010b, 0x304200ff, 0xaca20018, 0xe000d98, 0xaca6001c, 0x3c020800, 0x8c420040, 0x24420001, 0x3c010800, 0xac220040, 0x3c030800, 0x8c630044, 0x32220002, 0x32240004, 0x24630001, 0x3c010800, 0xac230044, 0x10800008, 0x2282b, 0x2402021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa0000c8, 0x27bd0020, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa01021, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c058000, 0xafb10014, 0xafbf0018, 0xafb00010, 0x34b10100, 0x9223000b, 0x24020003, 0x14620043, 0x96300008, 0x32020001, 0x10400016, 0x3c02003f, 0x8e230000, 0x3442ffff, 0x32340, 0x44102b, 0x50400005, 0x24020100, 0x96220014, 0x3c030040, 0xa0001a4, 0x832021, 0x54620006, 0x96220014, 0x3c028008, 0x94420004, 0x3042000f, 0x22500, 0x96220014, 0x821025, 0xaca20080, 0xa0001af, 0x0, 0xe000099, 0x0, 0x3c020800, 0x8c420040, 0x24420001, 0x3c010800, 0xac220040, 0x3c020800, 0x8c420044, 0x32030004, 0x24420001, 0x3c010800, 0xac220044, 0x10600007, 0x32020002, 0x2202021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa0000c8, 0x27bd0020, 0x10400015, 0x8fbf0018, 0x3c048000, 0x8c830104, 0x3c026020, 0xac430014, 0x8c420004, 0x240301fe, 0x304203ff, 0x1443000c, 0x8fbf0018, 0x8c820100, 0x219c2, 0x2462fffc, 0x2c420008, 0x10400003, 0x24040002, 0x2462fffd, 0x442004, 0x3c026000, 0xac446914, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x1021, 0x3e00008, 0x27bd0020, 0x3c048000, 0x8c830100, 0x24020100, 0x50620003, 0x3c028008, 0xd, 0x3c028008, 0x94430004, 0x1021, 0x3063000f, 0x31d00, 0x3e00008, 0xac830080, 0x3c028008, 0x34420080, 0x90420000, 0x3e00008, 0xaf800000, 0x3e00008, 0x1021, 0x27bdffe8, 0x3c028000, 0xafbf0014, 0xafb00010, 0x8c430100, 0xac430020, 0x8c430104, 0xac4300a8, 0x9050010b, 0xe0001e5, 0x321000ff, 0x3c020800, 0x24424b58, 0x101880, 0x2e10001d, 0x16000005, 0x621021, 0xe0001ea, 0x401821, 0xa000205, 0x0, 0x8c420000, 0x40f809, 0x0, 0x401821, 0x3c020800, 0x8c420034, 0x10600005, 0x24440001, 0x3c028000, 0x8c430104, 0x3c026020, 0xac430014, 0x8fbf0014, 0x8fb00010, 0x3c034000, 0x3c028000, 0x27bd0018, 0xac430138, 0x3c010800, 0xac240034, 0x3e00008, 0x0, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x3c108000, 0x8e020140, 0xe0001e5, 0xae020020, 0xe000399, 0x0, 0x3c040800, 0x24840038, 0x8c820000, 0x3c034000, 0xae030178, 0x8fbf0014, 0x8fb00010, 0x24420001, 0x27bd0018, 0x3e00008, 0xac820000, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x3c108000, 0x8e020180, 0xe0001e5, 0xae020020, 0x8e030180, 0x24020f00, 0x54620008, 0x3c028008, 0x8e020188, 0x3c0300e0, 0x3042ffff, 0x431025, 0xae020080, 0xa00024a, 0x3c028000, 0x34420080, 0x90420000, 0x24030050, 0x304200ff, 0x14430008, 0x3c028000, 0xe000379, 0x0, 0x14400004, 0x3c028000, 0xe000967, 0x0, 0x3c028000, 0x3c034000, 0xac4301b8, 0x3c020800, 0x8c42003c, 0x8fbf0014, 0x8fb00010, 0x24420001, 0x3c010800, 0xac22003c, 0x3e00008, 0x27bd0018, 0x3e00008, 0x1021, 0x3c058000, 0x34a40100, 0x94820008, 0x30430002, 0x30420004, 0x10400003, 0x0, 0xa0000c8, 0x0, 0x10600005, 0x24040001, 0x3c020800, 0x8c420084, 0xa00026f, 0x24420001, 0x8ca30104, 0x8f82000c, 0x10430008, 0x2021, 0x8ca30104, 0x3c020800, 0x8c420084, 0xaf83000c, 0x24420001, 0x3c010800, 0xac220084, 0x3e00008, 0x801021, 0x27bdffe8, 0x3c036010, 0xafbf0014, 0xafb00010, 0x8c655000, 0x2402ff7f, 0x3c048000, 0xa22824, 0x34a5380c, 0x24020037, 0xac655000, 0xac820008, 0x24020c80, 0xac820024, 0x3c060800, 0x24c607a8, 0x3c020800, 0x24424b58, 0x2405001c, 0x24a5ffff, 0xac460000, 0x4a1fffd, 0x24420004, 0x3c020800, 0x244201ec, 0x3c010800, 0xac224b60, 0x3c020800, 0x24420618, 0x3c010800, 0xac224b64, 0x3c020800, 0x24420d10, 0x3c010800, 0xac224ba0, 0x3c020800, 0x24420464, 0x3c030800, 0x24630954, 0x3c040800, 0x2484095c, 0x3c050800, 0x24a52c94, 0x3c010800, 0xac224bc0, 0x3c020800, 0x24420760, 0x3c010800, 0xac264ba8, 0x3c010800, 0xac254bb4, 0x3c010800, 0xac234bbc, 0x3c010800, 0xac244bc4, 0x3c010800, 0xac224bc8, 0x3c010800, 0xac234b5c, 0x3c010800, 0xac204b68, 0x3c010800, 0xac204b6c, 0x3c010800, 0xac204b70, 0x3c010800, 0xac204b74, 0x3c010800, 0xac204b78, 0x3c010800, 0xac204b7c, 0x3c010800, 0xac204b80, 0x3c010800, 0xac244b84, 0x3c010800, 0xac204b88, 0x3c010800, 0xac204b8c, 0x3c010800, 0xac204b90, 0x3c010800, 0xac204b94, 0x3c010800, 0xac204b98, 0x3c010800, 0xac264b9c, 0x3c010800, 0xac264ba4, 0x3c010800, 0xac204bac, 0x3c010800, 0xac254bb0, 0x3c010800, 0xac234bb8, 0xe00055a, 0x0, 0x3c028000, 0x34420070, 0x8c420000, 0xaf820010, 0x3c030800, 0x8c630020, 0x8f820004, 0x10430004, 0x3c058000, 0xe000d37, 0xaf830004, 0x3c058000, 0x34a90070, 0x8d280000, 0x8f840010, 0x3c070800, 0x8ce700bc, 0x3c060800, 0x8cc600b8, 0x1042023, 0x1021, 0xe43821, 0xc23021, 0xe4202b, 0xc43021, 0x3c010800, 0xac2700bc, 0x3c010800, 0xac2600b8, 0x8cb00000, 0x32020007, 0x1040ffe4, 0xaf880010, 0x8d260000, 0x3c050800, 0x8ca500bc, 0x3c040800, 0x8c8400b8, 0xc83023, 0xa62821, 0x1021, 0xa6302b, 0x822021, 0x862021, 0x32070001, 0x3c010800, 0xac2500bc, 0x3c010800, 0xac2400b8, 0x10e00004, 0x32020002, 0xe0001ec, 0x0, 0x32020002, 0x10400004, 0x32020004, 0xe000217, 0x0, 0x32020004, 0x5040ffc5, 0x3c028000, 0xe00022b, 0x0, 0xa0002d5, 0x3c028000, 0x3c029000, 0x34420001, 0x822025, 0x3c028000, 0xac440020, 0x3c038000, 0x8c620020, 0x440fffe, 0x0, 0x3e00008, 0x0, 0x3c028000, 0x34430001, 0x832025, 0x3e00008, 0xac440020, 0x27bdffe0, 0xafb10014, 0xafb00010, 0x808821, 0xafbf0018, 0xe000315, 0x30b000ff, 0x8f83ffac, 0x2202021, 0x90620025, 0x2028025, 0xa0700025, 0x8c700018, 0x3c028000, 0xe000320, 0x2028024, 0x1600000a, 0x8fbf0018, 0x3c038000, 0x8c6201f8, 0x440fffe, 0x24020002, 0xac7101c0, 0xa06201c4, 0x3c021000, 0xac6201f8, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffb8, 0xafbf0044, 0xafb00040, 0x3c078000, 0x8ce60104, 0x8f82ffa8, 0xafa60028, 0x8c450020, 0xafa5002c, 0x8c44003c, 0xafa40030, 0x8c430040, 0xafa30034, 0x8c42004c, 0xafa60010, 0xafa50014, 0xafa20020, 0xafa20038, 0x3c020800, 0x8c420020, 0xafa40018, 0xafa3001c, 0x8cf00100, 0x10400019, 0x8fbf0044, 0xe000d71, 0x0, 0x8f83002c, 0x3c050800, 0x94a54bfe, 0x3c024018, 0xac700000, 0xa22825, 0x8fa20010, 0x24040001, 0xac620004, 0x8fa20014, 0xac620008, 0x8fa20018, 0xac62000c, 0x8fa2001c, 0xac620010, 0x8fa20020, 0xac620014, 0x8fa20024, 0xac620018, 0xe000d98, 0xac65001c, 0x8fbf0044, 0x8fb00040, 0x1021, 0x3e00008, 0x27bd0048, 0x27bdffe8, 0xafbf0010, 0x3c038000, 0x94620184, 0x30420200, 0x10400005, 0x2021, 0xe000fe3, 0x0, 0xa00038f, 0x24040001, 0x8c620188, 0x440000a, 0x8fbf0010, 0x8c620188, 0x3c03ff00, 0x431024, 0x3c030400, 0x14430004, 0x24040001, 0x8f82ffac, 0x90420008, 0x8fbf0010, 0x801021, 0x3e00008, 0x27bd0018, 0x8f82ffb0, 0x24050001, 0xa040001a, 0x3c028000, 0xa000325, 0x8c440140, 0x27bdffe0, 0xafb10014, 0x8f91ffac, 0xafbf001c, 0xafb20018, 0xafb00010, 0x92220000, 0x24030020, 0x304200ff, 0x1043000c, 0x3c028000, 0x92220000, 0x24030030, 0x304200ff, 0x10430007, 0x3c028000, 0x92220000, 0x24030050, 0x304200ff, 0x14430081, 0x8fbf001c, 0x3c028000, 0x90420148, 0x304200ff, 0x2443ffff, 0x2c620005, 0x1040007a, 0x8fbf001c, 0x31080, 0x3c030800, 0x24634ad8, 0x431021, 0x8c420000, 0x400008, 0x0, 0x3c118000, 0x8e240140, 0xe000315, 0x8f92ffac, 0x8e50000c, 0x8e220144, 0x16020002, 0x24020001, 0xae42000c, 0xe000320, 0x8e240140, 0x8e220144, 0x14500006, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000f51, 0x27bd0020, 0x8e42000c, 0xa000427, 0x0, 0x96220010, 0x3c048000, 0x8c830144, 0x3042ffff, 0x14620009, 0x0, 0x24020001, 0xa6220010, 0x8c820140, 0xac820200, 0x3c021000, 0xac820238, 0xa00042e, 0x8fbf001c, 0x96220010, 0xa000427, 0x0, 0x92220000, 0x24030020, 0x304200ff, 0x1443000b, 0x3c128000, 0x96220012, 0x3c038000, 0x8c630144, 0x3042ffff, 0x14620018, 0x0, 0x24020001, 0xa6220012, 0xa000400, 0x8fbf001c, 0x8e440140, 0xe000315, 0x0, 0x96220012, 0x8e430144, 0x3050ffff, 0x16030002, 0x24020001, 0xa6220012, 0xe000320, 0x8e440140, 0x8e420144, 0x16020006, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000393, 0x27bd0020, 0x96220012, 0xa000427, 0x0, 0x96220014, 0x3c038000, 0x8c630144, 0x3042ffff, 0x14620009, 0x0, 0x24020001, 0xa6220014, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa001268, 0x27bd0020, 0x96220014, 0xa000427, 0x0, 0x96220016, 0x3c038000, 0x8c630144, 0x3042ffff, 0x14620008, 0x24020001, 0xa6220016, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000b0b, 0x27bd0020, 0x96220016, 0x14400006, 0x8fbf001c, 0x3c020800, 0x8c420070, 0x24420001, 0x3c010800, 0xac220070, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c028000, 0xafb10014, 0xafbf001c, 0xafb20018, 0xafb00010, 0x34510100, 0x92230009, 0x8c500100, 0x2402001f, 0x106200aa, 0x28620020, 0x10400018, 0x24020038, 0x2862000a, 0x1040000c, 0x2402000b, 0x28620008, 0x1040002c, 0x0, 0x4600100, 0x28620002, 0x14400028, 0x24020006, 0x10620026, 0x8fbf001c, 0xa00054a, 0x8fb20018, 0x10620060, 0x2862000b, 0x144000f7, 0x8fbf001c, 0x2402000e, 0x10620077, 0x8fb20018, 0xa00054a, 0x0, 0x106200d3, 0x28620039, 0x1040000a, 0x24020080, 0x24020036, 0x106200e3, 0x28620037, 0x104000c5, 0x24020035, 0x106200d8, 0x8fbf001c, 0xa00054a, 0x8fb20018, 0x1062002d, 0x28620081, 0x10400006, 0x240200c8, 0x24020039, 0x106200c9, 0x8fbf001c, 0xa00054a, 0x8fb20018, 0x106200a2, 0x8fbf001c, 0xa00054a, 0x8fb20018, 0x3c020800, 0x8c420020, 0x104000d4, 0x8fbf001c, 0xe000d71, 0x0, 0x3c028000, 0x34420100, 0x8c440000, 0x8f83002c, 0x94470008, 0x3c050800, 0x94a54bfe, 0xac640000, 0x8c440004, 0x73c00, 0xe53825, 0xac640004, 0x8c440018, 0x9446000c, 0xac640008, 0x8c45001c, 0x63400, 0x24040001, 0xac65000c, 0x9042000a, 0xc23025, 0xac660010, 0xac600014, 0xac600018, 0xac67001c, 0xa00050c, 0x8fbf001c, 0x3c020800, 0x8c420020, 0x104000b3, 0x8fbf001c, 0xe000d71, 0x0, 0x96240008, 0x3c030800, 0x94634bfe, 0x9625000c, 0x42202, 0x9626000e, 0x8f82002c, 0x42600, 0x832025, 0x52c00, 0x3c030080, 0xa62825, 0x832025, 0xac400000, 0xac400004, 0xac400008, 0xac40000c, 0xac450010, 0xac400014, 0xac400018, 0xac44001c, 0xa00050b, 0x24040001, 0x9622000c, 0x14400017, 0x8f91ffac, 0x92220005, 0x30420010, 0x14400013, 0x0, 0xe000315, 0x2002021, 0x92220005, 0x2002021, 0x34420010, 0xe000320, 0xa2220005, 0x92220000, 0x24030020, 0x304200ff, 0x10430086, 0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa00104c, 0x27bd0020, 0xd, 0xa000549, 0x8fbf001c, 0x3c020800, 0x8c420020, 0x1040007a, 0x8fbf001c, 0xe000d71, 0x0, 0x8e220004, 0x8f83002c, 0x9624000c, 0x3c050800, 0x94a54bfe, 0xac620000, 0x3c028008, 0x9442002c, 0x42400, 0x3042ffff, 0x822025, 0x3c02400e, 0xa22825, 0xac640004, 0xac600008, 0xac60000c, 0xac600010, 0xac600014, 0xac600018, 0xac65001c, 0xa00050b, 0x24040001, 0xe000315, 0x2002021, 0x8f92ffb0, 0x2002021, 0xe000320, 0xa640000c, 0x2002021, 0xe000325, 0x24050001, 0x3c020800, 0x8c420020, 0x10400055, 0x8fbf001c, 0xe000d71, 0x0, 0x9622000c, 0x8f83002c, 0x8f84ffac, 0x21400, 0xac700000, 0xac620004, 0xac600008, 0x8c820038, 0x3c050800, 0x94a54bfe, 0xac62000c, 0x8c86003c, 0x3c02401f, 0xa22825, 0xac660010, 0x8e420004, 0x24040001, 0xac620014, 0xac600018, 0xac65001c, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000d98, 0x27bd0020, 0x8f82ffac, 0x24030020, 0x90420000, 0x304200ff, 0x10430033, 0x8fbf001c, 0xe000f37, 0x0, 0x1040002f, 0x8fbf001c, 0x3c038000, 0x8c6201f8, 0x440fffe, 0x24020002, 0xac7001c0, 0xa06201c4, 0x3c021000, 0xac6201f8, 0xa000549, 0x8fbf001c, 0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000e80, 0x27bd0020, 0x9625000c, 0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000ea5, 0x27bd0020, 0x2002021, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000ed0, 0x27bd0020, 0x9225000d, 0x2002021, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000f21, 0x27bd0020, 0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000ef8, 0x27bd0020, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3c038000, 0x8c620278, 0x440fffe, 0x24020002, 0xac640240, 0xa0620244, 0x3c021000, 0x3e00008, 0xac620278, 0x411c0, 0x3e00008, 0x24420240, 0xa3800018, 0x3e00008, 0xa3800019, 0x3c038000, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0x3e00008, 0xac620278, 0x3e00008, 0x0, 0x90830030, 0x24020005, 0x804021, 0x3063003f, 0x4821, 0x14620005, 0x5021, 0x9082004c, 0x9483004e, 0x304900ff, 0x306affff, 0xad00000c, 0xad000010, 0xad000024, 0x95020014, 0x8d05001c, 0x8d040018, 0x3042ffff, 0x491023, 0x21100, 0x237c3, 0x403821, 0x862023, 0xa2102b, 0x822023, 0xa72823, 0xad05001c, 0xad040018, 0xa5090014, 0xa5090020, 0xa50a0016, 0x3e00008, 0xa50a0022, 0x3e00008, 0x0, 0x27bdffd8, 0xafb20018, 0x3c128008, 0xafb40020, 0xafb3001c, 0xafb10014, 0xafbf0024, 0xafb00010, 0x36510100, 0x9222000c, 0x3c140800, 0x929400f7, 0x304300ff, 0x24020001, 0x10620031, 0x809821, 0x24020002, 0x14620034, 0x36500080, 0xe001242, 0x0, 0x9204004c, 0xe000557, 0x3084007f, 0x2621021, 0x2403ff80, 0x431824, 0x3c048000, 0xac830094, 0x92450008, 0x9204004c, 0x3042007f, 0x3c038006, 0x14850007, 0x438021, 0x2402ffff, 0xa2220011, 0x2402ffff, 0xa6220012, 0xa0005ba, 0x2402ffff, 0x96020020, 0xa2220011, 0x96020022, 0xa6220012, 0x8e020024, 0x3c048008, 0xae220014, 0x34850080, 0x90a2004c, 0x34830100, 0xa0620010, 0x8ca2003c, 0xac620018, 0x8c820068, 0xac6200e4, 0x8c820064, 0xac6200e0, 0x8c82006c, 0xac6200e8, 0x24020001, 0xa0a20068, 0xa0005d6, 0x3c048008, 0xe00125b, 0x0, 0x36420080, 0xa0400068, 0xa0005d6, 0x3c048008, 0xa2000068, 0xa2000069, 0xa000612, 0x3c028008, 0x34830080, 0x8c620038, 0x34850100, 0xac62006c, 0x24020001, 0xa0620069, 0x90a200c5, 0x90830008, 0x305100ff, 0x3072007f, 0x1232001b, 0x3c088008, 0xe000557, 0x2202021, 0x2621021, 0x2403ff80, 0x431824, 0x3c048000, 0xac830094, 0x3042007f, 0x3c038006, 0x438021, 0x8e02000c, 0x1040000d, 0x2002021, 0xe000569, 0x0, 0x26220001, 0x305100ff, 0x9203003c, 0x2341026, 0x2102b, 0x21023, 0x3063007f, 0x2228824, 0xa0005e0, 0xa203003c, 0x3c088008, 0x35040100, 0x8c8200d0, 0x35070080, 0xace2003c, 0x8c8200d0, 0xad020000, 0x90e5004c, 0x908600c5, 0x90e3004c, 0x908400c5, 0x2402ff80, 0xa22824, 0x3063007f, 0x308400ff, 0xa62825, 0x64182a, 0x10600002, 0x30a500ff, 0x38a50080, 0xa0e5004c, 0xa1050009, 0x3c028008, 0x9043000e, 0x34440080, 0x3c058000, 0xa043000a, 0x8c830018, 0x3c027fff, 0x3442ffff, 0x621824, 0xac830018, 0x8ca201f8, 0x440fffe, 0x0, 0xacb301c0, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24020002, 0xa0a201c4, 0x27bd0028, 0x3c021000, 0x3e00008, 0xaca201f8, 0x90a20000, 0x27bdffe0, 0xafb20018, 0x24420001, 0xa0a20000, 0x3c030800, 0x8c6300f4, 0x304200ff, 0xafb10014, 0xafbf001c, 0xafb00010, 0xa08821, 0x14430002, 0x809021, 0xa0a00000, 0xe000557, 0x92240000, 0x8f90001c, 0x2403ff80, 0x2021021, 0x431024, 0x3c038000, 0xac620024, 0xe000557, 0x92240000, 0x2028021, 0x3210007f, 0x3c02800a, 0x2028021, 0xae500000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x94820006, 0x90830005, 0x8c85000c, 0x8c860010, 0x8c870018, 0x8c88001c, 0x8c840020, 0x3c010800, 0xa4224bd2, 0x3c010800, 0xa0234bd1, 0x3c010800, 0xac254bd8, 0x3c010800, 0xac264bdc, 0x3c010800, 0xac274be4, 0x3c010800, 0xac284be8, 0x3c010800, 0xac244bec, 0x3e00008, 0x0, 0x3c028008, 0x34420100, 0x8c440034, 0x3c038000, 0x34650400, 0xac640038, 0x8c420038, 0xaf850030, 0xac62003c, 0x3c020005, 0xac620030, 0x0, 0x0, 0x3e00008, 0x0, 0x3c020006, 0x308400ff, 0x822025, 0x3c028000, 0xac440030, 0x0, 0x0, 0x0, 0x3c038000, 0x8c620000, 0x30420010, 0x1040fffd, 0x34620400, 0x3e00008, 0xaf820030, 0x94c20000, 0x3c080800, 0x950800ca, 0x30e7ffff, 0x804821, 0x1021021, 0xa4c20000, 0x94c20000, 0x3042ffff, 0xe2102b, 0x54400001, 0xa4c70000, 0x94a20000, 0x3c030800, 0x8c6300cc, 0x24420001, 0xa4a20000, 0x94a20000, 0x3042ffff, 0x14430007, 0x3c028008, 0x107102b, 0xa4a00000, 0x54400001, 0x1003821, 0xa4c70000, 0x3c028008, 0x34460100, 0x8cc30028, 0x94a20000, 0x3c048000, 0x3042fffe, 0x210c0, 0x621021, 0xac82003c, 0x8c82003c, 0x621823, 0x18600004, 0x0, 0x8cc20024, 0xa0006af, 0x24420001, 0x8cc20024, 0xac820038, 0x3c020050, 0x34420010, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420020, 0x1040fffd, 0x0, 0x94a20000, 0x3c048000, 0x30420001, 0x210c0, 0x441021, 0x8c430400, 0xad230000, 0x8c420404, 0xad220004, 0x3c020020, 0x3e00008, 0xac820030, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x94c20000, 0xc08021, 0x3c120800, 0x965200c6, 0x24420001, 0xa6020000, 0x96030000, 0x94e20000, 0xe03021, 0x14430005, 0x8fb10030, 0xe000684, 0x2403821, 0xa0006e6, 0x0, 0x8c830004, 0x8c820004, 0x24420040, 0x4610007, 0xac820004, 0x8c820004, 0x4400004, 0x0, 0x8c820000, 0x24420001, 0xac820000, 0x96020000, 0x3042ffff, 0x50520001, 0xa6000000, 0x96220000, 0x24420001, 0xa6220000, 0x3c028008, 0x34420100, 0x96230000, 0x9442003c, 0x14430004, 0x8fbf001c, 0x24020001, 0xa6220000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0x3c028008, 0xafbf0018, 0x34420100, 0x8c480034, 0x3c038000, 0x34690400, 0xac680038, 0x8c420038, 0x30e700ff, 0xaf890030, 0xac62003c, 0x3c020005, 0xac620030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c82000c, 0x8c82000c, 0x97830016, 0xad220000, 0x8c820010, 0x604021, 0xad220004, 0x8c820018, 0xad220008, 0x8c82001c, 0xad22000c, 0x8ca20014, 0xad220010, 0x8c820020, 0xad220014, 0x90820005, 0x304200ff, 0x21200, 0xad220018, 0x8ca20018, 0xad22001c, 0x8ca2000c, 0xad220020, 0x8ca20010, 0xad220024, 0x8ca2001c, 0xad220028, 0x8ca20020, 0xad22002c, 0x3402ffff, 0xad260030, 0xad200034, 0x50620001, 0x3408ffff, 0xad280038, 0x50e00011, 0x3c028008, 0x3c048008, 0x34840100, 0x94820050, 0x3042ffff, 0xad22003c, 0x94830044, 0x94850044, 0x24020001, 0x3063ffff, 0x318c2, 0x641821, 0x90640054, 0x30a50007, 0xa21004, 0xa000751, 0x441025, 0x34420100, 0xad20003c, 0x94430044, 0x94440044, 0x3063ffff, 0x318c2, 0x621821, 0x30840007, 0x90650054, 0x24020001, 0x821004, 0x21027, 0x451024, 0xa0620054, 0x0, 0x0, 0x0, 0x3c020006, 0x34420040, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420010, 0x1040fffd, 0x3c068008, 0x34c20150, 0x34630400, 0x34c7014a, 0x34c40134, 0x34c50140, 0x34c60144, 0xafa20010, 0xe0006c7, 0xaf830030, 0x8fbf0018, 0x3e00008, 0x27bd0020, 0x8f830014, 0x3c050800, 0x8ca500e8, 0x8f82001c, 0x30633fff, 0x31980, 0x451021, 0x431021, 0x2403ff80, 0x431824, 0x3c058000, 0xaca30028, 0x3042007f, 0x3c03800c, 0x433021, 0x90c2000d, 0x3821, 0x34420010, 0xa0c2000d, 0x8f890014, 0x3c028008, 0x34420100, 0x94430044, 0x91382, 0x30480003, 0x24020001, 0xa4c3000e, 0x1102000b, 0x29020002, 0x10400005, 0x24020002, 0x1100000c, 0x24030001, 0xa000798, 0x1821, 0x11020006, 0x0, 0xa000798, 0x1821, 0x8cc2002c, 0xa000798, 0x24430001, 0x8cc20014, 0x24430001, 0x8cc20018, 0x43102b, 0x14400003, 0x3c038008, 0xa0007a2, 0x24070001, 0x34630100, 0x9462004c, 0x24420001, 0xa462004c, 0x91382, 0x30430003, 0x2c620002, 0x10400009, 0x802821, 0x14600004, 0x0, 0x94c20034, 0xa0007b2, 0x3046ffff, 0x8cc60038, 0xa0007b2, 0x802821, 0x3021, 0x3c040800, 0x24844bcc, 0xa0006fb, 0x0, 0x27bdff90, 0xafb60068, 0xafb50064, 0xafb40060, 0xafb3005c, 0xafb20058, 0xafb10054, 0xafbf006c, 0xafb00050, 0x8c900000, 0x80b021, 0x3c020800, 0x8c4200e8, 0x96040032, 0x8f83001c, 0x2414ff80, 0x30843fff, 0x621821, 0x42180, 0x641821, 0x741024, 0x3c138000, 0xa09021, 0x90a50000, 0xae620028, 0x92040032, 0x3c02800c, 0x3063007f, 0x628821, 0x308400c0, 0x24020040, 0x1482002d, 0xa821, 0x8e350038, 0x8e220018, 0x14400002, 0x24020001, 0xae220018, 0x9202003c, 0x30420020, 0x1440000f, 0x0, 0xe000557, 0xa02021, 0x8f83001c, 0x621821, 0x30640078, 0x3c020080, 0x822025, 0x741824, 0xae630800, 0xae640810, 0x8e220018, 0x8e030008, 0x431021, 0xae220018, 0x8e22002c, 0x8e230018, 0x24420001, 0x62182b, 0x1060003d, 0x0, 0x92420000, 0x24420001, 0xa2420000, 0x3c030800, 0x8c6300f4, 0x304200ff, 0x50430001, 0xa2400000, 0xe000557, 0x92440000, 0x8f90001c, 0x2021021, 0x541024, 0xa0008b8, 0xae620024, 0x92030032, 0x2402ffc0, 0x431024, 0x304200ff, 0x14400005, 0x24020001, 0xae220018, 0x96220034, 0xa00082e, 0x3055ffff, 0x8e220014, 0x24420001, 0xae220018, 0x92020030, 0x21600, 0x21603, 0x441001c, 0x0, 0x96020032, 0x27a40010, 0x802821, 0xa7a20016, 0x96020032, 0x3021, 0x24070001, 0x3042ffff, 0xaf820014, 0xe0006fb, 0xafa0001c, 0x96020032, 0x8f83001c, 0x3c040800, 0x8c8400e8, 0x30423fff, 0x21180, 0x641821, 0x621821, 0x741024, 0xae62002c, 0x3063007f, 0x3c02800e, 0x621821, 0x9062000d, 0x3042007f, 0xa062000d, 0x9222000d, 0x30420010, 0x50400078, 0x92420000, 0x3c028008, 0x34440100, 0x9482004c, 0x8ec30000, 0x3c130800, 0x967300c6, 0x2442ffff, 0xa482004c, 0x94620032, 0x9623000e, 0x3054ffff, 0x3070ffff, 0x3c030800, 0x8c6300d0, 0x701807, 0xa7a30038, 0x9482003e, 0x3063ffff, 0x3042ffff, 0x14620007, 0x0, 0x8c820030, 0x3c038000, 0x24420030, 0xac62003c, 0xa000856, 0x8c82002c, 0x94820040, 0x3042ffff, 0x54620009, 0x27a40040, 0x8c820038, 0x3c038000, 0x24420030, 0xac62003c, 0x8c820034, 0xac620038, 0xa000865, 0x3c038000, 0x27a50038, 0x27a60048, 0x2603821, 0xe000684, 0xa7a00048, 0x8fa30040, 0x3c028000, 0x24630030, 0xac430038, 0x8fa30044, 0xac43003c, 0x3c038000, 0x3c020005, 0xac620030, 0x3c028008, 0x34440100, 0x94820042, 0x34630400, 0x3042ffff, 0x202102b, 0x14400007, 0xaf830030, 0x9482004e, 0x94830042, 0x2021021, 0x431023, 0xa00087b, 0x3043ffff, 0x9483004e, 0x94820042, 0x2631821, 0x501023, 0x621823, 0x3063ffff, 0x3c028008, 0x34440100, 0x9482003c, 0x3042ffff, 0x14430003, 0x0, 0xa00088b, 0x24030001, 0x9482003c, 0x3042ffff, 0x62102b, 0x14400005, 0x8f820030, 0x9482003c, 0x621023, 0x3043ffff, 0x8f820030, 0xac550000, 0xac400004, 0xac540008, 0xac43000c, 0x3c020006, 0x34420010, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420010, 0x1040fffd, 0x3c048008, 0x34840100, 0x1018c2, 0x641821, 0x90650054, 0x32020007, 0x24060001, 0x461004, 0x451025, 0xa0620054, 0x94830042, 0x9622000e, 0x50430001, 0xa3860018, 0x92420000, 0x24420001, 0xa2420000, 0x3c030800, 0x8c6300f4, 0x304200ff, 0x50430001, 0xa2400000, 0xe000557, 0x92440000, 0x8f90001c, 0x2403ff80, 0x2021021, 0x431024, 0x3c038000, 0xac620024, 0xe000557, 0x92440000, 0x2028021, 0x3210007f, 0x3c02800a, 0x2028021, 0xaed00000, 0x8fbf006c, 0x8fb60068, 0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, 0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0070, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0x809821, 0xe08021, 0x30b1ffff, 0xe000d71, 0x30d200ff, 0x0, 0x0, 0x0, 0x8f82002c, 0xac510000, 0xac520004, 0xac530008, 0xac40000c, 0xac400010, 0xac400014, 0xac400018, 0x3c030800, 0x94634bfe, 0x2038025, 0xac50001c, 0x0, 0x0, 0x0, 0x24040001, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000d98, 0x27bd0028, 0x30a5ffff, 0x30c600ff, 0x24030c80, 0x3c028000, 0xac430024, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0008c9, 0x0, 0x3c028008, 0x34430100, 0x9462000e, 0x3c080800, 0x950800c6, 0x3046ffff, 0x14c00004, 0x3402ffff, 0x946500da, 0xa00091f, 0x8f84001c, 0x10c20027, 0x0, 0x9462004e, 0x9464003c, 0x3045ffff, 0xa61023, 0xa6182b, 0x3087ffff, 0x10600004, 0x3044ffff, 0xc51023, 0xe21023, 0x3044ffff, 0x88102b, 0x1040000e, 0xe81023, 0x3c028008, 0x34440100, 0x24030001, 0x34420080, 0xa4430016, 0x2402ffff, 0xa482000e, 0x948500da, 0x8f84001c, 0x3021, 0x30a5ffff, 0xa0008ee, 0x3c076020, 0x44102a, 0x10400009, 0x3c028008, 0x34430080, 0x94620016, 0x30420001, 0x10400004, 0x3c028000, 0x9442007e, 0x24420014, 0xa4620016, 0x3e00008, 0x0, 0x27bdffe0, 0x3c028008, 0xafbf001c, 0xafb00018, 0x34420100, 0x94430042, 0x9442004c, 0x10400019, 0x3068ffff, 0x93830018, 0x24020001, 0x14620029, 0x8fbf001c, 0x3c068008, 0x34d00100, 0x810c2, 0x501021, 0x90420054, 0x31030007, 0x34c70148, 0x304200ff, 0x621007, 0x30420001, 0x34c9014e, 0x34c4012c, 0x34c5013e, 0x10400016, 0x34c60142, 0xe0006c7, 0xafa90010, 0x96020042, 0xa00093c, 0x3048ffff, 0x3c028008, 0x34440100, 0x94830044, 0x94820042, 0x1043000f, 0x8fbf001c, 0x94820044, 0xa4820042, 0x94820050, 0xa482004e, 0x8c820038, 0xac820030, 0x94820040, 0xa482003e, 0x9482004a, 0xa4820048, 0x8fbf001c, 0x8fb00018, 0xa0008fa, 0x27bd0020, 0x8fb00018, 0x3e00008, 0x27bd0020, 0x27bdffa0, 0xafb1004c, 0x3c118000, 0xafbf0058, 0xafb30054, 0xafb20050, 0xafb00048, 0x36260188, 0x90c20003, 0x3044007f, 0xa3a40010, 0x8e320180, 0x90c20000, 0x3043007f, 0x24020003, 0x1062003b, 0xaf92001c, 0x28620004, 0x10400006, 0x24020004, 0x24020002, 0x10620009, 0x8fbf0058, 0xa000b03, 0x8fb30054, 0x1062004b, 0x24020005, 0x1062014c, 0x8fbf0058, 0xa000b03, 0x8fb30054, 0x411c0, 0x2421021, 0x2404ff80, 0x24420240, 0x441024, 0x26430040, 0xae220024, 0x3063007f, 0x3c02800a, 0x621821, 0x9062003c, 0xafa3003c, 0x441025, 0xa062003c, 0x8fa3003c, 0x9062003c, 0x30420040, 0x1040016a, 0x8fbf0058, 0x3c108008, 0xa3800018, 0x36100100, 0x8e0200d0, 0x8c630034, 0x27a4003c, 0x27a50010, 0x431021, 0xe0007b4, 0xae0200d0, 0x93a20010, 0x3c038000, 0xa20200c5, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0xac620278, 0xe00092f, 0x0, 0xa000b02, 0x8fbf0058, 0x3c058008, 0x90c30001, 0x90a2000b, 0x1443014c, 0x8fbf0058, 0x34a40080, 0x8c820018, 0x9082004c, 0x90a20008, 0x8c830018, 0x3c027fff, 0x3442ffff, 0x621824, 0x3c020800, 0x8c4200b4, 0xac830018, 0x3c038000, 0x24420001, 0x3c010800, 0xac2200b4, 0x8c6201f8, 0x440fffe, 0x8f82001c, 0xac6201c0, 0xa000aca, 0x24020002, 0x3c108008, 0x90c30001, 0x9202000b, 0x14430132, 0x8fbf0058, 0x36050110, 0x27a40018, 0xe000e20, 0x24060003, 0x27a40028, 0x360501e0, 0xe000e20, 0x24060003, 0x8fa20028, 0x36030100, 0xae020064, 0x8fa2002c, 0xae020068, 0x8fa20030, 0xae02006c, 0x93a40018, 0x906300c5, 0x2402ff80, 0x821024, 0x431025, 0x305000ff, 0x3084007f, 0x3202007f, 0x82102a, 0x54400001, 0x3a100080, 0xe000557, 0x0, 0x2421021, 0x2403ff80, 0x431024, 0xae220094, 0x93a40018, 0x3c130800, 0x927300f7, 0xe000557, 0x3084007f, 0x2421021, 0x3042007f, 0x3c038006, 0x434021, 0x8fa3001c, 0x2402ffff, 0x10620034, 0xafa80040, 0x93a20019, 0x95030014, 0x304400ff, 0x3063ffff, 0x64182b, 0x10600010, 0x0, 0x95040014, 0x8d07001c, 0x8d060018, 0x3084ffff, 0x442023, 0x42100, 0xe43821, 0x1021, 0xe4202b, 0xc23021, 0xc43021, 0xad07001c, 0xad060018, 0xa000a23, 0x93a20019, 0x95040014, 0x8d07001c, 0x8d060018, 0x3084ffff, 0x822023, 0x42100, 0x1021, 0x801821, 0xc23023, 0xe4202b, 0xc43023, 0xe33823, 0xad07001c, 0xad060018, 0x93a20019, 0x8fa30040, 0xa4620014, 0x97a2001a, 0xa4620016, 0x8fa2001c, 0xac620010, 0x8fa2001c, 0xac62000c, 0x93a20019, 0xa4620020, 0x97a2001a, 0xa4620022, 0x8fa2001c, 0xac620024, 0x3c048008, 0x34830080, 0x8c620038, 0x8fa20020, 0x2008821, 0xac62003c, 0x8fa20020, 0xac820000, 0x93a20018, 0xa062004c, 0x93a20018, 0xa0820009, 0xa0600068, 0x93a20018, 0x10510052, 0x93a40018, 0x3230007f, 0xe000557, 0x2002021, 0x2421021, 0x2407ff80, 0x3046007f, 0x3c038000, 0x471024, 0xac620094, 0x3c028006, 0xc23021, 0x90c2003c, 0xafa60040, 0x2021, 0x471025, 0xa0c2003c, 0x8fa80040, 0x95020002, 0x95030014, 0x8d07001c, 0x3042ffff, 0x3063ffff, 0x8d060018, 0x431023, 0x21100, 0xe23821, 0xe2102b, 0xc43021, 0xc23021, 0xad07001c, 0xad060018, 0x95020002, 0xa5020014, 0xa5000016, 0x8d020008, 0xad020010, 0x8d020008, 0xad02000c, 0x95020002, 0xa5020020, 0xa5000022, 0x8d020008, 0xad020024, 0x9102003c, 0x30420040, 0x1040001a, 0x26220001, 0xa3b00038, 0x3c108008, 0xa3800018, 0x36100100, 0x8e0200d0, 0x8d030034, 0x27a40040, 0x27a50038, 0x431021, 0xe0007b4, 0xae0200d0, 0x93a20038, 0x3c038000, 0xa20200c5, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0xac620278, 0xe00092f, 0x0, 0x26220001, 0x3043007f, 0x14730004, 0x402021, 0x2403ff80, 0x2231024, 0x432026, 0x93a20018, 0xa000a3f, 0x309100ff, 0x8fa3001c, 0x2402ffff, 0x1062000a, 0x309000ff, 0x24820001, 0x24830001, 0x3042007f, 0x14530005, 0x307000ff, 0x2403ff80, 0x831024, 0x431026, 0x305000ff, 0x3c028008, 0x90420008, 0x2008821, 0x305000ff, 0x12300019, 0x3222007f, 0x211c0, 0x2421021, 0x24420240, 0x2403ff80, 0x431824, 0x3c048000, 0xac830094, 0x3042007f, 0x3c038006, 0x431021, 0x8c43000c, 0x402021, 0x1060000b, 0xafa20040, 0xe000569, 0x0, 0x26230001, 0x2405ff80, 0x3062007f, 0x14530002, 0x2252024, 0x851826, 0xa000aa3, 0x307100ff, 0x3c048008, 0x34840080, 0x8c830018, 0x3c027fff, 0x3442ffff, 0x621824, 0xac830018, 0x3c038000, 0x8c6201f8, 0x440fffe, 0x0, 0xac7201c0, 0x24020002, 0xa06201c4, 0x3c021000, 0xac6201f8, 0xa000b02, 0x8fbf0058, 0x3c048008, 0x90c30001, 0x9082000b, 0x1443002f, 0x8fbf0058, 0x34900080, 0x92020008, 0x30420040, 0x10400020, 0x0, 0x92020008, 0x21600, 0x21603, 0x4410005, 0x2402021, 0xe000ea5, 0x24050093, 0xa000b02, 0x8fbf0058, 0x92020009, 0x24030018, 0x304200ff, 0x1443000d, 0x2402021, 0x24050039, 0xe000e3d, 0x3021, 0xe000315, 0x8f84001c, 0x8f82ffac, 0x24030012, 0xa0430009, 0xe000320, 0x8f84001c, 0xa000b02, 0x8fbf0058, 0x24050036, 0xe000e3d, 0x3021, 0xa000b02, 0x8fbf0058, 0xe000315, 0x2402021, 0x92020005, 0x8f84001c, 0x34420020, 0xe000320, 0xa2020005, 0xe00104c, 0x8f84001c, 0x8fbf0058, 0x8fb30054, 0x8fb20050, 0x8fb1004c, 0x8fb00048, 0x24030c80, 0x3c028000, 0x27bd0060, 0x3e00008, 0xac430024, 0x27bdffe8, 0x3c028008, 0xafb00010, 0xafbf0014, 0x34450100, 0x3c108000, 0x8e020140, 0x94a3000e, 0x3021, 0x402021, 0xaf82001c, 0x3063ffff, 0x3402ffff, 0x10620006, 0x3c076020, 0x2402ffff, 0xa4a2000e, 0x94a500da, 0xe0008ee, 0x30a5ffff, 0x24020c80, 0xae020024, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x27bdffc0, 0x3c098000, 0x3c058008, 0xafb70034, 0xafb20020, 0xafbf0038, 0xafb60030, 0xafb5002c, 0xafb40028, 0xafb30024, 0xafb1001c, 0xafb00018, 0x35320100, 0x34a80100, 0x8d270100, 0x8e420014, 0x8d0300d4, 0xb821, 0xa3800018, 0x431023, 0x18400055, 0xaf87001c, 0x8e420014, 0x2403ff80, 0x24e40040, 0xad0200d4, 0x90a60008, 0x910500c5, 0x3084007f, 0x30d3007f, 0x30a200ff, 0x211c0, 0xe21021, 0x24420240, 0xa3a50010, 0x431024, 0x8d1400d0, 0x8d1500d4, 0xad220024, 0x93a30010, 0x3c02800a, 0x822021, 0xafa40014, 0x10730033, 0xb021, 0x8fa30014, 0x27a40014, 0x27a50010, 0x8c620034, 0x2828021, 0x2b01023, 0x440002b, 0x2411ff80, 0x9062003c, 0x2221024, 0x304200ff, 0x1440001b, 0x200a021, 0x9062003c, 0x34420040, 0xa062003c, 0x93a20010, 0x24420001, 0x304300ff, 0xa3a20010, 0x3c020800, 0x8c4200f4, 0x50620001, 0xa3a00010, 0xe000557, 0x93a40010, 0x8f90001c, 0x3c038000, 0x2021021, 0x511024, 0xac620024, 0xe000557, 0x93a40010, 0x2028021, 0x3210007f, 0x3c02800a, 0x2028021, 0xa000b81, 0xafb00014, 0xe0007b4, 0x0, 0x3c028008, 0x34420100, 0xac5000d0, 0x93a30010, 0x24160001, 0xa04300c5, 0x93a20010, 0x1453ffd0, 0x8fa30014, 0x24020001, 0x16c20009, 0x3c038000, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0xac620278, 0x9242000b, 0x24030002, 0x304200ff, 0x14430072, 0x0, 0x96420008, 0x304300ff, 0x24020082, 0x14620040, 0x24020084, 0x3c028000, 0x34490100, 0x8d22000c, 0x95230006, 0x21602, 0x3063ffff, 0x3044003f, 0x24020027, 0x1082000f, 0xaf830014, 0x28820028, 0x10400008, 0x24020031, 0x24020021, 0x10820009, 0x24020025, 0x10820007, 0x93820019, 0xa000bc0, 0x0, 0x10820007, 0x93820019, 0xa000bc0, 0x0, 0xe00076c, 0x1202021, 0xa000c40, 0x0, 0x3c038000, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0xac620278, 0xa000c40, 0x0, 0x95230006, 0x91240005, 0x8d25000c, 0x8d260010, 0x8d270018, 0x8d28001c, 0x8d290020, 0x24420001, 0x3c010800, 0xa4234bd2, 0x3c010800, 0xa0244bd1, 0x3c010800, 0xac254bd8, 0x3c010800, 0xac264bdc, 0x3c010800, 0xac274be4, 0x3c010800, 0xac284be8, 0x3c010800, 0xac294bec, 0xa000c40, 0xa3820019, 0x1462000a, 0x24020081, 0x3c028008, 0x34420100, 0x944500da, 0x92460005, 0x8f84001c, 0x30a5ffff, 0x30c600ff, 0xa000c01, 0x3c076021, 0x1462005c, 0x0, 0x9242000a, 0x304300ff, 0x30620020, 0x10400007, 0x30620040, 0x3c028008, 0x34420100, 0x944500da, 0x8f84001c, 0xa000bff, 0x24060040, 0x10400007, 0x31600, 0x3c028008, 0x34420100, 0x944500da, 0x8f84001c, 0xa000bff, 0x24060041, 0x21603, 0x4410046, 0x3c028008, 0x34420100, 0x944500da, 0x8f84001c, 0x24060042, 0x30a5ffff, 0x3c076019, 0xe0008ee, 0x0, 0xa000c40, 0x0, 0x9242000b, 0x24040016, 0x304200ff, 0x10440006, 0x3c068000, 0x9242000b, 0x24030017, 0x304200ff, 0x14430032, 0x0, 0x34c50100, 0x90a2000b, 0x304200ff, 0x1444000b, 0x8021, 0x8ca20020, 0x8ca40020, 0x2403ff80, 0x431024, 0x21140, 0x3084007f, 0x441025, 0x3c032000, 0x431025, 0xacc20830, 0x94a20008, 0x21400, 0x21403, 0x4420001, 0x24100001, 0x94a20008, 0x30420080, 0x5040001a, 0x200b821, 0x94a20008, 0x30422000, 0x50400016, 0x200b821, 0x8ca30018, 0x3c021c2d, 0x344219ed, 0x10620011, 0x200b821, 0x3c020800, 0x8c4200d4, 0x10400005, 0x3c028008, 0x24030004, 0x34420100, 0xa04300ec, 0x3c028008, 0x34420100, 0x944500da, 0x8f84001c, 0x24060006, 0x30a5ffff, 0xe0008ee, 0x3c076021, 0x200b821, 0xe00092f, 0x0, 0x9242000a, 0x30420008, 0x10400004, 0x3c028000, 0xe00121f, 0x0, 0x3c028000, 0x24030c80, 0xac430024, 0x8fbf0038, 0x2e01021, 0x8fb60030, 0x8fb70034, 0x8fb5002c, 0x8fb40028, 0x8fb30024, 0x8fb20020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0040, 0x2402ff80, 0x822024, 0x3c029000, 0x34420007, 0x822025, 0x3c028000, 0xac440020, 0x3c038000, 0x8c620020, 0x440fffe, 0x0, 0x3e00008, 0x0, 0x3c038000, 0x2402ff80, 0x822024, 0x34620007, 0x822025, 0xac640020, 0x8c620020, 0x440fffe, 0x0, 0x3e00008, 0x0, 0x3c028008, 0x24030005, 0x34420100, 0xa04300ec, 0x3c028000, 0x8c420100, 0x3c038000, 0xaf82001c, 0x8c620278, 0x440fffe, 0x8f82001c, 0xac620240, 0x24020002, 0xa0620244, 0x3c021000, 0xac620278, 0x3e00008, 0x0, 0x27bdffe8, 0x3c068000, 0xafbf0010, 0x34c50100, 0x94a20008, 0x304400ff, 0x38830082, 0x38820084, 0x2c630001, 0x2c420001, 0x621825, 0x10600030, 0x24020083, 0x93820019, 0x50400039, 0x8fbf0010, 0x3c020800, 0x90424bd8, 0x8cc40100, 0x3c070800, 0x94e74bd2, 0x3046003f, 0x38c30032, 0x38c2003f, 0x2c630001, 0x2c420001, 0x621825, 0xaf84001c, 0xaf870014, 0xa3800019, 0x14600006, 0xa02021, 0x24020020, 0x14c20011, 0x3402ffff, 0x14e2000f, 0x0, 0x24020020, 0x14c20005, 0x0, 0x8ca30014, 0x2402ffff, 0x1062000a, 0x0, 0x3c040800, 0x24844bcc, 0x3021, 0xe0006fb, 0x24070001, 0xa000cb6, 0x0, 0xe00076c, 0x0, 0xe00092f, 0x0, 0x24030c80, 0x3c028000, 0xac430024, 0xa000cef, 0x8fbf0010, 0x14820006, 0x2482ff80, 0x8cc30104, 0x3c026020, 0xac430014, 0xa000cef, 0x8fbf0010, 0x304200ff, 0x2c420002, 0x10400004, 0x24020022, 0x8fbf0010, 0xa000b25, 0x27bd0018, 0x14820003, 0x8fbf0010, 0xa000c6f, 0x27bd0018, 0x3c020800, 0x8c420020, 0x1040001d, 0x24020018, 0x90a30009, 0x14620003, 0x24020016, 0xa000cdb, 0x24030008, 0x14620007, 0x24020017, 0x24030012, 0x3c028008, 0x34420080, 0xa0430009, 0xa000ce8, 0x94a70008, 0x54620007, 0x94a70008, 0x8f82ffac, 0x2404fffe, 0x90430005, 0x641824, 0xa0430005, 0x94a70008, 0x90a6001b, 0x8ca40000, 0x94a50006, 0x8fbf0010, 0x73c00, 0xa0008c9, 0x27bd0018, 0x3e00008, 0x27bd0018, 0x3c050800, 0x94a54c0a, 0x3c030800, 0x8c634c14, 0x3c048000, 0x30a2ffff, 0x230c0, 0x2402fff0, 0xc21024, 0x621821, 0xac83003c, 0x3c020800, 0x8c424c10, 0x3c038000, 0xac820038, 0x3c020050, 0x34420010, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420020, 0x1040fffd, 0x30c20008, 0x10400009, 0x3c028000, 0x8c620408, 0x8c63040c, 0x3c010800, 0xac224c00, 0x3c010800, 0xac234c04, 0xa000d1b, 0x3c030020, 0x8c430400, 0x8c420404, 0x3c010800, 0xac234c00, 0x3c010800, 0xac224c04, 0x3c030020, 0x3c028000, 0xac430030, 0x3c078000, 0x8ce20030, 0x431024, 0x1440fffd, 0x0, 0x3c030800, 0x94634c08, 0x3c020800, 0x94424c0c, 0x3c060800, 0x94c64c0e, 0x24a50001, 0x621821, 0x30a4ffff, 0x3c020040, 0xace20030, 0x3c010800, 0xa4234c08, 0x3c010800, 0xa4254c0a, 0x14860003, 0x0, 0x3c010800, 0xa4204c0a, 0x3e00008, 0x0, 0x27bdffe8, 0x3c040800, 0x24844bf0, 0x3c05800a, 0xafbf0010, 0xe000e20, 0x2406000a, 0x3c020800, 0x94424bf2, 0x3c030800, 0x94634c0e, 0x3042000f, 0x24420003, 0x431804, 0x24027fff, 0x43102b, 0x10400002, 0xaf830028, 0xd, 0xe000cf1, 0x0, 0x3c020800, 0x94424bf4, 0x3c030800, 0x94634bfa, 0x8fbf0010, 0x3042000f, 0x21500, 0x621825, 0x27bd0018, 0x3c028000, 0x3e00008, 0xac4300a0, 0x3c02800a, 0x94430006, 0x3c020800, 0x94424bfa, 0x3c010800, 0xa4234bf6, 0x431023, 0x8f830028, 0x3042ffff, 0x43102b, 0x3e00008, 0x38420001, 0x27bdffe8, 0xafbf0010, 0x3c02800a, 0x94420006, 0x3c010800, 0xa4224bf6, 0xe000d58, 0x0, 0x5440fffa, 0x3c02800a, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xafbf0010, 0xe000d58, 0x0, 0x10400003, 0x0, 0xe000d64, 0x0, 0x3c020800, 0x8c424c00, 0x3c038000, 0x8fbf0010, 0xac620038, 0x3c020800, 0x8c424c04, 0x34640400, 0x27bd0018, 0xac62003c, 0x3c020005, 0xac620030, 0xaf84002c, 0x3e00008, 0xaf800024, 0x8f820024, 0x3c030006, 0x21140, 0x431025, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420010, 0x1040fffd, 0x34620400, 0xaf82002c, 0x3e00008, 0xaf800024, 0x3c060800, 0x8cc64c04, 0x8f850024, 0x8f83002c, 0x3c020800, 0x94424bfa, 0x27bdffe0, 0x24a50001, 0x24630020, 0x24420001, 0x24c70020, 0xafb10014, 0xafb00010, 0xafbf0018, 0xaf850024, 0xaf83002c, 0x3c010800, 0xa4224bfa, 0x309000ff, 0x3c010800, 0xac274c04, 0x4c10008, 0x8821, 0x4e00006, 0x0, 0x3c020800, 0x8c424c00, 0x24420001, 0x3c010800, 0xac224c00, 0x3c040800, 0x94844c08, 0x3c020800, 0x94424bfa, 0x2e030001, 0x441026, 0x2c440001, 0x831824, 0x10600004, 0x10102b, 0x24020001, 0xaf820020, 0x10102b, 0x821025, 0x14400006, 0x8f820020, 0x14400004, 0x8f830024, 0x24020010, 0x1462000f, 0x0, 0xe000d88, 0x24110001, 0x3c030800, 0x94634bfa, 0x3c020800, 0x94424c08, 0x14620003, 0x0, 0xe000cf1, 0x0, 0x16000003, 0x0, 0xe000d71, 0x0, 0x3c030800, 0x94634bfe, 0x3c020800, 0x94424bfc, 0x24630001, 0x3064ffff, 0x3c010800, 0xa4234bfe, 0x14820003, 0x0, 0x3c010800, 0xa4204bfe, 0x1200000b, 0x0, 0x3c020800, 0x94424bf4, 0x3c030800, 0x94634bfa, 0x21500, 0x621825, 0x3c028000, 0xac4300a0, 0xa000df7, 0xaf800020, 0xe000d58, 0x0, 0x10400004, 0x2201021, 0xe000d64, 0x0, 0x2201021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3e00008, 0x0, 0x8f820034, 0x3c030006, 0x21140, 0x431025, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x8c620000, 0x30420010, 0x1040fffd, 0x34620400, 0xaf820030, 0x3e00008, 0xaf800034, 0x3e00008, 0x1021, 0x3e00008, 0x0, 0x3084ffff, 0x30a5ffff, 0x1821, 0x10800007, 0x0, 0x30820001, 0x10400002, 0x42042, 0x651821, 0xa000e16, 0x52840, 0x3e00008, 0x601021, 0x10c00006, 0x24c6ffff, 0x8ca20000, 0x24a50004, 0xac820000, 0xa000e20, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x3c028008, 0x34420080, 0x24030001, 0xac43000c, 0xa4430010, 0xa4430012, 0xa4430014, 0x3e00008, 0xa4430016, 0x27bdffd8, 0x24820080, 0x2407ff80, 0x3043007f, 0xafb00010, 0x808021, 0x472024, 0x3c020800, 0x8c420020, 0x3c08800e, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafbf0020, 0x3c098000, 0x681821, 0x30b100ff, 0x30d200ff, 0x10400029, 0x9821, 0x26020100, 0xad24002c, 0x472824, 0x3042007f, 0x482021, 0x90620000, 0x24030050, 0x304200ff, 0x14430004, 0x0, 0xad25002c, 0x948200da, 0x3053ffff, 0xe000d71, 0x0, 0x3c030800, 0x94634bfe, 0x8f82002c, 0x112c00, 0xa32825, 0x122400, 0x3c034000, 0x34840001, 0xa32825, 0xac500000, 0x8fbf0020, 0xac400004, 0x8fb20018, 0xac530008, 0x8fb10014, 0xac40000c, 0x8fb3001c, 0xac440010, 0x8fb00010, 0xac400014, 0x24040001, 0xac400018, 0x27bd0028, 0xa000d98, 0xac45001c, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x3c068000, 0x34c20100, 0x9043000f, 0x24020010, 0x1062000e, 0x28650011, 0x10a00007, 0x24020012, 0x24020008, 0x2405003a, 0x10620006, 0x3021, 0x3e00008, 0x0, 0x24050035, 0x1462fffc, 0x3021, 0xa000e3d, 0x0, 0x8cc20074, 0x8f83ffac, 0x24420fa0, 0x3e00008, 0xac62000c, 0x27bdffe8, 0xafbf0010, 0xe000325, 0x24050001, 0x3c048008, 0x8fbf0010, 0x24020001, 0x34830080, 0xa4620012, 0x27bd0018, 0x24020001, 0x3e00008, 0xa080001a, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x30b2ffff, 0xe000315, 0x808821, 0x3c028008, 0x34500080, 0x92020009, 0x24030004, 0x304200ff, 0x1443000c, 0x3c028008, 0x12400008, 0x2402000a, 0xe000e34, 0x0, 0x92020005, 0x2403fffe, 0x431024, 0xa2020005, 0x24020012, 0xa2020009, 0x3c028008, 0x34420080, 0x2202021, 0xe000320, 0xa0400027, 0x16400003, 0x2202021, 0xe000e98, 0x0, 0x2202021, 0x324600ff, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050038, 0xa000e3d, 0x27bd0020, 0x27bdffe0, 0xafbf001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xe000315, 0x808021, 0xe000e34, 0x0, 0x3c028008, 0x34450080, 0x90a20009, 0x24120018, 0x305100ff, 0x12320003, 0x2002021, 0x24020012, 0xa0a20009, 0x90a20005, 0x2403fffe, 0x431024, 0xe000320, 0xa0a20005, 0x2002021, 0x24050020, 0x16320007, 0x3021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000325, 0x27bd0020, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050039, 0xa000e3d, 0x27bd0020, 0x27bdffe8, 0x3c028000, 0xafb00010, 0xafbf0014, 0x34420100, 0x9442000c, 0x24050036, 0x808021, 0x14400012, 0x304600ff, 0xe000315, 0x0, 0x3c028008, 0x34420080, 0x24030012, 0xa0430009, 0x90430005, 0x34630010, 0xe000e34, 0xa0430005, 0xe000320, 0x2002021, 0x2002021, 0xe000325, 0x24050020, 0xa000f15, 0x0, 0xe000e3d, 0x0, 0xe000315, 0x2002021, 0x3c028008, 0x9043001b, 0x2405ff9f, 0x2002021, 0x651824, 0x8fbf0014, 0x8fb00010, 0xa043001b, 0xa000320, 0x27bd0018, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0x30b100ff, 0xe000315, 0x808021, 0x3c028008, 0x24030012, 0x34420080, 0xe000e34, 0xa0430009, 0xe000320, 0x2002021, 0x2002021, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24050035, 0xa000e3d, 0x27bd0020, 0x3c048008, 0x9083000e, 0x9082000a, 0x1443000b, 0x2821, 0x8f82ffac, 0x24030050, 0x24050001, 0x90420000, 0x304200ff, 0x14430004, 0x0, 0x9082000e, 0x24420001, 0xa082000e, 0x3e00008, 0xa01021, 0x3c038000, 0x8c6201f8, 0x440fffe, 0x24020002, 0xac6401c0, 0xa06201c4, 0x3c021000, 0x3e00008, 0xac6201f8, 0x27bdffe0, 0xafb20018, 0x3c128008, 0xafb10014, 0xafbf001c, 0xafb00010, 0x36510080, 0x92220009, 0x2403000a, 0x304200ff, 0x1443003a, 0x0, 0x8e430004, 0x8e220038, 0x5062007e, 0x8fbf001c, 0x92220000, 0x24030050, 0x304200ff, 0x14430025, 0x3c028000, 0x8c420140, 0x8e430004, 0x36420100, 0x2202821, 0xac43001c, 0x9622005c, 0x8e230038, 0x3042ffff, 0x21040, 0x621821, 0xae23001c, 0x8e430004, 0x8e240038, 0x9622005c, 0x641823, 0x3042ffff, 0x31843, 0x21040, 0x43102a, 0x10400006, 0x0, 0x8e420004, 0x8e230038, 0x431023, 0xa000f83, 0x22043, 0x9622005c, 0x3042ffff, 0x22040, 0x3c028008, 0x34430100, 0x34420080, 0xaca4002c, 0xa0400024, 0x24020001, 0xa062000c, 0xe000f37, 0x0, 0x10400051, 0x8fbf001c, 0x3c028000, 0x8c440140, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000f48, 0x27bd0020, 0x92220009, 0x24030010, 0x304200ff, 0x14430004, 0x3c028000, 0x8c440140, 0xa000fc5, 0x2821, 0x92220009, 0x24030016, 0x304200ff, 0x14430006, 0x24020014, 0xa2220009, 0x3c028000, 0x8c440140, 0xa000fd8, 0x8fbf001c, 0x8e220038, 0x8e23003c, 0x431023, 0x4410032, 0x8fbf001c, 0x92220027, 0x24420001, 0xa2220027, 0x92220027, 0x3c030800, 0x8c630048, 0x304200ff, 0x14430016, 0x3c108000, 0x92220009, 0x24030004, 0x304200ff, 0x14430009, 0x3c028000, 0x8c440140, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050093, 0xa000ea5, 0x27bd0020, 0x8c440140, 0x24050093, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa000f21, 0x27bd0020, 0x8e040140, 0xe000315, 0x0, 0x8e420004, 0x2442ffff, 0xae420004, 0x8e22003c, 0x2442ffff, 0xae22003c, 0xe000320, 0x8e040140, 0x8e040140, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24050004, 0xa000325, 0x27bd0020, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3c068000, 0x8cc20188, 0x3c038008, 0x34650080, 0x9063000e, 0x21402, 0x304400ff, 0x306300ff, 0x1464000e, 0x3c028008, 0x90a20026, 0x304200ff, 0x10440009, 0x8f82ffac, 0xa0a40026, 0x24030050, 0x90420000, 0x304200ff, 0x14430006, 0x0, 0xa00058c, 0x8cc40180, 0x3c028008, 0x34420080, 0xa0440026, 0x3e00008, 0x0, 0x27bdffe0, 0x30e700ff, 0xafb20018, 0xafbf001c, 0xafb10014, 0xafb00010, 0x809021, 0x14e00006, 0x30c600ff, 0x0, 0xd, 0x0, 0xa001037, 0x24000117, 0x3c038008, 0x9062000e, 0x304200ff, 0x14460023, 0x34620080, 0x90420026, 0x304200ff, 0x1446001f, 0x0, 0x9062000f, 0x304200ff, 0x1446001b, 0x0, 0x9062000a, 0x304200ff, 0x14460003, 0x8f90ffac, 0xd, 0x8f90ffac, 0x8f82ffb0, 0x3c118000, 0xae05003c, 0xac450000, 0xa066000a, 0xe000315, 0x8e240100, 0xa2000024, 0xe000320, 0x8e240100, 0x3c038000, 0x8c6201f8, 0x440fffe, 0x24020002, 0xac7201c0, 0xa06201c4, 0x3c021000, 0xac6201f8, 0xa001038, 0x8fbf001c, 0x0, 0xd, 0x0, 0x24000140, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x8f83ffac, 0x3c028000, 0x8c440100, 0x34420100, 0x8c65003c, 0x9046001b, 0xa000ffe, 0x24070001, 0x3c028008, 0x9043000e, 0x9042000a, 0x431026, 0x304200ff, 0x3e00008, 0x2102b, 0x27bdffe0, 0x3c028008, 0xafb10014, 0xafb00010, 0xafbf0018, 0x34500080, 0x92020005, 0x24030030, 0x30420030, 0x14430084, 0x808821, 0x3c020800, 0x8c420020, 0x10400081, 0x8fbf0018, 0xe000d71, 0x0, 0x8f86002c, 0xacd10000, 0x92020008, 0x92030009, 0x304200ff, 0x21200, 0x306300ff, 0x431025, 0xacc20004, 0x9202004d, 0x21600, 0x21603, 0x4410005, 0x0, 0x3c030800, 0x8c630048, 0xa001076, 0x3c108008, 0x92020008, 0x30420040, 0x14400003, 0x1821, 0x92020027, 0x304300ff, 0x3c108008, 0x36110080, 0x9222004d, 0x31e00, 0x3c050800, 0x94a54bfe, 0x304200ff, 0x21400, 0x621825, 0xacc30008, 0x8e230030, 0x3c02c00b, 0xa22825, 0xacc3000c, 0x8e220034, 0x2021, 0xacc20010, 0x8e220038, 0xacc20014, 0x8e22003c, 0xacc20018, 0xe000d98, 0xacc5001c, 0x8e020004, 0x8f84002c, 0x3c058000, 0xac820000, 0x8e220020, 0xac820004, 0x8e22001c, 0xac820008, 0x8e220058, 0x8ca30074, 0x431021, 0xac82000c, 0x8e22002c, 0xac820010, 0x8e220040, 0x8e230044, 0x21400, 0x431025, 0xac820014, 0x9222004d, 0x24030080, 0x304200ff, 0x14430003, 0x0, 0xa0010b8, 0xac800018, 0x8e23000c, 0x24020001, 0x1062000e, 0x2402ffff, 0x92220008, 0x30420040, 0x1440000a, 0x2402ffff, 0x8e23000c, 0x8ca20074, 0x621823, 0x3c020800, 0x621024, 0x14400002, 0x2821, 0x602821, 0x51043, 0xac820018, 0x3c020800, 0x94424bfe, 0x3c03c00c, 0x2021, 0x431025, 0x8f83002c, 0xe000d98, 0xac62001c, 0x3c048008, 0x34820100, 0x8c420000, 0x8f83002c, 0x34840080, 0x3c060800, 0x94c64bfe, 0xac620000, 0xac600004, 0x8c850048, 0x3c02400d, 0xc23025, 0xac650008, 0xac60000c, 0xac600010, 0x90820005, 0x8fbf0018, 0x8fb10014, 0x21600, 0xac620014, 0x8fb00010, 0xac600018, 0x24040001, 0xac66001c, 0xa000d98, 0x27bd0020, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3c028000, 0x9443007c, 0x3c028008, 0x34460100, 0x308400ff, 0x3065ffff, 0x24020005, 0x24a34650, 0xa0c4000c, 0x5482000c, 0x3065ffff, 0x90c2000d, 0x2c420007, 0x10400007, 0x24a30a00, 0x90c3000d, 0x24020014, 0x621004, 0xa21021, 0xa0010f5, 0x3045ffff, 0x3065ffff, 0x3c028008, 0x34420080, 0x3e00008, 0xa4450014, 0x3c038008, 0x34680080, 0xad050038, 0x34670100, 0x8ce2001c, 0x308400ff, 0xa21023, 0x18400003, 0x30c600ff, 0x24a2fffc, 0xace2001c, 0x30820001, 0x50400008, 0x3c038008, 0x8d02003c, 0xa21023, 0x4410012, 0x24040005, 0x8c620004, 0x10a2000f, 0x3c038008, 0x8c620004, 0x14a20018, 0x0, 0x3c020800, 0x8c4200d8, 0x30420020, 0x10400009, 0x3c028008, 0x34620080, 0x90630008, 0x9042004c, 0x14430004, 0x3c028008, 0x24040004, 0xa0010df, 0x0, 0x34430080, 0x34420100, 0xa040000c, 0x24020001, 0xa4620014, 0x10c00004, 0x3c028000, 0x8c440100, 0xa000f48, 0x0, 0x3e00008, 0x0, 0x27bdffe8, 0xa61823, 0xafbf0010, 0x1860004e, 0x308800ff, 0x3c028008, 0x34470080, 0xa0e00024, 0x34440100, 0xa0e00027, 0x8c82001c, 0xa21023, 0x440002b, 0x0, 0x8ce2003c, 0x94e3005c, 0x8ce4002c, 0x453023, 0x3063ffff, 0xc31821, 0x83202b, 0x10800004, 0xe01821, 0x8ce2002c, 0xa001148, 0xa21021, 0x94e2005c, 0x3042ffff, 0xc21021, 0xa21021, 0xac62001c, 0x3c028008, 0x34470080, 0x94e2005c, 0x8ce3001c, 0x3042ffff, 0x21040, 0xa21021, 0x43102b, 0x10400003, 0x0, 0xa001159, 0x8ce2001c, 0x94e2005c, 0x3042ffff, 0x21040, 0xa21021, 0xace2001c, 0x3c028008, 0x34420100, 0x8fbf0010, 0x1002021, 0x24060001, 0xa040000c, 0xa0010f9, 0x27bd0018, 0x8ce2001c, 0x461023, 0x43102b, 0x54400001, 0xace5001c, 0x94e2005c, 0x3042ffff, 0x62102b, 0x14400007, 0x24020002, 0x94e2005c, 0x8ce3001c, 0x3042ffff, 0x621821, 0xace3001c, 0x24020002, 0xace50038, 0xe000f37, 0xa082000c, 0x10400018, 0x8fbf0010, 0x3c028000, 0x8c440100, 0x8fbf0010, 0xa000f48, 0x27bd0018, 0x31020010, 0x10400010, 0x8fbf0010, 0x3c028008, 0x34450080, 0x8ca3001c, 0x94a2005c, 0x661823, 0x3042ffff, 0x621821, 0x3c023fff, 0x3444ffff, 0x83102b, 0x54400001, 0x801821, 0xc31021, 0xaca2001c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x27bdffe8, 0xc04021, 0xa63023, 0xafbf0010, 0x18c00026, 0x308a00ff, 0x3c028008, 0x34490080, 0x8d24001c, 0x8d23002c, 0x882023, 0x64182b, 0x1060000f, 0x34470100, 0x8ce20020, 0x461021, 0xace20020, 0x8ce20020, 0x44102b, 0x1440000b, 0x3c023fff, 0x8ce20020, 0x441023, 0xace20020, 0x9522005c, 0x3042ffff, 0xa0011ae, 0x822021, 0xace00020, 0x862021, 0x3c023fff, 0x3443ffff, 0x64102b, 0x54400001, 0x602021, 0x3c028008, 0x34420080, 0x851821, 0xac43001c, 0xa0400024, 0xa0400027, 0xa0011fd, 0x8fbf0010, 0x31420010, 0x10400040, 0x8fbf0010, 0x3c068008, 0x34c40080, 0x8c82003c, 0x481023, 0x5840003b, 0x1402021, 0x90820024, 0x24420001, 0xa0820024, 0x90820024, 0x3c030800, 0x8c630024, 0x304200ff, 0x43102b, 0x54400034, 0x8fbf0010, 0x34c20100, 0x8c42001c, 0xa21023, 0x1840002f, 0x8fbf0010, 0x8cc30004, 0x9482005c, 0x681823, 0x3042ffff, 0x31843, 0x21040, 0x43102a, 0x10400005, 0x0, 0x8cc20004, 0x481023, 0xa0011e3, 0x21043, 0x9482005c, 0x3042ffff, 0x21040, 0x3c068008, 0xac82002c, 0x34c50080, 0x94a2005c, 0x8ca4002c, 0x94a3005c, 0x3042ffff, 0x21040, 0x822021, 0x3063ffff, 0x832021, 0x1041021, 0xaca2001c, 0x8cc20004, 0x34c60100, 0xacc2001c, 0x24020002, 0xe000f37, 0xa0c2000c, 0x1040000a, 0x8fbf0010, 0x3c028000, 0x8c440100, 0x8fbf0010, 0xa000f48, 0x27bd0018, 0x1402021, 0x24060001, 0xa0010f9, 0x27bd0018, 0x3e00008, 0x27bd0018, 0x3c098008, 0x352a0080, 0x8d42003c, 0x308300ff, 0x352b0100, 0x461023, 0x30e700ff, 0x18400006, 0x602021, 0x24020001, 0xa160000c, 0xa160000d, 0xa001190, 0xa5420014, 0x24020005, 0x35290100, 0x3021, 0x14e20008, 0xa1400027, 0x9122000d, 0x2c420006, 0x10400004, 0x0, 0x9122000d, 0x24420001, 0xa122000d, 0xa0010f9, 0x0, 0x3c038008, 0x3c028000, 0x34420100, 0x34640080, 0x34630100, 0x9045000a, 0x8c480014, 0x8c890038, 0x9062000c, 0x30aa00ff, 0x1281823, 0x304700ff, 0x1c60000e, 0x2ce40006, 0x24020001, 0xe21004, 0x1080000a, 0x30430003, 0x1402021, 0x1002821, 0x1203021, 0x14600007, 0x304b000c, 0x15600007, 0x30420030, 0x14400007, 0x0, 0x3e00008, 0x0, 0xa001190, 0x0, 0xa00112a, 0x0, 0xa001203, 0x0, 0x3c038008, 0x34640100, 0x24020003, 0xa082000c, 0x8c620004, 0x3e00008, 0xac82001c, 0x3c058008, 0x34a30080, 0x90620027, 0x34a50100, 0x24060043, 0x24420001, 0xa0620027, 0x90630027, 0x3c020800, 0x8c420048, 0x306300ff, 0x14620004, 0x3c076021, 0x94a500da, 0xa0008ee, 0x30a5ffff, 0x3e00008, 0x0, 0x27bdffe8, 0xafbf0010, 0x3c028000, 0xe001249, 0x8c440180, 0x3c028008, 0x34430100, 0xa060000c, 0x8c420004, 0x8fbf0010, 0x27bd0018, 0x3e00008, 0xac62001c, 0x27bdffe0, 0x3c028008, 0xafbf0018, 0xafb10014, 0xafb00010, 0x34450080, 0x34460100, 0x3c088000, 0x8d090140, 0x90c3000c, 0x8ca4003c, 0x8ca20038, 0x14820038, 0x306700ff, 0x9502007c, 0x90a30027, 0x14600009, 0x3045ffff, 0x24020005, 0x54e20008, 0x3c048008, 0x90c2000d, 0x24420001, 0xa0c2000d, 0xa001284, 0x3c048008, 0xa0c0000d, 0x3c048008, 0x34820100, 0x9042000c, 0x24030005, 0x304200ff, 0x1443000a, 0x24a205dc, 0x34830080, 0x90620027, 0x2c420007, 0x50400005, 0x24a20a00, 0x90630027, 0x24020014, 0x621004, 0xa21021, 0x3c108008, 0x36100080, 0x3045ffff, 0x1202021, 0xe001249, 0xa6050014, 0x9602005c, 0x8e030038, 0x3c118000, 0x3042ffff, 0x21040, 0x621821, 0xae03001c, 0xe000315, 0x8e240140, 0x92020025, 0x34420040, 0xa2020025, 0xe000320, 0x8e240140, 0x8e240140, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa000f48, 0x27bd0020, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x0 }; u32 bce_COM_b09FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_COM_b09FwRodata[(0x30/4) + 1] = { 0x80080100, 0x80080080, 0x80080000, 0x80080240, 0x8000ef0, 0x8000f48, 0x8000f8c, 0x8001020, 0x8001064, 0x80080100, 0x80080080, 0x80080000, 0x0 }; u32 bce_COM_b09FwBss[(0xc0/4) + 1] = { 0x0 }; u32 bce_COM_b09FwSbss[(0x38/4) + 1] = { 0x0 }; u32 bce_COM_b09FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_RXP_b09FwReleaseMajor = 0x1; int bce_RXP_b09FwReleaseMinor = 0x0; int bce_RXP_b09FwReleaseFix = 0x0; u32 bce_RXP_b09FwStartAddr = 0x080031d8; u32 bce_RXP_b09FwTextAddr = 0x08000000; int bce_RXP_b09FwTextLen = 0x7908; u32 bce_RXP_b09FwDataAddr = 0x00000000; int bce_RXP_b09FwDataLen = 0x0; u32 bce_RXP_b09FwRodataAddr = 0x08007908; int bce_RXP_b09FwRodataLen = 0x124; u32 bce_RXP_b09FwBssAddr = 0x08007ab8; int bce_RXP_b09FwBssLen = 0x20; u32 bce_RXP_b09FwSbssAddr = 0x08007a60; int bce_RXP_b09FwSbssLen = 0x58; u32 bce_RXP_b09FwSDataAddr = 0x00000000; int bce_RXP_b09FwSDataLen = 0x0; u32 bce_RXP_b09FwText[(0x7908/4) + 1] = { 0xa000c76, 0x0, 0x0, 0xd, 0x72787034, 0x2e362e31, 0x36000000, 0x4061003, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24427a60, 0x3c030800, 0x24637ad8, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd9ffc, 0x3a0f021, 0x3c100800, 0x261031d8, 0x3c1c0800, 0x279c7a60, 0xe001253, 0x0, 0xd, 0x3c028000, 0x30a5ffff, 0x30c600ff, 0x34430180, 0x3c088000, 0x8d0901b8, 0x520fffe, 0x0, 0xac640000, 0x24040002, 0xa4650008, 0xa066000a, 0xa064000b, 0xac670018, 0x3c031000, 0x3e00008, 0xad0301b8, 0x3c056000, 0x8ca24ff8, 0x440fffe, 0x0, 0xaca44fc0, 0x3c031000, 0x3c040200, 0xaca44fc4, 0x3e00008, 0xaca34ff8, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0xe0012a5, 0x808021, 0x3c048008, 0x34850080, 0x90a60005, 0x2403fffe, 0x2002021, 0xc31024, 0x8fbf0014, 0x8fb00010, 0xa0a20005, 0xa0012af, 0x27bd0018, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0xe000ed6, 0x808021, 0x3c068008, 0x34c50080, 0x90a40000, 0x24020050, 0x308300ff, 0x10620007, 0x3c098000, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xad200180, 0xa000fc5, 0x27bd0018, 0x24080100, 0x3c078000, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xace80180, 0xa000fc5, 0x27bd0018, 0x27bdff88, 0x3c088008, 0xafbe0070, 0xafb60068, 0xafb40060, 0xafb00050, 0xafbf0074, 0xafb7006c, 0xafb50064, 0xafb3005c, 0xafb20058, 0xafb10054, 0x35050080, 0x3c078000, 0x8cf10128, 0x90a40009, 0xace00084, 0x90a60005, 0x309000ff, 0xa021, 0x61827, 0x30620001, 0xb021, 0x14400067, 0xf021, 0x90a90000, 0x24050020, 0x312400ff, 0x10850016, 0x240a0050, 0x108a008d, 0x0, 0x3c0c0800, 0x8d8c00dc, 0x258b0001, 0x3c010800, 0xac2b00dc, 0xe00139b, 0x0, 0x8fbf0074, 0x8fbe0070, 0x8fb7006c, 0x8fb60068, 0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, 0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0078, 0xd, 0x3c158000, 0xafa00030, 0x96a20116, 0x8eb90104, 0x3c1f0020, 0x36b20c00, 0x33fc024, 0x18b82b, 0x173140, 0xafa60030, 0x8eae0104, 0x3053ffff, 0x3c0f0040, 0x2723821, 0x1cf6824, 0x90f2000d, 0x11a00048, 0x34c40040, 0x32430020, 0x14600002, 0x34860080, 0x803021, 0x14c00094, 0xafa60030, 0x3c098008, 0x35250080, 0x90a80008, 0x31060040, 0x50c00006, 0x3c088008, 0x240a0004, 0x120a00a3, 0x240b0012, 0x120b0029, 0x3c088008, 0x35150100, 0x3c178000, 0x96f3011a, 0x94ee000e, 0x92af0008, 0x324c0004, 0x3275ffff, 0x1ee6804, 0xafad003c, 0x8cf30004, 0x11800031, 0x8cf70008, 0x35030080, 0x90780008, 0x33070040, 0x14e00028, 0x0, 0x8c720050, 0x2728823, 0x6200006, 0x3c068000, 0x8c7f0034, 0x27fc823, 0x7220084, 0x8e820008, 0x3c068000, 0xacc00044, 0x24020001, 0x8fbf0074, 0x8fbe0070, 0x8fb7006c, 0x8fb60068, 0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, 0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0078, 0xe000cb8, 0x2021, 0x8fbf0074, 0x8fbe0070, 0x8fb7006c, 0x8fb60068, 0x8fb50064, 0x8fb40060, 0x8fb3005c, 0x8fb20058, 0x8fb10054, 0x8fb00050, 0x3e00008, 0x27bd0078, 0xa000d18, 0xc02021, 0xe00146c, 0x2602021, 0x1440ffdf, 0x3c068000, 0x3c038008, 0x34630080, 0x8c640034, 0x2641023, 0x4400018, 0x0, 0x3c140800, 0x8e943100, 0x26900001, 0x3c010800, 0xac303100, 0xe0012a5, 0x2202021, 0x3c048008, 0x349f0080, 0x93fe0025, 0x2202021, 0x37c90004, 0xa3e90025, 0xe0012af, 0x0, 0xe000c9e, 0x2202021, 0xa000d45, 0x24020001, 0x3c140800, 0x26947ac8, 0xa000d07, 0x3c158000, 0x8c680030, 0x2683023, 0x18c00008, 0x240b000c, 0x3c090800, 0x8d293100, 0x325200fc, 0xa821, 0x25250001, 0x3c010800, 0xac253100, 0xafab0030, 0x8c6a0030, 0x1534023, 0x190000e0, 0x2a8602a, 0x1580ffdd, 0x0, 0x12a8002a, 0x2a87823, 0x2689821, 0x31f5ffff, 0x32470002, 0x10e00034, 0x32590010, 0x3c138008, 0x36700080, 0x921e0008, 0x33d60040, 0x52c000d3, 0x8e820008, 0x2202021, 0xe0012a5, 0x24120018, 0xa2120009, 0x92170005, 0x2418fffe, 0x2202021, 0x2f8a824, 0xe0012af, 0xa2150005, 0x24040039, 0x2821, 0xe001447, 0x24060018, 0xa000d45, 0x24020001, 0x9296000c, 0x3c048008, 0x349e0080, 0x8fc70038, 0x16a300, 0x36900081, 0x30c600ff, 0x2202021, 0xe000c8d, 0x3205f081, 0x3c068000, 0xacc00044, 0xa000d45, 0x24020001, 0x3a4e0001, 0x31cd0001, 0x15a0ffae, 0x2689821, 0xa000d97, 0x0, 0x40f809, 0x24040016, 0xa000d45, 0x24020001, 0x2202021, 0xe001529, 0xe02821, 0xa000cfa, 0x8fbf0074, 0x1320ff73, 0x3c048008, 0x34890080, 0x8d230038, 0x8c820004, 0x2e2f823, 0x1fe0ff6e, 0x3c068000, 0x2e33023, 0x4c20001, 0x60b821, 0xafa80018, 0x3c198000, 0xafb30010, 0xafb50014, 0x97260120, 0x8d2a0030, 0x9524005c, 0x8fb8003c, 0x8fad0030, 0x3087ffff, 0x30dfffff, 0x3e87021, 0x372f4000, 0x307282b, 0x8e820004, 0x1cf6021, 0x1a55825, 0xafa90048, 0xafac0020, 0xafaa0028, 0xafab0030, 0xafaa0024, 0xafa0002c, 0xafb70034, 0x40f809, 0x27a40010, 0x8fa80030, 0x31030002, 0x10600002, 0x8fa90048, 0x325200fe, 0x91230008, 0x30690040, 0x51200013, 0x8fa40024, 0x3c028008, 0x8c480004, 0x111700a4, 0x240a0014, 0x32580001, 0x5300000c, 0x8fa40024, 0x2419000c, 0x121900c0, 0x2a1f000d, 0x13e000ba, 0x2406000e, 0x2404000a, 0x52040001, 0x24160008, 0x8fa90024, 0x25240001, 0xafa40024, 0x3c188008, 0x37050080, 0x8fa70014, 0x8caf0030, 0x340cffff, 0x877021, 0xacae0030, 0xafaf0038, 0x90ad004e, 0x8cab0030, 0x8fa8003c, 0x1ac1004, 0x1625021, 0xacaa0034, 0x8fa60030, 0x2e82021, 0x30c30008, 0x1060000b, 0xafa40040, 0x8cb90020, 0x1324008f, 0x30c600ff, 0x9289000c, 0x8fa70034, 0x98300, 0x36040080, 0x3085f080, 0xe000c8d, 0x2202021, 0x3c0a8008, 0x35500080, 0x8e030030, 0x8fa80038, 0x683023, 0x18c00065, 0x262f0080, 0x3c0e0800, 0x8dce3198, 0x2407ff80, 0x1e76824, 0x31ec007f, 0x3c068000, 0x3c028004, 0x31cb0010, 0xaccd0090, 0x1160003b, 0x1822821, 0x90b8006b, 0x57000039, 0x3c048008, 0x241f0001, 0xa0bf006b, 0x94c5007a, 0x24b9000a, 0xa6190012, 0x3c0a8008, 0x35450080, 0x90a80008, 0x31100040, 0x16000004, 0x3c038008, 0x324b0001, 0x1560006b, 0x0, 0x34640080, 0x8c8c0020, 0x8fb20040, 0x11920009, 0x34630100, 0x8c6d0000, 0x26d1023, 0x18400012, 0x8fb80040, 0x241e0001, 0xac980020, 0xac730000, 0xac770004, 0x16c0002d, 0x0, 0x17c00027, 0x0, 0x12a00005, 0x1821, 0x8fa50030, 0x30b50004, 0x52a0fe95, 0x601021, 0x24030001, 0xa000cf9, 0x601021, 0x8c6e0000, 0x15d3fff1, 0x0, 0x8c670004, 0x2e77823, 0x5e1ffe9, 0x8fb80040, 0xa000e5b, 0x0, 0xa000d98, 0x4021, 0x40f809, 0x24040017, 0xa000d45, 0x24020001, 0x3c048008, 0x34900080, 0x241e0001, 0x2202021, 0xe0012a5, 0xa61e0012, 0x92090025, 0x2202021, 0x241e0001, 0x35220001, 0xe0012af, 0xa2020025, 0xa000e46, 0x3c0a8008, 0xe000c9e, 0x2202021, 0xa000e5f, 0x0, 0xe0012a5, 0x2202021, 0x3c198008, 0x37370080, 0x2202021, 0xe0012af, 0xa2f60009, 0x2c03021, 0x24040037, 0xe001447, 0x2821, 0xa000e5d, 0x0, 0x8fa60018, 0x58c0ffae, 0x3c0a8008, 0xe0012a5, 0x2202021, 0x92030025, 0x2202021, 0x241e0001, 0x34620004, 0xe0012af, 0xa2020025, 0xa000e46, 0x3c0a8008, 0x120a0030, 0x2a0b0015, 0x11600024, 0x240d0016, 0x240c000c, 0x560cff58, 0x32580001, 0x3c058008, 0x90af001b, 0x2407ffbd, 0x2416000e, 0x1e77024, 0xa0ae001b, 0xa000e01, 0x32580001, 0x3c1f8000, 0x97e5011a, 0x50a0ff6f, 0x34c60010, 0xa000e25, 0x9289000c, 0x8cb30030, 0x8e960008, 0x24040018, 0x26740001, 0x2c0f809, 0xacb40030, 0x8fb10030, 0xa000cf9, 0x32220004, 0x1606ff4a, 0x8fa90024, 0xa000e0c, 0x24160010, 0x2410000e, 0x52d0ff44, 0x24160010, 0xa000e0b, 0x24160016, 0x560dff36, 0x32580001, 0x3c058008, 0x90af001b, 0x2407ffbd, 0x24160010, 0x1e77024, 0xa0ae001b, 0xa000e01, 0x32580001, 0xa000e00, 0x24160012, 0x3c038000, 0x8c6201b8, 0x440fffe, 0x24040800, 0xac6401b8, 0x3e00008, 0x0, 0x3c058008, 0x94a20048, 0x3084ffff, 0x10400019, 0x24840012, 0x94a90048, 0x3c038000, 0x3128ffff, 0x104382a, 0x10e00013, 0x34660180, 0x946d0120, 0x8f8c0004, 0x240b001a, 0x31aaffff, 0x31834000, 0xa0cb000b, 0x10600010, 0x2544fffe, 0x94af0048, 0x31eeffff, 0x1c4282b, 0x14a0000c, 0x8f98000c, 0xa4c40014, 0x8f86000c, 0x34c20001, 0x3e00008, 0xaf82000c, 0x3c078000, 0x24040003, 0x34e20180, 0x3e00008, 0xa044000b, 0x8f98000c, 0x2419fffe, 0x3191024, 0x3e00008, 0xaf82000c, 0x27bdffd8, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafbf0024, 0xafb00010, 0x801821, 0x30b3ffff, 0x30d2ffff, 0x30f4ffff, 0x3c118000, 0x8e2201b8, 0x440fffe, 0x36300180, 0xae030000, 0x2402021, 0xe000edd, 0xae230020, 0x8f86000c, 0x8f850004, 0x8f830000, 0x30c48000, 0xa613000c, 0xa612000e, 0xa6050010, 0xae030028, 0xa6140008, 0x1080000e, 0x3c0f8000, 0x962c0116, 0x318bfffc, 0x256a0004, 0x1514821, 0x8d284000, 0x3107ffff, 0x14e00007, 0x2414bfff, 0x3c0effff, 0x35cd7fff, 0xcd3024, 0xaf86000c, 0x3c0f8000, 0x2414bfff, 0x35f10180, 0xd49824, 0xa6330026, 0x8df20104, 0xae32002c, 0x3c061000, 0xade601b8, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x27bdffd8, 0xafb10014, 0x3c118000, 0x804021, 0xafb40020, 0xafb00010, 0x30d4ffff, 0x36300180, 0x2802021, 0xae080000, 0xae280020, 0xafb3001c, 0xafb20018, 0x30f3ffff, 0xafbf0024, 0xe000edd, 0x30b2ffff, 0x8f85000c, 0x8f830004, 0x2406bfff, 0xa62024, 0xa612000c, 0xa614000e, 0xa6130008, 0xa6040026, 0xa6030010, 0x3c021000, 0xae2201b8, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x3c028000, 0x34450180, 0x3c048000, 0x8c8301b8, 0x460fffe, 0x24072000, 0x24060002, 0xa4a70008, 0xa0a6000b, 0xa4a00010, 0x3c051000, 0xac8501b8, 0x3e00008, 0x0, 0x3c058000, 0x34a40070, 0x8c8a0000, 0x90a60112, 0x8f840004, 0x27bdfff0, 0x30c300ff, 0x31882, 0x30820100, 0x3821, 0x10400039, 0x24660003, 0x30874000, 0x50e00039, 0x30882000, 0x61080, 0x45c821, 0x8f2f4000, 0x24780004, 0x187080, 0xafaf0000, 0x1c56821, 0x8dac4000, 0xafac0004, 0x94ab0116, 0x3169fffc, 0x1254021, 0x8d054000, 0xafa50008, 0x8fa90008, 0x3021, 0x2821, 0x3c070800, 0x24e70100, 0xa000f9e, 0x24080008, 0x90420000, 0x24a50001, 0x2cad000c, 0x62c821, 0x19c080, 0x3077821, 0x8dee0000, 0x11a00006, 0xce3026, 0x3a51021, 0x14a8fff5, 0x51a00, 0x5520fff4, 0x90420000, 0x3c048000, 0x34870070, 0x3c050800, 0x8ca53104, 0x8ce30000, 0x2ca80020, 0x11000009, 0x6a3823, 0x55880, 0x3c0c0800, 0x258c3108, 0x16c4821, 0x24aa0001, 0xad270000, 0x3c010800, 0xac2a3104, 0xaf860000, 0x24070001, 0xe01021, 0x3e00008, 0x27bd0010, 0x1100fffc, 0x3821, 0x66080, 0x1855821, 0x8d644000, 0x24690004, 0x93880, 0xafa40000, 0xe51821, 0x8c664000, 0xafa00008, 0xa000f8e, 0xafa60004, 0x3c020800, 0x8c420038, 0x27bdffd8, 0xafb40020, 0xafb20018, 0xafbf0024, 0xafb3001c, 0xafb10014, 0xafb00010, 0x3c140800, 0x26940038, 0x14400002, 0x2452ffff, 0x9021, 0x8f850004, 0x30a34000, 0x1060000f, 0x30a98000, 0x3c060020, 0xa62024, 0x1080000b, 0x8f87000c, 0x2408bfff, 0xa82824, 0x34e31000, 0xaf850004, 0x30af2000, 0x15e0000a, 0x3c110004, 0x2413ffbf, 0xa000fef, 0x731024, 0x15200062, 0x3c0b0020, 0x30af2000, 0x11e0fff9, 0x8f83000c, 0x3c110004, 0xb18024, 0x1200fff6, 0x2413ffbf, 0x34620040, 0x30b80100, 0x1300000f, 0xaf82000c, 0x3c1f0020, 0xbfc824, 0x13200005, 0x3c0a8000, 0x3c030004, 0xa31024, 0x104000c8, 0x0, 0x9549011e, 0x9548011c, 0x3126ffff, 0x83c00, 0xc72025, 0xaf840000, 0x3c0d8000, 0x95ac010c, 0x30ab1000, 0x11600008, 0x3186ffff, 0x30ae0020, 0x15c00006, 0x24110005, 0x3c101000, 0xb07824, 0x15e00073, 0x3c1f0c00, 0x24110001, 0x30a20100, 0x54400009, 0x3c0c0001, 0x8f830014, 0x54600006, 0x3c0c0001, 0x8f87000c, 0x30e44000, 0x1080009a, 0x3c0a1f01, 0x3c0c0001, 0xac3024, 0x14c0006c, 0x3c108000, 0x8f84000c, 0x30934000, 0x12600006, 0x3c031000, 0x3c190f00, 0xb9c024, 0x1300008b, 0x3c1f8000, 0x3c031000, 0xa31024, 0x1040002c, 0x3c068000, 0x3c070800, 0x8ce70030, 0x14e00073, 0x30884000, 0x30a60100, 0x10c00098, 0x3c0e0f00, 0xae6824, 0x3c0c0200, 0x11ac0094, 0x8f930000, 0x2728024, 0x2147821, 0x91f40004, 0x26920004, 0x1221c0, 0x3c0e8000, 0x95c6010e, 0x36270002, 0x24d40004, 0x3286ffff, 0x24050002, 0xe000f04, 0x0, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x1021, 0x3e00008, 0x27bd0028, 0xab5024, 0x1140ff9e, 0x30af2000, 0x8f8c000c, 0x3c0effff, 0x35cd7fff, 0xad2824, 0x35838000, 0xa000fdf, 0xaf850004, 0x8cd04000, 0x320f0100, 0x11e0003c, 0x30b80100, 0x3c100800, 0x8e100024, 0x13000014, 0x32330004, 0x3c020f00, 0xa2f824, 0x3c190200, 0x13f9000f, 0x8f830000, 0x94c9010e, 0x2203821, 0x725824, 0x1745021, 0x91480004, 0x25240004, 0x3086ffff, 0x25140004, 0x1421c0, 0x24050002, 0xe000f04, 0x2412fffe, 0x2128024, 0x3231fffb, 0x24070001, 0x1207006f, 0x32060001, 0x14c00090, 0x3c0e8000, 0x320f0004, 0x11e00004, 0x8f980004, 0x33100800, 0x16000078, 0x3c1f8000, 0x5660ffc7, 0x8fbf0024, 0xe000f63, 0x0, 0xa001040, 0x8fbf0024, 0x3c190bff, 0xbfc024, 0x3733ffff, 0x278882b, 0x5220ff8a, 0x24110001, 0xa00100d, 0x24110005, 0x3c0e0800, 0x8dce00d8, 0x960f010e, 0x24040080, 0x25cd0001, 0x31e6ffff, 0x24050002, 0x3c010800, 0xac2d00d8, 0xa00103d, 0x24070003, 0x3c120800, 0x8e520024, 0x32420001, 0x1040ffab, 0x8fbf0024, 0x94c6010e, 0x36270002, 0x2021, 0x24d40004, 0x3286ffff, 0xa00103d, 0x24050002, 0x1100ff8e, 0x30a60100, 0x3c0b0f00, 0xab5024, 0x3c090100, 0x12a202b, 0x1480ff88, 0x0, 0x3c058000, 0x94a6010e, 0x36270002, 0x24040080, 0x24d40004, 0x3286ffff, 0xa00103d, 0x24050002, 0x97e30116, 0xa001024, 0x3c031000, 0xaa4824, 0x3c081000, 0x1528ff65, 0x3c0c0001, 0x30cb0200, 0x1560ff63, 0xac3024, 0x3c148000, 0x9692010e, 0x36270002, 0x2021, 0x26450004, 0x30a6ffff, 0xe000f3f, 0x24050002, 0xa001040, 0x8fbf0024, 0xe000f71, 0x0, 0xa001000, 0x8f850004, 0x0, 0x3c060800, 0x8cc600d0, 0x51602, 0x3050000f, 0x38df0001, 0x2ff90001, 0x2e03000c, 0x323c024, 0x1700ff68, 0x1021c0, 0x2608fffc, 0x2d070004, 0x14e00007, 0x3c0e8000, 0x38ca0002, 0x2d490001, 0x1232024, 0x5080000e, 0x53242, 0x3c0e8000, 0x95c6010e, 0x2021, 0xa00103a, 0x36270002, 0x32330004, 0x52600001, 0x36310002, 0x3c0c8000, 0x9586010e, 0x2203821, 0xa001099, 0x2021, 0x10182b, 0xc35824, 0x1560000f, 0x3c058000, 0x1021c0, 0x3c0e8000, 0x95c6010e, 0xa00103a, 0x36270002, 0x97f9010e, 0x2203821, 0x24040100, 0x27310004, 0x3226ffff, 0xe000f04, 0x24050002, 0xa001078, 0x0, 0x94ad010e, 0x2021, 0x24050002, 0x25ac0004, 0x3186ffff, 0xe000f04, 0x3227fffb, 0xa0010eb, 0x1021c0, 0x95c5010e, 0x2203821, 0x2021, 0x24ad0004, 0x31a6ffff, 0xe000f04, 0x24050002, 0xa001072, 0x3231fffb, 0x3c058000, 0x8ca70148, 0x24030004, 0x34a60180, 0x72402, 0x308200ff, 0x10430010, 0x3c048000, 0x8c8901b8, 0x520fffe, 0x0, 0x8c8f0148, 0x240d0002, 0x3c0a1000, 0xf7402, 0xa4ce0008, 0xa0cd000b, 0x8c8c0148, 0xa4cc0010, 0x8c8b0144, 0xaccb0024, 0x3e00008, 0xac8a01b8, 0x8ca40140, 0x3c038000, 0xc02821, 0x8c6601b8, 0x4c0fffe, 0x2408001c, 0xaca40000, 0xa0a8000b, 0x3c051000, 0xac6501b8, 0x3e00008, 0x0, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x3c10600c, 0x8e0d5000, 0x240eff7f, 0x24060003, 0x1ae6024, 0x3588380c, 0x3c058000, 0xae085000, 0xaca60008, 0x3c010800, 0xac200020, 0xe001555, 0x0, 0x3c086016, 0x8d0a0000, 0x3c0bffff, 0x3c090010, 0x35238051, 0x3c046000, 0x14b3824, 0x3c025353, 0xae03537c, 0x34842020, 0x3c050800, 0x24a57908, 0x2406000a, 0x10e20009, 0x35037c00, 0x8c7f007c, 0x8c790078, 0x8fb00010, 0xaf9f0010, 0x8fbf0014, 0x27bd0018, 0xa0013b1, 0xaf990008, 0x8d0f0004, 0x3c186000, 0x8fb00010, 0x1f81821, 0x8c7f007c, 0x8c790078, 0xaf9f0010, 0x8fbf0014, 0x27bd0018, 0xa0013b1, 0xaf990008, 0x3c048000, 0x8c834000, 0x3402ffff, 0x1062003a, 0x0, 0x8c874000, 0x30e50100, 0x10a00021, 0x0, 0x9487010e, 0x3c020800, 0x8c4200ec, 0x9485010e, 0x3c0d0800, 0x8dad31cc, 0x30e3ffff, 0x3c180800, 0x8f1800e8, 0x3c090800, 0x8d2931c8, 0x436021, 0x30abffff, 0x183782b, 0xc821, 0x1ab1821, 0x5021, 0x3197021, 0x6b302b, 0x12a4021, 0x1cf2021, 0x1061021, 0x3c010800, 0xac2c00ec, 0x3c010800, 0xac2400e8, 0x3c010800, 0xac2331cc, 0x3c010800, 0xac2231c8, 0x3e00008, 0x0, 0x8c884000, 0x8f8c0008, 0x110c0032, 0x3c0d8000, 0x95ab010e, 0x3c0a0800, 0x8d4a00e4, 0x3c080800, 0x8d0800e0, 0x3169ffff, 0x1492821, 0x3021, 0xa9602b, 0x1063821, 0xec1021, 0x3c010800, 0xac2500e4, 0x3c010800, 0xac2200e0, 0x3e00008, 0x0, 0x9483010e, 0x9482010e, 0x3c190800, 0x8f3900f4, 0x3c090800, 0x8d2931cc, 0x3c0e0800, 0x8dce00f0, 0x3c080800, 0x8d0831c8, 0x3078ffff, 0x304bffff, 0x3382821, 0x12b1821, 0x7821, 0x5021, 0xb8682b, 0x1cf6021, 0x6b302b, 0x10a3821, 0x18d2021, 0xe61021, 0x3c010800, 0xac2500f4, 0x3c010800, 0xac2400f0, 0x3c010800, 0xac2331cc, 0x3c010800, 0xac2231c8, 0x3e00008, 0x0, 0x8c894004, 0x8f860010, 0x1526ffcc, 0x3c0d8000, 0x9483010e, 0x3c190800, 0x8f3931bc, 0x3c0e0800, 0x8dce31b8, 0x3078ffff, 0x3385821, 0x7821, 0x178202b, 0x1cf6821, 0x1a45021, 0x3c010800, 0xac2b31bc, 0x3c010800, 0xac2a31b8, 0x3e00008, 0x0, 0x27bdffe8, 0x3c058000, 0xafbf0014, 0xafb00010, 0x8cb00128, 0xacb00020, 0x8ca30104, 0x8ca40100, 0xaf830004, 0xe000ed6, 0xaf84000c, 0xe00115f, 0x0, 0x3c020800, 0x8c4200c0, 0x10400026, 0x8f840004, 0x3c070800, 0x8ce700c4, 0x24e60001, 0x3c010800, 0xac2600c4, 0x3c028000, 0x8c440124, 0x3c1f6020, 0xafe40014, 0x0, 0x3c068000, 0x3c034000, 0xacc30138, 0x0, 0x12000013, 0x8fbf0014, 0x260f0140, 0x26190080, 0x2404ff80, 0x1e4c024, 0x324f824, 0x1f6940, 0x332e007f, 0x185940, 0x31ec007f, 0x3c0a2000, 0x35480002, 0x1ae3825, 0x16c4825, 0x1288025, 0xe82825, 0xacc50830, 0xacd00830, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c090010, 0x894024, 0x1100000f, 0x8f83000c, 0x240dbfff, 0x6d6024, 0x11800007, 0x240f87ff, 0x6f7024, 0x15c00013, 0x3c190060, 0x99c024, 0x13000010, 0x0, 0xe000cd2, 0x0, 0xa001221, 0x0, 0x3c0b0800, 0x8d6b0020, 0x256a0001, 0x3c010800, 0xac2a0020, 0xe000fc5, 0x2021, 0x1040ffcc, 0x3c068000, 0xa0011e9, 0x3c028000, 0xe00128e, 0x0, 0xa001221, 0x0, 0x27bdffe8, 0x3c028000, 0xafbf0010, 0x8c460140, 0x3c037000, 0x3c054000, 0xac460020, 0x8c440148, 0x832024, 0x10850013, 0xa4102b, 0x1040000b, 0x3c072000, 0x3c086000, 0x10880017, 0x0, 0x3c0a4000, 0x3c098000, 0xad2a0178, 0x0, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x5487fff9, 0x3c0a4000, 0xe00110a, 0x0, 0xa00123a, 0x3c0a4000, 0xe0012b4, 0x0, 0x3c0a4000, 0x3c098000, 0xad2a0178, 0x0, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0xe001d6f, 0x0, 0xa00123a, 0x3c0a4000, 0x27bdffe0, 0xafb20018, 0x3c128000, 0xafb10014, 0xafbf001c, 0xafb00010, 0xe00112d, 0x36510070, 0x8e260000, 0xaf860018, 0x8e280000, 0x3c0b0800, 0x8d6b00fc, 0x3c070800, 0x8ce700f8, 0x1066023, 0x16c2821, 0x4821, 0xac302b, 0xe91821, 0x662021, 0x3c010800, 0xac2500fc, 0x3c010800, 0xac2400f8, 0x8e500000, 0x32020003, 0x1040ffee, 0x1003021, 0x8e260000, 0x3c050800, 0x8ca500fc, 0x3c1f0800, 0x8fff00f8, 0xc81823, 0xa37821, 0x1021, 0x1e3c82b, 0x3e2c021, 0x3197021, 0x320d0001, 0x3c010800, 0xac2f00fc, 0xaf880018, 0x3c010800, 0xac2e00f8, 0x15a00008, 0x0, 0x32080002, 0x1100ffd6, 0x0, 0xe001229, 0x0, 0xa00125b, 0x0, 0xe0011d2, 0x0, 0xa001284, 0x32080002, 0x3c038000, 0x8c640100, 0x3082003e, 0x14400008, 0x0, 0xac600048, 0x8c660100, 0x30c507c0, 0x10a00005, 0x0, 0xac60004c, 0xac600050, 0x3e00008, 0x24020001, 0xac600054, 0xac600040, 0x8c680100, 0x31073800, 0x10e0fff9, 0x0, 0x24020001, 0x3e00008, 0xac600044, 0x3c039000, 0x34620001, 0x822025, 0x3c038000, 0xac640020, 0x8c650020, 0x4a0fffe, 0x0, 0x3e00008, 0x0, 0x3c028000, 0x34430001, 0x832025, 0x3e00008, 0xac440020, 0x27bdffd8, 0xafb10014, 0x3c048000, 0xafbf0020, 0xafb3001c, 0xafb20018, 0xafb00010, 0x8c920140, 0x8c900148, 0x2402000e, 0x108c02, 0x322300ff, 0x10620059, 0x2042824, 0x2866000f, 0x10c00013, 0x286a0037, 0x24070006, 0x1067008e, 0x28680007, 0x5100002d, 0x24040009, 0x10600078, 0x3c068000, 0x24090001, 0x106900b0, 0x0, 0xd, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x11400059, 0x240d0038, 0x286b0035, 0x11600005, 0x3c058000, 0x240c001f, 0x146cfff1, 0x0, 0x3c058000, 0x8cb801b8, 0x700fffe, 0x34b90180, 0xaf320000, 0x241f0001, 0x24120002, 0x3c021000, 0xaf200004, 0xa7310008, 0xa33f000a, 0xa332000b, 0xa7300010, 0xaf200024, 0xaf200028, 0xaca201b8, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x10640023, 0x2405000b, 0x1465ffd6, 0x3218ffff, 0x17000020, 0x3c058000, 0x8f93fed4, 0x927f0005, 0x33f90004, 0x1720ffcf, 0x0, 0xe0012a5, 0x2402021, 0x92690005, 0x2402021, 0x35280004, 0xe0012af, 0xa2680005, 0x92670005, 0x30e20004, 0x14400002, 0x0, 0xd, 0x926b0000, 0x24060020, 0x316a00ff, 0x1546000a, 0x3c058000, 0x8ca401b8, 0x480fffe, 0x34ad0180, 0x240e0005, 0x3c0c1000, 0xadb20000, 0xa1ae000b, 0xacac01b8, 0x3c058000, 0x8ca301b8, 0x460fffe, 0x34af0180, 0x24130002, 0xade00000, 0xadf20004, 0xa5f10008, 0xa1f3000a, 0xa1f3000b, 0xa5f00010, 0xade00024, 0x8cb10144, 0x3c101000, 0xadf10028, 0xacb001b8, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x106dffad, 0x240e0080, 0x146eff9b, 0x0, 0x3c058000, 0x8ca301b8, 0x460fffe, 0x34af0180, 0x24120002, 0xa1f2000b, 0xa5f10008, 0xa5f00010, 0x8cb30144, 0x3c021000, 0xa5f30012, 0xaca201b8, 0xa0012f0, 0x8fbf0020, 0x8cc301b8, 0x460fffe, 0x34d30180, 0xae720000, 0xae600004, 0x24120001, 0xa6710008, 0x24110002, 0xa272000a, 0xa271000b, 0xa6700010, 0x8cd00144, 0x3c0f1000, 0xae700024, 0xae600028, 0xaccf01b8, 0xa00132b, 0x8fbf0020, 0x3c038000, 0x8c6601b8, 0x4c0fffe, 0x34620180, 0x3c060800, 0x90c67ab8, 0xac520000, 0x10c00003, 0x3821, 0x3c070800, 0x8ce77ac0, 0x3c058000, 0x34aa0180, 0x24040002, 0x34cc0001, 0xac470004, 0xa5510008, 0xa14c000a, 0xa144000b, 0xa5500010, 0x8cab0144, 0x2021, 0x1402821, 0xad4b0024, 0x10c00003, 0x8fbf0020, 0x3c040800, 0x8c847abc, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3c0e1000, 0x3c0d8000, 0x27bd0028, 0xaca40028, 0xadae01b8, 0x3c010800, 0xa0207ab8, 0x3e00008, 0x0, 0x10a0000b, 0x3c068000, 0x8c980144, 0x24190002, 0x3c010800, 0xa0397ab8, 0x3c010800, 0xac327ac0, 0x3c010800, 0xac387abc, 0xa00132b, 0x8fbf0020, 0x8cdf01b8, 0x7e0fffe, 0x34c70180, 0x24090002, 0xace00000, 0xacf20004, 0xa4f10008, 0xa0e9000a, 0xa0e9000b, 0xa4f00010, 0xace00024, 0x8cc80144, 0x3c021000, 0xace80028, 0xacc201b8, 0xa00132b, 0x8fbf0020, 0x27bdffe8, 0xafbf0010, 0xe000ed6, 0x0, 0x3c028000, 0x8fbf0010, 0x2021, 0xac400180, 0xa000fc5, 0x27bd0018, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x9486000c, 0xa09021, 0x24900014, 0x61b02, 0x31080, 0x448821, 0x3021, 0xa02021, 0xe0013bb, 0x24050005, 0x211202b, 0x10800012, 0x1021, 0x92030000, 0x2c650009, 0x50a00009, 0x92020001, 0x34880, 0x3c0a0800, 0x254a793c, 0x12a4021, 0x8d070000, 0xe00008, 0x0, 0x92020001, 0x2028021, 0x211202b, 0x5480fff2, 0x92030000, 0x1021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0xa0013d5, 0x26100001, 0x920c0001, 0x240b000c, 0x158b0040, 0x2307023, 0x2dcd000a, 0x15a0003d, 0x26080006, 0x8e430000, 0x26020002, 0x34640100, 0xae440000, 0x921f0002, 0x90590001, 0x904e0002, 0x904b0003, 0x1f7e00, 0x19c400, 0x1f86025, 0xe6a00, 0x18d5025, 0x14b4825, 0xae490004, 0x92070006, 0x91050001, 0x91040002, 0x91190003, 0x71e00, 0x53400, 0x66f825, 0x41200, 0x3e2c025, 0x3197825, 0x2610000a, 0xa0013d5, 0xae4f0008, 0x921f0001, 0x26040002, 0x24100002, 0x57f00001, 0x2202021, 0xa0013d5, 0x808021, 0x920e0001, 0x240d0003, 0x15cdffcb, 0x24020001, 0x8e590000, 0x92180002, 0x26100003, 0x372f0008, 0xa2580010, 0xa0013d5, 0xae4f0000, 0x92050001, 0x24060004, 0x14a6ffc0, 0x24020001, 0x920c0002, 0x920b0003, 0x8e490000, 0xc5200, 0x14b4025, 0x35270004, 0x26100004, 0xae48000c, 0xa0013d5, 0xae470000, 0xa0013e9, 0x24020001, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0xe0012a5, 0x808021, 0x3c048008, 0x34830080, 0x90650025, 0x2002021, 0x34a20020, 0xe0012af, 0xa0620025, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa000c9e, 0x27bd0018, 0x3c038000, 0x27bdfff8, 0x34620180, 0xafa20000, 0x308c00ff, 0x30ad00ff, 0x30ce00ff, 0x3c0b8000, 0x8d6401b8, 0x480fffe, 0x0, 0x8fa90000, 0x8d680128, 0x8faa0000, 0x8fa70000, 0x8fa40000, 0x24050001, 0x24020002, 0xa085000a, 0x8fa30000, 0x35994000, 0x3c051000, 0xa062000b, 0x8fb80000, 0x8fac0000, 0x8fa60000, 0x8faf0000, 0x27bd0008, 0xad280000, 0xad400004, 0xad800024, 0xacc00028, 0xa4f90008, 0xa70d0010, 0xa5ee0012, 0x3e00008, 0xad6501b8, 0x3c068008, 0x27bdffe8, 0x34c50080, 0xafbf0010, 0x90a70009, 0x24020012, 0x30e300ff, 0x1062000b, 0x803021, 0x8ca80050, 0x882023, 0x4800008, 0x8fbf0010, 0x8caa0034, 0x24040039, 0x2821, 0xca4823, 0x5200005, 0x24060012, 0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, 0xe001447, 0x0, 0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, 0x27bdffc8, 0xafb1002c, 0xa08821, 0xafb20030, 0x27a50010, 0x809021, 0x2202021, 0xafbf0034, 0xe0013c6, 0xafb00028, 0x14400081, 0x3c0c8008, 0x918b0011, 0x918a0012, 0x35860080, 0x8cc80054, 0x316500ff, 0x314900ff, 0xa92821, 0xa8382b, 0x14e0004f, 0x8fa30010, 0x94df005c, 0x30660004, 0x10c00056, 0x33e4ffff, 0x8fa2001c, 0x82102b, 0x54400005, 0x2c830080, 0x30670004, 0x14e0007e, 0x24040218, 0x2c830080, 0x10600002, 0x808021, 0x24100080, 0xe0012a5, 0x2402021, 0x3c038008, 0x34660080, 0x24070001, 0xacc7000c, 0x90c20008, 0x106040, 0x34670100, 0x305f007f, 0xa0df0008, 0x8e390004, 0x27380001, 0xacd80030, 0xa4d0005c, 0x8cce003c, 0x962f000e, 0x1cf6821, 0xaccd0020, 0x8ccb003c, 0x16c5021, 0xacca001c, 0x8e290004, 0xace90000, 0x8e250008, 0xace50004, 0x8fa80010, 0x31040008, 0x5480002f, 0x93a60020, 0xa0c0004e, 0x90c5004e, 0x2408ffdf, 0x3c188008, 0xa0e50008, 0x90c40008, 0x370c0080, 0x24090050, 0x888024, 0xa0d00008, 0x8e390008, 0xad990038, 0x8f0e0014, 0x8d8f0030, 0x1cf6821, 0xad8d0034, 0x918b0000, 0x316a00ff, 0x11490029, 0x26480100, 0xe0012af, 0x2402021, 0x24040038, 0x2821, 0xe001447, 0x2406000a, 0x8fbf0034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, 0x24020001, 0x3e00008, 0x27bd0038, 0x94d8005c, 0x8cd00054, 0x330effff, 0x2057823, 0x1cf682b, 0x15a0ffac, 0x8fa30010, 0x8cd90054, 0x30660004, 0x14c0ffac, 0x3252023, 0xa0014a5, 0x2c820218, 0x3c188008, 0x370c0080, 0xa0e60008, 0x8e390008, 0x24090050, 0xad990038, 0x8f0e0014, 0x8d8f0030, 0x1cf6821, 0xad8d0034, 0x918b0000, 0x316a00ff, 0x1549ffd9, 0x26480100, 0x2406ff80, 0x1062824, 0x3c048000, 0xac850028, 0x8e270008, 0x3103007f, 0x3c10800c, 0x70f821, 0xafe700d0, 0x8e220008, 0xaf9f0024, 0xa0014e0, 0xafe200d4, 0x8e230008, 0x3c048008, 0x34820080, 0xac430054, 0x2402021, 0xe001436, 0xac400030, 0x24040038, 0x2405008d, 0xe001447, 0x24060012, 0x8fbf0034, 0x8fb20030, 0x8fb1002c, 0x8fb00028, 0x24020001, 0x3e00008, 0x27bd0038, 0xa0014aa, 0x8fa4001c, 0x27bdffe8, 0xafbf0010, 0x90a6000d, 0x30c70010, 0x10e0000c, 0x804021, 0x3c028008, 0x8c440004, 0x8ca30008, 0x10640008, 0x30c90004, 0x30c50004, 0x10a0001c, 0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, 0x30c90004, 0x11200010, 0x30cb0012, 0x10e0fff9, 0x8fbf0010, 0x3c088008, 0x8ca70008, 0x8d060004, 0x14e6fff5, 0x24020001, 0x24040038, 0x2405008d, 0xe001447, 0x24060012, 0x8fbf0010, 0x24020001, 0x3e00008, 0x27bd0018, 0x240a0012, 0x156affe9, 0x8fbf0010, 0x1002021, 0xa001489, 0x27bd0018, 0x2021, 0xa000cb8, 0x27bd0018, 0x3c050800, 0x24a55598, 0x3c040800, 0x24847358, 0x3c020800, 0x244255a0, 0x24030006, 0x3c010800, 0xac257ac8, 0x3c010800, 0xac247acc, 0x3c010800, 0xac227ad0, 0x3c010800, 0xa0237ad4, 0x3e00008, 0x0, 0x3e00008, 0x24020001, 0x3c028000, 0x308800ff, 0x34470180, 0x3c068000, 0x8cc301b8, 0x460fffe, 0x0, 0x8cc50128, 0x2418ff80, 0x3c0d800a, 0x24af0100, 0x1f87024, 0x31ec007f, 0xacce0024, 0x18d2021, 0xace50000, 0x948b00da, 0x35096000, 0x24080002, 0x316affff, 0xacea0004, 0x24020001, 0xa4e90008, 0xa0e8000b, 0xace00024, 0x3c071000, 0xacc701b8, 0xaf840024, 0x3e00008, 0xaf850054, 0x8c990004, 0x8f8d0024, 0x2409ffbf, 0x325c023, 0xac980004, 0x91af00c4, 0x2403ffef, 0x31ee007f, 0xa1ae00c4, 0x8c8c0020, 0x938b0030, 0x8f860024, 0x358a0002, 0xaf8b0048, 0xa7800044, 0xac8a0020, 0xa4c000ac, 0x90c800c4, 0x1093824, 0xa0c700c4, 0x8f840024, 0xac8000dc, 0x908500c4, 0xa31024, 0x3e00008, 0xa08200c4, 0x3c028000, 0x34450180, 0x3c048000, 0x8c8301b8, 0x460fffe, 0x8f890054, 0x24076083, 0x24060002, 0xaca90000, 0x8c880124, 0xaca80004, 0xa4a70008, 0xa0a6000b, 0x3c051000, 0x3e00008, 0xac8501b8, 0x93880030, 0x8f890048, 0x8f820024, 0x30c600ff, 0x1093823, 0x30e900ff, 0x1221821, 0x30a500ff, 0x24680078, 0x10c00002, 0x1243821, 0x803821, 0x30e40003, 0x14800003, 0x30aa0003, 0x1140000d, 0x312b0003, 0x10a00009, 0x1021, 0x90ed0000, 0x244e0001, 0x31c200ff, 0x45602b, 0xa10d0000, 0x24e70001, 0x1580fff9, 0x25080001, 0x3e00008, 0x0, 0x1560fff3, 0x0, 0x10a0fffb, 0x1021, 0x8cf80000, 0x24590004, 0x332200ff, 0x45782b, 0xad180000, 0x24e70004, 0x15e0fff9, 0x25080004, 0x3e00008, 0x0, 0x93850030, 0x93880040, 0x8f870048, 0x43200, 0x3103007f, 0xe5102b, 0x30c47f00, 0x1040000f, 0x642825, 0x8f840024, 0x3c098000, 0x8c8a00dc, 0xad2a00a4, 0x3c038000, 0xa35825, 0xac6b00a0, 0x8c6c00a0, 0x580fffe, 0x0, 0x8c6d00ac, 0xac8d00dc, 0x3e00008, 0x8c6200a8, 0xa0015e8, 0x8f840024, 0x93880041, 0x3c028000, 0x805021, 0x310300fe, 0xa3830041, 0x30abffff, 0x30cc00ff, 0x30e7ffff, 0x34480180, 0x3c098000, 0x8d2401b8, 0x480fffe, 0x8f8d0054, 0x24180016, 0xad0d0000, 0x8d220124, 0x8f8d0024, 0xad020004, 0x8d590020, 0xa5070008, 0x240201b4, 0xa119000a, 0xa118000b, 0x952f0120, 0x8d4e0008, 0x8d470004, 0x97830044, 0x8d590024, 0x1cf3021, 0xc72821, 0xa32023, 0x2418ffff, 0xa504000c, 0xa50b000e, 0xa5020010, 0xa50c0012, 0xad190018, 0xad180024, 0x95af00d8, 0x3c0b1000, 0x2407fff7, 0x31eeffff, 0xad0e0028, 0x8dac0074, 0xad0c002c, 0xad2b01b8, 0x8d460020, 0xc72824, 0x3e00008, 0xad450020, 0x8f880024, 0x805821, 0x30e7ffff, 0x910900c6, 0x3c028000, 0x30a5ffff, 0x312400ff, 0x41a00, 0x675025, 0x30c600ff, 0x34470180, 0x3c098000, 0x8d2c01b8, 0x580fffe, 0x8f820054, 0x240f0017, 0xace20000, 0x8d390124, 0xacf90004, 0x8d780020, 0xa4ea0008, 0x241901b4, 0xa0f8000a, 0xa0ef000b, 0x95230120, 0x8d6e0008, 0x8d6d0004, 0x97840044, 0x1c35021, 0x14d6021, 0x1841023, 0xa4e2000c, 0xa4e5000e, 0xa4f90010, 0xa4e60012, 0xace00014, 0x8d780024, 0x240dffff, 0xacf80018, 0x8d0f006c, 0xacef001c, 0x8d0e0068, 0x3c0f1000, 0xacee0020, 0xaced0024, 0x950a00ae, 0x240dfff7, 0x3146ffff, 0xace60028, 0x950c0070, 0x95040072, 0x31837fff, 0x3ca00, 0x3082ffff, 0x322c021, 0xacf8002c, 0xad2f01b8, 0x950e0072, 0x8d6a0020, 0xae3021, 0x14d2824, 0xa5060072, 0x3e00008, 0xad650020, 0x3c028000, 0x34460180, 0x3c058000, 0x8ca301b8, 0x460fffe, 0x24090018, 0xacc40000, 0xa0c9000b, 0x8f880024, 0x3c041000, 0x950700ae, 0xa4c70010, 0xacc00030, 0x3e00008, 0xaca401b8, 0x3c028000, 0x34450180, 0x3c048000, 0x8c8301b8, 0x460fffe, 0x8f8a002c, 0x24060019, 0x9549001c, 0x3128ffff, 0x839c0, 0xaca70000, 0xa0a6000b, 0x3c051000, 0x3e00008, 0xac8501b8, 0x8f870034, 0x804021, 0x30c400ff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x8f890054, 0x93830050, 0x34996000, 0xaca90000, 0xa0a30005, 0x8ce20010, 0x240f0002, 0x2403fff7, 0xa4a20006, 0xa4b90008, 0x8d180020, 0xa0b8000a, 0xa0af000b, 0x8cee0000, 0xacae0010, 0x8ced0004, 0xacad0014, 0x8cec001c, 0xacac0024, 0x8ceb0020, 0xacab0028, 0x8cea002c, 0x3c071000, 0xacaa002c, 0x8d090024, 0xaca90018, 0xacc701b8, 0x8d050020, 0xa32024, 0x3e00008, 0xad040020, 0x93850050, 0x24030001, 0x27bdffe8, 0xa33004, 0x2ca20020, 0xafb00010, 0xafbf0014, 0xc01821, 0x10400013, 0x2410fffe, 0x3c070800, 0x8ce73190, 0xe61024, 0x3c088000, 0x35050180, 0x14400005, 0x24060084, 0x8f890024, 0x240a0004, 0x2410ffff, 0xa12a00ec, 0xe001684, 0x0, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c060800, 0x8cc63194, 0xa0016b6, 0xc31024, 0x8f87002c, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x30d000ff, 0x90e6000d, 0xa08821, 0x809021, 0x30c5007f, 0xa0e5000d, 0x8f850024, 0x8e230018, 0x8ca200c0, 0x1062002e, 0x240a000e, 0xe0016a9, 0xa38a0050, 0x2409ffff, 0x10490022, 0x2404ffff, 0x52000020, 0x2021, 0x8e260000, 0x3c0c0010, 0xcc5824, 0x15600039, 0x3c0e0008, 0xce6824, 0x55a0003f, 0x2402021, 0x3c180002, 0xd88024, 0x1200001f, 0x3c0a0004, 0x8f87002c, 0x8ce20014, 0x8ce30010, 0x8ce50014, 0x43f823, 0x3e5c82b, 0x13200005, 0x2402021, 0x8e24002c, 0x8cf10010, 0x10910031, 0x2402021, 0x24020012, 0xa3820050, 0xe0016a9, 0x2412ffff, 0x10520002, 0x2404ffff, 0x2021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x90a800c4, 0x35040020, 0xa0016df, 0xa0a400c4, 0xca4824, 0x1520000b, 0x8f8b002c, 0x8f8d002c, 0x8dac0010, 0x1580000b, 0x2402021, 0x8e2e002c, 0x51c0ffec, 0x2021, 0x2402021, 0xa0016fa, 0x24020017, 0x8d660010, 0x50c0ffe6, 0x2021, 0x2402021, 0xa0016fa, 0x24020011, 0x2402021, 0x24020015, 0xe0016a9, 0xa3820050, 0x240fffff, 0x104fffdc, 0x2404ffff, 0xa0016e9, 0x8e260000, 0xa001720, 0x24020014, 0x3c080004, 0xc83824, 0x50e0ffd4, 0x2021, 0x2402021, 0xa0016fa, 0x24020013, 0x8f860024, 0x27bdffe0, 0xafb10014, 0xafbf0018, 0xafb00010, 0x90c300c4, 0x30a500ff, 0x30620020, 0x10400008, 0x808821, 0x8ccb00c0, 0x2409ffdf, 0x256a0001, 0xacca00c0, 0x90c800c4, 0x1093824, 0xa0c700c4, 0x14a00040, 0x3c0c8000, 0x8f840024, 0x908700c4, 0x2418ffbf, 0x2406ffef, 0x30e3007f, 0xa08300c4, 0x979f0044, 0x8f820048, 0x8f8d0024, 0x3e2c823, 0xa7990044, 0xa5a000ac, 0x91af00c4, 0x1f87024, 0xa1ae00c4, 0x8f8c0024, 0xa18000c7, 0x8f8a0024, 0xa5400072, 0xad4000dc, 0x914500c4, 0xa65824, 0xa14b00c4, 0x8f900020, 0x8f840048, 0x97860044, 0x2042821, 0x10c0000f, 0xaf850020, 0xa3800040, 0x3c078000, 0x8e2c0008, 0x94ed0120, 0x8e2b0004, 0x18d5021, 0x14b8021, 0x2062023, 0x3086ffff, 0x30c8000f, 0x39090001, 0x31310001, 0x16200009, 0xa3880040, 0x93860030, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, 0xaf85004c, 0x3e00008, 0xaf860048, 0xc87023, 0x8fbf0018, 0x93860030, 0x8fb10014, 0x8fb00010, 0x34ef0c00, 0x10f2821, 0x27bd0020, 0xacee0084, 0xaf85004c, 0x3e00008, 0xaf860048, 0x35900180, 0x2002821, 0xe001684, 0x24060082, 0x8f840024, 0x908600c4, 0x30c50040, 0x50a0ffba, 0xa3800050, 0x8f850034, 0x3c068000, 0x8ccd01b8, 0x5a0fffe, 0x8f890054, 0x24086082, 0x24070002, 0xae090000, 0xa6080008, 0xa207000b, 0x8ca30008, 0x3c0e1000, 0xae030010, 0x8ca2000c, 0xae020014, 0x8cbf0014, 0xae1f0018, 0x8cb90018, 0xae190024, 0x8cb80024, 0xae180028, 0x8caf0028, 0xae0f002c, 0xacce01b8, 0xa001744, 0xa3800050, 0x8f8a0024, 0x27bdffe0, 0xafb10014, 0xafb00010, 0x8f880048, 0xafbf0018, 0x93890028, 0x954200ac, 0x30d100ff, 0x109182b, 0x808021, 0x30ac00ff, 0x3047ffff, 0x5821, 0x14600003, 0x310600ff, 0x1203021, 0x1095823, 0x97830044, 0x68202b, 0x1480001b, 0x0, 0x10680043, 0x240a0001, 0x118a0048, 0x34e70880, 0x3165ffff, 0xe001626, 0x2002021, 0xe001666, 0x8f840054, 0x8f840024, 0x948d0070, 0x25ac0001, 0xa48c0070, 0x948b0070, 0x3c060800, 0x8cc63188, 0x31677fff, 0x10e6004f, 0x0, 0x2002021, 0x2202821, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa001730, 0x27bd0020, 0x914400c4, 0x2406ff80, 0x868825, 0xa15100c4, 0x97840044, 0x3088ffff, 0x1100001c, 0x93890028, 0x8f8e0024, 0x2419efff, 0x8bf823, 0x95d800ac, 0x168682b, 0x33e900ff, 0x3197824, 0xa5cf00ac, 0x51a0002a, 0x1005821, 0x8e050020, 0x2408fffb, 0x24030001, 0xa81024, 0xae020020, 0x11830025, 0x34e78000, 0x2002021, 0x3165ffff, 0xe001626, 0x1203021, 0x978b0044, 0x8f870048, 0xa7800044, 0xeb8023, 0xaf900048, 0x93890028, 0x8f8c0024, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x27bd0020, 0x3e00008, 0xa18900c7, 0x8e080020, 0x2409fffb, 0x34e78000, 0x1092824, 0xae050020, 0x158affba, 0x34e70880, 0x2002021, 0xe0015f4, 0x3165ffff, 0x2002021, 0x2202821, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa001730, 0x27bd0020, 0xa0017e7, 0x4821, 0x2002021, 0x3165ffff, 0xe0015f4, 0x1203021, 0x978b0044, 0x8f870048, 0xa7800044, 0xeb8023, 0xa0017f7, 0xaf900048, 0x94890070, 0x240a8000, 0x12a4024, 0xa4880070, 0x90850070, 0x90990070, 0x30a200ff, 0x219c2, 0x3f827, 0x1fc1c0, 0x332f007f, 0x1f87025, 0xa08e0070, 0xa0017cf, 0x2002021, 0x8f880024, 0x24030001, 0x910a0078, 0x910500c7, 0x25090078, 0x3147003f, 0x24e6ffe0, 0xc31804, 0x2cc20020, 0x30670019, 0xa3850028, 0x1040001a, 0xaf890034, 0x3c0a8000, 0x354b0002, 0x24050001, 0x24060001, 0x14e00016, 0x6b1024, 0x2821, 0x1440000f, 0x30630020, 0x1060000f, 0x24050001, 0x8d060074, 0x8d190074, 0x2403ff80, 0xc31024, 0x27940, 0x3338007f, 0x1f86825, 0x3c0e1000, 0x1ae6025, 0xad4c0830, 0x91280001, 0x31060001, 0xa0017a5, 0x0, 0x3e00008, 0x0, 0x8d0f0074, 0x8d0d0074, 0x2418ff80, 0x1f87024, 0xe4140, 0x31ac007f, 0x10c5025, 0x3c0b1000, 0x14b3825, 0x3c098000, 0xa0017a5, 0xad270830, 0x27bdffd8, 0xafb00010, 0x8f900034, 0xafb40020, 0xafb10014, 0xafbf0024, 0xafb3001c, 0xafb20018, 0x8e050010, 0x3c020800, 0x8c4231b0, 0x8f860038, 0x30a73fff, 0xe2182b, 0x8cd20014, 0x808821, 0x8cd30020, 0x10600007, 0xa021, 0x90cb000d, 0x240aff80, 0x14b4824, 0x312800ff, 0x1500000c, 0x56382, 0x2202021, 0x2411000d, 0xa3910050, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa0016a9, 0x27bd0028, 0x31850003, 0x54a0fff4, 0x2202021, 0x94cf001c, 0x8f8e0024, 0x8e070028, 0xa5cf00d8, 0x8ccd0010, 0x24d3023, 0x10e6005c, 0x2402001f, 0xe0016a9, 0xa3820050, 0x241fffff, 0x105f004e, 0x2404ffff, 0x8f83003c, 0x8f88002c, 0x2639821, 0x8d090010, 0x1231023, 0x8f83001c, 0xad020010, 0xad130020, 0x8c670074, 0xf3202b, 0x14800062, 0x2202021, 0x8f860038, 0x8e0c0024, 0x8cc50024, 0x11850007, 0x2202021, 0x240e001c, 0xe0016a9, 0xa38e0050, 0x240dffff, 0x104d0037, 0x2404ffff, 0x8f84002c, 0x8c980024, 0x270f0001, 0xac8f0024, 0x12720044, 0x8f99001c, 0x8f320074, 0x12530041, 0x3c0a0080, 0x8e090000, 0x12a1024, 0x1440003a, 0x0, 0x8e040014, 0x2412ffff, 0x10920006, 0x240b001b, 0x2202021, 0xe0016a9, 0xa38b0050, 0x10520021, 0x2404ffff, 0x8e030000, 0x3c0c0001, 0x6c2824, 0x10a00013, 0x3c060080, 0x66a024, 0x16800009, 0x2002821, 0x2202021, 0x240e001a, 0xe0016a9, 0xa38e0050, 0x240dffff, 0x104d0012, 0x2404ffff, 0x2002821, 0x2202021, 0xe0016c9, 0x24060001, 0x2410ffff, 0x2404ffff, 0x1050000a, 0x24140001, 0x8f8f002c, 0x2202021, 0x2803021, 0x95f20034, 0x24050001, 0x26580001, 0xe0017a5, 0xa5f80034, 0x2021, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8f83003c, 0xe3c821, 0x259c02b, 0x1300ffa8, 0x8f88002c, 0xa00188e, 0x24020018, 0xac800020, 0xa0018b8, 0x8e040014, 0x8e1f0000, 0x3c070080, 0x3e79824, 0x1660fff9, 0x2408001a, 0x2202021, 0xe0016a9, 0xa3880050, 0x2403ffff, 0x1443ffba, 0x2404ffff, 0xa0018e1, 0x8fbf0024, 0x240b001d, 0xe0016a9, 0xa38b0050, 0x240affff, 0x144aff9a, 0x2404ffff, 0xa0018e1, 0x8fbf0024, 0x8f850024, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0020, 0x90a700c4, 0x8f900034, 0x2412ffff, 0x34e20040, 0x92060000, 0xa0a200c4, 0x8e030010, 0x809821, 0x10720006, 0x30d1003f, 0x2408000d, 0xe0016a9, 0xa3880050, 0x10520026, 0x2406ffff, 0x8f8a0024, 0x8e090018, 0x8d4400c0, 0x11240007, 0x240c000e, 0x2602021, 0xe0016a9, 0xa38c0050, 0x240bffff, 0x104b001b, 0x2406ffff, 0x24040020, 0x12240004, 0x8f8d0024, 0x91af00c4, 0x35ee0020, 0xa1ae00c4, 0x8f85003c, 0x10a0001a, 0x0, 0x1224004b, 0x8f980024, 0x8f92fed4, 0x2406fffd, 0x97100070, 0x9651000a, 0x1230000b, 0x8fbf0020, 0x3c1f0800, 0x8fff318c, 0x3e5c82b, 0x1720001e, 0x2602021, 0x2821, 0xe0017a5, 0x24060001, 0x3021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xc01021, 0x3e00008, 0x27bd0028, 0x5224002a, 0x8e030014, 0x8f840024, 0x94890070, 0x25280001, 0xa4880070, 0x94870070, 0x3c050800, 0x8ca53188, 0x30e27fff, 0x1045000e, 0x0, 0x2602021, 0xe001730, 0x24050001, 0xa001943, 0x3021, 0x2402002d, 0xa3820050, 0xe0016a9, 0x2413ffff, 0x1453ffe1, 0x2406ffff, 0xa001944, 0x8fbf0020, 0x94980070, 0x24198000, 0x24050001, 0x3199024, 0xa4920070, 0x90910070, 0x908d0070, 0x323000ff, 0x1079c2, 0xf7027, 0xe61c0, 0x31ab007f, 0x16c5025, 0xa08a0070, 0xe001730, 0x2602021, 0xa001943, 0x3021, 0x2406ffff, 0x1466ffd6, 0x8f840024, 0x2602021, 0xe001730, 0x24050001, 0xa001943, 0x3021, 0x2602021, 0xa00195d, 0x2402000a, 0x8f880024, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x910a00c4, 0x8f870034, 0x808021, 0x35490040, 0x8ce60010, 0xa10900c4, 0x3c020800, 0x8c4231b0, 0x30c53fff, 0xa2182b, 0x10600007, 0x8f850038, 0x240dff80, 0x90ae000d, 0x1ae6024, 0x318b00ff, 0x15600008, 0x6c382, 0x2002021, 0x2403000d, 0x8fbf0014, 0x8fb00010, 0x27bd0018, 0xa0016a9, 0xa3830050, 0x33060003, 0x240f0002, 0x54cffff7, 0x2002021, 0x94a2001c, 0x8f850024, 0x24190023, 0xa4a200d8, 0x8ce80000, 0x81e02, 0x307f003f, 0x13f90035, 0x3c0a0083, 0x8ce80018, 0x8ca600c0, 0x11060008, 0x0, 0x2405000e, 0xe0016a9, 0xa3850050, 0x2407ffff, 0x10470018, 0x2404ffff, 0x8f850024, 0x90a900c4, 0x35240020, 0xa0a400c4, 0x8f8c002c, 0x918e000d, 0x31cd007f, 0xa18d000d, 0x8f83003c, 0x1060001c, 0x2002021, 0x8f840038, 0x8c980010, 0x303782b, 0x11e0000d, 0x24190018, 0x2002021, 0xa3990050, 0xe0016a9, 0x2410ffff, 0x10500002, 0x2404ffff, 0x2021, 0x8fbf0014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0018, 0x8c860010, 0x8f9f002c, 0x2002021, 0xc31023, 0xafe20010, 0x24050001, 0xe0017a5, 0x24060001, 0xa0019cc, 0x2021, 0xe001730, 0x24050001, 0xa0019cc, 0x2021, 0x10a5824, 0x156affd9, 0x8f8c002c, 0xa0a600ec, 0xa0019b9, 0xa3860042, 0x27bdffd8, 0xafb00010, 0x8f900034, 0xafb20018, 0xafbf0020, 0xafb3001c, 0xafb10014, 0x8e110010, 0x3c030800, 0x8c6331b0, 0x32253fff, 0xa3102b, 0x10400008, 0x809021, 0x8f860038, 0x2409ff80, 0x90ca000d, 0x12a4024, 0x310700ff, 0x14e0000b, 0x116b82, 0x2402021, 0x2412000d, 0xa3920050, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa0016a9, 0x27bd0028, 0x31ac0003, 0x240b0001, 0x558bfff4, 0x2402021, 0x90cf000d, 0x31ee0008, 0x11c00060, 0x8f93003c, 0x16600009, 0x24020027, 0x8e19000c, 0x8cd80020, 0x17380005, 0x24020020, 0x8e020008, 0x8cdf0024, 0x105f0040, 0x24020020, 0xe0016a9, 0xa3820050, 0x2406ffff, 0x10460033, 0x2404ffff, 0x8f99002c, 0x240afff7, 0x3c13800e, 0x9329000d, 0x2404ff80, 0x3c0d8000, 0x12af824, 0xa33f000d, 0x8f99001c, 0x3c080800, 0x8d0831ac, 0x8f830054, 0x97270078, 0x8f9f002c, 0x1031021, 0x30e57fff, 0x53040, 0x467821, 0x31f8007f, 0x3136021, 0x1e47024, 0xadae002c, 0xa5910000, 0x8feb0028, 0x256a0001, 0xafea0028, 0x8fe3002c, 0x8e09002c, 0x694021, 0xafe8002c, 0x8e07002c, 0xafe70030, 0x8e050014, 0xafe50034, 0x97e6003a, 0x24c20001, 0xa7e2003a, 0x97330078, 0x3c100800, 0x8e1031b0, 0x26630001, 0x30717fff, 0x12300027, 0x603021, 0x8f8f001c, 0x2402021, 0x24050001, 0xe001730, 0xa5e60078, 0x2021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0028, 0x8e050014, 0x2413ffff, 0x10b3001d, 0x8f830024, 0x8e080018, 0x8c6700c0, 0x15070009, 0x2402000e, 0x8e0a0024, 0x8cc90028, 0x15490005, 0x24020021, 0x8e070028, 0x8ccb002c, 0x10eb0013, 0x2402001f, 0xe0016a9, 0xa3820050, 0x1453ffb3, 0x2404ffff, 0xa001a4e, 0x8fbf0020, 0xa001a16, 0x24020024, 0x240e8000, 0x6e6824, 0x31acffff, 0xc5bc2, 0x317100ff, 0x118027, 0xa001a47, 0x1033c0, 0xa001a65, 0x24020025, 0x8e05002c, 0x10a0ffec, 0x24020023, 0x8f8e001c, 0x8dcd0074, 0x1a5602b, 0x1580ffe7, 0x24020026, 0x8ccf0014, 0xa7c021, 0x1f8202b, 0x1080ff99, 0x8f99002c, 0x2402021, 0xa001a65, 0x24020022, 0x27bdffe0, 0xafb00010, 0x8f900034, 0xafb10014, 0xafbf0018, 0x8e050010, 0x3c030800, 0x8c6331b0, 0x808821, 0x30a43fff, 0x83102b, 0x10400007, 0x8f860038, 0x2409ff80, 0x90ca000d, 0x12a4024, 0x310700ff, 0x14e00009, 0x8f8b003c, 0x2410000d, 0x2202021, 0xa3900050, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xa0016a9, 0x27bd0020, 0x11600008, 0x5c382, 0x8f8f0024, 0x8f8efed4, 0x2407fffd, 0x95ec0070, 0x95cd000a, 0x11ac0038, 0x8fbf0018, 0x33050003, 0x14a00010, 0x0, 0x92190002, 0x13200041, 0x0, 0x8e060024, 0x50c0000f, 0x92040003, 0x2202021, 0x2402000f, 0xe0016a9, 0xa3820050, 0x2408ffff, 0x14480007, 0x2407ffff, 0xa001ae2, 0x8fbf0018, 0x90c3000d, 0x30640008, 0x10800037, 0x2202021, 0x92040003, 0x24070002, 0x308900ff, 0x15270005, 0x308f00ff, 0x8f8a003c, 0x11400031, 0x240c002c, 0x308f00ff, 0x39e50010, 0x2cad0001, 0x2dee0001, 0x2002821, 0x1cd3025, 0xe0016c9, 0x2202021, 0x2410ffff, 0x1050000e, 0x2407ffff, 0x8f83003c, 0x10600017, 0x2202021, 0x3c190800, 0x8f39318c, 0x323c02b, 0x5700000c, 0x2411002d, 0x2202021, 0x2821, 0xe0017a5, 0x24060001, 0x3821, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xe01021, 0x3e00008, 0x27bd0020, 0xe0016a9, 0xa3910050, 0x1450fff6, 0x2407ffff, 0xa001ae2, 0x8fbf0018, 0xe001730, 0x24050001, 0xa001ae1, 0x3821, 0x8cdf0024, 0x8e020024, 0x545fffc1, 0x2202021, 0xa001ac2, 0x92040003, 0xa001ab6, 0x24020010, 0x2202021, 0xe0016a9, 0xa38c0050, 0x240bffff, 0x104bffe3, 0x2407ffff, 0xa001ac9, 0x92040003, 0x30a500ff, 0x24060001, 0x24a90001, 0xc9102b, 0x1040000c, 0x4021, 0x240a0001, 0xa61823, 0x308b0001, 0x24c60001, 0x6a3804, 0x42042, 0x11600002, 0xc9182b, 0x1074025, 0x1460fff8, 0xa61823, 0x3e00008, 0x1001021, 0x27bdffd8, 0xafb00018, 0x8f900034, 0xafb1001c, 0xafbf0020, 0x2403ffff, 0x2411002f, 0xafa30010, 0x92060000, 0x24050008, 0x26100001, 0x662026, 0xe001b01, 0x308400ff, 0x21e00, 0x3c021edc, 0x34466f41, 0xa001b29, 0x1021, 0x10a00009, 0x801821, 0x24450001, 0x30a2ffff, 0x2c450008, 0x461fffa, 0x32040, 0x862026, 0x14a0fff9, 0x801821, 0xe001b01, 0x24050020, 0x8fa30010, 0x2629ffff, 0x313100ff, 0x34202, 0x240700ff, 0x1627ffe2, 0x1021826, 0x35027, 0xafaa0014, 0xafaa0010, 0x3021, 0x27a80010, 0x27a70014, 0xe67823, 0x91ed0003, 0x24ce0001, 0xc86021, 0x31c600ff, 0x2ccb0004, 0x1560fff9, 0xa18d0000, 0x8fa20010, 0x8fbf0020, 0x8fb1001c, 0x8fb00018, 0x3e00008, 0x27bd0028, 0x93830030, 0x27bdffe0, 0x24020034, 0xafb10014, 0xafb00010, 0xafbf001c, 0xafb20018, 0x808821, 0x10620062, 0xa08021, 0x92040004, 0x14800045, 0x8f880024, 0xa3800028, 0x8e050004, 0x8d0600c8, 0x3c0700ff, 0x34e3ffff, 0xa32824, 0xc5102b, 0x1440004d, 0xaf85003c, 0x978a0044, 0x8f870048, 0x1471023, 0x10a00032, 0xa7820044, 0x8f98001c, 0x304cffff, 0x9312007c, 0x127882, 0x31f10001, 0x117080, 0x1c56821, 0x18d582b, 0x11600061, 0x8f860024, 0x8f890020, 0x8f84004c, 0x1089005e, 0x3c023f01, 0x8e1f0000, 0x3c102500, 0x3e2c824, 0x1730007a, 0x8f840034, 0x8f870034, 0x8f860024, 0x8ce30000, 0xacc30078, 0x8ce50010, 0xacc50088, 0x8f870048, 0x8f85003c, 0x938d0028, 0x30ae0003, 0xe4023, 0x310a0003, 0x14d4021, 0xa3880028, 0x94cb00ac, 0x1276021, 0xaf8c0020, 0x35691000, 0xa4c900ac, 0x16200051, 0x1452021, 0xaf840048, 0x2021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x8f840020, 0xaf800048, 0x873021, 0xa001b92, 0xaf860020, 0x241f000c, 0xa39f0050, 0xe0016a9, 0x2202021, 0x2419ffff, 0x1059ffee, 0x2404ffff, 0x8f880024, 0xa3800028, 0x8e050004, 0x8d0600c8, 0x3c0700ff, 0x34e3ffff, 0xa32824, 0xc5102b, 0x1040ffb5, 0xaf85003c, 0x2202021, 0x24090019, 0xa3890050, 0xe0016a9, 0x2411ffff, 0x1051ffdd, 0x2404ffff, 0xa001b64, 0x8f85003c, 0x8f840024, 0x8f870034, 0x8cf20030, 0x908600c4, 0x30c50010, 0x14a00010, 0x8f830048, 0x2c680005, 0x15000028, 0x0, 0x908a00c4, 0x246bfffc, 0x31490010, 0x15200008, 0x316400ff, 0x8f8d004c, 0x8f8c0020, 0x11ac0004, 0x388f0001, 0x31ee0001, 0x15c0002f, 0x0, 0xe001b14, 0x0, 0xa001beb, 0x0, 0x8f890020, 0x938d0028, 0x30ae0003, 0xe4023, 0x310a0003, 0x14d4021, 0xa3880028, 0x94cb00ac, 0x1276021, 0xaf8c0020, 0x35691000, 0xa4c900ac, 0x1220ffb1, 0x1452021, 0x25180004, 0xa3980028, 0x94cf00ac, 0x24920004, 0xaf920048, 0x35f12000, 0xa4d100ac, 0xa001b93, 0x2021, 0x8c8200dc, 0x1242ff6c, 0x2202021, 0x24180005, 0xa3980050, 0xe0016a9, 0x2412ffff, 0x1452ff66, 0x2404ffff, 0xa001b94, 0x8fbf001c, 0x30e500ff, 0xe0015b0, 0x3021, 0x8f860024, 0x8f870048, 0x8f890020, 0xa001b84, 0x8f85003c, 0xe0015db, 0x0, 0xa001beb, 0x0, 0x93830042, 0x27bdffe0, 0x24020002, 0xafb20018, 0xafb10014, 0xafbf001c, 0x808821, 0xafb00010, 0x9021, 0x10620055, 0x2404fffd, 0x97830044, 0x8f850048, 0x3066ffff, 0xc5202b, 0x1480005b, 0x93870030, 0x3c088000, 0x95040120, 0x10e50052, 0x8f8a0020, 0x8f84004c, 0x30a500ff, 0xe0015b0, 0x24060001, 0x8f9f0054, 0x3c058000, 0x3c194080, 0x27ed0178, 0x31b00078, 0x240eff80, 0x2195825, 0x34af0900, 0x31b80007, 0x1ae6024, 0xacac0800, 0x30f8021, 0xacab0810, 0x2202021, 0x2002821, 0xe001b4e, 0xaf900034, 0x2403ffff, 0x10430033, 0x2404ffff, 0x8e0c0010, 0x3c070800, 0x8ce731b0, 0x92060000, 0x31843fff, 0x87102b, 0x10400023, 0x30cd003f, 0x8f980054, 0x47180, 0x3c040800, 0x8c8431a8, 0x2409ff80, 0x93900041, 0x984021, 0x10e2021, 0x897024, 0xe5140, 0x3c098000, 0x3099007f, 0x3c0f0080, 0x8f880024, 0x35250940, 0x35e20001, 0x1593825, 0x308b0078, 0x30860007, 0x3c031000, 0x3c1f800c, 0xc5c021, 0x1625825, 0xe35025, 0x33f7821, 0x36050001, 0xad2e0804, 0xaf980038, 0xad2b0814, 0xaf8f002c, 0xad2e0028, 0xad040074, 0xad2a0830, 0xa3850041, 0x93830042, 0x24100003, 0x50700027, 0x25a3ffe0, 0x240c0001, 0x106c001c, 0x24060023, 0x2402021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x31490003, 0x5520ffae, 0x8f84004c, 0xa001c27, 0x8f90004c, 0x8f84004c, 0x306500ff, 0xe0015b0, 0x24060001, 0x938b0030, 0x24050034, 0x11650018, 0x97830044, 0x8f850048, 0x3062ffff, 0xa25823, 0xaf8b0048, 0xa001c5f, 0xa7800044, 0x11a60037, 0x0, 0x2202021, 0x2411000b, 0xe0016a9, 0xa3910050, 0xa001c5f, 0x409021, 0x2c720020, 0x1240fff8, 0x3f880, 0x3c070800, 0x24e77960, 0x3e7c821, 0x8f2d0000, 0x1a00008, 0x0, 0x8f850048, 0x2ca20005, 0x5440001d, 0xa7800044, 0x978a0044, 0x3148ffff, 0xa84823, 0x2d2f0005, 0x11e00003, 0x314400ff, 0x24aefffc, 0x31c400ff, 0x8f90004c, 0x8f980020, 0x12180004, 0x38990001, 0x332d0001, 0x15a00029, 0x0, 0x8f910024, 0x922500c4, 0x34a30010, 0xa22300c4, 0x97830044, 0x8f850048, 0x8f840024, 0x3062ffff, 0xa25823, 0xac8000dc, 0xa7800044, 0xa001c5f, 0xaf8b0048, 0x3062ffff, 0xa25823, 0xa001c5f, 0xaf8b0048, 0x2403ffff, 0x11830005, 0x0, 0xe001981, 0x2202021, 0xa001c5f, 0x409021, 0xe001908, 0x2202021, 0xa001c5f, 0x409021, 0xe0019e5, 0x2202021, 0xa001c5f, 0x409021, 0xe00185f, 0x2202021, 0xa001c5f, 0x409021, 0xe001a87, 0x2202021, 0xa001c5f, 0x409021, 0xe0015db, 0x0, 0x97830044, 0x8f850048, 0x306cffff, 0xac3823, 0x2cff0005, 0x53e0ffa8, 0x3062ffff, 0x8f860024, 0xa7800044, 0xacc200dc, 0x3062ffff, 0xa25823, 0xa001c5f, 0xaf8b0048, 0x27bdffd0, 0xafb20018, 0xafb00010, 0xafbf0028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb10014, 0x3c0c8000, 0x8d880128, 0x240fff80, 0x3c07800a, 0x25100100, 0x250b0080, 0x20f6824, 0x3205007f, 0x16f7024, 0xad8e0090, 0xa72821, 0xad8d0024, 0x90a700ec, 0x3169007f, 0x3c0a8004, 0x12a1821, 0xa3870042, 0x9066007c, 0x809021, 0xaf83001c, 0x30c20002, 0xaf880054, 0xaf850024, 0xa01821, 0x14400002, 0x24040034, 0x24040030, 0xa3840030, 0x8c6600cc, 0x30f100ff, 0x24040004, 0xaf860048, 0x12240004, 0xa3800050, 0x8e530004, 0x1660001d, 0x3c088000, 0x93870041, 0x30f20001, 0x1240000f, 0x8fbf0028, 0x8cb80074, 0x8ca40074, 0x2419ff80, 0x3198824, 0x117140, 0x308f007f, 0x1cf6025, 0x3c0d2000, 0x18d5825, 0x30f500fe, 0x3c0a8000, 0xad4b0830, 0xa3950041, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x24020001, 0x27bd0030, 0x3e00008, 0xaca600cc, 0x8e590008, 0x951f0120, 0x8e460010, 0x33fc021, 0x3307ffff, 0x30f5000f, 0x32b40001, 0xaf860020, 0x1680003b, 0xa3950040, 0x35060c00, 0x2a61021, 0xf51823, 0xad030084, 0xaf82004c, 0x8e490004, 0x3128ffff, 0x1100002b, 0xa7890044, 0x2410ff80, 0x3c158000, 0x3c142000, 0xa001d4d, 0x2413fffe, 0x90ae00c4, 0x20e6824, 0x31ac00ff, 0x1580002a, 0x2402021, 0x93840041, 0x97860044, 0x308f0001, 0x11e0000b, 0x2642824, 0x8f890024, 0x8d230074, 0x8d280074, 0xa3850041, 0x701024, 0x2c940, 0x311f007f, 0x33fc025, 0x3148825, 0xaeb10830, 0x10c00010, 0x8f850024, 0x90a700c4, 0x2075824, 0x316a00ff, 0x1540ffe6, 0x2402021, 0xe001c01, 0x97910044, 0x1040ffe8, 0x93840041, 0x2405fffd, 0x54450005, 0x8e430020, 0x2202821, 0xe001586, 0x2402021, 0x8e430020, 0x30700004, 0x1600000a, 0x2414fffb, 0x8f850024, 0xa001d03, 0x8f860048, 0xa001d2e, 0xaf86004c, 0xe00182b, 0x0, 0xa001d3d, 0x93840041, 0x749824, 0xe0015a0, 0xae530020, 0x8f850024, 0xa001d03, 0x8f860048, 0x27bdffd8, 0xafb3001c, 0xafb10014, 0xafbf0020, 0xafb20018, 0xafb00010, 0x3c028000, 0x8c520140, 0x8c4b0148, 0x3c048000, 0xb8c02, 0x322300ff, 0x317300ff, 0x8c8501b8, 0x4a0fffe, 0x34900180, 0xae120000, 0x8c870144, 0x2464fff0, 0x24060002, 0x2c830013, 0xae070004, 0xa6110008, 0xa206000b, 0xae130024, 0x1060004f, 0x8fbf0020, 0x44880, 0x3c0a0800, 0x254a79e0, 0x12a4021, 0x8d040000, 0x800008, 0x0, 0x3c100800, 0x8e1031a8, 0x31733fff, 0x138980, 0x2122821, 0x240cff80, 0xb12021, 0x264d0100, 0x26470080, 0x3c0f8000, 0x3c038004, 0x31a8007f, 0x30e9007f, 0x308a007f, 0x3c0e800a, 0x3c02800c, 0x8cc024, 0x1ac3024, 0xecc824, 0x1239821, 0x1428021, 0xade60024, 0x10ef821, 0xadf90090, 0xadf80028, 0xaf90002c, 0xaf9f0024, 0xaf93001c, 0xe001675, 0x1608021, 0x3c038000, 0x8c6b01b8, 0x560fffe, 0x8f87002c, 0x8f860024, 0x34650180, 0x90f9000d, 0xacb20000, 0x24c20078, 0x19c600, 0x187e03, 0xf9027, 0x1227c2, 0xa4b00006, 0x10800070, 0x240e6082, 0xa4ae0008, 0xa0a00005, 0x240f0002, 0xa0af000b, 0x4c400, 0x8f8b001c, 0x3c192700, 0x3199025, 0xacb20010, 0xaca00014, 0xaca00024, 0xaca00028, 0xaca0002c, 0x8d730038, 0x2411ff80, 0xacb30018, 0x90f0000d, 0x2302824, 0x30a400ff, 0x10800005, 0x8fbf0020, 0x90ec000d, 0x319f007f, 0xa0ff000d, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3c0a1000, 0x3c0d8000, 0x27bd0028, 0x3e00008, 0xadaa01b8, 0x265f0100, 0x2405ff80, 0x33f8007f, 0x3c068000, 0x3e57824, 0x3c19800a, 0x3192021, 0xaccf0024, 0x908e00c4, 0xae6824, 0x31ac00ff, 0x1180ffea, 0xaf840024, 0x248e0078, 0x95cd0012, 0x3c0c0800, 0x8d8c31a8, 0x3c03800c, 0x31ab3fff, 0x1924821, 0xb5180, 0x12a4021, 0x3104007f, 0x1051024, 0x833821, 0xacc20028, 0xe001675, 0xaf87002c, 0x3c038000, 0x8c6501b8, 0x4a0fffe, 0x0, 0xae120000, 0x8c720144, 0xae120004, 0xa6110008, 0x24110002, 0xa211000b, 0xae130024, 0xa001dd8, 0x8fbf0020, 0x3c126000, 0x8e452c08, 0x3c03f003, 0x3462ffff, 0xa2f824, 0xae5f2c08, 0x8e582c08, 0x3c1901b0, 0x3199825, 0xae532c08, 0xa001dd8, 0x8fbf0020, 0x264d0100, 0x31af007f, 0x3c10800a, 0x240eff80, 0x1f02821, 0x1ae6024, 0x3c0b8000, 0xad6c0024, 0x1660ffb8, 0xaf850024, 0x24110003, 0xa0b100ec, 0xa001dd8, 0x8fbf0020, 0x26480100, 0x310a007f, 0x3c0b800a, 0x2409ff80, 0x14b3021, 0x1092024, 0x3c078000, 0xace40024, 0xa001dd7, 0xaf860024, 0x944d0012, 0x321f3fff, 0x31ac3fff, 0x159fff8d, 0x240e6082, 0x90c300c4, 0x2409ff80, 0x1231024, 0x304a00ff, 0x1140ff87, 0x0, 0x24070004, 0xa0c700ec, 0x8f87002c, 0x24086084, 0x2406000d, 0xa4a80008, 0xa0a60005, 0xa001dc2, 0x240f0002, 0x0 }; u32 bce_RXP_b09FwData[(0x0/4) + 1] = { 0x0 }; u32 bce_RXP_b09FwRodata[(0x124/4) + 1] = { 0x5f865437, 0xe4ac62cc, 0x50103a45, 0x36621985, 0xbf14c0e8, 0x1bc27a1e, 0x84f4b556, 0x94ea6fe, 0x7dda01e7, 0xc04d7481, 0x80080100, 0x80080080, 0x80080000, 0x8004fbc, 0x8004fbc, 0x8005098, 0x800506c, 0x8005050, 0x8004f8c, 0x8004f8c, 0x8004f8c, 0x8004fc4, 0x80072bc, 0x8007308, 0x80072c8, 0x80071f0, 0x80072c8, 0x80072f8, 0x80072c8, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80072e8, 0x80072d8, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80071f0, 0x80072d8, 0x8007890, 0x800775c, 0x8007858, 0x800775c, 0x8007828, 0x8007644, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x800775c, 0x8007784, 0x0 }; u32 bce_RXP_b09FwBss[(0x20/4) + 1] = { 0x0 }; u32 bce_RXP_b09FwSbss[(0x58/4) + 1] = { 0x0 }; u32 bce_RXP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; int bce_CP_b09FwReleaseMajor = 0x1; int bce_CP_b09FwReleaseMinor = 0x0; int bce_CP_b09FwReleaseFix = 0x0; u32 bce_CP_b09FwStartAddr = 0x08000080; u32 bce_CP_b09FwTextAddr = 0x08000000; int bce_CP_b09FwTextLen = 0x5418; u32 bce_CP_b09FwDataAddr = 0x080055a0; int bce_CP_b09FwDataLen = 0x84; u32 bce_CP_b09FwRodataAddr = 0x08005418; int bce_CP_b09FwRodataLen = 0x16c; u32 bce_CP_b09FwBssAddr = 0x080056b8; int bce_CP_b09FwBssLen = 0x19c; u32 bce_CP_b09FwSbssAddr = 0x08005624; int bce_CP_b09FwSbssLen = 0x91; u32 bce_CP_b09FwSDataAddr = 0x00000000; int bce_CP_b09FwSDataLen = 0x0; u32 bce_CP_b09FwText[(0x5418/4) + 1] = { 0xa000020, 0x0, 0x0, 0xd, 0x6370342e, 0x362e3136, 0x0, 0x4061004, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38003c00, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21003800, 0x1, 0x2b, 0x0, 0x10000003, 0x0, 0xd, 0xd, 0x3c020800, 0x24425624, 0x3c030800, 0x24635854, 0xac400000, 0x43202b, 0x1480fffd, 0x24420004, 0x3c1d0800, 0x37bd9ffc, 0x3a0f021, 0x3c100800, 0x26100080, 0x3c1c0800, 0x279c5624, 0xe000286, 0x0, 0xd, 0xa01821, 0x801021, 0x802821, 0x3c046000, 0x3c076000, 0x24060008, 0x10600006, 0x34842078, 0x8c420000, 0xace22008, 0x8c630000, 0x3e00008, 0xace3200c, 0xa000e38, 0x0, 0x24030040, 0x3c026000, 0x3e00008, 0xac432000, 0x3c076000, 0x8f860000, 0x8ce52074, 0x861021, 0xa2182b, 0x14600007, 0x2821, 0x8f8afdfc, 0x24050001, 0xa1440013, 0x8f890000, 0x1244021, 0xaf880000, 0x3e00008, 0xa01021, 0x8f84fdfc, 0x8f850000, 0x90860013, 0x30c300ff, 0xa31023, 0xaf820000, 0x3e00008, 0xa0800013, 0x8f84fdfc, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x90890011, 0x90870011, 0x24020028, 0x312800ff, 0x39060028, 0x30e300ff, 0x2485002c, 0x2cd00001, 0x10620016, 0x2484001c, 0xe000037, 0x0, 0x8f8ffdfc, 0x3c056000, 0x24020204, 0x95ee003e, 0x95ed003c, 0xe5c00, 0x31acffff, 0x16c5025, 0xacaa2010, 0x52000001, 0x24020004, 0xaca22000, 0x0, 0x0, 0x0, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0xa00006f, 0x2821, 0x8f85fdfc, 0x27bdffd8, 0xafbf0020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x809821, 0x90a40011, 0x24b0001c, 0x24b1002c, 0x308300ff, 0x38620028, 0xe000059, 0x2c520001, 0xe000061, 0x0, 0x2002021, 0x12400002, 0x2202821, 0x2821, 0xe000037, 0x0, 0x8f8dfdfc, 0x3c088000, 0x3c056000, 0x95ac003e, 0x95ab003c, 0x2683025, 0xc4c00, 0x316affff, 0x12a3825, 0xaca72010, 0x24020202, 0xaca62014, 0x52400001, 0x24020002, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x27bd0028, 0x3e00008, 0xaca22000, 0x27bdffe0, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf001c, 0x3c116000, 0x8e232074, 0x8f820000, 0x30d0ffff, 0x30f2ffff, 0x1062000c, 0x2406008f, 0xe000037, 0x0, 0x3c06801f, 0x104400, 0x34c5ff00, 0x1123825, 0x24040002, 0xae272010, 0x3021, 0xae252014, 0xae242000, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xc01021, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafb00010, 0x30d0ffff, 0xafbf0018, 0xafb10014, 0xe000037, 0x30f1ffff, 0x102400, 0x918025, 0x3c036000, 0xac702010, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24020004, 0xac622000, 0x27bd0020, 0x3e00008, 0x1021, 0x27bdffe8, 0x3c0c6018, 0xafbf0010, 0x8d985000, 0x2419ff7f, 0x3c088000, 0x3197824, 0x35ee380c, 0x340d8071, 0x240a0031, 0x24090c00, 0xad8e5000, 0x3c0b800a, 0xad8d53bc, 0xad0a0008, 0xad090024, 0xe0004a9, 0xaf8b002c, 0xe000467, 0x0, 0xe000046, 0x0, 0x3c076000, 0x8ce50808, 0x2406fff0, 0x3c035709, 0xa62024, 0x3462f000, 0x10820043, 0x241f0001, 0xe000bca, 0xaf800038, 0x3c066016, 0x3c086014, 0x8cc70000, 0x8d0500a0, 0x3c03ffff, 0xe32024, 0x3c025353, 0x52fc2, 0x10820044, 0x34c87c00, 0x950201f2, 0xa7800050, 0x10400003, 0xa7800060, 0x384c1e1e, 0xa78c0050, 0x950201f8, 0x10400004, 0x8f8e0038, 0x384d1e1e, 0xa78d0060, 0x8f8e0038, 0x11c00004, 0x97870060, 0x240f0020, 0xa78f0050, 0x97870060, 0x30e4ffff, 0x2c980081, 0x17000003, 0x97860050, 0x24070080, 0x24040080, 0x2cd90401, 0x53200001, 0x24060400, 0x3c036000, 0x8c650438, 0x241f103c, 0x30a2ffff, 0x505f002a, 0xa3800062, 0x5480000c, 0xa3800062, 0x24020050, 0xa3820062, 0x93880062, 0x1100000a, 0x8fbf0010, 0x27bd0018, 0xa7800060, 0xa7800050, 0xa7800058, 0x3e00008, 0xa7800076, 0x93880062, 0x1500fff8, 0x8fbf0010, 0x27bd0018, 0xa7870060, 0xa7860050, 0xa7800058, 0x3e00008, 0xa7800076, 0xaf9f0038, 0xe000bca, 0x0, 0x3c066016, 0x3c086014, 0x8cc70000, 0x8d0500a0, 0x3c03ffff, 0xe32024, 0x3c025353, 0x52fc2, 0x1482ffbe, 0x34c87c00, 0x55880, 0x1665021, 0x8d490004, 0x3c066000, 0xa00010e, 0x1264021, 0x8d0a003c, 0x31490001, 0x11200009, 0x0, 0x1080ffd5, 0x24020050, 0x8d0b00c8, 0x31640001, 0x1480ffd3, 0x93880062, 0xa000131, 0x24020051, 0x1480ffcf, 0x93880062, 0xa000131, 0x24020050, 0x3083ffff, 0x8f88002c, 0x8f870028, 0x32140, 0x3c058000, 0x3c020050, 0x824825, 0x3c066000, 0x3c0a0100, 0x34ac0400, 0x8ccd08e0, 0x1aa5824, 0x11600005, 0x0, 0x8ccf08e0, 0x24e70001, 0x1ea7025, 0xacce08e0, 0x8d190010, 0x1805821, 0xacb90038, 0x8d180014, 0xacb8003c, 0xaca90030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c038000, 0x8c640000, 0x30820020, 0x1040fffd, 0x3c0f6000, 0x8ded08e0, 0x3c0e0100, 0x1ae1824, 0x1460ffe1, 0x0, 0xaf870028, 0x3e00008, 0xaf8b003c, 0x8f85002c, 0x240bfff0, 0x3c068000, 0x94a7001a, 0x8ca90024, 0x30ecffff, 0xc38c0, 0xeb5024, 0x12a4021, 0xacc8003c, 0x8ca40024, 0x8cc3003c, 0x831023, 0x18400033, 0x0, 0x8cad0020, 0x25a20001, 0x3c0f0050, 0xacc20038, 0x35ee0010, 0x3c068000, 0xacce0030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c048000, 0x8c990000, 0x33380020, 0x1300fffd, 0x30e20008, 0x10400017, 0x3c098000, 0x8c880408, 0xaca80010, 0x8c83040c, 0xaca30014, 0x3c190020, 0x3c188000, 0xaf190030, 0x94ae0018, 0x94af001c, 0x1cf3021, 0xa4a60018, 0x94ad001a, 0x25a70001, 0xa4a7001a, 0x94ab001a, 0x94ac001e, 0x118b0003, 0x0, 0x3e00008, 0x0, 0x3e00008, 0xa4a0001a, 0x8d2a0400, 0xacaa0010, 0x8d240404, 0xaca40014, 0xa0001be, 0x3c190020, 0x8ca20020, 0xa0001a6, 0x3c0f0050, 0xa000194, 0x0, 0x3c030800, 0x8c630020, 0x8f820034, 0x27bdffe8, 0x10620008, 0xafbf0010, 0xe0001d8, 0xaf830034, 0x3c030800, 0x8c630020, 0x24040001, 0x10640004, 0x8f8c002c, 0x8fbf0010, 0x3e00008, 0x27bd0018, 0x8fbf0010, 0x3c058000, 0xa580000a, 0x958b000a, 0x958a0004, 0x27bd0018, 0x3167ffff, 0x3149000f, 0x94500, 0xe83025, 0x3e00008, 0xaca60080, 0x3c020800, 0x8c420020, 0x27bdffc8, 0xafbf0034, 0xafbe0030, 0xafb7002c, 0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0x10400053, 0xafb00010, 0x8f84002c, 0x94860006, 0x9483000a, 0xc32823, 0x30b6ffff, 0x12c0004d, 0x8fbf0034, 0x94890018, 0x948a000a, 0x12a4023, 0x3102ffff, 0x2c2382b, 0x14e00002, 0x2c02021, 0x402021, 0x2c8c0005, 0x15800002, 0x80a021, 0x24140004, 0xe000167, 0x2802021, 0x8f87002c, 0x2809821, 0xaf800030, 0x94ed000a, 0x2808821, 0x12800051, 0x31b2ffff, 0x3c177000, 0x3c154000, 0x3c1e6000, 0x8f8f003c, 0x8dee0000, 0x1d71824, 0x50750053, 0x2202021, 0x2a3802b, 0x16000038, 0x3c182000, 0x1078004a, 0x0, 0x24100001, 0x8f830030, 0x1460003c, 0x2915823, 0x230f823, 0x250c821, 0x33f1ffff, 0x1620ffee, 0x3332ffff, 0x8f87002c, 0x3c120020, 0x3c118000, 0xae320030, 0x94ea000a, 0x3c178000, 0x26a4821, 0xa4e9000a, 0x94e3000a, 0x94e80004, 0x3065ffff, 0x3106000f, 0x61500, 0xa2f025, 0xaefe0080, 0x94f4000a, 0x94f50018, 0x12b4003a, 0x13c940, 0x8cf80014, 0x8cee0010, 0x3195821, 0x7821, 0x179682b, 0x1cf6021, 0x18d2021, 0xaceb0014, 0xace40010, 0x2d33823, 0x30f6ffff, 0x16c0ffb6, 0x8f84002c, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0038, 0x107e001b, 0x0, 0x1477ffc9, 0x24100001, 0xe0014fc, 0x0, 0x8f830030, 0x1060ffc8, 0x230f823, 0x2915823, 0x8f87002c, 0x1702021, 0xa000271, 0x3093ffff, 0x8f830030, 0x1460ffc8, 0x3c120020, 0x3c118000, 0xa00023a, 0xae320030, 0xe0003ea, 0x2202021, 0xa00022e, 0x408021, 0xe0007e2, 0x2402821, 0xa00022e, 0x408021, 0xe000d99, 0x2202021, 0xa00022e, 0x408021, 0xe000194, 0x0, 0xa000253, 0x2d33823, 0x27bdffd0, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0xafbf0028, 0xe0000e4, 0x3c148000, 0x3c028008, 0x3c032000, 0x3c010800, 0xac200070, 0x34550080, 0x34720003, 0x24130001, 0x36900070, 0x2411ff80, 0xa0002a1, 0x8e060000, 0x3c198000, 0x8f380000, 0x3b0f0001, 0x31e20001, 0x10400025, 0x8f860084, 0x8e070000, 0x3c0d0800, 0x8dad003c, 0x3c0a0800, 0x8d4a0038, 0xe67023, 0x1ae4021, 0x5821, 0x10e302b, 0x14b4821, 0x1262021, 0x3c010800, 0xac28003c, 0xaf870084, 0x3c010800, 0xac240038, 0xe0001da, 0x0, 0x3c050800, 0x8ca50070, 0x10a0ffe5, 0xa02021, 0x3c050800, 0x8ca50068, 0x3c060800, 0x8cc6006c, 0xe00149f, 0x0, 0x3c010800, 0xac200070, 0x3c198000, 0x8f380000, 0x3b0f0001, 0x31e20001, 0x1440ffdd, 0x8f860084, 0x8e0c0000, 0x8f8d0084, 0x3c070800, 0x8ce7003c, 0x3c060800, 0x8cc60038, 0x18d5823, 0xeb2821, 0xab202b, 0xc24821, 0x1241021, 0x3c010800, 0xac25003c, 0x3c088000, 0x3c010800, 0xac220038, 0x8d030100, 0x241f0c00, 0x107f0026, 0x0, 0x8d180100, 0x240e0020, 0xad180020, 0x92af0000, 0x31e300ff, 0x106e0023, 0x24190050, 0x10790026, 0x0, 0x3c048000, 0x8c880100, 0x15000003, 0x0, 0x56600014, 0x3c044000, 0x8c990100, 0x8c8f0100, 0x9821, 0x331c024, 0x186940, 0x31ee007f, 0x1ae6025, 0x1925825, 0xac8b0830, 0x8c870100, 0x8c890100, 0x24ea0100, 0x1513024, 0x62940, 0x3123007f, 0xa31025, 0x52f825, 0xac9f0830, 0x3c044000, 0xae840138, 0xa000299, 0x0, 0xe0001f6, 0x0, 0xa0002e3, 0x3c048000, 0x8d040100, 0xe00079b, 0x0, 0xa0002e3, 0x3c048000, 0x8d040100, 0xe0013b7, 0x0, 0xa0002e3, 0x3c048000, 0xa4102b, 0x24030001, 0x10400009, 0x3021, 0x52840, 0xa4102b, 0x4a00003, 0x31840, 0x5440fffc, 0x52840, 0x5060000a, 0x4182b, 0x85382b, 0x54e00004, 0x31842, 0xc33025, 0x852023, 0x31842, 0x1460fff9, 0x52842, 0x4182b, 0x3e00008, 0xc31021, 0x3084ffff, 0x30c600ff, 0x3c078000, 0x8ce201b8, 0x440fffe, 0x64c00, 0x1243025, 0x3c082000, 0xc82025, 0x3c031000, 0xace00180, 0xace50184, 0xace40188, 0x3e00008, 0xace301b8, 0x3c066000, 0x8cc5201c, 0x2402fff0, 0x30830200, 0x30860100, 0x1060000e, 0xa22824, 0x34a50001, 0x30873000, 0x10e00005, 0x30830c00, 0x34a50004, 0x3c046000, 0x3e00008, 0xac85201c, 0x1060fffd, 0x3c046000, 0x34a50008, 0x3e00008, 0xac85201c, 0x54c0fff3, 0x34a50002, 0xa00033b, 0x30873000, 0x27bdffe8, 0xafb00010, 0xafbf0014, 0x3c076000, 0x24060002, 0x10800011, 0xa08021, 0x8f83003c, 0xe000332, 0x8c640018, 0x8f82003c, 0x2021, 0x24060001, 0x8c45000c, 0xe000323, 0x0, 0x16000002, 0x24020003, 0x1021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x8ce8201c, 0x2409fff0, 0x1092824, 0xace5201c, 0x8f87003c, 0xa000358, 0x8ce5000c, 0x3c02600e, 0x804021, 0x34460100, 0x24090018, 0x0, 0x0, 0x0, 0x3c0a0050, 0x3c038000, 0x35470200, 0xac680038, 0x34640400, 0xac65003c, 0xac670030, 0x8c6c0000, 0x318b0020, 0x1160fffd, 0x2407ffff, 0x2403007f, 0x8c8d0000, 0x2463ffff, 0x24840004, 0xaccd0000, 0x1467fffb, 0x24c60004, 0x0, 0x0, 0x0, 0x24a40200, 0x85282b, 0x3c030020, 0x3c0e8000, 0x2529ffff, 0x1054021, 0xadc30030, 0x1520ffe0, 0x802821, 0x3e00008, 0x0, 0x8f82003c, 0x27bdffd8, 0xafb3001c, 0xafbf0020, 0xafb20018, 0xafb10014, 0xafb00010, 0x94460002, 0x809821, 0x8c520018, 0x2cc30081, 0x8c480004, 0x8c470008, 0x8c51000c, 0x8c490010, 0x10600007, 0x8c4a0014, 0x2cc40004, 0x14800013, 0x30eb0007, 0x30c50003, 0x10a00010, 0x0, 0x2410008b, 0x2002021, 0x2202821, 0xe000323, 0x24060003, 0x16600002, 0x24020003, 0x1021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x1560fff1, 0x2410008b, 0x3c0c8000, 0x3c030020, 0x241f0001, 0xad830030, 0xaf9f0030, 0x0, 0x0, 0x0, 0x2419fff0, 0x24d8000f, 0x3197824, 0x3c1000d0, 0xad880038, 0x1f07025, 0x24cd0003, 0x3c08600e, 0xad87003c, 0x35850400, 0xad8e0030, 0xd3882, 0x3504003c, 0x3c038000, 0x8c6b0000, 0x31620020, 0x1040fffd, 0x0, 0x10e00008, 0x24e3ffff, 0x2407ffff, 0x8ca80000, 0x2463ffff, 0x24a50004, 0xac880000, 0x1467fffb, 0x24840004, 0x3c04600e, 0xac860038, 0x0, 0x0, 0x0, 0x3c070020, 0x3c068000, 0x1202021, 0x1402821, 0xacc70030, 0xe000368, 0x8021, 0xe000332, 0x2402021, 0xa0003a8, 0x2002021, 0x27bdffd8, 0xafb20018, 0x3092ffff, 0xafb10014, 0xafbf0020, 0xafb3001c, 0xafb00010, 0x1240002d, 0x8821, 0xa0003fe, 0x24130003, 0x50b30042, 0x8ce5000c, 0xd, 0x26390001, 0x3331ffff, 0x24f80020, 0x232382b, 0x10e00022, 0xaf98003c, 0x8f820030, 0x1440001f, 0x8f87003c, 0x3c067000, 0x3c032000, 0x8ce40000, 0x862824, 0x14a30019, 0x8f850044, 0x44402, 0x3c098000, 0x898024, 0x14a0ffea, 0x310600ff, 0x240a0002, 0x10ca0030, 0x28cb0003, 0x11600017, 0x0, 0x24040001, 0x14c4ffe6, 0x26390001, 0x2002821, 0xe00034a, 0x24040001, 0x8f87003c, 0xaf820044, 0x26390001, 0x3331ffff, 0x24f80020, 0x232382b, 0x14e0ffe0, 0xaf98003c, 0x2201021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x10d3001b, 0x240c0004, 0x14ccffcf, 0x26390001, 0x308dffff, 0xd19c0, 0x3c048000, 0x8c8e01b8, 0x5c0fffe, 0x3c0f1000, 0x3c102004, 0xac830180, 0xac800184, 0xac900188, 0xac8f01b8, 0xa0003f9, 0x26390001, 0xe000323, 0x24040084, 0x1600ffbd, 0x8f87003c, 0xa0003f8, 0xaf800044, 0x2002821, 0xe00034a, 0x2021, 0xa000418, 0x8f87003c, 0xe00038f, 0x2002021, 0x8f87003c, 0xa000419, 0xaf820044, 0x449c2, 0x3127003f, 0x44342, 0x3c028000, 0x82040, 0x24031680, 0x2ce60020, 0xac43002c, 0x24eaffe0, 0x24820001, 0x14c00003, 0x30a900ff, 0x801021, 0x314700ff, 0x26080, 0x3c0d8000, 0x240a0001, 0x18d2021, 0x3c0b000e, 0xea2804, 0x8b3021, 0x11200005, 0x53827, 0x8cce0000, 0x1c53825, 0x3e00008, 0xacc70000, 0x8cd80000, 0x3077824, 0x3e00008, 0xaccf0000, 0x27bdffe0, 0xafb10014, 0xafb00010, 0xafbf0018, 0x3c076000, 0x8ce40808, 0x3402f000, 0x3c116000, 0x3083f000, 0x240501c0, 0x3c04800e, 0x3021, 0x10620006, 0x24100001, 0x8cea0808, 0x3149f000, 0x3928e000, 0x8382b, 0x78040, 0x3c0d0200, 0xae2d0814, 0x240c1680, 0x3c0b8000, 0x8e274400, 0xe000e42, 0xad6c002c, 0x12000004, 0x3c021691, 0x24050001, 0x12050010, 0x3c023d6c, 0x345800e0, 0xae384408, 0x3c110800, 0x8e31007c, 0x8fbf0018, 0x3c066000, 0x118540, 0x360f1680, 0x8fb10014, 0x8fb00010, 0x3c0e0200, 0x27bd0020, 0xaccf4420, 0x3e00008, 0xacce0810, 0x3c0218da, 0x345800e0, 0xae384408, 0x3c110800, 0x8e31007c, 0x8fbf0018, 0x3c066000, 0x118540, 0x360f1680, 0x8fb10014, 0x8fb00010, 0x3c0e0200, 0x27bd0020, 0xaccf4420, 0x3e00008, 0xacce0810, 0xa000448, 0x24050001, 0xa000448, 0x2821, 0x24020400, 0xa782000c, 0xa7800004, 0x2021, 0x3c060800, 0x24c656b8, 0x2405ffff, 0x24890001, 0x44080, 0x3124ffff, 0x1061821, 0x2c870020, 0x14e0fffa, 0xac650000, 0x24040400, 0xa784000e, 0xa7800006, 0x2021, 0x3c060800, 0x24c65738, 0x2405ffff, 0x248d0001, 0x46080, 0x31a4ffff, 0x1865821, 0x2c8a0020, 0x1540fffa, 0xad650000, 0xa7800010, 0xa7800008, 0xa780000a, 0x2021, 0x3c060800, 0x24c657b8, 0x2405ffff, 0x24990001, 0x4c080, 0x3324ffff, 0x3067821, 0x2c8e0004, 0x15c0fffa, 0xade50000, 0x3c056000, 0x8ca73d00, 0x2403e08f, 0xe31024, 0x34460140, 0x3e00008, 0xaca63d00, 0x2487007f, 0x731c2, 0x24c5ffff, 0x518c2, 0x24640001, 0x3082ffff, 0x238c0, 0xa7840018, 0x3c010800, 0xac270030, 0xaf800014, 0x2821, 0x2021, 0x3021, 0x24890001, 0xa72821, 0x3124ffff, 0x2ca81701, 0x11000003, 0x2c830080, 0x1460fff9, 0x24c60001, 0xc02821, 0xaf860014, 0x10c0001d, 0xa7860012, 0x24caffff, 0xa1142, 0x3c080800, 0x250857b8, 0x1040000a, 0x2021, 0x403021, 0x2407ffff, 0x248e0001, 0x46880, 0x31c4ffff, 0x1a86021, 0x86582b, 0x1560fffa, 0xad870000, 0x30a2001f, 0x50400008, 0x43080, 0x24030001, 0x43c804, 0x41080, 0x487821, 0x2738ffff, 0x3e00008, 0xadf80000, 0xc82021, 0x2405ffff, 0xac850000, 0x3e00008, 0x0, 0x30a5ffff, 0x30c6ffff, 0x30a8001f, 0x806021, 0x30e700ff, 0x52942, 0x5021, 0x10c0001d, 0x24090001, 0x240b0001, 0x25180001, 0x10b2004, 0x330800ff, 0x1267826, 0x390e0020, 0x2ded0001, 0x2dc20001, 0x1a21825, 0x1060000d, 0x1445025, 0x5c880, 0x32c4021, 0x1001821, 0x10e0000f, 0xa2027, 0x8d040000, 0x8a1825, 0xad030000, 0x24ad0001, 0x4021, 0x5021, 0x31a5ffff, 0x252e0001, 0x31c9ffff, 0xc9102b, 0x1040ffe7, 0x25180001, 0x3e00008, 0x0, 0x8d0a0000, 0x1444024, 0xa00052e, 0xac680000, 0x27bdffe8, 0x30a5ffff, 0x30c6ffff, 0xafb00010, 0xafbf0014, 0x30e7ffff, 0x5021, 0x3410ffff, 0x6021, 0x24af001f, 0xc04821, 0x24180001, 0x24190020, 0x5e00016, 0x1e01021, 0x2f943, 0x19f682a, 0x9702b, 0x1ae4024, 0x11000017, 0xc1880, 0x641021, 0x10e00005, 0x8c4b0000, 0xf84004, 0x83823, 0x1675824, 0x3821, 0x15400041, 0x4021, 0x55600016, 0x3169ffff, 0x258b0001, 0x316cffff, 0x5e1ffec, 0x1e01021, 0x24a2003e, 0x2f943, 0x19f682a, 0x9702b, 0x1ae4024, 0x1500ffeb, 0xc1880, 0x15460005, 0x3402ffff, 0x2002821, 0xe000512, 0x3821, 0x2001021, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x15200003, 0x1601821, 0xb1c02, 0x24080010, 0x306a00ff, 0x15400005, 0x306e000f, 0x250d0008, 0x31a02, 0x31a800ff, 0x306e000f, 0x15c00005, 0x307f0003, 0x25100004, 0x31902, 0x320800ff, 0x307f0003, 0x17e00005, 0x38690001, 0x25020002, 0x31882, 0x304800ff, 0x38690001, 0x31230001, 0x10600004, 0x310300ff, 0x250a0001, 0x314800ff, 0x310300ff, 0xc6940, 0x1a34021, 0x240a0001, 0x10caffd5, 0x3110ffff, 0x246e0001, 0x31c800ff, 0x1119ffc6, 0x38c90001, 0x2d1f0020, 0x53e0001c, 0x258b0001, 0x240d0001, 0xa0005a5, 0x240e0020, 0x51460017, 0x258b0001, 0x25090001, 0x312800ff, 0x2d090020, 0x51200012, 0x258b0001, 0x25430001, 0x10d5004, 0x14b1024, 0x25090001, 0x1440fff4, 0x306affff, 0x3127ffff, 0x10ee000c, 0x2582ffff, 0x304cffff, 0x5021, 0x3410ffff, 0x312800ff, 0x2d090020, 0x5520fff2, 0x25430001, 0x258b0001, 0x1464826, 0xa00055f, 0x316cffff, 0x3821, 0x5021, 0xa0005b1, 0x3410ffff, 0x27bdffd8, 0xafb00010, 0x30f0ffff, 0xafb10014, 0x103942, 0x3211ffe0, 0x71080, 0xafb3001c, 0xb12823, 0x30d3ffff, 0xafb20018, 0x30a5ffff, 0x809021, 0x2603021, 0x442021, 0xafbf0020, 0xe00053d, 0x3207001f, 0x2228821, 0x3403ffff, 0x2402021, 0x2002821, 0x2603021, 0x3821, 0x10430009, 0x3231ffff, 0x2201021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0xe00053d, 0x0, 0x408821, 0x2201021, 0x8fbf0020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0028, 0x42400, 0x3c036000, 0xac603d08, 0x10a00002, 0x34821006, 0x34821016, 0x3e00008, 0xac623d04, 0x27bdffe0, 0xafb00010, 0x309000ff, 0x2e020006, 0xafbf0018, 0x10400008, 0xafb10014, 0x103080, 0x3c030800, 0x24635424, 0xc32821, 0x8ca40000, 0x800008, 0x0, 0x2021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x801021, 0x3e00008, 0x27bd0020, 0x97910012, 0x16200051, 0x2021, 0x3c020800, 0x90420033, 0xa000618, 0x0, 0x978d000e, 0x15a00031, 0x2021, 0xa000618, 0x24020008, 0x9787000c, 0x14e0001a, 0x1821, 0x602021, 0x24020001, 0x1080ffe9, 0x8fbf0018, 0x429c2, 0x453021, 0xa6582b, 0x1160ffe4, 0x3c088000, 0x3c072000, 0x569c0, 0x1a76025, 0xad0c0020, 0x3c038008, 0x2402001f, 0x2442ffff, 0xac600000, 0x441fffd, 0x24630004, 0x24a50001, 0xa6702b, 0x15c0fff5, 0x569c0, 0xa000602, 0x8fbf0018, 0x97870004, 0x3c040800, 0x248456b8, 0x24050400, 0xe0005bd, 0x24060001, 0x978b000c, 0x24440001, 0x308affff, 0x2569ffff, 0x2d480400, 0x402821, 0x15000040, 0xa789000c, 0x24ac3800, 0xc19c0, 0xa000616, 0xa7800004, 0x97870006, 0x3c040800, 0x24845738, 0x24050400, 0xe0005bd, 0x24060001, 0x9799000e, 0x24440001, 0x3098ffff, 0x272fffff, 0x2f0e0400, 0x408821, 0x15c0002c, 0xa78f000e, 0xa7800006, 0x3a020003, 0x26240100, 0x3084ffff, 0xe0005ea, 0x2c450001, 0x11f8c0, 0x27f00100, 0x1021c0, 0xa000618, 0x24020008, 0x97850016, 0x9787000a, 0x3c040800, 0x248457b8, 0xe0005bd, 0x24060001, 0x97870012, 0x8f890014, 0x24450001, 0x30a8ffff, 0x24e3ffff, 0x109302b, 0x408021, 0x14c00018, 0xa7830012, 0xa780000a, 0x97850018, 0xe000e2c, 0x2002021, 0x244a0500, 0x3144ffff, 0xe0005ea, 0x24050001, 0x3c050800, 0x94a50032, 0xe000e2c, 0x2002021, 0x24452100, 0x3c020800, 0x90420033, 0xa000618, 0x521c0, 0xa000650, 0xa7840006, 0x24ac3800, 0xc19c0, 0xa000616, 0xa7840004, 0xa00066a, 0xa785000a, 0x308400ff, 0x27bdffe8, 0x2c820006, 0xafbf0014, 0xafb00010, 0x10400015, 0xa03821, 0x44080, 0x3c030800, 0x2463543c, 0x1032821, 0x8ca40000, 0x800008, 0x0, 0x24cc007f, 0x751c2, 0xc59c2, 0x3170ffff, 0x2547c400, 0x30e5ffff, 0x27840004, 0x2003021, 0xe000512, 0x24070001, 0x97860010, 0x2062021, 0xa7840010, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x3c050800, 0x8ca50030, 0x779c2, 0xe00030c, 0x25e4df00, 0x3045ffff, 0x3c040800, 0x248457b8, 0x24060001, 0xe000512, 0x24070001, 0x978e0012, 0x8fbf0014, 0x8fb00010, 0x25cd0001, 0x27bd0018, 0x3e00008, 0xa78d0012, 0x7c9c2, 0x2738ff00, 0x1878c2, 0x31f0ffff, 0x3c040800, 0x24845738, 0x2002821, 0x24060001, 0xe000512, 0x24070001, 0x978d000e, 0x260e0100, 0xe8400, 0x25ac0001, 0x3c0b6000, 0xa78c000e, 0xad603d08, 0x36040006, 0x3021, 0x3c076000, 0x8ce23d04, 0x305f0006, 0x17e0fffd, 0x24c90001, 0x61b00, 0x312600ff, 0x644025, 0x2cc50004, 0xace83d04, 0x14a0fff6, 0x8fbf0014, 0x8fb00010, 0x3e00008, 0x27bd0018, 0x751c2, 0x2549c800, 0x24060001, 0x24070001, 0x3c040800, 0x248456b8, 0xe000512, 0x3125ffff, 0x9787000c, 0x8fbf0014, 0x8fb00010, 0x24e60001, 0x27bd0018, 0x3e00008, 0xa786000c, 0x3084ffff, 0x30a5ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c084080, 0x883825, 0x3c031000, 0xacc00180, 0xacc50184, 0xacc70188, 0x3e00008, 0xacc301b8, 0x3084ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c084038, 0x8ca70000, 0x882825, 0x3c031000, 0xacc70180, 0xacc50188, 0x3e00008, 0xacc301b8, 0x8f83005c, 0x8f860054, 0x1066000b, 0x804021, 0x3c070800, 0x24e757c8, 0x328c0, 0xa71021, 0x8c440000, 0x24630001, 0x10880005, 0x3063000f, 0x5466fffa, 0x328c0, 0x3e00008, 0x1021, 0x3c070800, 0x24e757cc, 0xa73021, 0x3e00008, 0x8cc20000, 0x3c039000, 0x34620001, 0x822025, 0x3c038000, 0xac640020, 0x8c650020, 0x4a0fffe, 0x0, 0x3e00008, 0x0, 0x3c028000, 0x34430001, 0x832025, 0x3e00008, 0xac440020, 0x27bdffe0, 0xafb10014, 0x3091ffff, 0xafb00010, 0xafbf0018, 0x12200012, 0xa08021, 0x8ca50000, 0x14a00011, 0x24040002, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c074000, 0x2272025, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3c031000, 0x27bd0020, 0xacc50180, 0xacc40188, 0x3e00008, 0xacc301b8, 0xa00072b, 0x8ca50000, 0xe000682, 0x24060200, 0x2821, 0xa00072b, 0xae000000, 0x3087ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c0a4006, 0x8ca90000, 0xea4025, 0xacc90180, 0x8ca40004, 0x3c031000, 0xacc40184, 0xacc80188, 0x3e00008, 0xacc301b8, 0x8f83fdf8, 0x27bdffe8, 0xafbf0014, 0xafb00010, 0x90670008, 0x801021, 0x802821, 0x30e60040, 0x2021, 0x10c00008, 0x8c500000, 0xe000086, 0x2002021, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa0004a5, 0x27bd0018, 0xe000740, 0x0, 0xe000086, 0x2002021, 0x2002021, 0x8fbf0014, 0x8fb00010, 0xa0004a5, 0x27bd0018, 0x27bdffe0, 0xafb00010, 0x8f90fdf8, 0xafbf001c, 0xafb20018, 0xafb10014, 0x92060001, 0x808821, 0xe000712, 0x30d20004, 0x92040005, 0x1129c2, 0xa6050000, 0x34830040, 0xa2030005, 0xe00071c, 0x2202021, 0xe0004a7, 0x2202021, 0x24020001, 0xae02000c, 0x2202821, 0xa6020010, 0x24040002, 0xa6020012, 0x24060200, 0xa6020014, 0xe000682, 0xa6020016, 0x1640000f, 0x8fbf001c, 0x978c0058, 0x3c0b0800, 0x8d6b0078, 0x2588ffff, 0x3109ffff, 0x256a0001, 0x12a382b, 0x10e00006, 0xa7880058, 0x3c0f6006, 0x240e0016, 0x35ed0010, 0xadae0050, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x27bdffe0, 0xafbf0018, 0xafb10014, 0xafb00010, 0xe000712, 0x808821, 0x8f85fdf8, 0x2202021, 0x90a30005, 0xe00071c, 0x307000ff, 0x2402003e, 0x12020005, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3c058000, 0x8ca40178, 0x480fffe, 0x24070007, 0x3c061000, 0xacb10140, 0x2202021, 0xa0a70144, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0xaca60178, 0xa000769, 0x27bd0020, 0x27bdffe0, 0xafb00010, 0xafbf0018, 0xafb10014, 0x3c108000, 0x8e110020, 0x0, 0xe0004a7, 0xae040020, 0xae110020, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x3084ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c084035, 0x883825, 0x3c031000, 0xacc50180, 0xacc00184, 0xacc70188, 0x3e00008, 0xacc301b8, 0x3084ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c084036, 0x883825, 0x3c031000, 0xacc50180, 0xacc00184, 0xacc70188, 0x3e00008, 0xacc301b8, 0x27bdffd0, 0xafb50024, 0x3095ffff, 0xafb60028, 0xafb40020, 0xafbf002c, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x30b6ffff, 0x12a00027, 0xa021, 0x8f92003c, 0x8e430000, 0x3c068000, 0x24020040, 0x33e02, 0x32c02, 0x30e4007f, 0x669824, 0x1482001d, 0x30a500ff, 0x8f83004c, 0x2c68000a, 0x51000010, 0x8f860030, 0x35880, 0x3c0c0800, 0x258c5458, 0x16c5021, 0x8d490000, 0x1200008, 0x0, 0x2d44821, 0x3125ffff, 0xe0006e4, 0x24040084, 0x16600002, 0x8f92003c, 0xaf80004c, 0x8f860030, 0x26580020, 0x268f0001, 0x3009021, 0x31f4ffff, 0x14c00004, 0xaf98003c, 0x295282b, 0x14a0ffdc, 0x0, 0x2801021, 0x8fbf002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0030, 0x24070034, 0x14a70146, 0x0, 0x9247000e, 0x8f99fdfc, 0x8f90fdf8, 0x24181600, 0xa3270019, 0x924a000d, 0x3c088000, 0x3c07800c, 0xa32a0018, 0x96440012, 0x3c0f6000, 0x3c117fff, 0xa604005c, 0x965f0010, 0x3622ffff, 0x240a0005, 0x33e5ffff, 0xae050054, 0x8e46001c, 0xad180028, 0x8ce90000, 0x8dee4448, 0x1266826, 0x1cd3021, 0xae060038, 0x8e030038, 0x24cb0001, 0x3c0e7f00, 0xae03003c, 0x8e0c003c, 0xaf2c0004, 0xae0b0020, 0x8e130020, 0xae13001c, 0xa320001b, 0xae02002c, 0xa32a0012, 0x8e440014, 0x24130050, 0xae040034, 0x8e1f0034, 0xaf3f0014, 0x8e450018, 0xae050048, 0x9258000c, 0xa218004e, 0x920f0008, 0x35e90020, 0xa2090008, 0x8e0d0018, 0x1ae1824, 0x346c4000, 0xae0c0018, 0x920b0000, 0x317200ff, 0x125302ad, 0x2413ff80, 0x3c040800, 0x24845848, 0xe00074e, 0x0, 0x24030004, 0x24080001, 0x3c050800, 0x8ca55848, 0x3c048000, 0xa2030025, 0xa2080005, 0x8c900178, 0x600fffe, 0x8f92003c, 0x240e0002, 0x3c0d1000, 0xac850140, 0xa08e0144, 0xac8d0178, 0xa00080b, 0xaf80004c, 0x2cad0037, 0x11a0ff99, 0x8f860030, 0x58080, 0x3c110800, 0x26315480, 0x2117821, 0x8dee0000, 0x1c00008, 0x0, 0x24100004, 0x14b0008e, 0x3c078000, 0x3c0c0800, 0x8d8c5848, 0x8f86fdf8, 0xacec0020, 0x8e4b0008, 0x8f98fdfc, 0x24090050, 0xaccb0030, 0x8e430008, 0xacc30050, 0x8e42000c, 0xacc20034, 0x8e4a0010, 0xacca0038, 0x8e440010, 0xacc40054, 0x8e5f0014, 0xacdf003c, 0x8e590018, 0xaf190004, 0x8e4f001c, 0xaccf0020, 0x90d10000, 0x322500ff, 0x10a9027d, 0x0, 0x8cd10034, 0x8ccf0030, 0x22f3023, 0x4c000f3, 0x2404008c, 0x126000f0, 0x24020003, 0xa00080b, 0xaf82004c, 0x24180005, 0x14b80068, 0x3c0b8000, 0x3c0c0800, 0x8d8c5848, 0x8f86fdf8, 0xad6c0020, 0x8e430004, 0x8f9ffdfc, 0x24072000, 0xacc3001c, 0x92420008, 0x24120008, 0xa3e20019, 0x8f8a003c, 0x91440009, 0xa3e40018, 0x8f85003c, 0x90b9000a, 0x332400ff, 0x10920010, 0x28880009, 0x150000bc, 0x240d0002, 0x24090020, 0x1089000b, 0x34078000, 0x28910021, 0x16200008, 0x24074000, 0x240f0040, 0x108f0005, 0x3c070001, 0x24180080, 0x10980002, 0x3c070002, 0x24074000, 0x8cc40018, 0x3c0aff00, 0x8af824, 0x3e7c825, 0xacd90018, 0x90b2000b, 0xa0d20027, 0x8f83003c, 0x9465000c, 0x10a00231, 0x0, 0x9467000c, 0x3c1f8000, 0xa4c7005c, 0x9062000e, 0x2403ffbf, 0x24070004, 0xa0c20008, 0x8f8a003c, 0x9144000f, 0xa0c40009, 0x8f88003c, 0x8d120010, 0x8ff90074, 0x2592823, 0xacc50058, 0x8d180014, 0xacd8002c, 0x950f0018, 0x31f1ffff, 0xacd10040, 0x9509001a, 0x3130ffff, 0xacd00044, 0x8d0e001c, 0xacce0048, 0x950d0002, 0xa4cd0078, 0x910c000e, 0xa0cc0008, 0x90cb0008, 0x1631024, 0x126001d7, 0xa0c20008, 0x8f92003c, 0xa00080b, 0xaf87004c, 0x24060006, 0x14a60014, 0x3c0e8000, 0x3c100800, 0x8e105848, 0x8f8cfdf4, 0xadd00020, 0x8e4d0018, 0x8f86fdf8, 0x8f8bfdfc, 0xad8d0000, 0x8cc80038, 0x24040005, 0xad880004, 0x8cc3003c, 0x12600081, 0xad630000, 0xa00080b, 0xaf84004c, 0x24090007, 0x10a9004b, 0x24040006, 0x3c050800, 0x24a55848, 0xe000721, 0x24040081, 0x8f92003c, 0x13102b, 0xa00080b, 0xaf82004c, 0x241f0023, 0x14bffff6, 0x3c0c8000, 0x3c030800, 0x8c635848, 0x8f8bfdfc, 0xad830020, 0x8f91fdf8, 0x8e460004, 0x25640020, 0x26450014, 0xae260028, 0x24060003, 0xe000e38, 0x25700030, 0x8f87003c, 0x2002021, 0x24060003, 0xe000e38, 0x24e50008, 0x3c040800, 0x24845848, 0xe00074e, 0x0, 0x92220000, 0x24040050, 0x304a00ff, 0x5544ffe1, 0x8f92003c, 0xe000e23, 0x0, 0xa000910, 0x8f92003c, 0x24080033, 0x14a80032, 0x3c028000, 0x3c110800, 0x8e315848, 0x8f89fdfc, 0xac510020, 0x8e4a0008, 0x240f0028, 0x8f8dfdf8, 0xad2a0030, 0x8e44000c, 0x24060009, 0xad240034, 0x8e5f0010, 0xad3f0038, 0x8e590014, 0xad390020, 0x8e450018, 0xad250024, 0x8e58001c, 0xad380028, 0xa12f0011, 0x8e4e0004, 0x12600031, 0xadae0028, 0x8f92003c, 0xa00080b, 0xaf86004c, 0x24110022, 0x14b1ffb8, 0x0, 0x24040007, 0x3c180800, 0x8f185848, 0x3c0f8000, 0xadf80020, 0x5660feb1, 0xaf84004c, 0x3c040800, 0x24845848, 0xe00074e, 0x24130050, 0x8f99fdf8, 0x93320000, 0x324500ff, 0x10b3016c, 0x0, 0x8f92003c, 0x2021, 0xa00080b, 0xaf84004c, 0x3c050800, 0x24a55848, 0xe0006f1, 0x24040081, 0xa000910, 0x8f92003c, 0x2d49821, 0x3265ffff, 0xe0006e4, 0x24040084, 0xa00080b, 0x8f92003c, 0x108dff51, 0x24070400, 0x28870003, 0x10e001aa, 0x24100004, 0x240e0001, 0x548eff4b, 0x24074000, 0xa0008c6, 0x24070100, 0x3c050800, 0x24a55848, 0xe000740, 0x24040082, 0x8f92003c, 0x3021, 0xa00080b, 0xaf86004c, 0x3c040800, 0x24845848, 0x8cc20038, 0xe00074e, 0x8cc3003c, 0x8f92003c, 0xa000966, 0x2021, 0x24040082, 0x3c050800, 0x24a55848, 0xe000740, 0x0, 0x8f92003c, 0x1021, 0xa00080b, 0xaf82004c, 0x8e500004, 0x8f91fdf8, 0x3c0a8000, 0xad500020, 0x92220005, 0x2002821, 0x30460002, 0x14c00187, 0x2404008a, 0x8f92fdfc, 0x2002821, 0x2404008d, 0x924b001b, 0x31630020, 0x14600180, 0x0, 0x922d0009, 0x240c0012, 0x31a800ff, 0x110c017b, 0x24040081, 0xe000712, 0x2002021, 0x9245001b, 0x240e0004, 0x2002021, 0x34a90042, 0xa249001b, 0xe00071c, 0xa22e0025, 0x3c048000, 0x8c910178, 0x620fffe, 0x24180002, 0xac900140, 0xa0980144, 0x8f92003c, 0x3c0f1000, 0xac8f0178, 0xa000911, 0x13102b, 0x8e500004, 0x8f91fdf8, 0x3c1f8000, 0xaff00020, 0x92390005, 0x2002821, 0x33270002, 0x14e0001a, 0x2404008a, 0x92260009, 0x24120012, 0x30c400ff, 0x10920111, 0x0, 0x92230009, 0x240a0004, 0x306200ff, 0x104a010c, 0x0, 0xe000712, 0x2002021, 0x8f88fdfc, 0x240cfffe, 0x2002021, 0x910e001b, 0x35cd0020, 0xa10d001b, 0xa2320009, 0x922b0005, 0x16c9024, 0xe00071c, 0xa2320005, 0x2002821, 0x2021, 0xe0007d6, 0x0, 0xa000910, 0x8f92003c, 0x8e510004, 0x3c028000, 0x3c100800, 0x26105848, 0xac510020, 0x3c010800, 0xac315848, 0x92460003, 0x30c40004, 0x10800169, 0x8f84fdf8, 0x24020006, 0xa0820009, 0x924d001b, 0x2408ffc0, 0x31ac003f, 0x1885825, 0xa08b0008, 0x92430003, 0x306a0001, 0x15400160, 0x0, 0x8e420008, 0xae020008, 0x3c020800, 0x8c425850, 0x1040015f, 0x8f8efdfc, 0x281c2, 0x8f85fdf8, 0xa5d0000c, 0x8e5f000c, 0x240f0001, 0x24090014, 0xaddf002c, 0x8e590010, 0xadd9001c, 0x96470016, 0xa5c7003c, 0x96580014, 0xa5d8003e, 0xacaf000c, 0xa4af0010, 0xa4af0012, 0xa4af0014, 0xa4af0016, 0x12600163, 0xa1c90011, 0x92440003, 0x30920002, 0x2e530001, 0x8f92003c, 0x26620008, 0xa00080b, 0xaf82004c, 0x8e460004, 0x3c058000, 0x3c048008, 0xaca60020, 0x8e470008, 0x90890000, 0x24110050, 0x312200ff, 0x105100bc, 0x24050088, 0x3c048000, 0x8c8f01b8, 0x5e0fffe, 0x13802b, 0x3c184009, 0xb81025, 0xaf90004c, 0x3c101000, 0xac860180, 0xac870184, 0xac820188, 0xac9001b8, 0xa00080c, 0x8f860030, 0x8e450004, 0x3c068000, 0x3c098008, 0xacc50020, 0x913f0000, 0x24040050, 0x33f900ff, 0x132400b4, 0x24060088, 0x3c048000, 0x8c8a01b8, 0x540fffe, 0x3c0e400e, 0xce6825, 0x3c081000, 0xac850180, 0xac800184, 0xac8d0188, 0xac8801b8, 0x912b0000, 0x240cff80, 0x24040004, 0x16c1825, 0x24060030, 0xe000682, 0xa1230000, 0xa000910, 0x8f92003c, 0x8e500004, 0x8f91fdfc, 0x3c0f8000, 0xadf00020, 0x9225001b, 0x30a90010, 0x1120007c, 0x24030081, 0x3c048000, 0x8c8701b8, 0x4e0fffe, 0x3c1f401f, 0xac900180, 0x7f1025, 0x13c82b, 0x3c101000, 0xac800184, 0xaf99004c, 0xac820188, 0xac9001b8, 0xa00080c, 0x8f860030, 0x8e44001c, 0xe0006fd, 0x0, 0x104000fc, 0x403821, 0x8f92003c, 0x24060089, 0x3c058000, 0x8cae01b8, 0x5c0fffe, 0x0, 0xaca70180, 0x8e50001c, 0x3c114001, 0x13782b, 0xd13825, 0x3c131000, 0xacb00184, 0xaf8f004c, 0xaca70188, 0xacb301b8, 0xa00080c, 0x8f860030, 0x96590002, 0x3c100800, 0x26105848, 0x33380004, 0x130000a7, 0x3c046000, 0x8e5f001c, 0x3c068000, 0xacdf0020, 0x3c010800, 0xac3f5848, 0x964f0002, 0x31e70001, 0x14e000e7, 0x0, 0x8e420004, 0xae020008, 0x3c100800, 0x8e105850, 0x120000dd, 0x3c068000, 0x8f85fdf8, 0x24100001, 0x8cbf0018, 0x8f91fdfc, 0x8f89fdf4, 0x3e6c825, 0xacb90018, 0xa0a00005, 0xacb0000c, 0x3c180800, 0x8f185850, 0x8f87003c, 0xa4b00010, 0x1879c2, 0xa4b00012, 0xa4b00014, 0xa4b00016, 0xa62f000c, 0x8cee0008, 0x8f8d003c, 0x8f8c003c, 0xae2e002c, 0x8da8000c, 0x24070002, 0xae28001c, 0x918b0010, 0xa22b0011, 0x8f83003c, 0x906a0011, 0xa12a0008, 0x8f82003c, 0x90440012, 0xa0a4004e, 0x8f92003c, 0x92460013, 0xa2260012, 0x8f92003c, 0x965f0014, 0xa63f003c, 0x96590016, 0xa639003e, 0x8e580018, 0xae380014, 0x5660fd4c, 0xaf87004c, 0x3c050800, 0x24a55848, 0xe000721, 0x2021, 0x8f92003c, 0x3821, 0xa00080b, 0xaf87004c, 0x3c050800, 0x24a55848, 0xe000740, 0x24040082, 0x8f92003c, 0xa0008f3, 0x3821, 0xe000e23, 0x0, 0x8f92003c, 0xa000966, 0x2021, 0xe000712, 0x2002021, 0x9232001b, 0x2002021, 0x36580010, 0xe00071c, 0xa238001b, 0x8f92003c, 0xa000a59, 0x1821, 0xe0007d6, 0x24040081, 0xa000910, 0x8f92003c, 0x9243000c, 0x306a0001, 0x11400003, 0x0, 0x964b000e, 0xa48b002c, 0x9248000c, 0x310c0002, 0x1180ff3c, 0x2821, 0x964e0012, 0x8e4d0014, 0xa48e001a, 0xa000a27, 0xac8d001c, 0x8f83005c, 0x8f870054, 0x1067ff4a, 0x3021, 0x3c080800, 0x250857cc, 0x320c0, 0x883021, 0x8cd10000, 0x122500c8, 0x24620001, 0x3043000f, 0x1467fffa, 0x320c0, 0xa000a3e, 0x3021, 0x3c050800, 0x24a55848, 0xe000740, 0x2404008b, 0x8f92003c, 0xa0008f3, 0x13382b, 0x3c0c0800, 0x8d8c5848, 0x24d9fffe, 0x25910100, 0x322b007f, 0x1679021, 0x2331024, 0xad020028, 0xae4600d0, 0xae4000d4, 0xa00085c, 0xae59001c, 0xacc00054, 0x3c090800, 0x8d295848, 0x3c05800c, 0x34a80100, 0xace90028, 0x8e500014, 0xad1000d0, 0x8e4e0014, 0xad0e00d4, 0x8e4d0010, 0x25a7fffe, 0xa000898, 0xad07001c, 0x5490fda3, 0x24074000, 0xa0008c6, 0x24071000, 0xe0007ca, 0x0, 0xa000910, 0x8f92003c, 0x8c83442c, 0x3c05dead, 0x34b2beef, 0x3c010800, 0xac205848, 0x1072004f, 0x0, 0x3c046c62, 0x34827970, 0x14620008, 0x24040002, 0x978a0058, 0x97830050, 0x2002821, 0x143482b, 0x11200019, 0x24040092, 0x24040002, 0xe0005f2, 0x24050200, 0x3c0b8000, 0xad620020, 0x3c010800, 0xac225848, 0x1040000d, 0x8f8e003c, 0x240c0028, 0x24040003, 0x91cd0010, 0x31a800ff, 0x550c0001, 0x24040001, 0xe00004a, 0x0, 0x10400004, 0x24040083, 0xa000a89, 0x8f92003c, 0x24040083, 0x3c050800, 0x24a55848, 0xe000721, 0x0, 0x8f92003c, 0x13382b, 0xa00080b, 0xaf87004c, 0xa0009f2, 0x24020012, 0x8e440008, 0xe0006fd, 0x0, 0xa0009fe, 0xae020008, 0x3c050800, 0x24a55848, 0xe0006f1, 0x24040087, 0x8f92003c, 0xa000a1b, 0x13102b, 0x24040004, 0xe0005f2, 0x24050030, 0x14400017, 0x403821, 0x8f92003c, 0xa000a6e, 0x24060083, 0x3c050800, 0x24a55848, 0xa000b53, 0x24040087, 0x8e440004, 0xe0006fd, 0x0, 0xa000a8f, 0xae020008, 0x3c050800, 0x24a55848, 0xe000740, 0x24040082, 0x8f92003c, 0xa000a1b, 0x1021, 0x8c83442c, 0xa000b32, 0x3c046c62, 0x8f92003c, 0x3c088008, 0x3c0c8000, 0x240b0050, 0x240a0001, 0xad820020, 0xa10b0000, 0xa10a0001, 0x92490004, 0xa1090018, 0x92440005, 0xa1040019, 0x92430006, 0x3c040800, 0x248457cc, 0xa103001a, 0x92420007, 0x3c030800, 0x246357c8, 0xa102001b, 0x92450008, 0xa105001c, 0x92460009, 0xa106001d, 0x925f000a, 0xa11f001e, 0x9259000b, 0xa119001f, 0x9258000c, 0xa1180020, 0x9251000d, 0xa1110021, 0x9250000e, 0xa1100022, 0x924f000f, 0xa10f0023, 0x924e0010, 0xa10e0024, 0x924d0011, 0xa10d0025, 0x964c0014, 0xa50c0028, 0x964b0016, 0x8f8a0054, 0x8f98005c, 0xa50b002a, 0x96490018, 0xa10c0, 0x25450001, 0xa509002c, 0x8e46001c, 0x44c821, 0x43f821, 0x30a5000f, 0xafe60000, 0xaf270000, 0x10b80003, 0xaf850054, 0xa000a6e, 0x3021, 0x24ad0001, 0x31a8000f, 0x3021, 0xa000a6e, 0xaf88005c, 0x3c070800, 0x24e757c8, 0x879021, 0xacc00000, 0x3021, 0xa000a3e, 0xae400000, 0x3c048201, 0x3c036000, 0x34820e02, 0xac603d68, 0xaf80007c, 0x3e00008, 0xac623d6c, 0x27bdffe8, 0xafb00010, 0x3090ffff, 0x101842, 0x2c620041, 0xafbf0014, 0x14400002, 0x24040080, 0x24030040, 0x3c010800, 0xac300060, 0x3c010800, 0xac230064, 0xe000e2c, 0x602821, 0x244802bf, 0x2409ff80, 0x1092824, 0x103980, 0x103040, 0x8fbf0014, 0x8fb00010, 0xa72021, 0x861821, 0xaf830064, 0x3c010800, 0xac250058, 0x3c010800, 0xac24005c, 0x3e00008, 0x27bd0018, 0x308300ff, 0x30c6ffff, 0x30e400ff, 0x3c088000, 0x8d0201b8, 0x440fffe, 0x35400, 0x1443825, 0x3c096000, 0xe92025, 0x3c031000, 0xad050180, 0xad060184, 0xad040188, 0x3e00008, 0xad0301b8, 0x8f86003c, 0x3c096012, 0x35270010, 0x8ccb0004, 0x3c0c600e, 0x35850010, 0x316a0006, 0x2d480001, 0xace800c4, 0x8cc40004, 0xaca43180, 0x8cc20008, 0x94c30002, 0xaca23184, 0x3e00008, 0xa7830074, 0x8f85003c, 0x8f87ff50, 0x8f86ff58, 0x8cae0004, 0x3c0f6012, 0x35e80010, 0xacee0068, 0x8cad0008, 0xaced006c, 0x8cac0010, 0xaccc004c, 0x8cab000c, 0xaccb0048, 0x94ca0054, 0x3c020800, 0x8c420044, 0x25490001, 0xa4c90054, 0x94c40054, 0x3083ffff, 0x10620017, 0x0, 0x3c020800, 0x8c420040, 0xa4c20052, 0x8ca30018, 0xace30030, 0x8ca20014, 0xace2002c, 0x8cb90018, 0xacf90038, 0x8cb80014, 0x24050001, 0xacf80034, 0x8d0600bc, 0x50c50019, 0x8d0200b4, 0x8d0200b8, 0xa4e20048, 0x94e40048, 0xa4e4004a, 0x94e800da, 0x3e00008, 0x3102ffff, 0x3c020800, 0x8c420024, 0xa4c00054, 0xa4c20052, 0x8ca30018, 0xace30030, 0x8ca20014, 0xace2002c, 0x8cb90018, 0xacf90038, 0x8cb80014, 0x24050001, 0xacf80034, 0x8d0600bc, 0x54c5ffeb, 0x8d0200b8, 0x8d0200b4, 0xa4e20048, 0x94e40048, 0xa4e4004a, 0x94e800da, 0x3e00008, 0x3102ffff, 0x8f86003c, 0x3c048000, 0x8cc90008, 0x8cc80008, 0x929c0, 0x839c0, 0xac870020, 0x90c30007, 0x30620004, 0x1040003a, 0xaf850078, 0x90cb0007, 0x316a0008, 0x11400039, 0x8f87ff54, 0x8ccd000c, 0x8cce0014, 0x1ae602b, 0x11800032, 0x0, 0x8cc2000c, 0xace20070, 0x8ccb0018, 0x8f85ff50, 0x8f88ff58, 0xaceb0074, 0x8cca0010, 0x2402fff8, 0xacaa00c8, 0x8cc9000c, 0xad090060, 0x8cc4001c, 0xaca400c0, 0x90e3007c, 0x62c824, 0xa0f9007c, 0x90d80007, 0x330f0008, 0x11e00004, 0x0, 0x90ed007c, 0x35ac0001, 0xa0ec007c, 0x90cf0007, 0x31ee0001, 0x11c00009, 0x0, 0x90e4007c, 0x24180002, 0x34820002, 0xa0e2007c, 0x90a300ec, 0x307900ff, 0x13380013, 0x24080034, 0x90c90007, 0x31260002, 0x10c00004, 0x0, 0x90eb007c, 0x356a0004, 0xa0ea007c, 0x90ed007d, 0x31ac003f, 0xa0ec007d, 0x94a700da, 0x3e00008, 0x30e2ffff, 0x8f87ff54, 0xa000c68, 0x8cc20014, 0xa000c69, 0xace00070, 0xa000c8a, 0xaca800cc, 0x8f8c003c, 0x27bdffd8, 0xafb3001c, 0xafb20018, 0xafb00010, 0xafbf0020, 0xafb10014, 0x918f0015, 0x3c13600e, 0x36730010, 0x31eb000f, 0xa38b0080, 0x8d8f0004, 0x8d8b0008, 0x959f0012, 0x95990010, 0x9584001a, 0x9598001e, 0x958e001c, 0x33edffff, 0x332affff, 0x3089ffff, 0x3308ffff, 0x31c7ffff, 0x3c010800, 0xac2d0024, 0x3c010800, 0xac290044, 0x3c010800, 0xac2a0040, 0xae683178, 0xae67317c, 0x91850015, 0x95910016, 0x3c126012, 0x36520010, 0x30a200ff, 0x3230ffff, 0xae623188, 0xae5000b4, 0x91830014, 0x959f0018, 0x24060001, 0x66c804, 0x33f8ffff, 0xae5900b8, 0xae5800bc, 0x918e0014, 0xaf8f0068, 0x3c086006, 0x31cd00ff, 0xae4d00c0, 0x918a0015, 0x9584000e, 0x3c07600a, 0x314900ff, 0xaf8b006c, 0x3084ffff, 0xae4900c8, 0x35110010, 0xe000bd1, 0x34f00410, 0x3c020800, 0x8c420060, 0x3c030800, 0x8c630064, 0x3c060800, 0x8cc60058, 0x3c050800, 0x8ca5005c, 0x8f840064, 0x8fbf0020, 0xae23004c, 0xae65319c, 0xae030054, 0xae4500dc, 0xae6231a0, 0xae6331a4, 0xae663198, 0xae220048, 0x8fb3001c, 0xae020050, 0x8fb10014, 0xae4200e0, 0xae4300e4, 0xae4600d8, 0x8fb00010, 0x8fb20018, 0xa0004da, 0x27bd0028, 0x97850076, 0x97830060, 0x27bdffe8, 0xafb00010, 0xa3102b, 0xafbf0014, 0x24040005, 0x8f90003c, 0x10400055, 0x24090002, 0xe0005f2, 0x8f850064, 0xaf820078, 0x24040003, 0x1040004f, 0x24090002, 0x3c068000, 0xe00004a, 0xacc20020, 0x24070001, 0x24082000, 0x1040004d, 0x24040005, 0x978e0076, 0x8f8aff54, 0x24090050, 0x25c50001, 0xa7850076, 0xa1490000, 0x3c0d0800, 0x8dad0064, 0x24038000, 0x8f84ff50, 0xd6600, 0xad4c0018, 0xa5400006, 0x954b000a, 0x8f85ff58, 0x2402ff80, 0x1633024, 0xa546000a, 0x915f000a, 0x4821, 0x3e2c825, 0xa159000a, 0xa0a00008, 0xa140004c, 0xa08000c5, 0x96180002, 0x97830074, 0x3c020004, 0xa49800da, 0x960f0002, 0x2418ffbf, 0x25ee2401, 0xa48e00ae, 0x8e0d0004, 0xacad0044, 0x8e0c0008, 0xacac0040, 0xa4a00050, 0xa4a00054, 0x8e0b000c, 0x240c0030, 0xac8b0028, 0x8e060010, 0xac860024, 0xa480003e, 0xa487004e, 0xa4870050, 0xa483003c, 0xad420074, 0xac8800c8, 0xaca80060, 0xa08700ec, 0x909f00c4, 0x33f9007f, 0xa09900c4, 0x909000c4, 0x2187824, 0xa08f00c4, 0x914e007c, 0x35cd0001, 0xa14d007c, 0x938b0080, 0xad480070, 0xac8c00cc, 0xa08b00c6, 0x8f88006c, 0x8f870068, 0xac8800b4, 0xac8700b8, 0xa5400078, 0xa540007a, 0x8fbf0014, 0x8fb00010, 0x1201021, 0x3e00008, 0x27bd0018, 0x8f850078, 0xe000682, 0x8f860064, 0xa000d56, 0x24090002, 0x27bdffe0, 0xafb00010, 0x8f90003c, 0xafb10014, 0xafbf0018, 0x8e090004, 0xe0004a7, 0x921c0, 0x8e080004, 0x8f84ff50, 0x8f82ff58, 0x839c0, 0x3c068000, 0xacc70020, 0x948500da, 0x90430013, 0x1460001c, 0x30b1ffff, 0x8f8cff54, 0x918b0008, 0x316a0040, 0x1540000b, 0x0, 0x8e0d0004, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, 0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, 0xe000061, 0x0, 0x8e0d0004, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, 0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, 0xe000059, 0x0, 0x8e0d0004, 0x2203021, 0x8fbf0018, 0x8fb10014, 0x8fb00010, 0x24040022, 0x3821, 0xd29c0, 0xa000bf0, 0x27bd0020, 0x27bdffe0, 0xafb20018, 0x3092ffff, 0xafb00010, 0xafbf001c, 0xafb10014, 0x1240001e, 0x8021, 0x8f86003c, 0x8cc50000, 0x24030006, 0x53f02, 0x51402, 0x30e40007, 0x14830016, 0x304500ff, 0x2ca80006, 0x11000040, 0x55880, 0x3c0c0800, 0x258c555c, 0x16c5021, 0x8d490000, 0x1200008, 0x0, 0x8f8e007c, 0x240d0001, 0x11cd0050, 0x24020002, 0xaf82007c, 0x26090001, 0x3130ffff, 0x24c80020, 0x212202b, 0x1003021, 0x1480ffe5, 0xaf88003c, 0x2001021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0020, 0x93870062, 0x54e00034, 0x3021, 0xe000c9e, 0x0, 0x8f86003c, 0xa000db6, 0x24020001, 0x8f87007c, 0x24050002, 0x10e50031, 0x24040013, 0x2821, 0x3021, 0x24070001, 0xe000bf0, 0x0, 0xa000db7, 0x8f86003c, 0x8f83007c, 0x24020002, 0x1462fff6, 0x24040012, 0xe000c53, 0x0, 0x8f850078, 0x403021, 0x24040012, 0xe000bf0, 0x3821, 0xa000db7, 0x8f86003c, 0x8f83007c, 0x24110003, 0x10710029, 0x241f0002, 0x107fffce, 0x26090001, 0x24040010, 0x2821, 0x3021, 0xa000dd4, 0x24070001, 0x8f91007c, 0x24060002, 0x1626fff9, 0x24040010, 0xe000cf8, 0x0, 0x14400023, 0x8f98003c, 0x8f86003c, 0xa000db6, 0x24020003, 0x24040014, 0xe000bf0, 0x2821, 0x8f86003c, 0xa000db6, 0x24020002, 0xe000d60, 0x0, 0xa000db7, 0x8f86003c, 0xe000c00, 0x0, 0x24190002, 0x24040014, 0x2821, 0x3021, 0x3821, 0xaf99007c, 0xe000bf0, 0x0, 0xa000db7, 0x8f86003c, 0xe000c10, 0x0, 0x8f850078, 0x24190002, 0x403021, 0x24040010, 0x3821, 0xa000e0d, 0xaf99007c, 0x403821, 0x24040010, 0x970f0002, 0x2821, 0xe000bf0, 0x31e6ffff, 0x8f86003c, 0xa000db7, 0xaf91007c, 0x8f84ff54, 0x3c077fff, 0x34e6ffff, 0x8c850018, 0x24020001, 0xa61824, 0xac830018, 0x3e00008, 0xa0820005, 0x3084ffff, 0x30a5ffff, 0x10800007, 0x1821, 0x30820001, 0x10400002, 0x42042, 0x651821, 0x1480fffb, 0x52840, 0x3e00008, 0x601021, 0x10c00007, 0x0, 0x8ca20000, 0x24c6ffff, 0x24a50004, 0xac820000, 0x14c0fffb, 0x24840004, 0x3e00008, 0x0, 0x10a00008, 0x24a3ffff, 0xac860000, 0x0, 0x0, 0x2402ffff, 0x2463ffff, 0x1462fffa, 0x24840004, 0x3e00008, 0x0, 0x411c0, 0x3e00008, 0x24420240, 0x27bdffe8, 0xafb00010, 0x808021, 0xafbf0014, 0xe000e4d, 0xa02021, 0x504821, 0x240aff80, 0x8fbf0014, 0x8fb00010, 0x12a3024, 0x3127007f, 0x3c08800a, 0x3c042100, 0xe81021, 0xc42825, 0x3c038000, 0x27bd0018, 0xac650024, 0xaf820020, 0xac400000, 0xac650024, 0x3e00008, 0xac400040, 0x3c0d0800, 0x8dad0058, 0x56180, 0x240aff80, 0x1a45821, 0x16c4821, 0x12a3024, 0x3127007f, 0x3c08800c, 0x3c042100, 0xe81021, 0xc42825, 0x3c038000, 0xac650028, 0xaf82001c, 0x3e00008, 0xac400024, 0x30a5ffff, 0x3c068000, 0x8cc201b8, 0x440fffe, 0x3c086015, 0xa83825, 0x3c031000, 0xacc40180, 0xacc00184, 0xacc70188, 0x3e00008, 0xacc301b8, 0x3c0d0800, 0x8dad0058, 0x56180, 0x240aff80, 0x1a45821, 0x16c4021, 0x10a4824, 0x93140, 0x3107007f, 0xc72825, 0x3c042000, 0xa41825, 0x3c028000, 0xac430830, 0x3e00008, 0xaf80001c, 0x27bdffe8, 0xafb00010, 0x808021, 0xafbf0014, 0xe000e4d, 0xa02021, 0x504821, 0x240bff80, 0x12b5024, 0xa3940, 0x3128007f, 0x3c062000, 0x8fbf0014, 0x8fb00010, 0xe82825, 0x34c20001, 0xa21825, 0x3c048000, 0x27bd0018, 0xac830830, 0x3e00008, 0xaf800020, 0x3c058008, 0x8ca70060, 0x3c068008, 0x87102b, 0x14400011, 0x2c834000, 0x8ca80060, 0x2d034000, 0x1060000f, 0x24034000, 0x8cc90060, 0x89282b, 0x14a00002, 0x801821, 0x8cc30060, 0x35a42, 0xb3080, 0x3c0a0800, 0x254a55a0, 0xca2021, 0x3e00008, 0x8c820000, 0x1460fff3, 0x24034000, 0x35a42, 0xb3080, 0x3c0a0800, 0x254a55a0, 0xca2021, 0x3e00008, 0x8c820000, 0x3c058008, 0x90a60008, 0x93840090, 0x24c20001, 0x304200ff, 0x3043007f, 0x1064000c, 0x23827, 0xa0a20008, 0x3c048000, 0x8c850178, 0x4a0fffe, 0x8f8a0088, 0x24090002, 0x3c081000, 0xac8a0140, 0xa0890144, 0x3e00008, 0xac880178, 0xa000ed2, 0x30e20080, 0x27bdffc8, 0x3c058008, 0x34a40080, 0xafbf0034, 0xafbe0030, 0xafb7002c, 0xafb60028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb20018, 0xafb10014, 0xafb00010, 0x94830078, 0x9482007a, 0x104300cd, 0x2405ffff, 0x3c1e8008, 0x80b821, 0xa000fae, 0x3c168000, 0x108a00c8, 0x8fbf0034, 0x8f840088, 0x3c0b0800, 0x8d6b005c, 0x240aff80, 0x3c07800e, 0x1644021, 0x10a4824, 0xaec9002c, 0x96e6007a, 0x3102007f, 0x471821, 0x30c57fff, 0x58040, 0x203a821, 0x96bf0000, 0x3c190800, 0x8f390058, 0x240fff80, 0x33f53fff, 0x3248821, 0x15c180, 0x2389021, 0x24f5824, 0x3c0c0100, 0x16c5025, 0x324e007f, 0x3c0d800c, 0x1cd9021, 0x2802821, 0xe000e50, 0xaeca0028, 0x8e480010, 0x8e490030, 0x8f860020, 0x24020002, 0x1093823, 0xae470010, 0xa0c20000, 0x96e3005c, 0x8e440030, 0x8f910020, 0xe000eab, 0x3070ffff, 0x22b80, 0x205c825, 0x3c1f4200, 0x33fc025, 0xae380004, 0x8e510004, 0x8f870020, 0x8e4f0000, 0x24080008, 0xacf1001c, 0xacef0018, 0xace0000c, 0xace00010, 0x9250000a, 0x24060005, 0x2405c000, 0x320e00ff, 0xa4ee0014, 0x964d0008, 0x2e09821, 0xa4ed0016, 0x924c000a, 0x3c0d8008, 0x318b00ff, 0xa4eb0020, 0x96440008, 0x35ac0100, 0xa4e40022, 0xace00024, 0x924a000b, 0x314900ff, 0xa4e90002, 0xa0e80001, 0x8e420030, 0x8f830020, 0x2408ffbf, 0xac620008, 0xa0660030, 0x8f8e0020, 0x2403ffdf, 0x95df0032, 0x3e5c824, 0x335c025, 0xa5d80032, 0x91d10032, 0x322f003f, 0x35f00040, 0xa1d00032, 0x8f890020, 0xad200034, 0x8d8b00c0, 0xad2b0038, 0x9124003c, 0x3c0b7fff, 0x308a007f, 0xa12a003c, 0x8f860020, 0x3564ffff, 0x90c7003c, 0xe81024, 0xa0c2003c, 0x8f990020, 0x9325003c, 0xa3f824, 0xa33f003c, 0x8e580034, 0x8f8c0020, 0xad980040, 0x8e4f002c, 0x8e510030, 0x1f18023, 0xad900044, 0x918e0048, 0x31cd007f, 0xa18d0048, 0x8f850020, 0x8e4a0030, 0x8ca90048, 0x1444024, 0x1363824, 0xe83025, 0xaca60048, 0x9242000a, 0xa0a2004c, 0x96430008, 0x8f9f0020, 0xa7e3004e, 0x8e500030, 0x8e440030, 0xe00030c, 0x8fc50060, 0x92f1007c, 0x2c140, 0x2c900, 0x3197821, 0x322e0002, 0x402821, 0x11c00003, 0x20f8021, 0x22080, 0x2048021, 0x926d007c, 0x31ac0004, 0x11800002, 0x57080, 0x20e8021, 0x8e440030, 0x8f870020, 0x24058000, 0x308b0003, 0xb5023, 0x31490003, 0x2094021, 0xace80034, 0x9664007a, 0x9662007a, 0x9670007a, 0x30467fff, 0x24c30001, 0x307f7fff, 0x205c824, 0x33fc025, 0xa678007a, 0x9671007a, 0x3c120800, 0x8e520060, 0x322f7fff, 0x11f20028, 0x0, 0x8f840088, 0xe000e85, 0x2a02821, 0x8f840088, 0xe000e95, 0x2802821, 0xe000eca, 0x0, 0x96f30078, 0x96f4007a, 0x1293000f, 0x2821, 0x3c098008, 0x35240100, 0x93c80008, 0x908700c5, 0x3114007f, 0x30e400ff, 0x284302b, 0x14c0ff3e, 0x268a0001, 0x938d0090, 0x268b0001, 0x8d6021, 0x158bff3c, 0x8f840088, 0x8fbf0034, 0x8fbe0030, 0x8fb7002c, 0x8fb60028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0xa01021, 0x3e00008, 0x27bd0038, 0x967f007a, 0x3e5c824, 0xa679007a, 0x9278007a, 0x926e007a, 0x331100ff, 0x1179c2, 0xf9027, 0x1269c0, 0x31cc007f, 0x18d2825, 0xa265007a, 0xa000fa3, 0x8f840088, 0x3c038000, 0x3084ffff, 0x30a5ffff, 0xac640018, 0xac65001c, 0x3e00008, 0x8c620014, 0x27bdffa8, 0x3c068008, 0xafbf0054, 0xafbe0050, 0xafb7004c, 0xafb60048, 0xafb50044, 0xafb40040, 0xafb3003c, 0xafb20038, 0xafb10034, 0xafb00030, 0x34c80100, 0x910500c5, 0x90c70008, 0x3084ffff, 0x30a500ff, 0x30e2007f, 0x45182a, 0xafa40010, 0xa7a00018, 0x1060009c, 0xafa00014, 0x90ca0008, 0x3149007f, 0xa93023, 0x24d4ffff, 0x14882b, 0x8fb30010, 0x13902b, 0x2328024, 0x52000085, 0x8fb40014, 0x3c038008, 0x94790052, 0x947e0050, 0x8fb60010, 0x33ec023, 0x18bc00, 0x171403, 0x16fc00, 0x2c2a82a, 0x16a00002, 0x1f2c03, 0x402821, 0x143c00, 0x72403, 0xa4102a, 0x54400001, 0xa02021, 0x28850009, 0x14a00002, 0x80b021, 0x24160008, 0x3c0c8008, 0x8d860048, 0x165980, 0x8d88004c, 0x3c038000, 0x3169ffff, 0x3c0a0010, 0x12a2025, 0x34700400, 0xac660038, 0xaf90008c, 0xac68003c, 0xac640030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c6e0000, 0x31cd0020, 0x11a0fffd, 0x16902a, 0x2517824, 0x11e00036, 0xb821, 0x3c158000, 0x3c118008, 0x92220008, 0x8ea40100, 0x8821, 0x305e007f, 0xe000e50, 0x3c02821, 0x8e1f0010, 0x8ea40100, 0x33f93fff, 0x3202821, 0xe000e68, 0xafb9001c, 0x92180000, 0x3302003f, 0x2c530008, 0x5260000d, 0x8021, 0x24050001, 0x451804, 0x3067005d, 0x14e000b1, 0x8f92008c, 0x30640002, 0x1480014d, 0x8f86008c, 0x30680080, 0x5500004a, 0x96180012, 0x8021, 0x8ea40100, 0xe000e85, 0x8fa5001c, 0x8ea40100, 0xe000e95, 0x3c02821, 0x1200004f, 0x3c078008, 0x26e40001, 0x8f8c008c, 0x4bc00, 0x291a023, 0x17bc03, 0x2f6302a, 0x14882b, 0x259f0040, 0x24120001, 0xd1f024, 0x3e08021, 0xaf9f008c, 0x17c0ffcd, 0xafb20014, 0x3c078008, 0x94e80050, 0x8fb30010, 0x3c058000, 0x2e81021, 0x3c0d0020, 0xa4e20050, 0xacad0030, 0x94f50050, 0x94f60052, 0x2775023, 0x3149ffff, 0x12d50041, 0xafa90010, 0x8cf6004c, 0x174980, 0x8cf70048, 0x2c9f821, 0x2021, 0x3e9302b, 0x2e46021, 0x1868021, 0xacff004c, 0xacf00048, 0x8fb30010, 0x13902b, 0x2328024, 0x1600ff7f, 0x3c038008, 0x8fb40014, 0x8fbf0054, 0x8fbe0050, 0x3a820001, 0x8fb7004c, 0x8fb60048, 0x8fb50044, 0x8fb40040, 0x8fb3003c, 0x8fb20038, 0x8fb10034, 0x8fb00030, 0x3e00008, 0x27bd0058, 0x90cf0008, 0x938c0090, 0x31ee007f, 0xae6823, 0x18d5821, 0xa000ff9, 0x2574ffff, 0x8f840088, 0x24100001, 0xa7b80018, 0xe000e79, 0x97a50018, 0x8ea40100, 0xe000e85, 0x8fa5001c, 0x8ea40100, 0xe000e95, 0x3c02821, 0x1600ffb5, 0x26e40001, 0x3c078008, 0x94e80050, 0x8fb30010, 0x3c058000, 0x2e81021, 0x3c0d0020, 0xa4e20050, 0xacad0030, 0x94f50050, 0x94f60052, 0x2775023, 0x3149ffff, 0x14882b, 0x16d5ffc1, 0xafa90010, 0x94fe0054, 0x8cf00044, 0x33d8fffe, 0x1878c0, 0x20f7021, 0xacae003c, 0x8cf90044, 0x8ca3003c, 0x3235823, 0x196002ea, 0x0, 0x8cf20040, 0x26420001, 0xaca20038, 0x3c050050, 0x34a70010, 0x3c038000, 0xac670030, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c7f0000, 0x33e60020, 0x10c0fffd, 0x3c108008, 0x960d0054, 0x3c178000, 0x3c068008, 0x31b30001, 0x1350c0, 0x157b021, 0x8ec90400, 0x3c070800, 0x8ce70044, 0x3c040020, 0xacc90048, 0x8ed50404, 0x240c0001, 0xacd5004c, 0x10ec02d0, 0xaee40030, 0x96180052, 0x3c050800, 0x8ca50040, 0xb87821, 0xa60f0052, 0x960e0054, 0x25c30001, 0xa6030054, 0x96190054, 0x3324ffff, 0x5487ff0f, 0x8fb30010, 0x30a5ffff, 0xe000fd7, 0xa6000054, 0x3c050800, 0x8ca50024, 0x96120052, 0x453823, 0x247f023, 0xa61e0052, 0xa000ffb, 0x8fb30010, 0x8f93001c, 0x3c070080, 0x8e440028, 0x3c1fffef, 0x37f9ffff, 0xae640000, 0x8e420024, 0xa260000a, 0x3c0fff9f, 0xae620004, 0x9245002c, 0x35eeffff, 0x3c0c0040, 0xa265000c, 0x8e71000c, 0xa265000b, 0x3c0600ff, 0x227c025, 0x3196824, 0x1ae5824, 0x16c5025, 0xae6a000c, 0x8e490004, 0xae600018, 0x34d0ffff, 0xae690014, 0x8e48002c, 0x8f820088, 0xa6600008, 0x1102024, 0xae640010, 0x8e510008, 0x96470012, 0xae710020, 0x8e58000c, 0x30e33fff, 0x32980, 0xae780024, 0x8e4c0014, 0xa2f821, 0x30f90001, 0xae6c0028, 0x8e4b0018, 0x1f71c2, 0x197b80, 0xae6b002c, 0x8e49001c, 0x1cf6821, 0xa66d001c, 0xae690030, 0x964a0002, 0x8e460020, 0xa66a001e, 0xae660034, 0x92430033, 0x30700004, 0x56000006, 0x924b0000, 0x3c068008, 0x34d00100, 0x8e0800c0, 0xae680030, 0x924b0000, 0x8f8a0020, 0xa14b0030, 0x92490033, 0x31230002, 0x50600007, 0x92440001, 0x8f8c0020, 0x240fff80, 0x918e0030, 0x1cf6825, 0xa18d0030, 0x92440001, 0x8f820020, 0x2418ffbf, 0x240affdf, 0xa0440031, 0x8f990020, 0x3c088008, 0x35040080, 0x9331003c, 0x323f007f, 0xa33f003c, 0x8f8d0020, 0x91af003c, 0x1f87024, 0xa1ae003c, 0x8f870020, 0x8e6c0014, 0x90e3003c, 0x2d8b0001, 0xb4940, 0x6a3024, 0xc98025, 0xa0f0003c, 0x96450012, 0x8f870020, 0xa4e50032, 0x8e450004, 0x909f007c, 0x30a20003, 0x28823, 0x32390003, 0xb91021, 0x33f80002, 0x17000002, 0x24440034, 0x24440030, 0x3c038008, 0x34660080, 0x90c9007c, 0xa98024, 0x32080004, 0x15000002, 0x24830004, 0x801821, 0x8f840020, 0x24080002, 0xace30034, 0xa0880000, 0x9242003f, 0x8f9f0020, 0x3c188008, 0x370f0080, 0xa3e20001, 0x8f910020, 0x9259003f, 0x8e440004, 0xa6390002, 0x95ee005c, 0xe000eab, 0x31d0ffff, 0x26b80, 0x20d5825, 0x3c0c4200, 0x16c2825, 0xae250004, 0x8e4a0038, 0x8f850020, 0xacaa0018, 0x8e470034, 0xaca7001c, 0xaca0000c, 0xaca00010, 0xa4a00014, 0xa4a00016, 0xa4a00020, 0xa4a00022, 0xaca00024, 0x8e620014, 0x50400001, 0x24020001, 0xaca20008, 0xe000eca, 0x24110001, 0xa00104f, 0x24100001, 0x90d30001, 0x32720020, 0x1240018a, 0x24100001, 0x3c0a8008, 0x35470080, 0x90e3007c, 0x8f93001c, 0xafa00024, 0x30690001, 0x11200011, 0xafb00020, 0x3c058008, 0x8ccb0014, 0x8cac0060, 0x16c882b, 0x16200003, 0x1602821, 0x3c108008, 0x8e050060, 0x3c0f8008, 0x35e30080, 0x8c6e0070, 0xae682b, 0x15a00002, 0xa02021, 0x8c640070, 0xafa40024, 0x8f82ff5c, 0x8cc40014, 0x8c590070, 0x99c02b, 0x53000001, 0x8c440070, 0x8fa20024, 0x82f823, 0x13e00003, 0xafbf0028, 0x24040002, 0xafa40020, 0x8fb20020, 0x292402b, 0x1500015b, 0x1821, 0x8cc50038, 0x8e6b000c, 0x3c0c0080, 0xae650000, 0x8cc90034, 0x3c11ff9f, 0x16c5025, 0xae690004, 0x90c8003f, 0x3623ffff, 0x1431024, 0x3c120020, 0x3c04ffef, 0xa268000b, 0x523825, 0x349fffff, 0xffc024, 0x3c190008, 0x8f87008c, 0x3197825, 0xae6f000c, 0x8ced0014, 0xae600018, 0x8fb10024, 0xae6d0014, 0x8cf00018, 0x8fae0028, 0xae70001c, 0x8ce50008, 0x22e6021, 0xae650024, 0x8ceb000c, 0xa6600038, 0xa660003a, 0xae6c002c, 0xae600028, 0xae6b0020, 0x8cea0014, 0x8fa30028, 0x1514823, 0x1233023, 0x10c00011, 0xae660010, 0x90e9003d, 0x8e620004, 0x8e7f0000, 0x99100, 0x527821, 0x2021, 0x1f2c82b, 0x3e4c021, 0x3197021, 0xae6f0004, 0xae6e0000, 0x90ed003d, 0xa26d000a, 0x8f90008c, 0x96060006, 0xa6660008, 0x8f980020, 0x24190002, 0x3c0f8008, 0x8fa40024, 0x35ee0080, 0xa3190000, 0x95cd005c, 0x8f920020, 0xe000eab, 0x31b0ffff, 0x22b80, 0x2056025, 0x3c064200, 0x8f85008c, 0x1865825, 0xae4b0004, 0x8f840020, 0x8cb10038, 0xac910018, 0x8ca30034, 0xac83001c, 0xac80000c, 0xac800010, 0xa4800014, 0xa4800016, 0xa4800020, 0xa4800022, 0xac800024, 0x90aa003f, 0x8fa70024, 0xa48a0002, 0x10e0000c, 0x24090001, 0x8fbf0028, 0x53e00188, 0x90a2003d, 0x90a2003e, 0x24480001, 0xa0880001, 0x8f850020, 0x8fa40024, 0xaca40008, 0xa00122f, 0x3c118008, 0xa0890001, 0x8f850020, 0x24020001, 0xaca20008, 0x3c118008, 0x36230080, 0x906a007c, 0x31470002, 0x14e00002, 0x24060034, 0x24060030, 0x8f8d008c, 0x3c0f8008, 0x35ee0080, 0x91ac0000, 0x91c8007c, 0x8fb00024, 0xa0ac0030, 0x8f91008c, 0x8f820020, 0x8faa0024, 0x92270001, 0x32120003, 0x240b0004, 0xa0470031, 0x1721823, 0x8f84008c, 0x8f8b0020, 0x241fc000, 0x94980012, 0x95790032, 0x30690003, 0x330f3fff, 0x33f7024, 0x1cf6825, 0xa56d0032, 0x91650032, 0xca3021, 0xc93021, 0x30b0003f, 0x360c0040, 0xa16c0032, 0x8fb20024, 0x31070004, 0x12400002, 0x8f850020, 0xc73021, 0x3c048008, 0xaca60034, 0x34880100, 0x8d1900c0, 0x8fbf0024, 0x240dffbf, 0xacb90038, 0x90af003c, 0x2ff80001, 0x2412ffdf, 0x31ee007f, 0xa0ae003c, 0x8f8b0020, 0x188940, 0x9170003c, 0x20d6024, 0xa16c003c, 0x8f870020, 0x90e3003c, 0x725024, 0x1511025, 0xa0e2003c, 0x8f88008c, 0x8f990020, 0x8d090020, 0xaf290040, 0x8d060024, 0xaf260044, 0x8d040028, 0xaf240048, 0x8d1f002c, 0xaf3f004c, 0xe000eca, 0x0, 0x8fb80020, 0x24050002, 0x5705009f, 0x8fa30020, 0x3c1f8000, 0x3c128008, 0x8fe40100, 0x92580008, 0x8f92ff5c, 0xe000e50, 0x3305007f, 0x8f8e0020, 0x8faf0020, 0x8fa40028, 0xa1cf0000, 0x9659005c, 0x8f910020, 0xe000eab, 0x3330ffff, 0x25b80, 0x20b6825, 0x3c084200, 0x8f8b008c, 0x1a83025, 0xae260004, 0x8d700038, 0x8f860020, 0x2821, 0x51100, 0xacd00018, 0x8d6c0034, 0x3c047fff, 0x3488ffff, 0xaccc001c, 0x9171003e, 0x8cca001c, 0x8cdf0018, 0x113900, 0x111f02, 0x1477021, 0x434825, 0x1c7c02b, 0x3e97821, 0x1f8c821, 0xacce001c, 0xacd90018, 0xacc0000c, 0xacc00010, 0x916d003e, 0x8faa0028, 0x24070005, 0xa4cd0014, 0x95700004, 0x2418c000, 0x148c824, 0xa4d00016, 0x916c003e, 0x1402021, 0xa4cc0020, 0x95650004, 0xa4c50022, 0xacc00024, 0x9163003f, 0xa4c30002, 0x9171003d, 0x26220001, 0xa0c20001, 0x8f890020, 0x3c028008, 0x34460100, 0xad2a0008, 0xa1270030, 0x8f910020, 0x8f9f008c, 0x2402ff80, 0x962f0032, 0x97ee0012, 0x30f8024, 0x31cd3fff, 0x20d6025, 0xa62c0032, 0x92250032, 0x2418ffbf, 0x2410ffdf, 0x30ab003f, 0x35630040, 0xa2230032, 0x8f9f0020, 0x2403ffff, 0xafe00034, 0x8cca00c0, 0xafea0038, 0x93e7003c, 0x30e9007f, 0xa3e9003c, 0x8f8d0020, 0x3c098000, 0x91af003c, 0x1f87024, 0xa1ae003c, 0x8f8b0020, 0x916c003c, 0x1902824, 0xa165003c, 0x8f870020, 0xace30040, 0x8fb10024, 0x3c038008, 0xacf10044, 0x90ea0048, 0x1423025, 0xa0e60048, 0x8f900020, 0x8f8e008c, 0x8e1f0048, 0x3e9c024, 0x3197825, 0xae0f0048, 0x91cd003e, 0xa20d004c, 0x8f8c008c, 0x8f8b0020, 0x95850004, 0xa565004e, 0xe00030c, 0x8c650060, 0x924a007c, 0x402821, 0x8fa60028, 0x21140, 0x58900, 0x513821, 0x31490002, 0x11200003, 0xc71821, 0x52080, 0x641821, 0x3c028008, 0x344a0080, 0x9147007c, 0x30e90004, 0x11200003, 0x8fb90028, 0x56080, 0x6c1821, 0x240b0004, 0x8f910020, 0x33300003, 0x1704023, 0x310d0003, 0x6d3021, 0xae260034, 0x3c038008, 0xa6650038, 0x3c058000, 0x8ca40100, 0x90730008, 0xe000e95, 0x3265007f, 0xe000eca, 0x0, 0x8fa30020, 0x3782b, 0xf8023, 0x290a024, 0x608021, 0x608821, 0xa00104f, 0x10802b, 0x8f91001c, 0x8cd80038, 0x24190003, 0xa6200008, 0xae380000, 0x8ccf0034, 0xa220000a, 0x8f8e008c, 0xae2f0004, 0x3c050080, 0x91cb003f, 0xa239000c, 0x8e28000c, 0x3c0dff9f, 0xa22b000b, 0x1051025, 0x35a3ffff, 0x3c13ffef, 0x8f8e008c, 0x433824, 0x366affff, 0xea4824, 0xae29000c, 0x8dc40014, 0x95d80012, 0x8f860088, 0xae240010, 0x8dcc0014, 0xae200018, 0xae200020, 0xae2c0014, 0xae200024, 0x8ddf0018, 0x330c3fff, 0xc9180, 0xae3f0028, 0x8dcf0008, 0x246c821, 0x330b0001, 0xae2f0030, 0x8dc3000c, 0x8f930020, 0x1941c2, 0xb2b80, 0x1056821, 0x24020002, 0x3c0a8008, 0xa62d001c, 0xa6200034, 0xae23002c, 0x35470080, 0xa2620000, 0x94e9005c, 0x8f990020, 0x3c044200, 0x313fffff, 0x3e43025, 0xaf260004, 0x8f98008c, 0x240e0001, 0x2402c000, 0x8f120038, 0x24060034, 0xaf320018, 0x8f0f0034, 0x3c128008, 0x36580080, 0xaf2f001c, 0xaf20000c, 0xaf200010, 0xa7200014, 0xa7200016, 0xa7200020, 0xa7200022, 0xaf200024, 0xa7300002, 0xa32e0001, 0x8f8d0020, 0x8f8b008c, 0xadb00008, 0x91680000, 0xa1a80030, 0x8f91008c, 0x8f830020, 0x92250001, 0xa0650031, 0x8f9f0020, 0x97f30032, 0x2625024, 0x14c3825, 0xa7e70032, 0x93e90032, 0x3124003f, 0xa3e40032, 0x930f007c, 0x31ee0002, 0x15c00002, 0x8f840020, 0x24060030, 0x3c0e8008, 0xac860034, 0x35d10100, 0x8e3900c0, 0x2403ffbf, 0x2008821, 0xac990038, 0x908b003c, 0x10802b, 0x3165007f, 0xa085003c, 0x8f8d0020, 0x91a8003c, 0x1031024, 0xa1a2003c, 0x8f870020, 0x90f3003c, 0x366a0020, 0xa0ea003c, 0x8f9f008c, 0x8f920020, 0x8fe90020, 0xae490040, 0x8fe40024, 0xae440044, 0x8fec0028, 0xae4c0048, 0x8fe6002c, 0xe000eca, 0xae46004c, 0xa00104f, 0x0, 0xa0010c0, 0x8ce20040, 0x24480001, 0xa0880001, 0x8f850020, 0x8fa40024, 0xaca40008, 0xa00122f, 0x3c118008, 0x94cb0052, 0x3c080800, 0x8d080024, 0x10b1021, 0xa4c20052, 0xa000ffb, 0x8fb30010, 0x27bdffe0, 0x3c0d8008, 0xafb20018, 0xafb00010, 0xafbf001c, 0xafb10014, 0x35b20080, 0x8e4c0018, 0x35a80100, 0x964b0006, 0x95a70050, 0x910900ec, 0xc5602, 0x1672823, 0x3143007f, 0x312600ff, 0x24020003, 0xa3830090, 0xaf840088, 0x10c2001b, 0x30b0ffff, 0x910600ec, 0x24120005, 0x30c200ff, 0x10520033, 0x0, 0x16000009, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x240d0c00, 0x3c0c8000, 0x27bd0020, 0x3e00008, 0xad8d0024, 0xe000fde, 0x2002021, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x240d0c00, 0x3c0c8000, 0x27bd0020, 0x3e00008, 0xad8d0024, 0x96580078, 0x9651007a, 0x924e007d, 0x2387826, 0x31e8ffff, 0x31c400c0, 0x14800009, 0x2d110001, 0x16000037, 0x0, 0x5620ffe2, 0x8fbf001c, 0xe000edf, 0x0, 0xa0013d3, 0x8fbf001c, 0x1620ffda, 0x0, 0xe000edf, 0x0, 0x1440ffd8, 0x8fbf001c, 0x16000022, 0x0, 0x925f007d, 0x33e2003f, 0xa242007d, 0xa0013d3, 0x8fbf001c, 0x950900da, 0x8f860064, 0x802821, 0x24040005, 0xe000682, 0x3130ffff, 0x97830076, 0x3c048000, 0x2465ffff, 0xa7850076, 0x8c8a01b8, 0x540fffe, 0x0, 0xac800180, 0x8fbf001c, 0xac900184, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3c076013, 0x3c0b1000, 0x240d0c00, 0x3c0c8000, 0x27bd0020, 0xac870188, 0xac8b01b8, 0x3e00008, 0xad8d0024, 0xe000fde, 0x2002021, 0x5040ffb1, 0x8fbf001c, 0x925f007d, 0xa001400, 0x33e2003f, 0xe000fde, 0x2002021, 0x1440ffaa, 0x8fbf001c, 0x12200007, 0x0, 0x9259007d, 0x3330003f, 0x36020040, 0xa242007d, 0xa0013d3, 0x8fbf001c, 0xe000edf, 0x0, 0x5040ff9e, 0x8fbf001c, 0x9259007d, 0x3330003f, 0xa00142f, 0x36020040, 0x411c0, 0x3e00008, 0x24420240, 0x3c050006, 0x851025, 0x3c038000, 0xac620030, 0x0, 0x0, 0x0, 0x3c058000, 0x8ca70000, 0x30e60010, 0x10c0fffd, 0x0, 0x8cab003c, 0x8caa003c, 0x1644821, 0x12a402b, 0x11000004, 0x3c068000, 0x8cad0038, 0x25ac0001, 0xacac0038, 0x8ccf003c, 0x1e47021, 0x3e00008, 0xacce003c, 0x27bdffd0, 0xafb20018, 0xafb00010, 0xafbf0028, 0xafb50024, 0xafb40020, 0xafb3001c, 0xafb10014, 0xa09021, 0x14a00012, 0x808021, 0x8f820024, 0x21880, 0x14600037, 0x24040010, 0xe00143d, 0x0, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x1021, 0x27bd0030, 0x3e00008, 0xaf800024, 0x10a0001e, 0x8821, 0x3c138000, 0x24140020, 0xa00147c, 0x3c150005, 0x26310004, 0x232502b, 0x11400017, 0x2401021, 0x8f880024, 0x8e070000, 0x24040080, 0x84880, 0x1331821, 0x25060001, 0xac670400, 0x26100004, 0x14d4fff3, 0xaf860024, 0xe00143d, 0x0, 0xae750030, 0x0, 0x0, 0x0, 0x0, 0x26310004, 0x232502b, 0x1540ffec, 0xaf800024, 0x2401021, 0x8fbf0028, 0x8fb50024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x3e00008, 0x27bd0030, 0x32023, 0x3085000f, 0xa001465, 0x652021, 0x27bdffd8, 0x3c038000, 0xa03821, 0xac670038, 0xafb10014, 0xac66003c, 0x808821, 0x3c060022, 0xac660030, 0xafb00010, 0xac710028, 0x3c10800c, 0x3c04800c, 0x24050070, 0xafbf0024, 0xafb40020, 0xafb3001c, 0xe001456, 0xafb20018, 0x26040080, 0xe001456, 0x24050080, 0x26040100, 0xe001456, 0x240500f0, 0x3c020800, 0x8c420064, 0x10400013, 0x8021, 0x3c148000, 0x2413ff80, 0x3c12800c, 0xe00143a, 0x2002021, 0x514821, 0x312a007f, 0x1334024, 0x1522021, 0x24050050, 0xae880028, 0xe001456, 0x26100001, 0x3c050800, 0x8ca50064, 0x205202b, 0x1480fff2, 0x0, 0x3c060800, 0x8cc60060, 0x10c00015, 0x8021, 0x3c148000, 0x2413ff80, 0x3c12800c, 0x3c190800, 0x8f390058, 0x10c180, 0x24050040, 0x3317821, 0x1f86821, 0x31ae007f, 0x1b36024, 0x1d22021, 0xae8c0028, 0xe001456, 0x26100001, 0x3c060800, 0x8cc60060, 0x206582b, 0x1560fff0, 0x0, 0x3c100800, 0x8e10005c, 0x2414ff80, 0x3c1f800c, 0x2119821, 0x2749024, 0x3262007f, 0x3c118000, 0x5f2021, 0xae320028, 0xe001456, 0x62840, 0x8fbf0024, 0x8fb40020, 0x8fb3001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x2021, 0x2821, 0xa001456, 0x27bd0028, 0x8f83003c, 0x8c620004, 0x10400003, 0x0, 0x3e00008, 0x0, 0x8c640010, 0x8c650008, 0xa00149f, 0x8c66000c, 0x0 }; u32 bce_CP_b09FwData[(0x84/4) + 1] = { 0x0, 0x1b, 0xf, 0xa, 0x8, 0x6, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0 }; u32 bce_CP_b09FwRodata[(0x16c/4) + 1] = { 0x80080100, 0x80080080, 0x80080000, 0x8001800, 0x8001800, 0x8001838, 0x8001838, 0x800184c, 0x800181c, 0x8001a74, 0x8001a40, 0x8001acc, 0x8001acc, 0x8001b54, 0x8001a84, 0x80080240, 0x80021c4, 0x8002010, 0x80021ec, 0x8002284, 0x80023d4, 0x8002420, 0x8002544, 0x800244c, 0x80024d0, 0x8002080, 0x80029f8, 0x800299c, 0x800202c, 0x800202c, 0x800202c, 0x80025b8, 0x80025b8, 0x800202c, 0x800202c, 0x8002874, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x80028d4, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x8002440, 0x800202c, 0x800202c, 0x8002944, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x800202c, 0x8002798, 0x800202c, 0x800202c, 0x8002700, 0x800265c, 0x80037c0, 0x8003794, 0x8003760, 0x8003734, 0x8003714, 0x80036c8, 0x80080100, 0x80080080, 0x80080000, 0x80080080, 0x0 }; u32 bce_CP_b09FwBss[(0x19c/4) + 1] = { 0x0 }; u32 bce_CP_b09FwSbss[(0x91/4) + 1] = { 0x0 }; u32 bce_CP_b09FwSdata[(0x0/4) + 1] = { 0x0 }; u32 bce_xi_rv2p_proc1[] = { 0x00000010, 0xb1800002, 0x0000001f, 0x05030100, 0x00000008, 0xac000001, 0x00000000, 0x05000000, 0x0000000c, 0x2f800001, 0x00000000, 0x2b000000, 0x00000000, 0x2b800000, 0x00000010, 0x203f006c, 0x00000010, 0x213f0003, 0x00000010, 0x20bf003b, 0x00000018, 0x8000fffd, 0x00000010, 0xb1b8b015, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c380000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000007c, 0x00000008, 0x2d80011c, 0x00000008, 0x02000001, 0x00000010, 0x91de0000, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a17, 0x00000010, 0x08660016, 0x0000000c, 0x29800002, 0x0000000c, 0x1f800002, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000f, 0x00000008, 0x05005555, 0x00000018, 0x8000ffe8, 0x00000008, 0x02000001, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a19, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000010, 0x91d40000, 0x00000008, 0x2d800106, 0x00000018, 0x80000070, 0x00000010, 0x08660013, 0x00000018, 0x8000fff1, 0x00000008, 0xb1000001, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x00000008, 0x2d800001, 0x00000018, 0x80000069, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800002, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffd3, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800000, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffcd, 0x0000000c, 0x1f800002, 0x00000000, 0x05000000, 0x00000018, 0x8000ffca, 0x0000000c, 0x29800002, 0x0000000c, 0x1f800002, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000005, 0x00000008, 0x05005555, 0x00000018, 0x8000ffc4, 0x00000008, 0x02240045, 0x00000018, 0x00040000, 0x00000018, 0x8000001c, 0x00000018, 0x8000001e, 0x00000018, 0x80000052, 0x00000018, 0x8000009e, 0x00000018, 0x8000009d, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x800000e4, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000015, 0x00000018, 0x8000001b, 0x00000018, 0x80000000, 0x00000018, 0x800000b4, 0x00000018, 0x8000002e, 0x00000018, 0x800000e4, 0x00000018, 0x8000010f, 0x00000018, 0x800000da, 0x00000018, 0x80000133, 0x00000018, 0x8000003b, 0x00000018, 0x80000000, 0x00000018, 0x80000071, 0x0000000c, 0x1f800001, 0x00000000, 0x05000000, 0x00000018, 0x8000ffa3, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ff9d, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000000, 0x29420000, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ff96, 0x00000018, 0x8000ff95, 0x00000010, 0xb1bcb00a, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c3c0000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x80000016, 0x00000018, 0x800000ac, 0x00000010, 0x2c6201ba, 0x00000018, 0x80000005, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800000, 0x0000000c, 0x1f800000, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000006, 0x00000008, 0x05005555, 0x00000018, 0x8000ff80, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a00000b, 0x00000000, 0x05000000, 0x00000018, 0x8000ff7a, 0x00000018, 0x00020000, 0x00000000, 0x06820000, 0x00000010, 0xb18a0006, 0x00000000, 0x860c1400, 0x00000010, 0xb18c0004, 0x00000000, 0x05000000, 0x00000008, 0x2a000001, 0x00000010, 0x91d40000, 0x00000018, 0x000d0000, 0x00000000, 0x05020000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0xb1a0b013, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ffee, 0x00000008, 0x2d80011c, 0x00000010, 0x001f0000, 0x00000010, 0x91de0000, 0x0000000f, 0x47600008, 0x0000000f, 0x060e0001, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000018, 0x80000013, 0x0000000f, 0x47600008, 0x0000000b, 0x2fdf0002, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x2d80011c, 0x0000000f, 0x060e0001, 0x00000010, 0x001f0000, 0x00000000, 0x0f580000, 0x00000010, 0x91de0000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000000, 0x02620000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x31040000, 0x00000000, 0x309a0000, 0x00000000, 0x0c961800, 0x00000009, 0x0c99ffff, 0x00000004, 0xcc993400, 0x00000010, 0xb1963202, 0x00000008, 0x0f800000, 0x0000000c, 0x29800001, 0x00000010, 0x00220002, 0x0000000c, 0x29520001, 0x0000000c, 0x29520000, 0x00000008, 0x0200000e, 0x00000008, 0x0280001a, 0x00000010, 0xb1c40a02, 0x00000008, 0x02000003, 0x00000008, 0x22000001, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000000, 0x2a000800, 0x00000008, 0x05005555, 0x00000018, 0x8000ff36, 0x0000000b, 0x2fdf0002, 0x00000010, 0x91d40000, 0x00000008, 0x2a000001, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80011c, 0x00000010, 0x91d40000, 0x00000010, 0x91de0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000000, 0x30800000, 0x00000000, 0x31000000, 0x00000008, 0x2d800006, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000010, 0x00000000, 0x05000000, 0x00000018, 0x8000ff21, 0x00000010, 0x91a0b009, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x00000018, 0x8000ffab, 0x00000018, 0x80000010, 0x00000008, 0xac000001, 0x00000018, 0x8000000b, 0x00000000, 0x0380b000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c004000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff9a, 0x00000018, 0x80000030, 0x00000018, 0x80000006, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c000e00, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000ff0b, 0x00000000, 0x06820000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x0ce70007, 0x00000009, 0x0562ffff, 0x00000010, 0xba6c1405, 0x00000000, 0x2adf0000, 0x00000000, 0x21000000, 0x00000008, 0x2a000005, 0x00000010, 0x91d40000, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x0000000c, 0x31620018, 0x00000008, 0x2d800001, 0x00000018, 0x8000ff8c, 0x00000018, 0x000d0000, 0x00000010, 0xb1a0b00e, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c200000, 0x00000010, 0x91d40000, 0x00000018, 0x80000014, 0x00000010, 0x2c620002, 0x00000018, 0x8000000b, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c070000, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000feed, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000a, 0x00000000, 0x05000000, 0x00000018, 0x8000fee2, 0x00000000, 0x05020000, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x00000008, 0x2d800134, 0x00000000, 0x00000000, 0x00000010, 0x205f0000, 0x00000008, 0x2c800140, 0x00000008, 0x2d00003c, 0x00000008, 0x2d80011c, 0x00000000, 0x00000000, 0x00000010, 0x205f0000, 0x00000008, 0x2c800080, 0x00000008, 0x2d000000, 0x00000008, 0x2d800108, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff56, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000009, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000fec9, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff4e, 0x00000010, 0x91a03c02, 0x00000010, 0xb1e66207, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c310000, 0x00000009, 0x2cb1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80010d, 0x00000010, 0xb1a80006, 0x00000010, 0x205f0000, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff47, 0x00000010, 0xb1a60010, 0x00000010, 0x001f0000, 0x0000000f, 0x0f300007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07300003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x0000000f, 0x4ce30018, 0x00000000, 0x0c992c00, 0x00000004, 0xcc993400, 0x00000008, 0x0f800000, 0x0000000c, 0x29800001, 0x00000000, 0x33310000, 0x00000008, 0x22000016, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000c, 0x00000010, 0x009f0000, 0x00000000, 0x0f200000, 0x0000000c, 0x1f800001, 0x00000008, 0x05005555, 0x00000018, 0x8000fe9d, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff22, 0x0000000f, 0x47220008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000008, 0x02800001, 0x00000007, 0x02851c00, 0x00000008, 0x82850001, 0x00000000, 0x02854c00, 0x00000007, 0x42851c00, 0x00000003, 0xc3aa5200, 0x00000000, 0x03b10e00, 0x00000007, 0x4b071c00, 0x0000000f, 0x0f300007, 0x0000000f, 0x0a960003, 0x00000000, 0x0a955c00, 0x00000000, 0x4a005a00, 0x00000000, 0x0c960a00, 0x00000009, 0x0c99ffff, 0x00000008, 0x0d00ffff, 0x00000010, 0xb1963202, 0x00000008, 0x0f800005, 0x00000010, 0xb1a80008, 0x00000010, 0x205f0000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff0e, 0x0000000c, 0x29800001, 0x00000010, 0x001f0000, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000d, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000fe77, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000fefc, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000fe6f, 0x00000008, 0x03050004, 0x00000006, 0x83040c00, 0x00000008, 0x02850200, 0x00000000, 0x86050c00, 0x00000001, 0x860c0e00, 0x00000008, 0x02040004, 0x00000000, 0x02041800, 0x00000000, 0x83871800, 0x00000018, 0x00020000, }; u32 bce_xi_rv2p_proc2[] = { 0x00000010, 0xb1800004, 0x0000001f, 0x05030100, 0x00000008, 0x050000ff, 0x00000018, 0x00020000, 0x00000000, 0x2a000000, 0x00000010, 0xb1d40000, 0x0000000c, 0x29800001, 0x00000008, 0x02540009, 0x00000009, 0x2952003f, 0x00000018, 0x00040000, 0x00000018, 0x80000010, 0x00000018, 0x80000011, 0x00000018, 0x8000003a, 0x00000018, 0x8000010f, 0x00000018, 0x8000010e, 0x00000018, 0x8000010d, 0x00000018, 0x8000010d, 0x00000018, 0x80000000, 0x00000018, 0x8000011f, 0x00000018, 0x80000109, 0x00000018, 0x8000000c, 0x00000018, 0x80000123, 0x00000018, 0x80000175, 0x00000018, 0x80000067, 0x00000018, 0x800000da, 0x00000018, 0x800000e8, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffea, 0x00000000, 0x2a000000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ffe6, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffe4, 0x00000018, 0x00020000, 0x00000000, 0x05020000, 0x00000010, 0x91963421, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d610000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963416, 0x00000010, 0x205f0000, 0x00000000, 0x09d80000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c80010e, 0x00000008, 0x2d00000a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d620000, 0x00000000, 0x2c130000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963409, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d00006a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d7a0000, 0x00000018, 0x000a0000, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x0d610000, 0x00000000, 0x03620000, 0x00000000, 0x2c400000, 0x00000000, 0x02638c00, 0x00000000, 0x26460000, 0x00000008, 0x02040012, 0x00000010, 0xb9060827, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0cc60012, 0x00000018, 0x8000ffcb, 0x00000008, 0x0f800003, 0x00000000, 0x00000000, 0x00000010, 0x009f0000, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000008, 0xa31b0012, 0x00000010, 0xb1980003, 0x00000010, 0x001f0000, 0x00000008, 0x0f800004, 0x00000008, 0x22000003, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000010, 0x009f0000, 0x00000000, 0x25960000, 0x0000000c, 0x29800000, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x0260000f, 0x0000000f, 0x02040002, 0x00000010, 0xb60c0803, 0x0000000c, 0x1fbf0000, 0x0000000c, 0x33660010, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000005, 0x73662c00, 0x00000000, 0x31e32e00, 0x00000008, 0x2d800010, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000ff8f, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000008, 0x2200000b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ff88, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x00000008, 0x2c800040, 0x00000008, 0x2d000020, 0x00000008, 0x2d80011c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x0000000f, 0x42ea0010, 0x00000010, 0x004f0004, 0x00000010, 0xb7469200, 0x00000008, 0x02490012, 0x00000010, 0xb5840a00, 0x00000000, 0x0d610000, 0x00000010, 0xba66345a, 0x00000000, 0x03620000, 0x00000010, 0xb8630c58, 0x00000008, 0x83050012, 0x00000010, 0x004f0002, 0x00000000, 0x03490000, 0x00000001, 0x83068c00, 0x00000000, 0x83c60c00, 0x00000010, 0xb1870010, 0x00000000, 0x0b6e0000, 0x00000018, 0x8000ff6a, 0x00000001, 0x06691400, 0x00000010, 0x918c0002, 0x00000008, 0xb4e90001, 0x00000010, 0xb1e92c4c, 0x00000000, 0x86692c00, 0x00000000, 0x02000000, 0x00000009, 0x02eaffff, 0x00000010, 0x000c0002, 0x00000000, 0x02040a00, 0x0000000f, 0x460c0001, 0x0000000f, 0x02850001, 0x00000010, 0x918c01fc, 0x00000010, 0xb7040e43, 0x00000000, 0x2c400000, 0x00000000, 0x0f400000, 0x00000000, 0x0d610000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0c860012, 0x00000008, 0x0f800003, 0x0000000c, 0x29520000, 0x00000010, 0x009f0000, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000000, 0x26460000, 0x00000000, 0x23060000, 0x00000010, 0xb1980005, 0x00000010, 0x001f0000, 0x00000008, 0x0f800004, 0x00000000, 0x00000000, 0x00000010, 0x001f0000, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000000, 0x31e32e00, 0x00000005, 0x73662c00, 0x00000000, 0x25960000, 0x00000010, 0xb1870016, 0x0000000c, 0x29800000, 0x0000000f, 0x0f6b0007, 0x00000000, 0x0d690000, 0x00000000, 0x0a6c0000, 0x00000000, 0x0aed0000, 0x00000000, 0x0b6e0000, 0x00000000, 0x0b800000, 0x00000000, 0x0c870000, 0x00000008, 0x0f800003, 0x00000010, 0x20530000, 0x0000000c, 0x69520001, 0x00000010, 0x001f0000, 0x00000000, 0x22c58c00, 0x00000000, 0x231b0000, 0x00000000, 0x27110000, 0x00000000, 0x26900000, 0x00000010, 0xb8170e03, 0x0000000c, 0x29800000, 0x00000018, 0x8000fff6, 0x00000010, 0xb1980002, 0x00000008, 0x0f800004, 0x00000008, 0x2200001a, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800010, 0x00000010, 0x001f0000, 0x00000000, 0x0d6e0000, 0x00000003, 0xe7cf3400, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000010, 0xb1870007, 0x00000000, 0x36140000, 0x00000000, 0x36950000, 0x00000000, 0x37160000, 0x00000008, 0x2c800050, 0x00000008, 0x2d000030, 0x00000008, 0x2d80000c, 0x00000010, 0x20530000, 0x00000018, 0x8000ff1e, 0x00000000, 0x26460000, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000000, 0x0b6e0000, 0x00000003, 0xe7cf2c00, 0x00000008, 0x2200001b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ff14, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000010, 0x003f000c, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x026000f0, 0x00000010, 0xb70c0808, 0x00000000, 0x2c400000, 0x0000000c, 0x73660010, 0x00000008, 0x2c800018, 0x00000008, 0x2d000018, 0x00000008, 0x2d800002, 0x0000000c, 0x5fbf0000, 0x00000010, 0x91de0000, 0x00000018, 0x8000ff05, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x0000000c, 0x73660010, 0x00000008, 0x2c800018, 0x00000008, 0x2d000018, 0x00000008, 0x2d800002, 0x0000000c, 0x5fbf0000, 0x00000010, 0x91de0000, 0x00000008, 0x2c800003, 0x00000008, 0x2d000003, 0x00000009, 0x3060fff0, 0x00000008, 0x2d800001, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80001a, 0x00000008, 0x2d00001a, 0x00000000, 0x33000000, 0x00000008, 0x2d800002, 0x00000000, 0x31800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800004, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000feea, 0x00000018, 0x8000fee9, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x00000000, 0x0f008000, 0x00000008, 0x0f800007, 0x00000018, 0x80000014, 0x00000000, 0x05020000, 0x00000008, 0x22000009, 0x00000000, 0x286d0000, 0x00000000, 0x29000000, 0x0000000f, 0x65680010, 0x00000003, 0xf66c9400, 0x00000010, 0xb972a004, 0x0000000c, 0x73e70019, 0x0000000c, 0x21420004, 0x00000000, 0x3bf60000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000008, 0x22000008, 0x0000000c, 0x61420004, 0x00000018, 0x000a0000, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x0000000f, 0x0f470007, 0x00000008, 0x0f800008, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000fece, 0x00000010, 0x91de0000, 0x00000000, 0x2fd50000, 0x00000010, 0x001f0000, 0x00000000, 0x33510000, 0x00000000, 0x2a000000, 0x00000010, 0xb1c60023, 0x0000000f, 0x0f500007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x0000000f, 0x4c620010, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07500003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x00000000, 0x0cc60000, 0x00000000, 0x0b800000, 0x00000000, 0x06980000, 0x00000008, 0x0f800003, 0x00000010, 0x06c20004, 0x0000000c, 0x29000002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x009f0000, 0x00000000, 0x231b0000, 0x00000000, 0x27111a00, 0x00000000, 0x66900000, 0x0000000c, 0x29520000, 0x00000010, 0xb1973209, 0x0000000c, 0x29800000, 0x00000000, 0x06980000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c58c00, 0x00000010, 0x001f0000, 0x00000008, 0x0f800003, 0x00000018, 0x8000fff3, 0x00000010, 0xb1c80013, 0x00000010, 0xb1c60003, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000008, 0x22000016, 0x00000010, 0xb1c60003, 0x00000000, 0x23480000, 0x00000010, 0xb1800005, 0x00000000, 0x23480000, 0x0000000c, 0x29800000, 0x0000000f, 0x0f500007, 0x00000018, 0x80000012, 0x00000008, 0x22000016, 0x0000000c, 0x29800000, 0x00000000, 0x30140000, 0x00000000, 0x30950000, 0x00000010, 0x07500003, 0x00000009, 0x0b1600ff, 0x00000009, 0x0d1a00ff, 0x0000000f, 0x31160008, 0x00000000, 0x31623400, 0x00000003, 0xf1623000, 0x00000010, 0x205f0000, 0x00000000, 0x2c510000, 0x00000009, 0x2cd1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80000c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000010, 0x05c20003, 0x00000000, 0x33000000, 0x00000008, 0x0f800007, 0x00000010, 0x20530000, 0x00000010, 0x009f0000, 0x00000018, 0x8000fe7b, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x0000000f, 0x0f500007, 0x00000010, 0xb1c6002d, 0x0000000f, 0x47420008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000010, 0x001f0000, 0x00000008, 0x09000001, 0x00000007, 0x09121c00, 0x00000003, 0xcbca9200, 0x00000000, 0x0b97a200, 0x00000007, 0x42171c00, 0x00000000, 0x0b040000, 0x0000000f, 0x0a840003, 0x00000000, 0x0a959c00, 0x00000000, 0x4a009a00, 0x00000008, 0x82120001, 0x00000001, 0x0c170800, 0x00000000, 0x0c978c00, 0x00000000, 0x02180000, 0x00000008, 0x0d00ffff, 0x00000008, 0x0f800006, 0x0000000c, 0x29000000, 0x00000010, 0x06c20004, 0x0000000c, 0x29520002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x009f0000, 0x00000010, 0xb197320c, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x0000000c, 0x29800000, 0x00000000, 0x02180000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c53600, 0x00000010, 0x001f0000, 0x00000008, 0x0f800006, 0x00000018, 0x8000fff4, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x00000010, 0xb1c8000b, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000000, 0x23480000, 0x00000008, 0x22000017, 0x0000000c, 0x29800000, 0x00000010, 0x001f0000, 0x00000010, 0x20530000, 0x00000018, 0x8000fe3e, }; u32 bce_xi90_rv2p_proc1[] = { 0x00000010, 0xb1800002, 0x0000001f, 0x03030100, 0x00000008, 0xac000001, 0x00000000, 0x05000000, 0x0000000c, 0x2f800001, 0x00000000, 0x2b000000, 0x00000000, 0x2b800000, 0x00000010, 0x203f006c, 0x00000010, 0x213f0003, 0x00000010, 0x20bf003b, 0x00000018, 0x8000fffd, 0x00000010, 0xb1b8b015, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c380000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000008f, 0x00000008, 0x2d80011c, 0x00000008, 0x02000001, 0x00000010, 0x91de0000, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a17, 0x00000010, 0x08660016, 0x0000000c, 0x29800002, 0x0000000c, 0x1f800002, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000f, 0x00000008, 0x05005555, 0x00000018, 0x8000ffe8, 0x00000008, 0x02000001, 0x0000000f, 0x42e0001c, 0x00000010, 0x91840a19, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000010, 0x91d40000, 0x00000008, 0x2d800106, 0x00000018, 0x80000083, 0x00000010, 0x08660013, 0x00000018, 0x8000fff1, 0x00000008, 0xb1000001, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x00000008, 0x2d800001, 0x00000018, 0x8000007c, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800002, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffd3, 0x0000000b, 0x2fdf0002, 0x0000000c, 0x1f800000, 0x00000000, 0x2c070000, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000ffcd, 0x0000000c, 0x1f800002, 0x00000000, 0x05000000, 0x00000018, 0x8000ffca, 0x0000000c, 0x29800002, 0x0000000c, 0x1f800002, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000005, 0x00000008, 0x05005555, 0x00000018, 0x8000ffc4, 0x00000008, 0x02240045, 0x00000018, 0x00040000, 0x00000018, 0x8000001c, 0x00000018, 0x8000001e, 0x00000018, 0x80000065, 0x00000018, 0x800000ad, 0x00000018, 0x800000ac, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x800000f3, 0x00000018, 0x80000000, 0x00000018, 0x80000000, 0x00000018, 0x80000015, 0x00000018, 0x8000001b, 0x00000018, 0x80000000, 0x00000018, 0x800000c3, 0x00000018, 0x8000002e, 0x00000018, 0x800000f3, 0x00000018, 0x8000011e, 0x00000018, 0x800000e9, 0x00000018, 0x80000142, 0x00000018, 0x8000004e, 0x00000018, 0x80000000, 0x00000018, 0x80000080, 0x0000000c, 0x1f800001, 0x00000000, 0x05000000, 0x00000018, 0x8000ffa3, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ff9d, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000000, 0x29420000, 0x00000008, 0x2a000002, 0x00000000, 0x05000000, 0x00000018, 0x8000ff96, 0x00000018, 0x8000ff95, 0x00000010, 0xb1bcb00a, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c3c0000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x80000029, 0x00000018, 0x800000bb, 0x00000010, 0x2c6201ba, 0x00000018, 0x80000005, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800000, 0x0000000c, 0x1f800000, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000006, 0x00000008, 0x05005555, 0x00000018, 0x8000ff80, 0x00000010, 0x91d40000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a00000b, 0x00000000, 0x05000000, 0x00000018, 0x8000ff7a, 0x00000000, 0x02020000, 0x00000000, 0x029a0000, 0x00000000, 0x060c2c00, 0x00000004, 0xc60c3400, 0x00000010, 0x001f0000, 0x00000010, 0xb196180c, 0x00000008, 0x06960004, 0x00000009, 0x068dfffc, 0x00000004, 0xcd051a00, 0x00000004, 0xcc9a1800, 0x00000010, 0x20d70000, 0x0000000c, 0x2b560000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x20d70000, 0x00000008, 0x0f800001, 0x00000010, 0xb18001f4, 0x00000010, 0x001f0000, 0x0000000c, 0x6b560000, 0x00000018, 0x00040000, 0x00000000, 0x06820000, 0x00000010, 0xb18a0006, 0x00000000, 0x860c1400, 0x00000010, 0xb18c0004, 0x00000000, 0x05000000, 0x00000008, 0x2a000001, 0x00000010, 0x91d40000, 0x00000018, 0x000d0000, 0x00000000, 0x05020000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0xb1a0b013, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ffee, 0x00000008, 0x2d80011c, 0x00000010, 0x001f0000, 0x00000010, 0x91de0000, 0x0000000f, 0x47600008, 0x0000000f, 0x060e0001, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000018, 0x80000013, 0x0000000f, 0x47600008, 0x0000000b, 0x2fdf0002, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000010, 0x91d40000, 0x00000008, 0x2d80011c, 0x0000000f, 0x060e0001, 0x00000010, 0x001f0000, 0x00000000, 0x0f580000, 0x00000010, 0x91de0000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0d610000, 0x00000000, 0x02620000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x31040000, 0x00000000, 0x309a0000, 0x00000018, 0x8000ffbc, 0x0000000c, 0x29800001, 0x00000010, 0x00220002, 0x0000000c, 0x29520001, 0x0000000c, 0x29520000, 0x00000008, 0x0200000e, 0x00000008, 0x0280001a, 0x00000010, 0xb1c40a02, 0x00000008, 0x02000003, 0x00000008, 0x22000001, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000000, 0x2a000800, 0x00000008, 0x05005555, 0x00000018, 0x8000ff27, 0x0000000b, 0x2fdf0002, 0x00000010, 0x91d40000, 0x00000008, 0x2a000001, 0x00000000, 0x2c200000, 0x00000008, 0x2c800000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80011c, 0x00000010, 0x91d40000, 0x00000010, 0x91de0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000000, 0x30800000, 0x00000000, 0x31000000, 0x00000008, 0x2d800006, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a000010, 0x00000000, 0x05000000, 0x00000018, 0x8000ff12, 0x00000010, 0x91a0b009, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x00000018, 0x8000ffaf, 0x00000018, 0x80000010, 0x00000008, 0xac000001, 0x00000018, 0x8000000b, 0x00000000, 0x0380b000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c004000, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff9e, 0x00000018, 0x80000030, 0x00000018, 0x80000006, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c000e00, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000fefc, 0x00000000, 0x06820000, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x0ce70007, 0x00000009, 0x0562ffff, 0x00000010, 0xba6c1405, 0x00000000, 0x2adf0000, 0x00000000, 0x21000000, 0x00000008, 0x2a000005, 0x00000010, 0x91d40000, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x0000000c, 0x31620018, 0x00000008, 0x2d800001, 0x00000018, 0x8000ff90, 0x00000018, 0x000d0000, 0x00000010, 0xb1a0b00e, 0x0000000b, 0x2fdf0002, 0x00000000, 0x03d80000, 0x00000000, 0x2c200000, 0x00000010, 0x91d40000, 0x00000018, 0x80000014, 0x00000010, 0x2c620002, 0x00000018, 0x8000000b, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c070000, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x05000000, 0x00000018, 0x8000fede, 0x00000008, 0x2c80010d, 0x00000008, 0x2d000009, 0x00000010, 0x91d40000, 0x00000008, 0x2d800107, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000010, 0x91de0000, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000a, 0x00000000, 0x05000000, 0x00000018, 0x8000fed3, 0x00000000, 0x05020000, 0x00000008, 0x2c80010c, 0x00000008, 0x2d000008, 0x00000008, 0x2d800134, 0x00000000, 0x00000000, 0x00000010, 0x205f0000, 0x00000008, 0x2c800140, 0x00000008, 0x2d00003c, 0x00000008, 0x2d80011c, 0x00000000, 0x00000000, 0x00000010, 0x205f0000, 0x00000008, 0x2c800080, 0x00000008, 0x2d000000, 0x00000008, 0x2d800108, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000018, 0x000a0000, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff5a, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000009, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000feba, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff52, 0x00000010, 0x91a03c02, 0x00000010, 0xb1e66207, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c310000, 0x00000009, 0x2cb1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80010d, 0x00000010, 0xb1a80006, 0x00000010, 0x205f0000, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff4b, 0x00000010, 0xb1a60010, 0x00000010, 0x001f0000, 0x0000000f, 0x0f300007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07300003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x0000000f, 0x4ce30018, 0x00000000, 0x0c992c00, 0x00000004, 0xcc993400, 0x00000008, 0x0f800000, 0x0000000c, 0x29800001, 0x00000000, 0x33310000, 0x00000008, 0x22000016, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000c, 0x00000010, 0x009f0000, 0x00000000, 0x0f200000, 0x0000000c, 0x1f800001, 0x00000008, 0x05005555, 0x00000018, 0x8000fe8e, 0x00000010, 0x91d40000, 0x00000008, 0x0600aaaa, 0x00000018, 0x8000ff26, 0x0000000f, 0x47220008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000008, 0x02800001, 0x00000007, 0x02851c00, 0x00000008, 0x82850001, 0x00000000, 0x02854c00, 0x00000007, 0x42851c00, 0x00000003, 0xc3aa5200, 0x00000000, 0x03b10e00, 0x00000007, 0x4b071c00, 0x0000000f, 0x0f300007, 0x0000000f, 0x0a960003, 0x00000000, 0x0a955c00, 0x00000000, 0x4a005a00, 0x00000000, 0x0c960a00, 0x00000009, 0x0c99ffff, 0x00000008, 0x0d00ffff, 0x00000010, 0xb1963202, 0x00000008, 0x0f800005, 0x00000010, 0xb1a80008, 0x00000010, 0x205f0000, 0x0000000b, 0x2fdf0002, 0x00000000, 0x2c200000, 0x00000000, 0x2ca70000, 0x00000008, 0x2d000010, 0x00000008, 0x2d800108, 0x00000018, 0x8000ff12, 0x0000000c, 0x29800001, 0x00000010, 0x001f0000, 0x0000000c, 0x1f800001, 0x00000000, 0x2adf0000, 0x00000008, 0x2a00000d, 0x00000008, 0x0500aaaa, 0x00000018, 0x8000fe68, 0x00000010, 0x91d40000, 0x00000008, 0x06005555, 0x00000018, 0x8000ff00, 0x0000000c, 0x29800001, 0x0000000c, 0x1f800001, 0x00000008, 0x2a000007, 0x00000008, 0x05005555, 0x00000018, 0x8000fe60, 0x00000008, 0x03050004, 0x00000006, 0x83040c00, 0x00000008, 0x02850200, 0x00000000, 0x86050c00, 0x00000001, 0x860c0e00, 0x00000008, 0x02040004, 0x00000000, 0x02041800, 0x00000000, 0x83871800, 0x00000018, 0x00020000, }; u32 bce_xi90_rv2p_proc2[] = { 0x00000010, 0xb1800004, 0x0000001f, 0x03030100, 0x00000008, 0x050000ff, 0x00000018, 0x00020000, 0x00000000, 0x2a000000, 0x00000010, 0xb1d40000, 0x0000000c, 0x29800001, 0x00000008, 0x02540009, 0x00000009, 0x2952003f, 0x00000018, 0x00040000, 0x00000018, 0x80000010, 0x00000018, 0x80000011, 0x00000018, 0x8000004b, 0x00000018, 0x8000013c, 0x00000018, 0x8000013b, 0x00000018, 0x8000013a, 0x00000018, 0x8000013a, 0x00000018, 0x80000000, 0x00000018, 0x8000014d, 0x00000018, 0x80000136, 0x00000018, 0x8000000c, 0x00000018, 0x80000152, 0x00000018, 0x800001ac, 0x00000018, 0x80000080, 0x00000018, 0x80000107, 0x00000018, 0x80000115, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffea, 0x00000000, 0x2a000000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ffe6, 0x00000000, 0x2a000000, 0x00000018, 0x8000ffe4, 0x00000000, 0x03820000, 0x00000018, 0x8000ffdf, 0x00000001, 0x0c161400, 0x00000000, 0x8c181400, 0x00000010, 0x91980003, 0x00000008, 0x0c960002, 0x00000010, 0xb1800003, 0x00000008, 0x0c960001, 0x00000000, 0x0c000000, 0x00000000, 0x0d190000, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800001, 0x00000000, 0x00000000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0x011301f1, 0x00000018, 0x00070000, 0x00000000, 0x05020000, 0x00000010, 0x91963421, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d000006, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d610000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963416, 0x00000010, 0x205f0000, 0x00000000, 0x09d80000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c80010e, 0x00000008, 0x2d00000a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d620000, 0x00000000, 0x2c130000, 0x00000018, 0x000a0000, 0x00000000, 0x05020000, 0x00000010, 0x91963409, 0x00000010, 0x205f0000, 0x00000000, 0x2c1e0000, 0x00000008, 0x2c800006, 0x00000008, 0x2d00006a, 0x00000008, 0x2d800102, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000000, 0x0d7a0000, 0x00000018, 0x000a0000, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x0d610000, 0x00000000, 0x03620000, 0x00000000, 0x2c400000, 0x00000000, 0x02638c00, 0x00000000, 0x26460000, 0x00000008, 0x02040012, 0x00000010, 0xb906082e, 0x00000000, 0x0f580000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0cc60012, 0x00000018, 0x8000ffca, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800003, 0x00000000, 0x00000000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000008, 0xa31b0012, 0x00000010, 0xb1980006, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800004, 0x00000008, 0x22000003, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x25960000, 0x0000000c, 0x29800000, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x0260000f, 0x0000000f, 0x02040002, 0x00000010, 0xb60c0803, 0x0000000c, 0x1fbf0000, 0x0000000c, 0x33660010, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000005, 0x73662c00, 0x00000000, 0x31e32e00, 0x00000008, 0x2d800010, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000ff76, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000008, 0x2200000b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000ff6f, 0x00000010, 0x91de0000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x2f80aa00, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x00000008, 0x2c800040, 0x00000008, 0x2d000020, 0x00000008, 0x2d80011c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x0000000f, 0x42ea0010, 0x00000010, 0x004f0004, 0x00000010, 0xb7469200, 0x00000008, 0x02490012, 0x00000010, 0xb5840a00, 0x00000000, 0x0d610000, 0x00000010, 0xba66346d, 0x00000000, 0x03620000, 0x00000010, 0xb8630c6b, 0x00000008, 0x83050012, 0x00000010, 0x004f0002, 0x00000000, 0x03490000, 0x00000001, 0x83068c00, 0x00000000, 0x83c60c00, 0x00000010, 0xb1870010, 0x00000000, 0x0b6e0000, 0x00000018, 0x8000ff50, 0x00000001, 0x06691400, 0x00000010, 0x918c0002, 0x00000008, 0xb4e90001, 0x00000010, 0xb1e92c5f, 0x00000000, 0x86692c00, 0x00000000, 0x02000000, 0x00000009, 0x02eaffff, 0x00000010, 0x000c0002, 0x00000000, 0x02040a00, 0x0000000f, 0x460c0001, 0x0000000f, 0x02850001, 0x00000010, 0x918c01fc, 0x00000010, 0xb7040e56, 0x00000000, 0x2c400000, 0x00000000, 0x0f400000, 0x00000000, 0x0d610000, 0x00000000, 0x0a640000, 0x00000000, 0x0ae50000, 0x00000009, 0x0b66ffff, 0x00000000, 0x0c000000, 0x00000000, 0x0b800000, 0x00000008, 0x0c860012, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800003, 0x0000000c, 0x29520000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000008, 0x27110012, 0x00000000, 0x66900000, 0x00000000, 0x26460000, 0x00000000, 0x23060000, 0x00000010, 0xb1980009, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800004, 0x00000000, 0x00000000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x32140000, 0x00000000, 0x32950000, 0x00000000, 0x31e32e00, 0x00000005, 0x73662c00, 0x00000000, 0x25960000, 0x00000010, 0xb1870021, 0x0000000c, 0x29800000, 0x0000000f, 0x0f6b0007, 0x00000000, 0x0d690000, 0x00000000, 0x0a6c0000, 0x00000000, 0x0aed0000, 0x00000000, 0x0b6e0000, 0x00000000, 0x0b800000, 0x00000000, 0x0c870000, 0x00000018, 0x8000ff18, 0x00000001, 0x0c161400, 0x00000000, 0x8c181400, 0x00000008, 0x0c960001, 0x00000010, 0x91980002, 0x00000008, 0x0c990001, 0x00000000, 0x0d190000, 0x00000000, 0x0c000000, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800001, 0x00000010, 0x20530000, 0x0000000c, 0x69520001, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x22c58c00, 0x00000000, 0x23120000, 0x00000000, 0x27110000, 0x00000000, 0x26900000, 0x00000010, 0xb8170e03, 0x0000000c, 0x29800000, 0x00000018, 0x8000ffeb, 0x00000000, 0x82970e00, 0x00000000, 0xa3120a00, 0x00000008, 0x2200001a, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800010, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x0d6e0000, 0x00000003, 0xe7cf3400, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000010, 0xb1870007, 0x00000000, 0x36140000, 0x00000000, 0x36950000, 0x00000000, 0x37160000, 0x00000008, 0x2c800050, 0x00000008, 0x2d000030, 0x00000008, 0x2d80000c, 0x00000010, 0x20530000, 0x00000018, 0x8000fef1, 0x00000000, 0x26460000, 0x00000000, 0x23000000, 0x00000009, 0x25e6ffff, 0x00000000, 0x0b6e0000, 0x00000003, 0xe7cf2c00, 0x00000008, 0x2200001b, 0x0000000c, 0x69520000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000fee7, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000010, 0x003f000c, 0x00000000, 0x06660000, 0x00000000, 0x86611800, 0x00000009, 0x026000f0, 0x00000010, 0xb70c0808, 0x00000000, 0x2c400000, 0x0000000c, 0x73660010, 0x00000008, 0x2c800018, 0x00000008, 0x2d000018, 0x00000008, 0x2d800002, 0x0000000c, 0x5fbf0000, 0x00000010, 0x91de0000, 0x00000018, 0x8000fed8, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x00000000, 0x2c400000, 0x0000000c, 0x73660010, 0x00000008, 0x2c800018, 0x00000008, 0x2d000018, 0x00000008, 0x2d800002, 0x0000000c, 0x5fbf0000, 0x00000010, 0x91de0000, 0x00000008, 0x2c800003, 0x00000008, 0x2d000003, 0x00000009, 0x3060fff0, 0x00000008, 0x2d800001, 0x0000000c, 0x29800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80001a, 0x00000008, 0x2d00001a, 0x00000000, 0x33000000, 0x00000008, 0x2d800002, 0x00000000, 0x31800000, 0x00000010, 0x91de0000, 0x00000008, 0x2c80000c, 0x00000008, 0x2d00000c, 0x00000008, 0x2d800004, 0x00000010, 0x20530000, 0x00000010, 0x91de0000, 0x00000018, 0x8000febd, 0x00000018, 0x8000febc, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x0f008000, 0x00000008, 0x0f800007, 0x00000018, 0x80000015, 0x00000000, 0x05020000, 0x00000008, 0x22000009, 0x00000000, 0x286d0000, 0x00000000, 0x29000000, 0x0000000f, 0x65680010, 0x00000003, 0xf66c9400, 0x00000010, 0xb972a004, 0x0000000c, 0x73e70019, 0x0000000c, 0x21420004, 0x00000000, 0x3bf60000, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000008, 0x22000008, 0x0000000c, 0x61420004, 0x00000018, 0x000a0000, 0x00000000, 0x2a000000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x0000000f, 0x0f470007, 0x00000008, 0x0f800008, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x00000018, 0x8000fe9f, 0x00000010, 0x91de0000, 0x00000000, 0x2fd50000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x33510000, 0x00000000, 0x2a000000, 0x00000010, 0xb1c60029, 0x0000000f, 0x0f500007, 0x00000000, 0x0a600000, 0x00000000, 0x0ae10000, 0x0000000f, 0x4b620008, 0x00000009, 0x0b1600ff, 0x0000000f, 0x4c620010, 0x00000000, 0x0d620000, 0x00000009, 0x0d1a00ff, 0x00000010, 0x07500003, 0x0000000c, 0x0d1a0008, 0x0000000c, 0x0b160008, 0x00000000, 0x0cc60000, 0x00000000, 0x0b800000, 0x00000000, 0x06980000, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800003, 0x00000010, 0x06c20004, 0x0000000c, 0x29000002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000000, 0x231b0000, 0x00000000, 0x27111a00, 0x00000000, 0x66900000, 0x0000000c, 0x29520000, 0x00000010, 0xb197320c, 0x0000000c, 0x29800000, 0x00000000, 0x06980000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c58c00, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0x20560000, 0x0000000c, 0x2bd70001, 0x00000008, 0x0f800003, 0x00000018, 0x8000ffef, 0x00000010, 0xb1c80013, 0x00000010, 0xb1c60003, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000008, 0x22000016, 0x00000010, 0xb1c60003, 0x00000000, 0x23480000, 0x00000010, 0xb1800005, 0x00000000, 0x23480000, 0x0000000c, 0x29800000, 0x0000000f, 0x0f500007, 0x00000018, 0x80000012, 0x00000008, 0x22000016, 0x0000000c, 0x29800000, 0x00000000, 0x30140000, 0x00000000, 0x30950000, 0x00000010, 0x07500003, 0x00000009, 0x0b1600ff, 0x00000009, 0x0d1a00ff, 0x0000000f, 0x31160008, 0x00000000, 0x31623400, 0x00000003, 0xf1623000, 0x00000010, 0x205f0000, 0x00000000, 0x2c510000, 0x00000009, 0x2cd1007f, 0x00000008, 0x2cd90000, 0x00000008, 0x2d000000, 0x00000008, 0x2d80000c, 0x00000000, 0x00000000, 0x00000010, 0x91de0000, 0x00000010, 0x05c20003, 0x00000000, 0x33000000, 0x00000008, 0x0f800007, 0x00000010, 0x20530000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000018, 0x8000fe44, 0x00000000, 0x2fd50000, 0x00000000, 0x2a000000, 0x0000000f, 0x0f500007, 0x00000010, 0xb1c60030, 0x0000000f, 0x47420008, 0x00000009, 0x070e000f, 0x00000008, 0x070e0008, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000008, 0x09000001, 0x00000007, 0x09121c00, 0x00000003, 0xcbca9200, 0x00000000, 0x0b97a200, 0x00000007, 0x42171c00, 0x00000000, 0x0b040000, 0x0000000f, 0x0a840003, 0x00000000, 0x0a959c00, 0x00000000, 0x4a009a00, 0x00000008, 0x82120001, 0x00000001, 0x0c170800, 0x00000000, 0x0c978c00, 0x00000000, 0x02180000, 0x00000008, 0x0d00ffff, 0x00000008, 0x0f800006, 0x0000000c, 0x29000000, 0x00000010, 0x06c20004, 0x0000000c, 0x29520002, 0x00000010, 0x26420002, 0x0000000c, 0x29520003, 0x00000008, 0x22000001, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0xb197320d, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x0000000c, 0x29800000, 0x00000000, 0x02180000, 0x00000010, 0x20530000, 0x0000000c, 0x29520003, 0x00000000, 0x22c53600, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000008, 0x0f800006, 0x00000018, 0x8000fff2, 0x00000000, 0x231b0000, 0x00000000, 0x27110800, 0x00000000, 0x66900000, 0x00000010, 0xb1c8000b, 0x0000000c, 0x29800000, 0x00000010, 0x20530000, 0x0000000c, 0x29520000, 0x0000000c, 0x29520003, 0x00000010, 0x06c20002, 0x0000000c, 0x29520002, 0x00000000, 0x22c58c00, 0x00000000, 0x27650000, 0x00000000, 0x26e40000, 0x00000000, 0x23480000, 0x00000008, 0x22000017, 0x0000000c, 0x29800000, 0x00000010, 0x001f0000, 0x0000000c, 0x6bd70001, 0x00000010, 0x20530000, 0x00000018, 0x8000fe03, }; /* * The RV2P block must be configured for the system * page size, or more specifically, the number of * usable rx_bd's per page, and should be called * as follows prior to loading the RV2P firmware: * * BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(USABLE_RX_BD_PER_PAGE) * * The default value is 0xFF. */ #define BCE_RV2P_PROC2_MAX_BD_PAGE_LOC 5 #define BCE_RV2P_PROC2_CHG_MAX_BD_PAGE(value) { \ bce_rv2p_proc2[BCE_RV2P_PROC2_MAX_BD_PAGE_LOC] = \ (bce_rv2p_proc2[BCE_RV2P_PROC2_MAX_BD_PAGE_LOC] & ~0xFFFF) | (value); \ } Index: stable/7/sys/dev/bce/if_bcereg.h =================================================================== --- stable/7/sys/dev/bce/if_bcereg.h (revision 206680) +++ stable/7/sys/dev/bce/if_bcereg.h (revision 206681) @@ -1,6739 +1,6726 @@ /*- - * Copyright (c) 2006-2009 Broadcom Corporation + * Copyright (c) 2006-2010 Broadcom Corporation * David Christensen . All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Broadcom Corporation nor the name of its contributors * may be used to endorse or promote products derived from this software * without specific prior written consent. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD$ */ #ifndef _BCEREG_H_DEFINED #define _BCEREG_H_DEFINED #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "miidevs.h" #include #include #include #include "miibus_if.h" /****************************************************************************/ /* Conversion to FreeBSD type definitions. */ /****************************************************************************/ #define u64 uint64_t #define u32 uint32_t #define u16 uint16_t #define u8 uint8_t #if BYTE_ORDER == BIG_ENDIAN #define __BIG_ENDIAN 1 #undef __LITTLE_ENDIAN #else #undef __BIG_ENDIAN #define __LITTLE_ENDIAN 1 #endif #define BCE_DWORD_PRINTFB \ "\020" \ "\40b31" \ "\37b30" \ "\36b29" \ "\35b28" \ "\34b27" \ "\33b26" \ "\32b25" \ "\31b24" \ "\30b23" \ "\27b22" \ "\26b21" \ "\25b20" \ "\24b19" \ "\23b18" \ "\22b17" \ "\21b16" \ "\20b15" \ "\17b14" \ "\16b13" \ "\15b12" \ "\14b11" \ "\13b10" \ "\12b9" \ "\11b8" \ "\10b7" \ "\07b6" \ "\06b5" \ "\05b4" \ "\04b3" \ "\03b2" \ "\02b1" \ "\01b0" /* MII Control Register 0x0 */ #define BCE_BMCR_PRINTFB \ "\020" \ "\20Reset" \ "\17Loopback" \ "\16Spd0" \ "\15AnegEna" \ "\14PwrDn" \ "\13Isolate" \ "\12RstrtAneg" \ "\11FD" \ "\10CollTst" \ "\07Spd1" \ "\06Rsrvd" \ "\05Rsrvd" \ "\04Rsrvd" \ "\03Rsrvd" \ "\02Rsrvd" \ "\01Rsrvd" /* MII Status Register 0x1 */ #define BCE_BMSR_PRINTFB \ "\020" \ "\20Cap100T4" \ "\17Cap100XFD" \ "\16Cap100XHD" \ "\15Cap10FD" \ "\14Cap10HD" \ "\13Cap100T2FD" \ "\12Cap100T2HD" \ "\11ExtStsPrsnt" \ "\10Rsrvd" \ "\07PrmblSupp" \ "\06AnegCmpl" \ "\05RemFaultDet" \ "\04AnegCap" \ "\03LnkUp" \ "\02JabberDet" \ "\01ExtCapSupp" /* MII Autoneg Advertisement Register 0x4 */ #define BCE_ANAR_PRINTFB \ "\020" \ "\20AdvNxtPg" \ "\17Rsrvd" \ "\16AdvRemFault" \ "\15Rsrvd" \ "\14AdvAsymPause" \ "\13AdvPause" \ "\12Adv100T4" \ "\11Adv100FD" \ "\10Adv100HD" \ "\07Adv10FD" \ "\06Adv10HD" \ "\05Rsrvd" \ "\04Rsrvd" \ "\03Rsrvd" \ "\02Rsrvd" \ "\01Adv802.3" /* MII Autoneg Link Partner Ability Register 0x5 */ #define BCE_ANLPAR_PRINTFB \ "\020" \ "\20CapNxtPg" \ "\17Ack" \ "\16CapRemFault" \ "\15Rsrvd" \ "\14CapAsymPause" \ "\13CapPause" \ "\12Cap100T4" \ "\11Cap100FD" \ "\10Cap100HD" \ "\07Cap10FD" \ "\06Cap10HD" \ "\05Rsrvd" \ "\04Rsrvd" \ "\03Rsrvd" \ "\02Rsrvd" \ "\01Cap802.3" /* 1000Base-T Control Register 0x09 */ #define BCE_1000CTL_PRINTFB \ "\020" \ "\20Test3" \ "\17Test2" \ "\16Test1" \ "\15MasterSlave" \ "\14ForceMaster" \ "\13SwitchDev" \ "\12Adv1000TFD" \ "\11Adv1000THD" \ "\10Rsrvd" \ "\07Rsrvd" \ "\06Rsrvd" \ "\05Rsrvd" \ "\04Rsrvd" \ "\03Rsrvd" \ "\02Rsrvd" \ "\01Rsrvd" /* MII 1000Base-T Status Register 0x0a */ #define BCE_1000STS_PRINTFB \ "\020" \ "\20MstrSlvFault" \ "\17Master" \ "\16LclRcvrOk" \ "\15RemRcvrOk" \ "\14Cap1000FD" \ "\13Cpa1000HD" \ "\12Rsrvd" \ "\11Rsrvd" /* MII Extended Status Register 0x0f */ #define BCE_EXTSTS_PRINTFB \ "\020" \ "\20b15" \ "\17b14" \ "\16b13" \ "\15b12" \ "\14Rsrvd" \ "\13Rsrvd" \ "\12Rsrvd" \ "\11Rsrvd" \ "\10Rsrvd" \ "\07Rsrvd" \ "\06Rsrvd" \ "\05Rsrvd" \ "\04Rsrvd" \ "\03Rsrvd" \ "\02Rsrvd" \ "\01Rsrvd" /* MII Autoneg Link Partner Ability Register 0x19 */ #define BCE_AUXSTS_PRINTFB \ "\020" \ "\20AnegCmpl" \ "\17AnegCmplAck" \ "\16AnegAckDet" \ "\15AnegAblDet" \ "\14AnegNextPgWait" \ "\13HCD" \ "\12HCD" \ "\11HCD" \ "\10PrlDetFault" \ "\07RemFault" \ "\06PgRcvd" \ "\05LnkPrtnrAnegAbl" \ "\04LnkPrtnrNPAbl" \ "\03LnkUp" \ "\02EnaPauseRcv" \ "\01EnaPausXmit" /* Remove before release. */ /* #define BCE_DEBUG 1 */ /* #define BCE_NVRAM_WRITE_SUPPORT */ /****************************************************************************/ /* Debugging macros and definitions. */ /****************************************************************************/ #define BCE_CP_LOAD 0x00000001 #define BCE_CP_SEND 0x00000002 #define BCE_CP_RECV 0x00000004 #define BCE_CP_INTR 0x00000008 #define BCE_CP_UNLOAD 0x00000010 #define BCE_CP_RESET 0x00000020 #define BCE_CP_PHY 0x00000040 #define BCE_CP_NVRAM 0x00000080 #define BCE_CP_FIRMWARE 0x00000100 #define BCE_CP_CTX 0x00000200 #define BCE_CP_REG 0x00000400 #define BCE_CP_MISC 0x00400000 #define BCE_CP_SPECIAL 0x00800000 #define BCE_CP_ALL 0x00FFFFFF #define BCE_CP_MASK 0x00FFFFFF #define BCE_LEVEL_FATAL 0x00000000 #define BCE_LEVEL_WARN 0x01000000 #define BCE_LEVEL_INFO 0x02000000 #define BCE_LEVEL_VERBOSE 0x03000000 #define BCE_LEVEL_EXTREME 0x04000000 #define BCE_LEVEL_INSANE 0x05000000 #define BCE_LEVEL_MASK 0xFF000000 #define BCE_WARN_LOAD (BCE_CP_LOAD | BCE_LEVEL_WARN) #define BCE_INFO_LOAD (BCE_CP_LOAD | BCE_LEVEL_INFO) #define BCE_VERBOSE_LOAD (BCE_CP_LOAD | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_LOAD (BCE_CP_LOAD | BCE_LEVEL_EXTREME) #define BCE_INSANE_LOAD (BCE_CP_LOAD | BCE_LEVEL_INSANE) #define BCE_WARN_SEND (BCE_CP_SEND | BCE_LEVEL_WARN) #define BCE_INFO_SEND (BCE_CP_SEND | BCE_LEVEL_INFO) #define BCE_VERBOSE_SEND (BCE_CP_SEND | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_SEND (BCE_CP_SEND | BCE_LEVEL_EXTREME) #define BCE_INSANE_SEND (BCE_CP_SEND | BCE_LEVEL_INSANE) #define BCE_WARN_RECV (BCE_CP_RECV | BCE_LEVEL_WARN) #define BCE_INFO_RECV (BCE_CP_RECV | BCE_LEVEL_INFO) #define BCE_VERBOSE_RECV (BCE_CP_RECV | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_RECV (BCE_CP_RECV | BCE_LEVEL_EXTREME) #define BCE_INSANE_RECV (BCE_CP_RECV | BCE_LEVEL_INSANE) #define BCE_WARN_INTR (BCE_CP_INTR | BCE_LEVEL_WARN) #define BCE_INFO_INTR (BCE_CP_INTR | BCE_LEVEL_INFO) #define BCE_VERBOSE_INTR (BCE_CP_INTR | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_INTR (BCE_CP_INTR | BCE_LEVEL_EXTREME) #define BCE_INSANE_INTR (BCE_CP_INTR | BCE_LEVEL_INSANE) #define BCE_WARN_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_WARN) #define BCE_INFO_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_INFO) #define BCE_VERBOSE_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_EXTREME) #define BCE_INSANE_UNLOAD (BCE_CP_UNLOAD | BCE_LEVEL_INSANE) #define BCE_WARN_RESET (BCE_CP_RESET | BCE_LEVEL_WARN) #define BCE_INFO_RESET (BCE_CP_RESET | BCE_LEVEL_INFO) #define BCE_VERBOSE_RESET (BCE_CP_RESET | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_RESET (BCE_CP_RESET | BCE_LEVEL_EXTREME) #define BCE_INSANE_RESET (BCE_CP_RESET | BCE_LEVEL_INSANE) #define BCE_WARN_PHY (BCE_CP_PHY | BCE_LEVEL_WARN) #define BCE_INFO_PHY (BCE_CP_PHY | BCE_LEVEL_INFO) #define BCE_VERBOSE_PHY (BCE_CP_PHY | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_PHY (BCE_CP_PHY | BCE_LEVEL_EXTREME) #define BCE_INSANE_PHY (BCE_CP_PHY | BCE_LEVEL_INSANE) #define BCE_WARN_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_WARN) #define BCE_INFO_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_INFO) #define BCE_VERBOSE_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_EXTREME) #define BCE_INSANE_NVRAM (BCE_CP_NVRAM | BCE_LEVEL_INSANE) #define BCE_WARN_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_WARN) #define BCE_INFO_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_INFO) #define BCE_VERBOSE_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_EXTREME) #define BCE_INSANE_FIRMWARE (BCE_CP_FIRMWARE | BCE_LEVEL_INSANE) #define BCE_WARN_CTX (BCE_CP_CTX | BCE_LEVEL_WARN) #define BCE_INFO_CTX (BCE_CP_CTX | BCE_LEVEL_INFO) #define BCE_VERBOSE_CTX (BCE_CP_CTX | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_CTX (BCE_CP_CTX | BCE_LEVEL_EXTREME) #define BCE_INSANE_CTX (BCE_CP_CTX | BCE_LEVEL_INSANE) #define BCE_WARN_REG (BCE_CP_REG | BCE_LEVEL_WARN) #define BCE_INFO_REG (BCE_CP_REG | BCE_LEVEL_INFO) #define BCE_VERBOSE_REG (BCE_CP_REG | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_REG (BCE_CP_REG | BCE_LEVEL_EXTREME) #define BCE_INSANE_REG (BCE_CP_REG | BCE_LEVEL_INSANE) #define BCE_WARN_MISC (BCE_CP_MISC | BCE_LEVEL_WARN) #define BCE_INFO_MISC (BCE_CP_MISC | BCE_LEVEL_INFO) #define BCE_VERBOSE_MISC (BCE_CP_MISC | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_MISC (BCE_CP_MISC | BCE_LEVEL_EXTREME) #define BCE_INSANE_MISC (BCE_CP_MISC | BCE_LEVEL_INSANE) #define BCE_WARN_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_WARN) #define BCE_INFO_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_INFO) #define BCE_VERBOSE_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_VERBOSE) #define BCE_EXTREME_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_EXTREME) #define BCE_INSANE_SPECIAL (BCE_CP_SPECIAL | BCE_LEVEL_INSANE) #define BCE_FATAL (BCE_CP_ALL | BCE_LEVEL_FATAL) #define BCE_WARN (BCE_CP_ALL | BCE_LEVEL_WARN) #define BCE_INFO (BCE_CP_ALL | BCE_LEVEL_INFO) #define BCE_VERBOSE (BCE_CP_ALL | BCE_LEVEL_VERBOSE) #define BCE_EXTREME (BCE_CP_ALL | BCE_LEVEL_EXTREME) #define BCE_INSANE (BCE_CP_ALL | BCE_LEVEL_INSANE) #define BCE_CODE_PATH(cp) ((cp & BCE_CP_MASK) & bce_debug) #define BCE_MSG_LEVEL(lv) ((lv & BCE_LEVEL_MASK) <= (bce_debug & BCE_LEVEL_MASK)) #define BCE_LOG_MSG(m) (BCE_CODE_PATH(m) && BCE_MSG_LEVEL(m)) #ifdef BCE_DEBUG /* * Calculate the time delta between two reads * of the 25MHz free running clock. */ #define BCE_TIME_DELTA(start, end) (start > end ? (start - end) : \ (~start + end + 1)) /* Print a message based on the logging level and code path. */ #define DBPRINT(sc, level, format, args...) \ if (BCE_LOG_MSG(level)) { \ device_printf(sc->bce_dev, format, ## args); \ } /* Runs a particular command when debugging is enabled. */ #define DBRUN(args...) \ do { \ args; \ } while (0) /* Runs a particular command based on the logging level and code path. */ #define DBRUNMSG(msg, args...) \ if (BCE_LOG_MSG(msg)) { \ args; \ } /* Runs a particular command based on the logging level. */ #define DBRUNLV(level, args...) \ if (BCE_MSG_LEVEL(level)) { \ args; \ } /* Runs a particular command based on the code path. */ #define DBRUNCP(cp, args...) \ if (BCE_CODE_PATH(cp)) { \ args; \ } /* Runs a particular command based on a condition. */ #define DBRUNIF(cond, args...) \ if (cond) { \ args; \ } /* Announces function entry. */ -#if 0 -#define DBENTER(cond) \ - u32 start_time = REG_RD(sc, BCE_TIMER_25MHZ_FREE_RUN); \ - u32 end_time; \ - DBPRINT(sc, (cond), "%s(enter)\n", __FUNCTION__); -#endif - #define DBENTER(cond) \ DBPRINT(sc, (cond), "%s(enter)\n", __FUNCTION__) /* Announces function exit. */ -#if 0 -#define DBEXIT(cond, val) \ - end_time = REG_RD(sc, BCE_TIMER_25MHZ_FREE_RUN); \ - val += (u64) BCE_TIME_DELTA(start_time, end_time); \ - DBPRINT(sc, (cond), "%s(exit)\n", __FUNCTION__); -#endif - #define DBEXIT(cond) \ DBPRINT(sc, (cond), "%s(exit)\n", __FUNCTION__) /* Temporarily override the debug level. */ #define DBPUSH(cond) \ u32 bce_debug_temp = bce_debug; \ bce_debug |= cond; /* Restore the previously overriden debug level. */ #define DBPOP() \ bce_debug = bce_debug_temp; /* Needed for random() function which is only used in debugging. */ #include /* Returns FALSE in "defects" per 2^31 - 1 calls, otherwise returns TRUE. */ #define DB_RANDOMFALSE(defects) (random() > defects) #define DB_OR_RANDOMFALSE(defects) || (random() > defects) #define DB_AND_RANDOMFALSE(defects) && (random() > ddfects) /* Returns TRUE in "defects" per 2^31 - 1 calls, otherwise returns FALSE. */ #define DB_RANDOMTRUE(defects) (random() < defects) #define DB_OR_RANDOMTRUE(defects) || (random() < defects) #define DB_AND_RANDOMTRUE(defects) && (random() < defects) #define DB_PRINT_PHY_REG(reg, val) \ switch(reg) { \ case 0x00: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (BMCR ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_BMCR_PRINTFB); break; \ case 0x01: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (BMSR ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_BMSR_PRINTFB); break; \ case 0x04: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (ANAR ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_ANAR_PRINTFB); break; \ case 0x05: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (ANLPAR ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_ANLPAR_PRINTFB); break; \ case 0x09: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (1000CTL), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_1000CTL_PRINTFB); break; \ case 0x0a: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (1000STS), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_1000STS_PRINTFB); break; \ case 0x0f: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (EXTSTS ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_EXTSTS_PRINTFB); break; \ case 0x19: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X (AUXSTS ), val = 0x%b\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff, \ BCE_AUXSTS_PRINTFB); break; \ default: DBPRINT(sc, BCE_INSANE_PHY, \ "%s(): phy = %d, reg = 0x%04X, val = 0x%04X\n", \ __FUNCTION__, phy, (u16) reg & 0xffff, (u16) val & 0xffff); \ } #else #define DBPRINT(level, format, args...) #define DBRUN(args...) #define DBRUNMSG(msg, args...) #define DBRUNLV(level, args...) #define DBRUNCP(cp, args...) #define DBRUNIF(cond, args...) #define DBENTER(cond) #define DBEXIT(cond) #define DBPUSH(cond) #define DBPOP() #define DB_RANDOMFALSE(defects) #define DB_OR_RANDOMFALSE(percent) #define DB_AND_RANDOMFALSE(percent) #define DB_RANDOMTRUE(defects) #define DB_OR_RANDOMTRUE(percent) #define DB_AND_RANDOMTRUE(percent) #define DB_PRINT_PHY_REG(reg, val) #endif /* BCE_DEBUG */ #if defined(__i386__) || defined(__amd64__) #define mb() __asm volatile("mfence" ::: "memory") #define wmb() __asm volatile("sfence" ::: "memory") #define rmb() __asm volatile("lfence" ::: "memory") #else #define mb() #define rmb() #define wmb() #endif /****************************************************************************/ /* Device identification definitions. */ /****************************************************************************/ #define BRCM_VENDORID 0x14E4 #define BRCM_DEVICEID_BCM5706 0x164A #define BRCM_DEVICEID_BCM5706S 0x16AA #define BRCM_DEVICEID_BCM5708 0x164C #define BRCM_DEVICEID_BCM5708S 0x16AC #define BRCM_DEVICEID_BCM5709 0x1639 #define BRCM_DEVICEID_BCM5709S 0x163A #define BRCM_DEVICEID_BCM5716 0x163B #define HP_VENDORID 0x103C #define PCI_ANY_ID (u_int16_t) (~0U) /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ #define BCE_CHIP_NUM(sc) (((sc)->bce_chipid) & 0xffff0000) #define BCE_CHIP_NUM_5706 0x57060000 #define BCE_CHIP_NUM_5708 0x57080000 #define BCE_CHIP_NUM_5709 0x57090000 #define BCE_CHIP_NUM_5716 0x57160000 #define BCE_CHIP_REV(sc) (((sc)->bce_chipid) & 0x0000f000) #define BCE_CHIP_REV_Ax 0x00000000 #define BCE_CHIP_REV_Bx 0x00001000 #define BCE_CHIP_REV_Cx 0x00002000 #define BCE_CHIP_METAL(sc) (((sc)->bce_chipid) & 0x00000ff0) #define BCE_CHIP_BOND(bp) (((sc)->bce_chipid) & 0x0000000f) #define BCE_CHIP_ID(sc) (((sc)->bce_chipid) & 0xfffffff0) #define BCE_CHIP_ID_5706_A0 0x57060000 #define BCE_CHIP_ID_5706_A1 0x57060010 #define BCE_CHIP_ID_5706_A2 0x57060020 #define BCE_CHIP_ID_5706_A3 0x57060030 #define BCE_CHIP_ID_5708_A0 0x57080000 #define BCE_CHIP_ID_5708_B0 0x57081000 #define BCE_CHIP_ID_5708_B1 0x57081010 #define BCE_CHIP_ID_5708_B2 0x57081020 #define BCE_CHIP_ID_5709_A0 0x57090000 #define BCE_CHIP_ID_5709_A1 0x57090010 #define BCE_CHIP_ID_5709_B0 0x57091000 #define BCE_CHIP_ID_5709_B1 0x57091010 #define BCE_CHIP_ID_5709_B2 0x57091020 #define BCE_CHIP_ID_5709_C0 0x57092000 #define BCE_CHIP_ID_5716_C0 0x57162000 #define BCE_CHIP_BOND_ID(sc) (((sc)->bce_chipid) & 0xf) /* A serdes chip will have the first bit of the bond id set. */ #define BCE_CHIP_BOND_ID_SERDES_BIT 0x01 /* shorthand one */ #define BCE_ASICREV(x) ((x) >> 28) #define BCE_ASICREV_BCM5700 0x06 /* chip revisions */ #define BCE_CHIPREV(x) ((x) >> 24) #define BCE_CHIPREV_5700_AX 0x70 #define BCE_CHIPREV_5700_BX 0x71 #define BCE_CHIPREV_5700_CX 0x72 #define BCE_CHIPREV_5701_AX 0x00 struct bce_type { u_int16_t bce_vid; u_int16_t bce_did; u_int16_t bce_svid; u_int16_t bce_sdid; char *bce_name; }; /****************************************************************************/ /* Byte order conversions. */ /****************************************************************************/ #if __FreeBSD_version >= 500000 #define bce_htobe16(x) htobe16(x) #define bce_htobe32(x) htobe32(x) #define bce_htobe64(x) htobe64(x) #define bce_htole16(x) htole16(x) #define bce_htole32(x) htole32(x) #define bce_htole64(x) htole64(x) #define bce_be16toh(x) be16toh(x) #define bce_be32toh(x) be32toh(x) #define bce_be64toh(x) be64toh(x) #define bce_le16toh(x) le16toh(x) #define bce_le32toh(x) le32toh(x) #define bce_le64toh(x) le64toh(x) #else #define bce_htobe16(x) (x) #define bce_htobe32(x) (x) #define bce_htobe64(x) (x) #define bce_htole16(x) (x) #define bce_htole32(x) (x) #define bce_htole64(x) (x) #define bce_be16toh(x) (x) #define bce_be32toh(x) (x) #define bce_be64toh(x) (x) #define bce_le16toh(x) (x) #define bce_le32toh(x) (x) #define bce_le64toh(x) (x) #endif /****************************************************************************/ /* NVRAM Access */ /****************************************************************************/ /* Buffered flash (Atmel: AT45DB011B) specific information */ #define SEEPROM_PAGE_BITS 2 #define SEEPROM_PHY_PAGE_SIZE (1 << SEEPROM_PAGE_BITS) #define SEEPROM_BYTE_ADDR_MASK (SEEPROM_PHY_PAGE_SIZE-1) #define SEEPROM_PAGE_SIZE 4 #define SEEPROM_TOTAL_SIZE 65536 #define BUFFERED_FLASH_PAGE_BITS 9 #define BUFFERED_FLASH_PHY_PAGE_SIZE (1 << BUFFERED_FLASH_PAGE_BITS) #define BUFFERED_FLASH_BYTE_ADDR_MASK (BUFFERED_FLASH_PHY_PAGE_SIZE-1) #define BUFFERED_FLASH_PAGE_SIZE 264 #define BUFFERED_FLASH_TOTAL_SIZE 0x21000 #define SAIFUN_FLASH_PAGE_BITS 8 #define SAIFUN_FLASH_PHY_PAGE_SIZE (1 << SAIFUN_FLASH_PAGE_BITS) #define SAIFUN_FLASH_BYTE_ADDR_MASK (SAIFUN_FLASH_PHY_PAGE_SIZE-1) #define SAIFUN_FLASH_PAGE_SIZE 256 #define SAIFUN_FLASH_BASE_TOTAL_SIZE 65536 #define ST_MICRO_FLASH_PAGE_BITS 8 #define ST_MICRO_FLASH_PHY_PAGE_SIZE (1 << ST_MICRO_FLASH_PAGE_BITS) #define ST_MICRO_FLASH_BYTE_ADDR_MASK (ST_MICRO_FLASH_PHY_PAGE_SIZE-1) #define ST_MICRO_FLASH_PAGE_SIZE 256 #define ST_MICRO_FLASH_BASE_TOTAL_SIZE 65536 #define BCM5709_FLASH_PAGE_BITS 8 #define BCM5709_FLASH_PHY_PAGE_SIZE (1 << BCM5709_FLASH_PAGE_BITS) #define BCM5709_FLASH_BYTE_ADDR_MASK (BCM5709_FLASH_PHY_PAGE_SIZE-1) #define BCM5709_FLASH_PAGE_SIZE 256 #define NVRAM_TIMEOUT_COUNT 30000 #define BCE_FLASHDESC_MAX 64 #define FLASH_STRAP_MASK (BCE_NVM_CFG1_FLASH_MODE | \ BCE_NVM_CFG1_BUFFER_MODE | \ BCE_NVM_CFG1_PROTECT_MODE | \ BCE_NVM_CFG1_FLASH_SIZE) #define FLASH_BACKUP_STRAP_MASK (0xf << 26) struct flash_spec { u32 strapping; u32 config1; u32 config2; u32 config3; u32 write1; #define BCE_NV_BUFFERED 0x00000001 #define BCE_NV_TRANSLATE 0x00000002 #define BCE_NV_WREN 0x00000004 u32 flags; u32 page_bits; u32 page_size; u32 addr_mask; u32 total_size; u8 *name; }; /****************************************************************************/ /* Shared Memory layout */ /* The BCE bootcode will initialize this data area with port configurtion */ /* information which can be accessed by the driver. */ /****************************************************************************/ /* * This value (in milliseconds) determines the frequency of the driver * issuing the PULSE message code. The firmware monitors this periodic * pulse to determine when to switch to an OS-absent mode. */ #define DRV_PULSE_PERIOD_MS 250 /* * This value (in milliseconds) determines how long the driver should * wait for an acknowledgement from the firmware before timing out. Once * the firmware has timed out, the driver will assume there is no firmware * running and there won't be any firmware-driver synchronization during a * driver reset. */ #define FW_ACK_TIME_OUT_MS 1000 #define BCE_DRV_RESET_SIGNATURE 0x00000000 #define BCE_DRV_RESET_SIGNATURE_MAGIC 0x4841564b /* HAVK */ #define BCE_DRV_MB 0x00000004 #define BCE_DRV_MSG_CODE 0xff000000 #define BCE_DRV_MSG_CODE_RESET 0x01000000 #define BCE_DRV_MSG_CODE_UNLOAD 0x02000000 #define BCE_DRV_MSG_CODE_SHUTDOWN 0x03000000 #define BCE_DRV_MSG_CODE_SUSPEND_WOL 0x04000000 #define BCE_DRV_MSG_CODE_FW_TIMEOUT 0x05000000 #define BCE_DRV_MSG_CODE_PULSE 0x06000000 #define BCE_DRV_MSG_CODE_DIAG 0x07000000 #define BCE_DRV_MSG_CODE_SUSPEND_NO_WOL 0x09000000 #define BCE_DRV_MSG_CODE_UNLOAD_LNK_DN 0x0b000000 #define BCE_DRV_MSG_CODE_CMD_SET_LINK 0x10000000 #define BCE_DRV_MSG_DATA 0x00ff0000 #define BCE_DRV_MSG_DATA_WAIT0 0x00010000 #define BCE_DRV_MSG_DATA_WAIT1 0x00020000 #define BCE_DRV_MSG_DATA_WAIT2 0x00030000 #define BCE_DRV_MSG_DATA_WAIT3 0x00040000 #define BCE_DRV_MSG_SEQ 0x0000ffff #define BCE_FW_MB 0x00000008 #define BCE_FW_MSG_ACK 0x0000ffff #define BCE_FW_MSG_STATUS_MASK 0x00ff0000 #define BCE_FW_MSG_STATUS_OK 0x00000000 #define BCE_FW_MSG_STATUS_FAILURE 0x00ff0000 #define BCE_LINK_STATUS 0x0000000c #define BCE_LINK_STATUS_INIT_VALUE 0xffffffff #define BCE_LINK_STATUS_LINK_UP 0x1 #define BCE_LINK_STATUS_LINK_DOWN 0x0 #define BCE_LINK_STATUS_SPEED_MASK 0x1e #define BCE_LINK_STATUS_AN_INCOMPLETE (0<<1) #define BCE_LINK_STATUS_10HALF (1<<1) #define BCE_LINK_STATUS_10FULL (2<<1) #define BCE_LINK_STATUS_100HALF (3<<1) #define BCE_LINK_STATUS_100BASE_T4 (4<<1) #define BCE_LINK_STATUS_100FULL (5<<1) #define BCE_LINK_STATUS_1000HALF (6<<1) #define BCE_LINK_STATUS_1000FULL (7<<1) #define BCE_LINK_STATUS_2500HALF (8<<1) #define BCE_LINK_STATUS_2500FULL (9<<1) #define BCE_LINK_STATUS_AN_ENABLED (1<<5) #define BCE_LINK_STATUS_AN_COMPLETE (1<<6) #define BCE_LINK_STATUS_PARALLEL_DET (1<<7) #define BCE_LINK_STATUS_RESERVED (1<<8) #define BCE_LINK_STATUS_PARTNER_AD_1000FULL (1<<9) #define BCE_LINK_STATUS_PARTNER_AD_1000HALF (1<<10) #define BCE_LINK_STATUS_PARTNER_AD_100BT4 (1<<11) #define BCE_LINK_STATUS_PARTNER_AD_100FULL (1<<12) #define BCE_LINK_STATUS_PARTNER_AD_100HALF (1<<13) #define BCE_LINK_STATUS_PARTNER_AD_10FULL (1<<14) #define BCE_LINK_STATUS_PARTNER_AD_10HALF (1<<15) #define BCE_LINK_STATUS_TX_FC_ENABLED (1<<16) #define BCE_LINK_STATUS_RX_FC_ENABLED (1<<17) #define BCE_LINK_STATUS_PARTNER_SYM_PAUSE_CAP (1<<18) #define BCE_LINK_STATUS_PARTNER_ASYM_PAUSE_CAP (1<<19) #define BCE_LINK_STATUS_SERDES_LINK (1<<20) #define BCE_LINK_STATUS_PARTNER_AD_2500FULL (1<<21) #define BCE_LINK_STATUS_PARTNER_AD_2500HALF (1<<22) #define BCE_DRV_PULSE_MB 0x00000010 #define BCE_DRV_PULSE_SEQ_MASK 0x00007fff #define BCE_MB_ARGS_0 0x00000014 #define BCE_MB_ARGS_1 0x00000018 /* Indicate to the firmware not to go into the * OS absent when it is not getting driver pulse. * This is used for debugging. */ #define BCE_DRV_MSG_DATA_PULSE_CODE_ALWAYS_ALIVE 0x00080000 #define BCE_DEV_INFO_SIGNATURE 0x00000020 #define BCE_DEV_INFO_SIGNATURE_MAGIC 0x44564900 #define BCE_DEV_INFO_SIGNATURE_MAGIC_MASK 0xffffff00 #define BCE_DEV_INFO_FEATURE_CFG_VALID 0x01 #define BCE_DEV_INFO_SECONDARY_PORT 0x80 #define BCE_DEV_INFO_DRV_ALWAYS_ALIVE 0x40 #define BCE_SHARED_HW_CFG_PART_NUM 0x00000024 #define BCE_SHARED_HW_CFG_POWER_DISSIPATED 0x00000034 #define BCE_SHARED_HW_CFG_POWER_STATE_D3_MASK 0xff000000 #define BCE_SHARED_HW_CFG_POWER_STATE_D2_MASK 0xff0000 #define BCE_SHARED_HW_CFG_POWER_STATE_D1_MASK 0xff00 #define BCE_SHARED_HW_CFG_POWER_STATE_D0_MASK 0xff #define BCE_SHARED_HW_CFG_POWER_CONSUMED 0x00000038 #define BCE_SHARED_HW_CFG_CONFIG 0x0000003c #define BCE_SHARED_HW_CFG_DESIGN_NIC 0 #define BCE_SHARED_HW_CFG_DESIGN_LOM 0x1 #define BCE_SHARED_HW_CFG_PHY_COPPER 0 #define BCE_SHARED_HW_CFG_PHY_FIBER 0x2 #define BCE_SHARED_HW_CFG_PHY_2_5G 0x20 #define BCE_SHARED_HW_CFG_PHY_BACKPLANE 0x40 #define BCE_SHARED_HW_CFG_LED_MODE_SHIFT_BITS 8 #define BCE_SHARED_HW_CFG_LED_MODE_MASK 0x300 #define BCE_SHARED_HW_CFG_LED_MODE_MAC 0 #define BCE_SHARED_HW_CFG_LED_MODE_GPHY1 0x100 #define BCE_SHARED_HW_CFG_LED_MODE_GPHY2 0x200 #define BCE_SHARED_HW_CFG_CONFIG2 0x00000040 #define BCE_SHARED_HW_CFG2_NVM_SIZE_MASK 0x00fff000 #define BCE_DEV_INFO_BC_REV 0x0000004c #define BCE_PORT_HW_CFG_MAC_UPPER 0x00000050 #define BCE_PORT_HW_CFG_UPPERMAC_MASK 0xffff #define BCE_PORT_HW_CFG_MAC_LOWER 0x00000054 #define BCE_PORT_HW_CFG_CONFIG 0x00000058 #define BCE_PORT_HW_CFG_CFG_TXCTL3_MASK 0x0000ffff #define BCE_PORT_HW_CFG_CFG_DFLT_LINK_MASK 0x001f0000 #define BCE_PORT_HW_CFG_CFG_DFLT_LINK_AN 0x00000000 #define BCE_PORT_HW_CFG_CFG_DFLT_LINK_1G 0x00030000 #define BCE_PORT_HW_CFG_CFG_DFLT_LINK_2_5G 0x00040000 #define BCE_PORT_HW_CFG_IMD_MAC_A_UPPER 0x00000068 #define BCE_PORT_HW_CFG_IMD_MAC_A_LOWER 0x0000006c #define BCE_PORT_HW_CFG_IMD_MAC_B_UPPER 0x00000070 #define BCE_PORT_HW_CFG_IMD_MAC_B_LOWER 0x00000074 #define BCE_PORT_HW_CFG_ISCSI_MAC_UPPER 0x00000078 #define BCE_PORT_HW_CFG_ISCSI_MAC_LOWER 0x0000007c #define BCE_DEV_INFO_PER_PORT_HW_CONFIG2 0x000000b4 #define BCE_DEV_INFO_FORMAT_REV 0x000000c4 #define BCE_DEV_INFO_FORMAT_REV_MASK 0xff000000 #define BCE_DEV_INFO_FORMAT_REV_ID ('A' << 24) #define BCE_SHARED_FEATURE 0x000000c8 #define BCE_SHARED_FEATURE_MASK 0xffffffff #define BCE_PORT_FEATURE 0x000000d8 #define BCE_PORT2_FEATURE 0x00000014c #define BCE_PORT_FEATURE_WOL_ENABLED 0x01000000 #define BCE_PORT_FEATURE_MBA_ENABLED 0x02000000 #define BCE_PORT_FEATURE_ASF_ENABLED 0x04000000 #define BCE_PORT_FEATURE_IMD_ENABLED 0x08000000 #define BCE_PORT_FEATURE_BAR1_SIZE_MASK 0xf #define BCE_PORT_FEATURE_BAR1_SIZE_DISABLED 0x0 #define BCE_PORT_FEATURE_BAR1_SIZE_64K 0x1 #define BCE_PORT_FEATURE_BAR1_SIZE_128K 0x2 #define BCE_PORT_FEATURE_BAR1_SIZE_256K 0x3 #define BCE_PORT_FEATURE_BAR1_SIZE_512K 0x4 #define BCE_PORT_FEATURE_BAR1_SIZE_1M 0x5 #define BCE_PORT_FEATURE_BAR1_SIZE_2M 0x6 #define BCE_PORT_FEATURE_BAR1_SIZE_4M 0x7 #define BCE_PORT_FEATURE_BAR1_SIZE_8M 0x8 #define BCE_PORT_FEATURE_BAR1_SIZE_16M 0x9 #define BCE_PORT_FEATURE_BAR1_SIZE_32M 0xa #define BCE_PORT_FEATURE_BAR1_SIZE_64M 0xb #define BCE_PORT_FEATURE_BAR1_SIZE_128M 0xc #define BCE_PORT_FEATURE_BAR1_SIZE_256M 0xd #define BCE_PORT_FEATURE_BAR1_SIZE_512M 0xe #define BCE_PORT_FEATURE_BAR1_SIZE_1G 0xf #define BCE_PORT_FEATURE_WOL 0xdc #define BCE_PORT2_FEATURE_WOL 0x150 #define BCE_PORT_FEATURE_WOL_DEFAULT_SHIFT_BITS 4 #define BCE_PORT_FEATURE_WOL_DEFAULT_MASK 0x30 #define BCE_PORT_FEATURE_WOL_DEFAULT_DISABLE 0 #define BCE_PORT_FEATURE_WOL_DEFAULT_MAGIC 0x10 #define BCE_PORT_FEATURE_WOL_DEFAULT_ACPI 0x20 #define BCE_PORT_FEATURE_WOL_DEFAULT_MAGIC_AND_ACPI 0x30 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_MASK 0xf #define BCE_PORT_FEATURE_WOL_LINK_SPEED_AUTONEG 0 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_10HALF 1 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_10FULL 2 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_100HALF 3 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_100FULL 4 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_1000HALF 5 #define BCE_PORT_FEATURE_WOL_LINK_SPEED_1000FULL 6 #define BCE_PORT_FEATURE_WOL_AUTONEG_ADVERTISE_1000 0x40 #define BCE_PORT_FEATURE_WOL_RESERVED_PAUSE_CAP 0x400 #define BCE_PORT_FEATURE_WOL_RESERVED_ASYM_PAUSE_CAP 0x800 #define BCE_PORT_FEATURE_MBA 0xe0 #define BCE_PORT2_FEATURE_MBA 0x154 #define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_SHIFT_BITS 0 #define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_MASK 0x3 #define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_PXE 0 #define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_RPL 1 #define BCE_PORT_FEATURE_MBA_BOOT_AGENT_TYPE_BOOTP 2 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_SHIFT_BITS 2 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_MASK 0x3c #define BCE_PORT_FEATURE_MBA_LINK_SPEED_AUTONEG 0 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_10HALF 0x4 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_10FULL 0x8 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_100HALF 0xc #define BCE_PORT_FEATURE_MBA_LINK_SPEED_100FULL 0x10 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_1000HALF 0x14 #define BCE_PORT_FEATURE_MBA_LINK_SPEED_1000FULL 0x18 #define BCE_PORT_FEATURE_MBA_SETUP_PROMPT_ENABLE 0x40 #define BCE_PORT_FEATURE_MBA_HOTKEY_CTRL_S 0 #define BCE_PORT_FEATURE_MBA_HOTKEY_CTRL_B 0x80 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_SHIFT_BITS 8 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_MASK 0xff00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_DISABLED 0 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_1K 0x100 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_2K 0x200 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_4K 0x300 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_8K 0x400 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_16K 0x500 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_32K 0x600 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_64K 0x700 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_128K 0x800 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_256K 0x900 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_512K 0xa00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_1M 0xb00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_2M 0xc00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_4M 0xd00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_8M 0xe00 #define BCE_PORT_FEATURE_MBA_EXP_ROM_SIZE_16M 0xf00 #define BCE_PORT_FEATURE_MBA_MSG_TIMEOUT_SHIFT_BITS 16 #define BCE_PORT_FEATURE_MBA_MSG_TIMEOUT_MASK 0xf0000 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_SHIFT_BITS 20 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_MASK 0x300000 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_AUTO 0 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_BBS 0x100000 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT18H 0x200000 #define BCE_PORT_FEATURE_MBA_BIOS_BOOTSTRAP_INT19H 0x300000 #define BCE_PORT_FEATURE_IMD 0xe4 #define BCE_PORT2_FEATURE_IMD 0x158 #define BCE_PORT_FEATURE_IMD_LINK_OVERRIDE_DEFAULT 0 #define BCE_PORT_FEATURE_IMD_LINK_OVERRIDE_ENABLE 1 #define BCE_PORT_FEATURE_VLAN 0xe8 #define BCE_PORT2_FEATURE_VLAN 0x15c #define BCE_PORT_FEATURE_MBA_VLAN_TAG_MASK 0xffff #define BCE_PORT_FEATURE_MBA_VLAN_ENABLE 0x10000 #define BCE_MFW_VER_PTR 0x00000014c #define BCE_BC_STATE_RESET_TYPE 0x000001c0 #define BCE_BC_STATE_RESET_TYPE_SIG 0x00005254 #define BCE_BC_STATE_RESET_TYPE_SIG_MASK 0x0000ffff #define BCE_BC_STATE_RESET_TYPE_NONE (BCE_BC_STATE_RESET_TYPE_SIG | \ 0x00010000) #define BCE_BC_STATE_RESET_TYPE_PCI (BCE_BC_STATE_RESET_TYPE_SIG | \ 0x00020000) #define BCE_BC_STATE_RESET_TYPE_VAUX (BCE_BC_STATE_RESET_TYPE_SIG | \ 0x00030000) #define BCE_BC_STATE_RESET_TYPE_DRV_MASK DRV_MSG_CODE #define BCE_BC_STATE_RESET_TYPE_DRV_RESET (BCE_BC_STATE_RESET_TYPE_SIG | \ DRV_MSG_CODE_RESET) #define BCE_BC_STATE_RESET_TYPE_DRV_UNLOAD (BCE_BC_STATE_RESET_TYPE_SIG | \ DRV_MSG_CODE_UNLOAD) #define BCE_BC_STATE_RESET_TYPE_DRV_SHUTDOWN (BCE_BC_STATE_RESET_TYPE_SIG | \ DRV_MSG_CODE_SHUTDOWN) #define BCE_BC_STATE_RESET_TYPE_DRV_WOL (BCE_BC_STATE_RESET_TYPE_SIG | \ DRV_MSG_CODE_WOL) #define BCE_BC_STATE_RESET_TYPE_DRV_DIAG (BCE_BC_STATE_RESET_TYPE_SIG | \ DRV_MSG_CODE_DIAG) #define BCE_BC_STATE_RESET_TYPE_VALUE(msg) (BCE_BC_STATE_RESET_TYPE_SIG | \ (msg)) #define BCE_BC_RESET_TYPE 0x000001c0 #define BCE_BC_STATE 0x000001c4 #define BCE_BC_STATE_ERR_MASK 0x0000ff00 #define BCE_BC_STATE_SIGN 0x42530000 #define BCE_BC_STATE_SIGN_MASK 0xffff0000 #define BCE_BC_STATE_BC1_START (BCE_BC_STATE_SIGN | 0x1) #define BCE_BC_STATE_GET_NVM_CFG1 (BCE_BC_STATE_SIGN | 0x2) #define BCE_BC_STATE_PROG_BAR (BCE_BC_STATE_SIGN | 0x3) #define BCE_BC_STATE_INIT_VID (BCE_BC_STATE_SIGN | 0x4) #define BCE_BC_STATE_GET_NVM_CFG2 (BCE_BC_STATE_SIGN | 0x5) #define BCE_BC_STATE_APPLY_WKARND (BCE_BC_STATE_SIGN | 0x6) #define BCE_BC_STATE_LOAD_BC2 (BCE_BC_STATE_SIGN | 0x7) #define BCE_BC_STATE_GOING_BC2 (BCE_BC_STATE_SIGN | 0x8) #define BCE_BC_STATE_GOING_DIAG (BCE_BC_STATE_SIGN | 0x9) #define BCE_BC_STATE_RT_FINAL_INIT (BCE_BC_STATE_SIGN | 0x81) #define BCE_BC_STATE_RT_WKARND (BCE_BC_STATE_SIGN | 0x82) #define BCE_BC_STATE_RT_DRV_PULSE (BCE_BC_STATE_SIGN | 0x83) #define BCE_BC_STATE_RT_FIOEVTS (BCE_BC_STATE_SIGN | 0x84) #define BCE_BC_STATE_RT_DRV_CMD (BCE_BC_STATE_SIGN | 0x85) #define BCE_BC_STATE_RT_LOW_POWER (BCE_BC_STATE_SIGN | 0x86) #define BCE_BC_STATE_RT_SET_WOL (BCE_BC_STATE_SIGN | 0x87) #define BCE_BC_STATE_RT_OTHER_FW (BCE_BC_STATE_SIGN | 0x88) #define BCE_BC_STATE_RT_GOING_D3 (BCE_BC_STATE_SIGN | 0x89) #define BCE_BC_STATE_ERR_BAD_VERSION (BCE_BC_STATE_SIGN | 0x0100) #define BCE_BC_STATE_ERR_BAD_BC2_CRC (BCE_BC_STATE_SIGN | 0x0200) #define BCE_BC_STATE_ERR_BC1_LOOP (BCE_BC_STATE_SIGN | 0x0300) #define BCE_BC_STATE_ERR_UNKNOWN_CMD (BCE_BC_STATE_SIGN | 0x0400) #define BCE_BC_STATE_ERR_DRV_DEAD (BCE_BC_STATE_SIGN | 0x0500) #define BCE_BC_STATE_ERR_NO_RXP (BCE_BC_STATE_SIGN | 0x0600) #define BCE_BC_STATE_ERR_TOO_MANY_RBUF (BCE_BC_STATE_SIGN | 0x0700) #define BCE_BC_STATE_CONDITION 0x000001c8 #define BCE_CONDITION_MFW_RUN_UNKNOWN 0x00000000 #define BCE_CONDITION_MFW_RUN_IPMI 0x00002000 #define BCE_CONDITION_MFW_RUN_UMP 0x00004000 #define BCE_CONDITION_MFW_RUN_NCSI 0x00006000 #define BCE_CONDITION_MFW_RUN_NONE 0x0000e000 #define BCE_CONDITION_MFW_RUN_MASK 0x0000e000 #define BCE_BC_STATE_DEBUG_CMD 0x1dc #define BCE_BC_STATE_BC_DBG_CMD_SIGNATURE 0x42440000 #define BCE_BC_STATE_BC_DBG_CMD_SIGNATURE_MASK 0xffff0000 #define BCE_BC_STATE_BC_DBG_CMD_LOOP_CNT_MASK 0xffff #define BCE_BC_STATE_BC_DBG_CMD_LOOP_INFINITE 0xffff #define HOST_VIEW_SHMEM_BASE 0x167c00 /* * PCI registers defined in the PCI 2.2 spec. */ #define BCE_PCI_PCIX_CMD 0x42 /****************************************************************************/ /* Convenience definitions. */ /****************************************************************************/ #define BCE_PRINTF(fmt, args...) device_printf(sc->bce_dev, fmt, ##args) #define BCE_LOCK_INIT(_sc, _name) mtx_init(&(_sc)->bce_mtx, _name, MTX_NETWORK_LOCK, MTX_DEF) #define BCE_LOCK(_sc) mtx_lock(&(_sc)->bce_mtx) #define BCE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->bce_mtx, MA_OWNED) #define BCE_UNLOCK(_sc) mtx_unlock(&(_sc)->bce_mtx) #define BCE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->bce_mtx) #ifdef BCE_DEBUG #define REG_WR(sc, offset, val) bce_reg_wr(sc, offset, val) #define REG_WR16(sc, offset, val) bce_reg_wr16(sc, offset, val) #define REG_RD(sc, offset) bce_reg_rd(sc, offset) #else #define REG_WR(sc, offset, val) bus_space_write_4(sc->bce_btag, sc->bce_bhandle, offset, val) #define REG_WR16(sc, offset, val) bus_space_write_2(sc->bce_btag, sc->bce_bhandle, offset, val) #define REG_RD(sc, offset) bus_space_read_4(sc->bce_btag, sc->bce_bhandle, offset) #endif #define REG_RD_IND(sc, offset) bce_reg_rd_ind(sc, offset) #define REG_WR_IND(sc, offset, val) bce_reg_wr_ind(sc, offset, val) #define CTX_WR(sc, cid_addr, offset, val) bce_ctx_wr(sc, cid_addr, offset, val) #define CTX_RD(sc, cid_addr, offset) bce_ctx_rd(sc, cid_addr, offset) #define BCE_SETBIT(sc, reg, x) REG_WR(sc, reg, (REG_RD(sc, reg) | (x))) #define BCE_CLRBIT(sc, reg, x) REG_WR(sc, reg, (REG_RD(sc, reg) & ~(x))) #define PCI_SETBIT(dev, reg, x, s) pci_write_config(dev, reg, (pci_read_config(dev, reg, s) | (x)), s) #define PCI_CLRBIT(dev, reg, x, s) pci_write_config(dev, reg, (pci_read_config(dev, reg, s) & ~(x)), s) #define BCE_STATS(x) (u_long) stats->stat_ ## x ## _lo #if (BUS_SPACE_MAXADDR > 0xFFFFFFFF) #define BCE_ADDR_LO(y) ((u64) (y) & 0xFFFFFFFF) #define BCE_ADDR_HI(y) ((u64) (y) >> 32) #else #define BCE_ADDR_LO(y) ((u32)y) #define BCE_ADDR_HI(y) (0) #endif /****************************************************************************/ /* Do not modify any of the following data structures, they are generated */ /* from RTL code. */ /* */ /* Begin machine generated definitions. */ /****************************************************************************/ /* * tx_bd definition */ struct tx_bd { u32 tx_bd_haddr_hi; u32 tx_bd_haddr_lo; u32 tx_bd_mss_nbytes; u16 tx_bd_flags; u16 tx_bd_vlan_tag; #define TX_BD_FLAGS_CONN_FAULT (1<<0) #define TX_BD_FLAGS_TCP_UDP_CKSUM (1<<1) #define TX_BD_FLAGS_IP_CKSUM (1<<2) #define TX_BD_FLAGS_VLAN_TAG (1<<3) #define TX_BD_FLAGS_COAL_NOW (1<<4) #define TX_BD_FLAGS_DONT_GEN_CRC (1<<5) #define TX_BD_FLAGS_END (1<<6) #define TX_BD_FLAGS_START (1<<7) #define TX_BD_FLAGS_SW_OPTION_WORD (0x1f<<8) #define TX_BD_FLAGS_SW_FLAGS (1<<13) #define TX_BD_FLAGS_SW_SNAP (1<<14) #define TX_BD_FLAGS_SW_LSO (1<<15) }; /* * rx_bd definition */ struct rx_bd { u32 rx_bd_haddr_hi; u32 rx_bd_haddr_lo; u32 rx_bd_len; u32 rx_bd_flags; #define RX_BD_FLAGS_NOPUSH (1<<0) #define RX_BD_FLAGS_DUMMY (1<<1) #define RX_BD_FLAGS_END (1<<2) #define RX_BD_FLAGS_START (1<<3) }; /* * status_block definition */ struct status_block { u32 status_attn_bits; #define STATUS_ATTN_BITS_LINK_STATE (1L<<0) #define STATUS_ATTN_BITS_TX_SCHEDULER_ABORT (1L<<1) #define STATUS_ATTN_BITS_TX_BD_READ_ABORT (1L<<2) #define STATUS_ATTN_BITS_TX_BD_CACHE_ABORT (1L<<3) #define STATUS_ATTN_BITS_TX_PROCESSOR_ABORT (1L<<4) #define STATUS_ATTN_BITS_TX_DMA_ABORT (1L<<5) #define STATUS_ATTN_BITS_TX_PATCHUP_ABORT (1L<<6) #define STATUS_ATTN_BITS_TX_ASSEMBLER_ABORT (1L<<7) #define STATUS_ATTN_BITS_RX_PARSER_MAC_ABORT (1L<<8) #define STATUS_ATTN_BITS_RX_PARSER_CATCHUP_ABORT (1L<<9) #define STATUS_ATTN_BITS_RX_MBUF_ABORT (1L<<10) #define STATUS_ATTN_BITS_RX_LOOKUP_ABORT (1L<<11) #define STATUS_ATTN_BITS_RX_PROCESSOR_ABORT (1L<<12) #define STATUS_ATTN_BITS_RX_V2P_ABORT (1L<<13) #define STATUS_ATTN_BITS_RX_BD_CACHE_ABORT (1L<<14) #define STATUS_ATTN_BITS_RX_DMA_ABORT (1L<<15) #define STATUS_ATTN_BITS_COMPLETION_ABORT (1L<<16) #define STATUS_ATTN_BITS_HOST_COALESCE_ABORT (1L<<17) #define STATUS_ATTN_BITS_MAILBOX_QUEUE_ABORT (1L<<18) #define STATUS_ATTN_BITS_CONTEXT_ABORT (1L<<19) #define STATUS_ATTN_BITS_CMD_SCHEDULER_ABORT (1L<<20) #define STATUS_ATTN_BITS_CMD_PROCESSOR_ABORT (1L<<21) #define STATUS_ATTN_BITS_MGMT_PROCESSOR_ABORT (1L<<22) #define STATUS_ATTN_BITS_MAC_ABORT (1L<<23) #define STATUS_ATTN_BITS_TIMER_ABORT (1L<<24) #define STATUS_ATTN_BITS_DMAE_ABORT (1L<<25) #define STATUS_ATTN_BITS_FLSH_ABORT (1L<<26) #define STATUS_ATTN_BITS_GRC_ABORT (1L<<27) #define STATUS_ATTN_BITS_PARITY_ERROR (1L<<31) u32 status_attn_bits_ack; #if defined(__BIG_ENDIAN) u16 status_tx_quick_consumer_index0; u16 status_tx_quick_consumer_index1; u16 status_tx_quick_consumer_index2; u16 status_tx_quick_consumer_index3; u16 status_rx_quick_consumer_index0; u16 status_rx_quick_consumer_index1; u16 status_rx_quick_consumer_index2; u16 status_rx_quick_consumer_index3; u16 status_rx_quick_consumer_index4; u16 status_rx_quick_consumer_index5; u16 status_rx_quick_consumer_index6; u16 status_rx_quick_consumer_index7; u16 status_rx_quick_consumer_index8; u16 status_rx_quick_consumer_index9; u16 status_rx_quick_consumer_index10; u16 status_rx_quick_consumer_index11; u16 status_rx_quick_consumer_index12; u16 status_rx_quick_consumer_index13; u16 status_rx_quick_consumer_index14; u16 status_rx_quick_consumer_index15; u16 status_completion_producer_index; u16 status_cmd_consumer_index; u16 status_idx; u16 status_unused; #elif defined(__LITTLE_ENDIAN) u16 status_tx_quick_consumer_index1; u16 status_tx_quick_consumer_index0; u16 status_tx_quick_consumer_index3; u16 status_tx_quick_consumer_index2; u16 status_rx_quick_consumer_index1; u16 status_rx_quick_consumer_index0; u16 status_rx_quick_consumer_index3; u16 status_rx_quick_consumer_index2; u16 status_rx_quick_consumer_index5; u16 status_rx_quick_consumer_index4; u16 status_rx_quick_consumer_index7; u16 status_rx_quick_consumer_index6; u16 status_rx_quick_consumer_index9; u16 status_rx_quick_consumer_index8; u16 status_rx_quick_consumer_index11; u16 status_rx_quick_consumer_index10; u16 status_rx_quick_consumer_index13; u16 status_rx_quick_consumer_index12; u16 status_rx_quick_consumer_index15; u16 status_rx_quick_consumer_index14; u16 status_cmd_consumer_index; u16 status_completion_producer_index; u16 status_unused; u16 status_idx; #endif }; /* * statistics_block definition */ struct statistics_block { u32 stat_IfHCInOctets_hi; u32 stat_IfHCInOctets_lo; u32 stat_IfHCInBadOctets_hi; u32 stat_IfHCInBadOctets_lo; u32 stat_IfHCOutOctets_hi; u32 stat_IfHCOutOctets_lo; u32 stat_IfHCOutBadOctets_hi; u32 stat_IfHCOutBadOctets_lo; u32 stat_IfHCInUcastPkts_hi; u32 stat_IfHCInUcastPkts_lo; u32 stat_IfHCInMulticastPkts_hi; u32 stat_IfHCInMulticastPkts_lo; u32 stat_IfHCInBroadcastPkts_hi; u32 stat_IfHCInBroadcastPkts_lo; u32 stat_IfHCOutUcastPkts_hi; u32 stat_IfHCOutUcastPkts_lo; u32 stat_IfHCOutMulticastPkts_hi; u32 stat_IfHCOutMulticastPkts_lo; u32 stat_IfHCOutBroadcastPkts_hi; u32 stat_IfHCOutBroadcastPkts_lo; u32 stat_emac_tx_stat_dot3statsinternalmactransmiterrors; u32 stat_Dot3StatsCarrierSenseErrors; u32 stat_Dot3StatsFCSErrors; u32 stat_Dot3StatsAlignmentErrors; u32 stat_Dot3StatsSingleCollisionFrames; u32 stat_Dot3StatsMultipleCollisionFrames; u32 stat_Dot3StatsDeferredTransmissions; u32 stat_Dot3StatsExcessiveCollisions; u32 stat_Dot3StatsLateCollisions; u32 stat_EtherStatsCollisions; u32 stat_EtherStatsFragments; u32 stat_EtherStatsJabbers; u32 stat_EtherStatsUndersizePkts; u32 stat_EtherStatsOversizePkts; u32 stat_EtherStatsPktsRx64Octets; u32 stat_EtherStatsPktsRx65Octetsto127Octets; u32 stat_EtherStatsPktsRx128Octetsto255Octets; u32 stat_EtherStatsPktsRx256Octetsto511Octets; u32 stat_EtherStatsPktsRx512Octetsto1023Octets; u32 stat_EtherStatsPktsRx1024Octetsto1522Octets; u32 stat_EtherStatsPktsRx1523Octetsto9022Octets; u32 stat_EtherStatsPktsTx64Octets; u32 stat_EtherStatsPktsTx65Octetsto127Octets; u32 stat_EtherStatsPktsTx128Octetsto255Octets; u32 stat_EtherStatsPktsTx256Octetsto511Octets; u32 stat_EtherStatsPktsTx512Octetsto1023Octets; u32 stat_EtherStatsPktsTx1024Octetsto1522Octets; u32 stat_EtherStatsPktsTx1523Octetsto9022Octets; u32 stat_XonPauseFramesReceived; u32 stat_XoffPauseFramesReceived; u32 stat_OutXonSent; u32 stat_OutXoffSent; u32 stat_FlowControlDone; u32 stat_MacControlFramesReceived; u32 stat_XoffStateEntered; u32 stat_IfInFramesL2FilterDiscards; u32 stat_IfInRuleCheckerDiscards; u32 stat_IfInFTQDiscards; u32 stat_IfInMBUFDiscards; u32 stat_IfInRuleCheckerP4Hit; u32 stat_CatchupInRuleCheckerDiscards; u32 stat_CatchupInFTQDiscards; u32 stat_CatchupInMBUFDiscards; u32 stat_CatchupInRuleCheckerP4Hit; u32 stat_GenStat00; u32 stat_GenStat01; u32 stat_GenStat02; u32 stat_GenStat03; u32 stat_GenStat04; u32 stat_GenStat05; u32 stat_GenStat06; u32 stat_GenStat07; u32 stat_GenStat08; u32 stat_GenStat09; u32 stat_GenStat10; u32 stat_GenStat11; u32 stat_GenStat12; u32 stat_GenStat13; u32 stat_GenStat14; u32 stat_GenStat15; }; /* * l2_fhdr definition */ struct l2_fhdr { u32 l2_fhdr_status; #define L2_FHDR_STATUS_RULE_CLASS (0x7<<0) #define L2_FHDR_STATUS_RULE_P2 (1<<3) #define L2_FHDR_STATUS_RULE_P3 (1<<4) #define L2_FHDR_STATUS_RULE_P4 (1<<5) #define L2_FHDR_STATUS_L2_VLAN_TAG (1<<6) #define L2_FHDR_STATUS_L2_LLC_SNAP (1<<7) #define L2_FHDR_STATUS_RSS_HASH (1<<8) #define L2_FHDR_STATUS_IP_DATAGRAM (1<<13) #define L2_FHDR_STATUS_TCP_SEGMENT (1<<14) #define L2_FHDR_STATUS_UDP_DATAGRAM (1<<15) #define L2_FHDR_STATUS_SPLIT (1<<16) #define L2_FHDR_ERRORS_BAD_CRC (1<<17) #define L2_FHDR_ERRORS_PHY_DECODE (1<<18) #define L2_FHDR_ERRORS_ALIGNMENT (1<<19) #define L2_FHDR_ERRORS_TOO_SHORT (1<<20) #define L2_FHDR_ERRORS_GIANT_FRAME (1<<21) #define L2_FHDR_ERRORS_TCP_XSUM (1<<28) #define L2_FHDR_ERRORS_UDP_XSUM (1<<31) u32 l2_fhdr_hash; #if defined(__BIG_ENDIAN) u16 l2_fhdr_pkt_len; u16 l2_fhdr_vlan_tag; u16 l2_fhdr_ip_xsum; u16 l2_fhdr_tcp_udp_xsum; #elif defined(__LITTLE_ENDIAN) u16 l2_fhdr_vlan_tag; u16 l2_fhdr_pkt_len; u16 l2_fhdr_tcp_udp_xsum; u16 l2_fhdr_ip_xsum; #endif }; #define BCE_L2FHDR_PRINTFB \ "\20" \ "\40UDP_XSUM_ERR" \ "\37b30" \ "\36b29" \ "\35TCP_XSUM_ERR" \ "\34b27" \ "\33b26" \ "\32b25" \ "\31b24" \ "\30b23" \ "\27b22" \ "\26GIANT_ERR" \ "\25SHORT_ERR" \ "\24ALIGN_ERR" \ "\23PHY_ERR" \ "\22CRC_ERR" \ "\21SPLIT" \ "\20UDP" \ "\17TCP" \ "\16IP" \ "\15b12" \ "\14b11" \ "\13b10" \ "\12b09" \ "\11RSS" \ "\10SNAP" \ "\07VLAN" \ "\06P4" \ "\05P3" \ "\04P2" /* * l2_tx_context definition (5706 and 5708) */ #define BCE_L2CTX_TX_TYPE 0x00000000 #define BCE_L2CTX_TX_TYPE_SIZE_L2 ((0xc0/0x20)<<16) #define BCE_L2CTX_TX_TYPE_TYPE (0xf<<28) #define BCE_L2CTX_TX_TYPE_TYPE_EMPTY (0<<28) #define BCE_L2CTX_TX_TYPE_TYPE_L2 (1<<28) #define BCE_L2CTX_TX_HOST_BIDX 0x00000088 #define BCE_L2CTX_TX_EST_NBD 0x00000088 #define BCE_L2CTX_TX_CMD_TYPE 0x00000088 #define BCE_L2CTX_TX_CMD_TYPE_TYPE (0xf<<24) #define BCE_L2CTX_TX_CMD_TYPE_TYPE_L2 (0<<24) #define BCE_L2CTX_TX_CMD_TYPE_TYPE_TCP (1<<24) #define BCE_L2CTX_TX_HOST_BSEQ 0x00000090 #define BCE_L2CTX_TX_TSCH_BSEQ 0x00000094 #define BCE_L2CTX_TX_TBDR_BSEQ 0x00000098 #define BCE_L2CTX_TX_TBDR_BOFF 0x0000009c #define BCE_L2CTX_TX_TBDR_BIDX 0x0000009c #define BCE_L2CTX_TX_TBDR_BHADDR_HI 0x000000a0 #define BCE_L2CTX_TX_TBDR_BHADDR_LO 0x000000a4 #define BCE_L2CTX_TX_TXP_BOFF 0x000000a8 #define BCE_L2CTX_TX_TXP_BIDX 0x000000a8 #define BCE_L2CTX_TX_TXP_BSEQ 0x000000ac /* * l2_tx_context definition (5709 and 5716) */ #define BCE_L2CTX_TX_TYPE_XI 0x00000080 #define BCE_L2CTX_TX_TYPE_SIZE_L2_XI ((0xc0/0x20)<<16) #define BCE_L2CTX_TX_TYPE_TYPE_XI (0xf<<28) #define BCE_L2CTX_TX_TYPE_TYPE_EMPTY_XI (0<<28) #define BCE_L2CTX_TX_TYPE_TYPE_L2_XI (1<<28) #define BCE_L2CTX_TX_CMD_TYPE_XI 0x00000240 #define BCE_L2CTX_TX_CMD_TYPE_TYPE_XI (0xf<<24) #define BCE_L2CTX_TX_CMD_TYPE_TYPE_L2_XI (0<<24) #define BCE_L2CTX_TX_CMD_TYPE_TYPE_TCP_XI (1<<24) #define BCE_L2CTX_TX_HOST_BIDX_XI 0x00000240 #define BCE_L2CTX_TX_HOST_BSEQ_XI 0x00000248 #define BCE_L2CTX_TX_TBDR_BHADDR_HI_XI 0x00000258 #define BCE_L2CTX_TX_TBDR_BHADDR_LO_XI 0x0000025c /* * l2_rx_context definition (5706, 5708, 5709, and 5716) */ #define BCE_L2CTX_RX_WATER_MARK 0x00000000 #define BCE_L2CTX_RX_LO_WATER_MARK_SHIFT 0 #define BCE_L2CTX_RX_LO_WATER_MARK_DEFAULT 32 #define BCE_L2CTX_RX_LO_WATER_MARK_SCALE 4 #define BCE_L2CTX_RX_LO_WATER_MARK_DIS 0 #define BCE_L2CTX_RX_HI_WATER_MARK_SHIFT 4 #define BCE_L2CTX_RX_HI_WATER_MARK_SCALE 16 #define BCE_L2CTX_RX_WATER_MARKS_MSK 0x000000ff #define BCE_L2CTX_RX_BD_PRE_READ 0x00000000 #define BCE_L2CTX_RX_BD_PRE_READ_SHIFT 8 #define BCE_L2CTX_RX_CTX_SIZE 0x00000000 #define BCE_L2CTX_RX_CTX_SIZE_SHIFT 16 #define BCE_L2CTX_RX_CTX_TYPE_SIZE_L2 ((0x20/20)<> BCM_PAGE_BITS) /* * Page count must remain a power of 2 for all * of the math to work correctly. */ #define TX_PAGES 2 #define TOTAL_TX_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct tx_bd)) #define USABLE_TX_BD_PER_PAGE (TOTAL_TX_BD_PER_PAGE - 1) #define TOTAL_TX_BD (TOTAL_TX_BD_PER_PAGE * TX_PAGES) #define USABLE_TX_BD (USABLE_TX_BD_PER_PAGE * TX_PAGES) #define MAX_TX_BD (TOTAL_TX_BD - 1) /* Advance to the next tx_bd, skipping any next page pointers. */ #define NEXT_TX_BD(x) (((x) & USABLE_TX_BD_PER_PAGE) == \ (USABLE_TX_BD_PER_PAGE - 1)) ? \ (x) + 2 : (x) + 1 #define TX_CHAIN_IDX(x) ((x) & MAX_TX_BD) #define TX_PAGE(x) (((x) & ~USABLE_TX_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) #define TX_IDX(x) ((x) & USABLE_TX_BD_PER_PAGE) /* * Page count must remain a power of 2 for all * of the math to work correctly. */ #define RX_PAGES 2 #define TOTAL_RX_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct rx_bd)) #define USABLE_RX_BD_PER_PAGE (TOTAL_RX_BD_PER_PAGE - 1) #define TOTAL_RX_BD (TOTAL_RX_BD_PER_PAGE * RX_PAGES) #define USABLE_RX_BD (USABLE_RX_BD_PER_PAGE * RX_PAGES) #define MAX_RX_BD (TOTAL_RX_BD - 1) /* Advance to the next rx_bd, skipping any next page pointers. */ #define NEXT_RX_BD(x) (((x) & USABLE_RX_BD_PER_PAGE) == \ (USABLE_RX_BD_PER_PAGE - 1)) ? \ (x) + 2 : (x) + 1 #define RX_CHAIN_IDX(x) ((x) & MAX_RX_BD) #define RX_PAGE(x) (((x) & ~USABLE_RX_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) #define RX_IDX(x) ((x) & USABLE_RX_BD_PER_PAGE) #ifdef BCE_JUMBO_HDRSPLIT /* * To accomodate jumbo frames, the page chain should * be 4 times larger than the receive chain. */ #define PG_PAGES (RX_PAGES * 4) #define TOTAL_PG_BD_PER_PAGE (BCM_PAGE_SIZE / sizeof(struct rx_bd)) #define USABLE_PG_BD_PER_PAGE (TOTAL_PG_BD_PER_PAGE - 1) #define TOTAL_PG_BD (TOTAL_PG_BD_PER_PAGE * PG_PAGES) #define USABLE_PG_BD (USABLE_PG_BD_PER_PAGE * PG_PAGES) #define MAX_PG_BD (TOTAL_PG_BD - 1) /* Advance to the next pg_bd, skipping any next page pointers. */ #define NEXT_PG_BD(x) (((x) & USABLE_PG_BD_PER_PAGE) == \ (USABLE_PG_BD_PER_PAGE - 1)) ? \ (x) + 2 : (x) + 1 #define PG_CHAIN_IDX(x) ((x) & MAX_PG_BD) #define PG_PAGE(x) (((x) & ~USABLE_PG_BD_PER_PAGE) >> (BCM_PAGE_BITS - 4)) #define PG_IDX(x) ((x) & USABLE_PG_BD_PER_PAGE) #endif /* BCE_JUMBO_HDRSPLIT */ #define CTX_INIT_RETRY_COUNT 10 /* Context size. */ #define CTX_SHIFT 7 #define CTX_SIZE (1 << CTX_SHIFT) #define CTX_MASK (CTX_SIZE - 1) #define GET_CID_ADDR(_cid) ((_cid) << CTX_SHIFT) #define GET_CID(_cid_addr) ((_cid_addr) >> CTX_SHIFT) #define PHY_CTX_SHIFT 6 #define PHY_CTX_SIZE (1 << PHY_CTX_SHIFT) #define PHY_CTX_MASK (PHY_CTX_SIZE - 1) #define GET_PCID_ADDR(_pcid) ((_pcid) << PHY_CTX_SHIFT) #define GET_PCID(_pcid_addr) ((_pcid_addr) >> PHY_CTX_SHIFT) #define MB_KERNEL_CTX_SHIFT 8 #define MB_KERNEL_CTX_SIZE (1 << MB_KERNEL_CTX_SHIFT) #define MB_KERNEL_CTX_MASK (MB_KERNEL_CTX_SIZE - 1) #define MB_GET_CID_ADDR(_cid) (0x10000 + ((_cid) << MB_KERNEL_CTX_SHIFT)) #define MAX_CID_CNT 0x4000 #define MAX_CID_ADDR (GET_CID_ADDR(MAX_CID_CNT)) #define INVALID_CID_ADDR 0xffffffff #define TX_CID 16 #define RX_CID 0 /****************************************************************************/ /* BCE Processor Firmwware Load Definitions */ /****************************************************************************/ struct cpu_reg { u32 mode; u32 mode_value_halt; u32 mode_value_sstep; u32 state; u32 state_value_clear; u32 gpr0; u32 evmask; u32 pc; u32 inst; u32 bp; u32 spad_base; u32 mips_view_base; }; struct fw_info { u32 ver_major; u32 ver_minor; u32 ver_fix; u32 start_addr; /* Text section. */ u32 text_addr; u32 text_len; u32 text_index; u32 *text; /* Data section. */ u32 data_addr; u32 data_len; u32 data_index; u32 *data; /* SBSS section. */ u32 sbss_addr; u32 sbss_len; u32 sbss_index; u32 *sbss; /* BSS section. */ u32 bss_addr; u32 bss_len; u32 bss_index; u32 *bss; /* Read-only section. */ u32 rodata_addr; u32 rodata_len; u32 rodata_index; u32 *rodata; }; #define RV2P_PROC1 0 #define RV2P_PROC2 1 #define BCE_MIREG(x) ((x & 0x1F) << 16) #define BCE_MIPHY(x) ((x & 0x1F) << 21) #define BCE_PHY_TIMEOUT 50 #define BCE_NVRAM_SIZE 0x200 #define BCE_NVRAM_MAGIC 0x669955aa #define BCE_CRC32_RESIDUAL 0xdebb20e3 #define BCE_TX_TIMEOUT 5 #define BCE_MAX_SEGMENTS 32 #define BCE_TSO_MAX_SIZE 65536 #define BCE_TSO_MAX_SEG_SIZE 4096 #define BCE_DMA_ALIGN 8 #define BCE_DMA_BOUNDARY 0 /* The BCM5708 has a problem with addresses greater that 40bits. */ /* Handle the sizing issue in an architecture agnostic fashion. */ #if (BUS_SPACE_MAXADDR < 0xFFFFFFFFFF) #define BCE_BUS_SPACE_MAXADDR BUS_SPACE_MAXADDR #else #define BCE_BUS_SPACE_MAXADDR 0xFFFFFFFFFF #endif /* * XXX Checksum offload involving IP fragments seems to cause problems on * transmit. Disable it for now, hopefully there will be a more elegant * solution later. */ #ifdef BCE_IP_CSUM #define BCE_IF_HWASSIST (CSUM_IP | CSUM_TCP | CSUM_UDP) #else #define BCE_IF_HWASSIST (CSUM_TCP | CSUM_UDP) #endif #if __FreeBSD_version < 700000 #define BCE_IF_CAPABILITIES (IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | \ IFCAP_HWCSUM | IFCAP_JUMBO_MTU) #else #define BCE_IF_CAPABILITIES (IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | \ IFCAP_HWCSUM | IFCAP_JUMBO_MTU | IFCAP_VLAN_HWCSUM) #endif #define BCE_MIN_MTU 60 #define BCE_MIN_ETHER_MTU 64 #define BCE_MAX_STD_MTU 1500 #define BCE_MAX_STD_ETHER_MTU 1518 #define BCE_MAX_STD_ETHER_MTU_VLAN 1522 #define BCE_MAX_JUMBO_MTU 9000 #define BCE_MAX_JUMBO_ETHER_MTU 9018 #define BCE_MAX_JUMBO_ETHER_MTU_VLAN 9022 // #define BCE_MAX_MTU ETHER_MAX_LEN_JUMBO + ETHER_VLAN_ENCAP_LEN /* 9022 */ /****************************************************************************/ /* BCE Device State Data Structure */ /****************************************************************************/ #define BCE_STATUS_BLK_SZ sizeof(struct status_block) #define BCE_STATS_BLK_SZ sizeof(struct statistics_block) #define BCE_TX_CHAIN_PAGE_SZ BCM_PAGE_SIZE #define BCE_RX_CHAIN_PAGE_SZ BCM_PAGE_SIZE #define BCE_PG_CHAIN_PAGE_SZ BCM_PAGE_SIZE struct bce_softc { /* MUST start with ifnet pointer (see definition of miibus_statchg()) */ struct ifnet *bce_ifp; /* Interface info */ device_t bce_dev; /* Parent device handle */ u_int8_t bce_unit; /* Interface number */ struct resource *bce_res_mem; /* Device resource handle */ struct ifmedia bce_ifmedia; /* TBI media info */ bus_space_tag_t bce_btag; /* Device bus tag */ bus_space_handle_t bce_bhandle; /* Device bus handle */ vm_offset_t bce_vhandle; /* Device virtual memory handle */ struct resource *bce_res_irq; /* IRQ Resource Handle */ struct mtx bce_mtx; /* Mutex */ /* Interrupt handler. */ driver_intr_t *bce_intr; void *bce_intrhand; int bce_irq_rid; int bce_msi_count; /* ASIC Chip ID. */ u32 bce_chipid; /* General controller flags. */ u32 bce_flags; #define BCE_PCIX_FLAG 0x00000001 #define BCE_PCI_32BIT_FLAG 0x00000002 #define BCE_ONE_TDMA_FLAG 0x00000004 /* Deprecated */ #define BCE_NO_WOL_FLAG 0x00000008 #define BCE_USING_DAC_FLAG 0x00000010 #define BCE_USING_MSI_FLAG 0x00000020 #define BCE_MFW_ENABLE_FLAG 0x00000040 #define BCE_ONE_SHOT_MSI_FLAG 0x00000080 #define BCE_USING_MSIX_FLAG 0x00000100 #define BCE_PCIE_FLAG 0x00000200 /* Controller capability flags. */ u32 bce_cap_flags; #define BCE_MSI_CAPABLE_FLAG 0x00000001 #define BCE_MSIX_CAPABLE_FLAG 0x00000002 #define BCE_PCIE_CAPABLE_FLAG 0x00000004 #define BCE_PCIX_CAPABLE_FLAG 0x00000008 /* PHY specific flags. */ u32 bce_phy_flags; #define BCE_PHY_SERDES_FLAG 0x00000001 #define BCE_PHY_CRC_FIX_FLAG 0x00000002 #define BCE_PHY_PARALLEL_DETECT_FLAG 0x00000004 #define BCE_PHY_2_5G_CAPABLE_FLAG 0x00000008 #define BCE_PHY_INT_MODE_MASK_FLAG 0x00000300 #define BCE_PHY_INT_MODE_AUTO_POLLING_FLAG 0x00000100 #define BCE_PHY_INT_MODE_LINK_READY_FLAG 0x00000200 +#define BCE_PHY_IEEE_CLAUSE_45_FLAG 0x00000400 /* Values that need to be shared with the PHY driver. */ u32 bce_shared_hw_cfg; u32 bce_port_hw_cfg; bus_addr_t max_bus_addr; u16 bus_speed_mhz; /* PCI bus speed */ u16 link_width; /* PCIe link width */ u16 link_speed; /* PCIe link speed */ struct flash_spec *bce_flash_info; /* Flash NVRAM settings */ u32 bce_flash_size; /* Flash NVRAM size */ u32 bce_shmem_base; /* Shared Memory base address */ char * bce_name; /* Name string */ /* Tracks the version of bootcode firmware. */ char bce_bc_ver[32]; char bce_mfw_ver[32]; /* Tracks the state of the firmware. 0 = Running while any */ /* other value indicates that the firmware is not responding. */ u16 bce_fw_timed_out; /* An incrementing sequence used to coordinate messages passed */ /* from the driver to the firmware. */ u16 bce_fw_wr_seq; /* An incrementing sequence used to let the firmware know that */ /* the driver is still operating. Without the pulse, management */ /* firmware such as IPMI or UMP will operate in OS absent state. */ u16 bce_fw_drv_pulse_wr_seq; /* Ethernet MAC address. */ u_char eaddr[6]; /* These setting are used by the host coalescing (HC) block to */ /* to control how often the status block, statistics block and */ /* interrupts are generated. */ u16 bce_tx_quick_cons_trip_int; u16 bce_tx_quick_cons_trip; u16 bce_rx_quick_cons_trip_int; u16 bce_rx_quick_cons_trip; u16 bce_comp_prod_trip_int; u16 bce_comp_prod_trip; u16 bce_tx_ticks_int; u16 bce_tx_ticks; u16 bce_rx_ticks_int; u16 bce_rx_ticks; u16 bce_com_ticks_int; u16 bce_com_ticks; u16 bce_cmd_ticks_int; u16 bce_cmd_ticks; u32 bce_stats_ticks; /* The address of the integrated PHY on the MII bus. */ int bce_phy_addr; /* The device handle for the MII bus child device. */ device_t bce_miibus; /* Driver maintained TX chain pointers and byte counter. */ u16 rx_prod; u16 rx_cons; u32 rx_prod_bseq; /* Counts the bytes used. */ u16 tx_prod; u16 tx_cons; u32 tx_prod_bseq; /* Counts the bytes used. */ #ifdef BCE_JUMBO_HDRSPLIT u16 pg_prod; u16 pg_cons; #endif int bce_link; struct callout bce_tick_callout; struct callout bce_pulse_callout; int watchdog_timer; /* ticks until chip reset */ /* Frame size and mbuf allocation size for RX frames. */ u32 max_frame_size; int rx_bd_mbuf_alloc_size; int rx_bd_mbuf_data_len; int rx_bd_mbuf_align_pad; #ifdef BCE_JUMBO_HDRSPLIT int pg_bd_mbuf_alloc_size; #endif /* Receive mode settings (i.e promiscuous, multicast, etc.). */ u32 rx_mode; /* Bus tag for the bce controller. */ bus_dma_tag_t parent_tag; /* H/W maintained TX buffer descriptor chain structure. */ bus_dma_tag_t tx_bd_chain_tag; bus_dmamap_t tx_bd_chain_map[TX_PAGES]; struct tx_bd *tx_bd_chain[TX_PAGES]; bus_addr_t tx_bd_chain_paddr[TX_PAGES]; /* H/W maintained RX buffer descriptor chain structure. */ bus_dma_tag_t rx_bd_chain_tag; bus_dmamap_t rx_bd_chain_map[RX_PAGES]; struct rx_bd *rx_bd_chain[RX_PAGES]; bus_addr_t rx_bd_chain_paddr[RX_PAGES]; #ifdef BCE_JUMBO_HDRSPLIT /* H/W maintained page buffer descriptor chain structure. */ bus_dma_tag_t pg_bd_chain_tag; bus_dmamap_t pg_bd_chain_map[PG_PAGES]; struct rx_bd *pg_bd_chain[PG_PAGES]; bus_addr_t pg_bd_chain_paddr[PG_PAGES]; #endif /* H/W maintained status block. */ bus_dma_tag_t status_tag; bus_dmamap_t status_map; struct status_block *status_block; /* Virtual address */ bus_addr_t status_block_paddr; /* Physical address */ /* Driver maintained status block values. */ u16 last_status_idx; u16 hw_rx_cons; u16 hw_tx_cons; /* H/W maintained statistics block. */ bus_dma_tag_t stats_tag; bus_dmamap_t stats_map; struct statistics_block *stats_block; /* Virtual address */ bus_addr_t stats_block_paddr; /* Physical address */ /* H/W maintained context block. */ int ctx_pages; bus_dma_tag_t ctx_tag; /* DRC - Fix hard coded value. */ bus_dmamap_t ctx_map[4]; void *ctx_block[4]; /* Virtual address */ bus_addr_t ctx_paddr[4]; /* Physical address */ /* Bus tag for RX/TX mbufs. */ bus_dma_tag_t rx_mbuf_tag; bus_dma_tag_t tx_mbuf_tag; #ifdef BCE_JUMBO_HDRSPLIT bus_dma_tag_t pg_mbuf_tag; #endif /* S/W maintained mbuf TX chain structure. */ bus_dmamap_t tx_mbuf_map[TOTAL_TX_BD]; struct mbuf *tx_mbuf_ptr[TOTAL_TX_BD]; /* S/W maintained mbuf RX chain structure. */ bus_dmamap_t rx_mbuf_map[TOTAL_RX_BD]; struct mbuf *rx_mbuf_ptr[TOTAL_RX_BD]; #ifdef BCE_JUMBO_HDRSPLIT /* S/W maintained mbuf page chain structure. */ bus_dmamap_t pg_mbuf_map[TOTAL_PG_BD]; struct mbuf *pg_mbuf_ptr[TOTAL_PG_BD]; #endif /* Track the number of buffer descriptors in use. */ u16 free_rx_bd; u16 max_rx_bd; u16 used_tx_bd; u16 max_tx_bd; #ifdef BCE_JUMBO_HDRSPLIT u16 free_pg_bd; u16 max_pg_bd; #endif /* Provides access to hardware statistics through sysctl. */ u64 stat_IfHCInOctets; u64 stat_IfHCInBadOctets; u64 stat_IfHCOutOctets; u64 stat_IfHCOutBadOctets; u64 stat_IfHCInUcastPkts; u64 stat_IfHCInMulticastPkts; u64 stat_IfHCInBroadcastPkts; u64 stat_IfHCOutUcastPkts; u64 stat_IfHCOutMulticastPkts; u64 stat_IfHCOutBroadcastPkts; u32 stat_emac_tx_stat_dot3statsinternalmactransmiterrors; u32 stat_Dot3StatsCarrierSenseErrors; u32 stat_Dot3StatsFCSErrors; u32 stat_Dot3StatsAlignmentErrors; u32 stat_Dot3StatsSingleCollisionFrames; u32 stat_Dot3StatsMultipleCollisionFrames; u32 stat_Dot3StatsDeferredTransmissions; u32 stat_Dot3StatsExcessiveCollisions; u32 stat_Dot3StatsLateCollisions; u32 stat_EtherStatsCollisions; u32 stat_EtherStatsFragments; u32 stat_EtherStatsJabbers; u32 stat_EtherStatsUndersizePkts; u32 stat_EtherStatsOversizePkts; u32 stat_EtherStatsPktsRx64Octets; u32 stat_EtherStatsPktsRx65Octetsto127Octets; u32 stat_EtherStatsPktsRx128Octetsto255Octets; u32 stat_EtherStatsPktsRx256Octetsto511Octets; u32 stat_EtherStatsPktsRx512Octetsto1023Octets; u32 stat_EtherStatsPktsRx1024Octetsto1522Octets; u32 stat_EtherStatsPktsRx1523Octetsto9022Octets; u32 stat_EtherStatsPktsTx64Octets; u32 stat_EtherStatsPktsTx65Octetsto127Octets; u32 stat_EtherStatsPktsTx128Octetsto255Octets; u32 stat_EtherStatsPktsTx256Octetsto511Octets; u32 stat_EtherStatsPktsTx512Octetsto1023Octets; u32 stat_EtherStatsPktsTx1024Octetsto1522Octets; u32 stat_EtherStatsPktsTx1523Octetsto9022Octets; u32 stat_XonPauseFramesReceived; u32 stat_XoffPauseFramesReceived; u32 stat_OutXonSent; u32 stat_OutXoffSent; u32 stat_FlowControlDone; u32 stat_MacControlFramesReceived; u32 stat_XoffStateEntered; u32 stat_IfInFramesL2FilterDiscards; u32 stat_IfInRuleCheckerDiscards; u32 stat_IfInFTQDiscards; u32 stat_IfInMBUFDiscards; u32 stat_IfInRuleCheckerP4Hit; u32 stat_CatchupInRuleCheckerDiscards; u32 stat_CatchupInFTQDiscards; u32 stat_CatchupInMBUFDiscards; u32 stat_CatchupInRuleCheckerP4Hit; /* Provides access to certain firmware statistics. */ u32 com_no_buffers; /* Recoverable failure counters. */ u32 mbuf_alloc_failed_count; u32 fragmented_mbuf_count; u32 unexpected_attention_count; u32 l2fhdr_error_count; u32 dma_map_addr_tx_failed_count; u32 dma_map_addr_rx_failed_count; #ifdef BCE_DEBUG /* Simulated recoverable failure counters. */ u32 mbuf_alloc_failed_sim_count; u32 unexpected_attention_sim_count; u32 l2fhdr_error_sim_count; u32 dma_map_addr_failed_sim_count; #endif u32 hc_command; #ifdef BCE_DEBUG /* Track the number of enqueued mbufs. */ int debug_tx_mbuf_alloc; int debug_rx_mbuf_alloc; #ifdef BCE_JUMBO_HDRSPLIT int debug_pg_mbuf_alloc; #endif /* Track how many and what type of interrupts are generated. */ u32 interrupts_generated; u32 interrupts_handled; u32 rx_interrupts; u32 tx_interrupts; /* Track interrupt time (25MHz clock). */ u64 rx_intr_time; u64 tx_intr_time; u32 rx_low_watermark; /* Lowest number of rx_bd's free. */ u32 rx_empty_count; /* Number of times the RX chain was empty. */ #ifdef BCE_JUMBO_HDRSPLIT u32 pg_low_watermark; /* Lowest number of pages free. */ u32 pg_empty_count; /* Number of times the page chain was empty. */ #endif u32 tx_hi_watermark; /* Greatest number of tx_bd's used. */ u32 tx_full_count; /* Number of times the TX chain was full. */ u32 requested_tso_frames; /* Number of TSO frames enqueued. */ #endif }; #endif /* __BCEREG_H_DEFINED */ Index: stable/7/sys =================================================================== --- stable/7/sys (revision 206680) +++ stable/7/sys (revision 206681) Property changes on: stable/7/sys ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys:r205300